проблема
Вы застряли в хижине посреди леса, и только старый скрэббл настроен развлекать себя. При осмотре вы видите, что буквы скрэббл так изношены, что видны только точки для каждой буквы.
Тем не менее, вы решили сыграть в игру. Вы достаете из сумки семь букв и кладете их на свой поднос, ваша задача - определить, какими могут быть эти буквы.
Таким образом, обычно, учитывая список точек, преобразуйте его в любую возможную строку или список букв.
Плитка Эрудита и Распределения
- 2 пустых фишки (0 очков)
- 1 балл: E × 12, A × 9, I × 9, O × 8, N × 6, R × 6, T × 6, L × 4, S × 4, U × 4
- 2 балла: D × 4, G × 3
- 3 балла: B × 2, C × 2, M × 2, P × 2
- 4 балла: F × 2, H × 2, V × 2, W × 2, Y × 2
- 5 баллов: К × 1
- 8 очков: J × 1, X × 1
- 10 баллов: Q × 1, Z × 1
Таким образом, если у вас есть список очков, [10,10,8,5,1,1,1]
то "QZJKEEE"
он будет действительным, но "QQJKEEE"
не будет действительным (поскольку в сумке только 1 Q)
Особые правила проблемы
- Вы можете предположить, что все входные данные верны и что всегда будет 7 плиток (то есть это не будет список из семи плиток с 10 точками и не будет 9 плиток)
- Вы можете предположить, что никакие плитки не были ранее извлечены из сумки (таким образом, распределение является стандартным распределением английских плиток, как определено выше)
- Вам не нужно генерировать правильное слово, только правильную строку букв.
- Порядок вашей строки не имеет значения, если для каждой плитки есть соответствующая буква.
- Очки основаны на стандартных точках английского скрэббл-тайла, как определено выше.
- Вы можете выводить в верхнем или нижнем регистре, для пустой плитки вы можете вывести либо пробел, либо знак подчеркивания '_'
- Ваш ответ может выводиться как любое разумное представление плиток, таких как List, String, Array или Sequence
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вам разрешено использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи
Очевидно, что поскольку вы можете вывести любое возможное значение, трудно определить строгие тестовые случаи.
Некоторые случаи с возможным допустимым возвращаемым значением:
[10,0,10,5,8,8,0] -> "Q ZKJX "
[1,1,1,1,1,1,1] -> "EEEEEEE"
[1,2,3,4,5,8,0] -> "NDBHKJ "
[2,2,2,2,2,2,2] -> "DGDGDGD"
Некоторые случаи с недопустимым возвращаемым значением:
[10,0,10,5,8,8,0] -> "Q QKJX " - Too many Qs
[1,1,1,1,1,1,1] -> "EEEEEE " - Space is 0 points not 1
[1,2,3,4,5,8,0] -> "NDBH" - Too short
[1,2,3,4,5,8,0] -> "NDBHKJ I" - Too long
[1,2,3,4,5,8,0] -> "ÉDBHKJ1" - Contains none scrabble characters
[2,2,2,2,2,2,2] -> "GDGDGDG" - Contains too many Gs (case for invalid cycling)
[2,2,2,2,2,2,2]
(единственный случай, когда важно начать с « D
вместо», G
если используется метод езды на велосипеде)