Bulls and cows: Difference between revisions
Content added Content deleted
(added php) |
|||
Line 996: | Line 996: | ||
return ( $g =~ /^[1-9]{4}$/ ); |
return ( $g =~ /^[1-9]{4}$/ ); |
||
}</lang> |
}</lang> |
||
=={{header|PHP}}== |
|||
<lang php><?php |
|||
$size = 4; |
|||
$chosen = implode(array_rand(range('1', '9'), $size)); |
|||
echo "I've chosen a number from $size unique digits from 1 to 9; you need |
|||
to input $size unique digits to guess my number\n"; |
|||
for ($guesses = 1; ; $guesses++) { |
|||
while (true) { |
|||
echo "\nNext guess [$guesses]: "; |
|||
$guess = rtrim(fgets(STDIN)); |
|||
if (!checkguess($guess)) |
|||
echo "$size digits, no repetition, no 0... retry\n"; |
|||
else |
|||
break; |
|||
} |
|||
if ($guess == $chosen) { |
|||
echo "You did it in $guesses attempts!\n"; |
|||
break; |
|||
} else { |
|||
$bulls = 0; |
|||
$cows = 0; |
|||
foreach (range(0, $size-1) as $i) { |
|||
if ($guess[$i] == $chosen[$i]) |
|||
$bulls++; |
|||
else if (strpos($chosen, $guess[$i]) !== FALSE) |
|||
$cows++; |
|||
} |
|||
echo "$cows cows, $bulls bulls\n"; |
|||
} |
|||
} |
|||
function checkguess($g) |
|||
{ |
|||
$h = array(); |
|||
foreach (str_split($g) as $k) { |
|||
if (array_key_exists($k, $h)) |
|||
return false; |
|||
$h[$k] = 1; |
|||
} |
|||
return preg_match('/^[1-9]{4}$/', $g); |
|||
} |
|||
?></lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |