Из давней проблемы в книге по программированию, PNZ - игра, в которой пользователь должен угадать три уникальные цифры в правильном порядке.
Правила :
- Генерируется случайное трехзначное число без повторяющихся цифр. (Это то, что пользователь пытается угадать)
- Пользователь вводит предположение из 3 цифр, которое должно быть оценено программой.
- Выведите «P» для каждой правильной цифры в правильном месте.
- Выведите «N» для каждой правильной цифры в неправильном месте.
- Выведите «Z», только если цифры не верны.
- Продолжайте принимать входные данные до тех пор, пока все цифры не будут правильными и в правильном месте, затем выведите «PPP», а затем количество угаданных значений в новой строке.
Примечание :
«Правильная цифра» означает, что одна из цифр в предположении также является одной из цифр в случайном трехзначном числе.
«Правильное место» означает, что это «Правильная цифра» И находится в том же месте, что и трехзначное случайное число.
Порядок вывода должен быть сначала «P», затем «N» или только «Z», если ничего не верно.
Если вход содержит повторяющиеся цифры, «Р» имеет приоритет над «N» (пример:
Number: 123
Input: 111
Output: P
)(НЕОБЯЗАТЕЛЬНО) Входные данные, длина которых не совсем равна 3 цифрам, не должны оцениваться или учитываться при подсчете общего количества догадок.
Пример, если сгенерированные цифры были 123
> 147
P
> 152
PN
> 126
PP
> 123
PPP
4
Пример, если сгенерированные цифры были 047
> 123
Z
> 456
N
> 478
NN
> 947
PP
> 047
PPP
5
Это CodeGolf, поэтому выигрывает самая короткая программа!
источник
Ответы:
JavaScript (ES6) 184
187 195Редактировать сохраненные 8 байтов thx @Neil Редактировать сохраненные 3 байта thx @ user81655
(перевод строки считается как 1 байт)
Тестовое задание
источник
d.splice(v=Math.random()*-~l,1)
экономит 5 или, может быть, даже 8 байтов (за счет некоторой производительности).PowerShell v2 +,
177231168 байтКак ни странно, мне удалось поиграть в фиксированную версию, чтобы она была короче, чем нефиксированная версия ... oO
Большое спасибо @ edc65 за помощь и вдохновение!
Объяснение:
Пример выполнения:
источник
R ,
178166 байтПопробуйте онлайн!
Ссылка TIO предназначена только для подсчета байтов - попробуйте это в консоли R! (или дайте мне знать, если есть альтернативный вариант).
Смотрите историю для менее гольф, более читаемой версии.
источник