Bulls and cows: Difference between revisions
Content added Content deleted
(Updated D entry) |
(Simpler D entry) |
||
Line 689: | Line 689: | ||
cows bulls)))))))</lang> |
cows bulls)))))))</lang> |
||
=={{header|D}}== |
=={{header|D}}== |
||
Inspired by the PicoLisp entry. |
|||
<lang d>void main() { |
<lang d>void main() { |
||
import std.stdio, std.random, std.string, std.algorithm, |
import std.stdio, std.random, std.string, std.algorithm, |
||
std.range, std.conv; |
std.range, std.conv; |
||
⚫ | |||
enum size = 4; |
|||
immutable ddigits = "123456789"d; |
|||
⚫ | |||
writeln("Guess a number composed of ", size, |
|||
" unique digits from 1 to 9 in random order."); |
|||
uint nGuesses; |
|||
while (true) { |
|||
nGuesses++; |
|||
dstring guess; |
|||
while (true) { |
while (true) { |
||
"Next guess: ".write; |
|||
immutable d = readln.strip.dtext; |
|||
if ( |
if (d.length == 4 && d.countchars("1-9") == 4 && |
||
d.dup.sort().uniq.count == 4) { |
|||
⚫ | |||
⚫ | |||
if (bulls == 4) |
|||
return " You guessed it!".writeln; |
|||
⚫ | |||
⚫ | |||
⚫ | |||
" Bad guess! (4 unique digits, 1-9)".writeln; |
|||
} |
} |
||
if (guess == chosen) { |
|||
writefln("\nYou guessed correctly in %d attempts.", nGuesses); |
|||
break; |
|||
} |
|||
⚫ | |||
immutable cows = guess.zip(chosen) |
|||
⚫ | |||
⚫ | |||
} |
|||
}</lang> |
}</lang> |
||
{{out}} |
{{out}} |
||
<pre>Next guess: 6548 |
|||
<pre>Guess a number composed of 4 unique digits from 1 to 9 in random order. |
|||
bulls 0, cows 3 |
|||
Bad guess! (4 unique digits, 1-9) |
|||
Next guess: 5284 |
|||
I need 4 unique digits from 1 to 9, no spaces |
|||
bulls 2, cows 1 |
|||
Bad guess! (4 unique digits, 1-9) |
|||
Next guess: 4386 |
|||
1 Bulls |
|||
bulls 0, cows 2 |
|||
1 Cows |
|||
Bad guess! (4 unique digits, 1-9) |
|||
Next guess |
Next guess: - |
||
Bad guess! (4 unique digits, 1-9) |
|||
2 Bulls |
|||
Next guess: 5894 |
|||
0 Cows |
|||
bulls 3, cows 0 |
|||
Bad guess! (4 unique digits, 1-9) |
|||
Next guess: 5874 |
|||
bulls 3, cows 0 |
|||
⚫ | |||
Bad guess! (4 unique digits, 1-9) |
|||
Next guess: 5814 |
|||
⚫ | |||
=={{header|E}}== |
=={{header|E}}== |