#!/usr/pkg/bin/perl -w 

use strict;

my $cx = 1;
my $c0 = 6218;

while ($cx % 10) {
  print $cx % 10, "\n";
  my  $c1 = sprintf("%04d",rand(9999));
  my  $c2 = sprintf("%04d",rand(9999));
  my  $c3 = sprintf("%04d",rand(9999));
  my  $cx = 0;
  my ($p, $m, $i, $v, $card);
  my (@c);


#   62188577790007
#  $c1 = 8577;
#  $c2 = 7900;
#  $c3 = '07';

  @c = split(//,$c0 . $c1 . $c2 . $c3);
  $card = join("",@c);

  $m = 1; $p = 0; $cx = 0;

  for ($i = length($card) - 1; $i > -1 ; $i--) {
    $p++;
    if ($p % 2)  {
      $m = 1;
    } else {
      $m = 2;
    }
    $v = $m * $c[$i];
    $v -= 9 if ($v > 9);
    $cx += $v;
#    printf "$c[$i]:$m:$cx\n";
  }

  if ($cx % 10) {
#    printf "Card ($card) INVALID (cx/mod:$cx:" . $cx % 10 . ")\n";
    1;
  } else {
    printf "Card ($card) VALID\n";
  }
}
