Компьютер задумывает четырехзначное число, не содержащее двух одинаковых цифр. Вы набираете свое число, и компьютер сообщает количество быков (точно угаданных цифр) и количество коров (цифр, которые есть в задуманном числе, но на другом месте). Например, пусть задуманное число 5734, а вы набрали 0755. Результат будет 1 бык и 2 коровы. Игра продолжается до тех пор, пока вы не получите четыре быка.
type playtype = '0'..'9'; seedtype = 0..65535; scoretype = 0..4; var pool, target: set of playtype; a, b, c, d: playtype; seed: seedtype; bulls, cows: scoretype; function random: real; begin random := seed / 65536; seed := (25173 * seed + 13849) mod 65536; end; function unique: playtype; var ch: char; begin repeat ch := chr(trunc(10 * random) + ord('0')); until ch in pool; unique := ch; pool := pool - [ch]; target := target + [ch]; end; procedure try(thisone: char); var ch: char; begin read(ch); if ch in target then if ch = thisone then bulls := succ(bulls) else cows := succ(cows) end; begin write('Загадайте случайное число, '); writeln('затем отгадывайте'); readln(seed); pool := ['0'..'9']; target := []; a := unique; b := unique; c := unique; d := unique; repeat bulls := 0; cows := 0; try(a); try(b); try(c); try(d); writeln('Быков: ', bulls:1, '; коров: ', cows:1); readln until bulls = 4; readln end.
Пользовательская функция random возвращает случайное число в интервале 0.0
Функция unique перемещает случайную цифру из pool в target.
Функция try читает следующую цифру и, если необходимо, увеличивает число быков или коров.
Последние комментарии
2 часа 8 мин. назад
3 часа 36 мин. назад
2 дня 1 час назад
1 неделя 4 дня назад
1 неделя 4 дня назад
1 неделя 5 дней назад
1 неделя 5 дней назад
1 неделя 6 дней назад
1 неделя 6 дней назад
1 неделя 6 дней назад