#!/usr/pkg/bin/perl

#while (1) {
  $cx = 15;
  $c0 = 6218;
  $c1 = sprintf("%04d",rand(9999));
  $c2 = sprintf("%04d",rand(9999));
  $c3 = sprintf("%04d",rand(9999));


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

  @c = split(//,$c0 . $c1 . $c2 . $c3);
  $card = join("",@c);
  printf "Checking card: $card\n";

  $m = 1;

  foreach $i (4 .. length($card)) {
    $v = $m * $c[i];
    $v -= 9 if ($v > 9);
    $cx += $v;
    if ($m eq 1) {
      $m++;
    } else {
      $m--;
    }
  }

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