Эта задача состоит из двух частей. Победителем станет решение с самым низким общим количеством байтов. Один и тот же язык должен использоваться для обеих задач.
Часть 1:
Напишите функцию или программу, которая принимает предложение с использованием только допустимых слов в качестве входных данных и выводит список использованных символов, количество раз, которое используется каждая буква, и количество букв в каждом из слов в исходном предложении. Выходные данные из этой программы должны быть действительными входными данными для следующей программы (в точности так, как они выводятся)
Я добавлю примеры и подробные правила ниже.
Часть 2:
Напишите функцию или программу, которая принимает выходные данные из первой программы в качестве входных данных и использует этот список английских слов и воссоздает предложение с информацией из выходных данных. Предложение не должно совпадать с исходным предложением.
Дополнительная информация. правила и ограничения:
Часть 1:
- Первый ввод может быть в любом подходящем формате, с кавычками или без них, в качестве аргумента функции или из STDIN, с или без скобок и т. Д.
- Входное предложение не будет содержать знаков препинания или специальных символов, за исключением точки / точки в конце. За исключением символа точки, все символы, которые находятся на входе, будут в списке слов.
- Первая буква предложения будет прописной, остальные - строчными.
- Вывод части 2 должен начинаться с той же буквы верхнего регистра, что и исходное предложение (поэтому преобразование ввода в нижний регистр не рекомендуется (но хорошо).
- Вывод может быть в любом подходящем формате:
- Должна быть возможность скопировать и вставить вывод непосредственно в следующую программу / функцию.
- Никакие изменения не могут быть сделаны при копировании, весь вывод должен быть скопирован и вставлен целиком, а не по частям.
- Например, вы можете вывести гистограмму всех букв алфавита или только используемых (в общем, все, что необходимо для завершения части 2)
- Вы не можете вывести список символов, где повторяются несколько вхождений. Например,
The queue
не может дать выход:Teeehquu (3,5)
он должен быть что - то вроде:Tehqu, (1 3 1 1 2),(3 5)
.
Часть 2:
- Программа / функция должна принимать ввод точно так же, как и в части 1 (одно исключение, см. Комментарий ниже о принятии имени файла в качестве ввода.).
- Если для анализа входных данных необходимы окружающие скобки, кавычки и т. П., То они должны быть частью выходных данных части 1.
- Список слов можно найти здесь.
- Список слов может быть сохранен как локально
w.txt
, так и извлечен из URL. URL будет считаться только 5 байтами, поэтому вам не нужно сокращать URL. - Если программа не может открыть файл , не читая имя в качестве входных данных из STDIN (я считаю , что это
естьи в случае Pyth , по крайней мере), то имя файла может быть принято в качестве отдельного входного аргумента.
- Список слов может быть сохранен как локально
- Выводом должно быть только предложение (список допустимых слов), заканчивающееся точкой и необязательным переводом строки.
- Вывод должен содержать слова с тем же количеством букв, что и в оригинальном предложении в части 1 (в правильном порядке).
- Все буквы, которые использовались в исходном предложении, должны использоваться в новом выводе.
- Предложение должно начинаться с той же буквы в верхнем регистре, что и исходное предложение, и заканчиваться точкой.
Обе части:
- Ни одна из частей не должна выполняться более 2 минут (случайный выбор слов до тех пор, пока не будет найдено решение, не принимается).
При соблюдении правил, перечисленных выше, должна быть реальная вероятность того, что воспроизводится точно такое же предложение, однако это не является обязательным требованием.
Примеры:
В приведенных ниже примерах показаны несколько различных форматов ввода и вывода. Многие другие принимаются.
Часть 1:
Входные данные:
Zulus win.
Тип выхода 1:
Z i l n s u w
1 1 1 1 1 2 1
5 3
Тип выхода 2:
(('Z',1),('i',1),('l',1),('n',1),('s',1),('u',2),('w',1)), (5,2)
Тип выхода 3:
'Zilnsuuw',[1,1,1,1,1,2,1],[5,2]
Часть 2:
Вход: точная копия вывода из части 1. Выход:
Zulus win.
Обратите внимание, что другие словосочетания принимаются до тех пор, пока они начинаются с Z
буквы « a» , а первое слово состоит из 5 букв, а второе - из 3.
Самый короткий код в байтах побеждает.
f1
который вставлен в, f2
должен содержать все данные, указанные в задании. Никакие дополнительные данные не могут быть частью вывода f1
. Никакие данные не могут быть "сохранены", f1
чтобы сделать информацию доступной при ее вызове f2
. f1
может принимать только одну строку в качестве ввода для вызова.