Когда я был новичком в старших классах, изучая химию, я смотрел на периодическую таблицу элементов и излагал грязные слова с количеством элементов (HeCK было бы 2619, 2-6-19).
Я думал об этом на днях, когда увидел удивительную рубашку с надписью BeEr (4-68)
Так что моя задача Codegolf - самая короткая программа для вывода списка слов, которые вы можете записать с помощью периодической таблицы элементов И числового кода, который будет представлять это слово.
/ usr / share / dict / words или любой другой словарь, который вы хотите использовать для списка слов. Если вы используете «нестандартный» список слов, дайте нам знать, что это такое!
Ответы:
GolfScript (
339 303 302 301294 символа)С благодарностью PhiNotPi, чьи наблюдения за ненужными элементами позволили мне сэкономить 33 символа.
Это IMO гораздо более идиоматичный GolfScript, чем предыдущий рекурсивный подход.
Обратите внимание, что я допускаю, чтобы слова в словаре были в смешанном регистре (
L
это функция для текста в нижнем регистре при условии, что не имеет значения, если не-буквенные символы разбиты), но отвергаю любые с апострофами или ударениями.Поскольку это кодовый гольф, я оптимизировал код по длине, а не по скорости. Это ужасно медленно. Ожидается, что список слов будет предоставлен на стандартный ввод и выводится на стандартный вывод в формате:
(Строчные все входные слова в смешанном регистре, для которых найдено совпадение).
Если вас больше интересуют элементы, чем числа как таковые, за низкую цену в
261253 символа вы можете использоватькоторый дает вывод как
источник
"
меня совсем не беспокоит. И, конечно же, приходит Питер Тейлор и уносит всех с ног на голову.Рубин -
547393Новая версия, спасибо за предложения:
использует регулярные выражения медленно и много возможностей для улучшения, но я должен идти сейчас :-)
источник
e='HHeLiBe...LvUusUuo'.scan(/[A-Z][a-z]*/).map &:downcase
. 2) Переменное регулярное выражение никогда не используется. 3) Прочитайте слова из стандартного ввода:$<.each{|w|...
. С этой модификацией код был сокращен до 410 символов.Python 710 (357 + 261 + 92)
Там наверняка есть место для улучшения где-то там. Также стоит отметить, что на втором уровне отступа используется символ табуляции.
Для просмотра всего словаря требуется чуть более 5 секунд (на моем компьютере), выводя примерно так:
Добавив еще 18 символов, вы можете получить вывод с правильной прописной буквой:
Вы также можете проверить отдельные слова:
источник
Python - 1328 (975 + 285 символов кода + 68 словарного кода)
Для словарной части:
источник
С
775771 символВвод : слово в строке, должно быть в нижнем регистре.
usr/share/dict/words
Это хорошо.Вывод : слово и цифры, например:
acceptances,89,58,15,73,7,6,99
Логика :
c(w,o,l)
проверяет словоw
, начиная с элементаl
.Используется двусторонняя рекурсия - если первый элемент совпадает с заголовком списка элементов, сравните остаток
w
с полным списком элементов. Если это совпадение не удается, проверьте слово в конце списка.Буфер
o
накапливает номера элементов по успешному пути. После матча он будет содержать список номеров и будет напечатан.Проблемы :
список не закодирован эффективно - слишком много
"
и,
". Но этот способ прост в использовании. Я уверен, что он может быть значительно улучшен без слишком больших затрат в коде.источник