Bulls and cows: Difference between revisions
Content added Content deleted
(Added Pascal) |
(Updated D entry) |
||
Line 695: | Line 695: | ||
enum size = 4; |
enum size = 4; |
||
immutable ddigits = "123456789"d; |
immutable ddigits = "123456789"d; |
||
immutable chosen = ddigits.randomCover.take(size).array; |
|||
const chosen = ddigits.randomCover(rndGen).take(size).array; |
|||
writeln("Guess a number composed of ", size, |
writeln("Guess a number composed of ", size, |
||
" unique digits from 1 to 9 in random order."); |
" unique digits from 1 to 9 in random order."); |
||
Line 708: | Line 707: | ||
guess = readln.strip.dtext; |
guess = readln.strip.dtext; |
||
if (guess.countchars(ddigits) == size && |
if (guess.countchars(ddigits) == size && |
||
guess.dup.sort().uniq. |
guess.dup.sort().uniq.count == size) |
||
break; |
break; |
||
writefln("I need %d unique digits from 1 to 9, no spaces", size); |
writefln("I need %d unique digits from 1 to 9, no spaces", size); |
||
Line 718: | Line 717: | ||
} |
} |
||
immutable bulls = zip( |
immutable bulls = guess.zip(chosen).count!q{ a[0] == a[1] }; |
||
immutable cows = |
immutable cows = size.iota |
||
.count!(i => guess[i] != chosen[i] && |
.count!(i => guess[i] != chosen[i] && |
||
chosen.canFind(guess[i])); |
chosen.canFind(guess[i])); |