Я ленивый, но эффективный человек, как, впрочем, и многие из вас. Поэтому всякий раз, когда я что-то делаю, я хочу делать это с минимальными усилиями. Вот почему я прошу вас решить эту проблему для меня.
То, что у меня здесь есть, это своего рода документ. В каждой строке этого документа есть одно слово или короткая фраза. Документ не отсортирован, но это нормально, я знаю, где все. Я мог бы использовать некоторую помощь, чтобы найти вещи быстрее, и для этого мне нужен второй список. Вот где вы входите. Для каждой строки текста в этом документе мне нужен какой-то идентификатор. Что-то, что я могу CTRL+ F, но это не может быть дольше, чем это абсолютно необходимо для получения этого единственного результата.
Пример ввода:
(blank)
an apple
spiderman 3
7pm pick up laundry
tequila
fake mustache
dishes on wednesday
banana
biscuits
(blank)
Пример вывода:
ap,3,7,q,f,w,ba,bi
Я повторюсь здесь, чтобы убедиться, что мы на одной странице:
- Входные данные представляют собой неформатированный текстовый файл, содержащий список элементов, разделенных переносами строк. У меня есть здесь в формате .txt, он называется "STUFF.TXT"
- Первая и последняя строка документа пусты. Каждая вторая строка содержит запись длиной> 0.
- Файл содержит только буквенно-цифровые символы (все строчные буквы), пробелы и разрывы строк.
- Желаемый вывод - это список идентификаторов в том же порядке, что и мой исходный список.
- Я не хочу более одного поискового слова для каждого элемента списка. Если есть несколько ответов, выберите один, мне все равно, какие. В приведенном выше примере я выбрал «ap»
an apple
, но вы могли бы выбрать «n», «a», «pp», «pl» или «le». Не «ан», потому что это вbanana
. - Уверяю вас, файл никогда не бывает пустым и никогда не содержит дубликатов.
- При необходимости вы можете сопоставить на конце строки. Но это последнее средство, которое можно использовать только тогда, когда нет другого способа различить элементы списка (например, «яблоко» и «яблоки»).
Стандартные лазейки не допускаются. Кроме того, это кодовый гольф, поэтому выигрывает самый короткий код.
Еще один пример:
(blank)
ban
any
king
bean
yen
rake
raki
bar
(blank)
И его вывод:
ban,ny,g,be,ye,ke,aki,ar
Ответы:
Pyth, 39 байт
Bruteforce все подмножества каждой строки в возрастающей длине и проверяет, встречается ли эта строка внутри любой другой. Если это не сработает, то будет сделано то же самое, за исключением всех подмножеств
\nstring\n
.источник
.:
с первым типом строки и вторым типом int не является ошибкой. Попробуйте использовать Pyth из