Sha256: 27a5aa660190f3b80a607dbdeb42e06458abceed68edc8a01d69254fd5e4988e

Contents?: true

Size: 527 Bytes

Versions: 48

Compression:

Stored size: 527 Bytes

Contents

package Luhn 3;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT_OK = qw(is_luhn_valid);

sub is_luhn_valid {
  my ($input) = @_;
  $input =~ s/\s+//g;
  if (length $input < 2 || $input =~ /\D+/) {return 0}

  my @num = split(//, $input);
  unshift @num, 0 if scalar @num % 2;

  my $count = 1;
  my $sum = 0;

  foreach (@num) {
    if ($count % 2) {
      $sum += $_ * 2;
      $sum -= 9 if $_ * 2 > 9;
    }
    else {
      $sum += $_;
    }
    $count += 1;
  }

  if ($sum % 10) {return 0};
  return 1;
}

1;

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.179 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.178 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.177 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.176 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.175 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.174 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.173 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.172 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.171 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.170 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.169 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.167 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.166 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.165 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.164 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.163 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.162 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.161 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm
trackler-2.2.1.160 tracks/perl5/exercises/luhn/.meta/solutions/Luhn.pm