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;
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.walkLength == size)
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(guess, chosen).count!q{ a[0] == a[1] };
immutable bulls = guess.zip(chosen).count!q{ a[0] == a[1] };
immutable cows = iota(size)
immutable cows = size.iota
.count!(i => guess[i] != chosen[i] &&
.count!(i => guess[i] != chosen[i] &&
chosen.canFind(guess[i]));
chosen.canFind(guess[i]));