Поскольку rickrolling является величайшим мемом на Земле, вы [знаете правила и я тоже] должны написать кратчайший код, который может текстуально прокручивать ничего не подозревающего читателя. Пусть [вас вниз] будет входной текст, который содержит буквы, знаки пунктуации и пробелы. Каждый раз, когда в тексте появляется фраза [обмани и обижай] из первых двух строф ...
We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
... вставьте оставшуюся часть строки в скобки.
вход
Ввод - это строка из одной строки, содержащая только печатный ASCII с необязательным завершающим переводом строки.
Выход
Вывод - однострочная строка. Каждый раз, когда группа слов (определенная как входная строка, разделенная на пробелы) совпадает с группой слов в строках вышеприведенного текста, вставьте оставшиеся слова строки в строку, сгруппированные в квадратных скобках.
Дополнительное описание:
Это код-гольф , побеждает меньше байтов. Вы можете написать программу или функцию.
- соответствие должно быть без учета регистра:
we're
преобразуется в,we're [no strangers to love]
даже еслиWe're
в тексте используется заглавная буква. - соответствие должно быть жадным.
Does he know the answer?
следует преобразоватьDoes he know the [rules and so do I] answer?
вместоDoes he know [the rules and so do I] the [rules and so do I] answer?
- Если слово присутствует в предоставленной лирике более одного раза, выберите любое из вхождений, чтобы завершить строку.
- Если слово является последним словом в лирической строке, не вставляйте ничего после него.
- Пунктуация включена как часть слова.
I'm
является одним словом и не может соответствоватьI
. Точно так же,you.
не соответствует ни одной лирике из-за периода.
Некоторые слова, такие как I
появляются несколько раз в тексте, а также в конце строки. Так как правило состоит в том, что может использоваться любое вхождение в вышеупомянутой лирике, и одно из этих вхождений находится в конце строки, сопоставление I
не требуется. Другой вариант для I
это [just wanna tell you how I'm feeling]
.
Если два совпадения перекрываются, вы можете выбрать один из них. Это означает , что how I'm thinking
может стать how I'm [feeling] thinking [of]
или how [I'm feeling] I'm thinking [of]
с момента I'm
может быть частью либо how I'm
или I'm thinking
. Если, однако, входной текст был просто I'm thinking
, то вывод должен быть I'm thinking [of]
.
Дополнительные тестовые случаи:
I don't know what I'm doing with my life.
is converted to
I [just wanna tell you how I'm feeling] don't know [the rules and so do I] what I'm [thinking of] doing with my life.
Many additional solutions are possible, since words like `I` appear multiple times.
Will someone please save me from these memes?
is converted to
Will someone please save me from [any other guy] these memes?
Two strangers walked into a bar. One said "hello." The other said "goodbye."
is converted to
Two strangers [to love] walked into a [lie and hurt you] bar. One said "hello." The [rules and so do I] other [guy] said "goodbye."
Задача, вдохновленная этим чуваком .
from
должен статьfrom [any other guy]
).Ответы:
gawk, 316 + 377 = 693
Первый параметр командной строки - это имя файла песни (375 байт + 2 для вызова = 377). Рикроллирует все остальные файлы. Печать на
stdout
.Ungolfed
Результаты теста
Входные данные:
Выход:
источник
what
иI'm
, что является «не жадным» соответствием). 2. Это не проходит третий тестовый пример (он превращает два пробела в один). 3. Если вы храните текст песни в отдельном файле, вам нужно сосчитать этот файл (а также +2 для включения его вawk
команду) в счетчике байтов.awk
исходный код тоже.gonna run
(ожидаемый выводgonna run [around and desert you]
, фактический выводgonna [tell a lie and hurt you] run [around and desert you]
). Это также все еще разбивает несколько пробелов подряд. Вам нужно посчитать файл лирики в вашем числе байтов, так как это нестандартный вызовawk
программы.gawk
теперь требую для сохранения места разделения поля. Сейчас проходит все тесты.