#!/usr/bin/env php
<?php
function operacija($prvo, $drugo) {
	$odgovor = (intval($prvo)+intval($drugo)) % 11; // seštevek modira z 11
	if($odgovor == 10) { // če prepisujemo tako kot po navodilih, je to pravilen postopek. v navodilih piše ...ČE...
		return 0;
	} else {
		return intval($odgovor);
	}
	// drugače lahko uporabimo tudi
	// return $odgovor % 10; // , v tem primeru bo 10 vrnila 0
}
function kartica2varnostna($i) { // za vse kode napisane na kartici
	$koda = str_split(str_pad($i, 4, '0', STR_PAD_LEFT)); // kodo spremeni v array znakov številk
	return intval($koda[3].strval(operacija($koda[0], $koda[1])).strval(operacija($koda[1], $koda[2])).strval(operacija($koda[2], $koda[3]))); // izračuna varnostno kodo, glej operacija()
}
$varnostne_kode = array();
for($koda = 0; $koda <= 9999; $koda++) {
	$varnostne_kode[] = intval(kartica2varnostna($koda));
}

//var_dump($varnostne_kode);
//exit();
for($j = 0; $j <= 9999; $j++) {
	if(!in_array($j, $varnostne_kode)) {
		echo str_pad($j, 4, '0', STR_PAD_LEFT)."\n";
	}
}
?>
