Хотя я пытался (и не смог) убедить моего маленького сына съесть его обед, я попытался спеть ему. В середине этой песни я понял, что формульная структура вполне может пригодиться для игры в гольф!
Задача состоит в том, чтобы написать программу или функцию, которая не принимает ввод и создает следующий текст:
There's a hole in the bottom of the sea
There's a hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a log in the hole in the bottom of the sea
There's a log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a bump on the log in the hole in the bottom of the sea
There's a bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a frog on the bump on the log in the hole in the bottom of the sea
There's a frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
There's a smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a smile on the flea on the fly on the hair on the wart on the frog on the bump on the log in the hole in the bottom of the sea
There's a hole, there's a hole
There's a hole in the bottom of the sea
Правила соревнований:
- Текст может быть напечатан или возвращен как функция вывода
- Каждый стих отделяется одной пустой строкой
- Конечный пробел в порядке, если он не меняет макет (поэтому нет пробелов или лишних пробелов между словами)
- Конечные переводы строки тоже в порядке.
- Нет ведущих строк.
- Все языки приветствуются, и это код-гольф , поэтому самый короткий ответ в байтах для каждого языка выигрывает!
gzip -5
сжимает его до 186 байт (bzip2
и,xz
похоже, работает хуже).Ответы:
СОГЛ ,
1039493 байтаПопробуй это здесь!
источник
Stax ,
908775 байтЗапустите и отладьте его
Распаковано, разглажено и прокомментировано это выглядит так.
Запустите этот
источник
Perl 5,
158154 байта154 байта
158 байт
источник
There's a bottom of the sea
, Факты проверяются, +1There's a sea
но он длиннееPython 2 ,
202190187185183182181 байтПопробуйте онлайн!
Старые альтернативы
'io'['g'in s]
(13 байт):'oi'[s[5]<'n']
'io'[len(s)>30]
,'ioo'[len(s)%3]
,'ooi'[len(s)%4]
, и'io'[w[1]=='o']
Добавлено:
источник
"hole, t%shole\n"%a[1:]
сохраняет байт'oi'[s[5]<'n']
будет старая альтернатива тоже: Featuring'io'['g'in s]
!C (gcc) ,
261246236 байт-15 байт, спасибо Даниилу Шеплеру
-10 байт, спасибо floorcat
Попробуйте онлайн!
источник
,*b="_TH<0$\31\r"
вместо этого?05AB1E ,
1031009997969392 байтаСохраненный байт благодаря Кевину Круйссену
Попробуйте онлайн!
объяснение
“¥ÊˆŽ bumpÑå‡îtíÁ¤†îÌea¹²“#v
начинает цикл по списку["hole", "log", "bump", "frog", "wart", "hair", "fly", "flea", "smile"]
. Слова сжимаются с помощью словаря 05AB1E.На каждом мы делаем:
источник
õ
, потому что, по- видимому, он выводит пустую строку по умолчанию, когдаs
в стеке ничего не используется . Я не мог найти что-нибудь еще для гольфа; очень хороший ответ!PowerShell ,
194188185180174 байтаПопробуйте онлайн!
Кажется, не могу поймать Питона ...В основном, устанавливает несколько общих строк , чтобы
$h
,$a
,$z
, и$b
, затем проходит через петлю через каждый из элементов (hole
,log
...flea
,smile
), каждая итерация выводит соответствующий стих. В!$j++
середине есть немного логики, чтобы объяснить, что происходит с ключомin
/on
. В противном случае все строки просто остаются в конвейере, и по умолчаниюWrite-Output
мы получаем новые строки бесплатно.-6 байт благодаря Арно.
-3 байта благодаря маззи.
-5 байт благодаря вескам.
-6 байт благодаря маззи.
источник
-split
довольно много для получения слов.JavaScript (ES6),
201 194 189 188187 байтСохранено 1 байт благодаря @Shaggy
Попробуйте онлайн!
JavaScript (ES6), 235 байт
Просто RegPack'ed .
Попробуйте онлайн!
источник
Баш,
168160 байт160 байт
168 байт
Перевод с моего другого ответа на Perl.
источник
Japt
-Rx
,126116113112111109107 байтОказывается, невероятно сложно сыграть в гольф на сжатии струн в то время, когда на твоем телефоне выпадает выпивка - кто бы мог подумать ?!
Проверь это
источник
XML,
719673603514493486 байтВы можете «выполнить» его
xmlstarlet sel -t -m '//a' -v . -n <xml_file_here>
.Это было бы намного проще, если бы XML не был таким многословным, но, с другой стороны, это меньше, чем 25% размера исходного текста.
источник
Сетчатка 0.8.2 , 150 байт
Попробуйте онлайн! Объяснение:
Вставьте последний стих.
Подсчитайте все стихи.
Положите стихи в правильном порядке.
Завершите каждый стих и добавьте припев.
Разверните некоторые заполнители.
источник
R ,
237231 байтПопробуйте онлайн!
источник
PHP,
180178 байтЗапустите
-nr
или попробуйте онлайн .Выдает предупреждения в PHP 7.2; чтобы исправить, поместите кавычки вокруг
элементов массива
io
,hole
и два автономныхT
.источник
C (gcc) ,
334328307299 байтовПопробуйте онлайн!
источник
Perl 6 , 166 байт
Попробуйте онлайн!
источник
Japt
-R
, 142 байтаПопробуйте онлайн!
источник
Пакетный, 267 байт
t
содержит строку, повторенную в припеве,s
содержит большую часть строки стиха, в то время какr
выбирает междуin the
иon the
. В стихахt
нужны только первые 11 символов , в то время как в первой строке хора вторая копияt
имеетT
нижний регистр, а во второй строке хораса используются последние 25 символовs
.источник
Рубин ,
173170 байтПопробуйте онлайн!
источник
Haskell ,
243215 байтУменьшено до 215 байт с помощью Ними
Попробуйте онлайн!
(Старая версия 243 байта здесь ).
Довольно простое решение.
источник
s
только один раз, чтобы вы могли включить его. б) вы всегда перед именем и Append что - тоt
, так что вы можете сделать это функция (инфикс):t#u=t:"here's a "++u
. в) построение большого списка в функцииl
сmap(++" on the ")(words"smile flea ..."
короче. Также: переместите все, что добавлено в этот список, в сам список. d) список номеров, которые нужно удалить, теперь работает8
снизу до0
(однозначные числа!) e) теперь в строкеi
также сохраняются некоторые байты. е) не нужно называть вашу основную функцию. Согласно нашей мета, значения Haskell считаются правильными функциями, поэтому отбросьтеv=
.>>=
(concatMap) из монады списка и встроенногоconcat
в функцииl
. Попробуйте онлайн!JavaScript (Babel Node) , 239 байт
-7 байт от @Oliver
*.*
Попробуйте онлайн!
источник
T
место в 3-й строке каждого стиха должно быть в нижнем регистре.Python 3 ,
213 206 198193 байтаПопробуйте онлайн!
-15 байт благодаря @Sara
-5 байт благодаря @ ASCII-only
Возможно, немного более пригодный для игры в гольф, но не намного.
источник
o=e=
что я создаю и то,o
и другое, иe
ссылаюсь на один и тот же объект. Я также думал, что разделение будет дольше.o
иe
сделать ссылку на тот же объект ... это просто , что строки являются неизменными в Python , так что - то вроде+=
создаст новую копию вместо мутирует существующий одинЧисто , 267 байт
Попробуйте онлайн!
источник
cQuents ,
238219 байтПопробуйте онлайн!
Этот вызов заставил меня наконец реализовать списки и строки на моем языке. Этот язык построен для целочисленных последовательностей, так что он довольно хорошо!
объяснение
источник
Perl 5 , 194 байта
@ ASCII-только сбрил 6 байтов с буквальным переводом строки и
\l
трюком, о котором я забылПопробуйте онлайн!
источник
\l
раньше, но никогда не имел причин его использовать, поэтому никогда не думал об этом.Древесный уголь ,
115106 байтПопробуйте онлайн! Ссылка на подробную версию кода. Изменить: 9 байтов, скопировав мой пакетный код для последней строки припева. Объяснение:
Сохраните строку
There's a hole
, которая используется дважды как есть, третий раз в нижнем регистре, а также четвертый раз, но только первые 10 символов.Разделить строку
bottom of the seaxhole ixlog ixbump oxfrog oxwart oxhair oxfly oxflea oxsmile o
наx
с.Выполните цикл по 9 стихам, взяв первые
i+2
элементы массива, поменяв их местами, присоединив ихn the
и добавив префиксThere's a
к результату.Разверните каждую строку в стих, дублируя линию и создавая припев. Каждая строка стиха затем неявно печатается на каждой отдельной строке, и каждый стих неявно отделяется пустой строкой.
источник
V ,
184170 байтПопробуйте онлайн!
Объяснение:
4iThere's a hole in the bottom of the sea<\n><esc>
Вставьте "Theres 'дыра на дне моря" 4 раза.kk
Перейти к третьей строкеy5w
копия "Там дыра"5eá,
вставьте запятую после "Там дыра"lp
вставьте после запятойD
удалить оставшуюся часть строки5brt
строчная вторая буква ТHj4yy
скопировать 4 строки из второй строкиGp
Вставить все после первой строки4w8ion the <esc>
(в конце первого стиха) перейдите к первой «дыре» во втором стихе и вставьте «8 раз»2briilog <esc>
перейти назад к последнему «вкл», заменить o на «i», а затем вставить «log»3bibump <esc>3bifrog <esc>3biwart <esc>3bihair <esc>3bifly <esc>3biflea <esc>3bismile <esc>
Переместитесь назад через строку, вставляя соответствующие слова между каждым «на»7ñ4yykp4wd3wñ
выполнить4yykp4wd3w
7 раз4yykp
продублируйте стих перед этим4wd3w
перейти к первому слову после «Там дыра» и удалить 3 слова8ñÄ5jñ
дублируйте первую строку каждого стиха после первого (есть 8 из них, чтобы сделать)источник
/// , 216 байт
Попробуйте онлайн!
Задача такого рода является единственной вещью, в которой /// достаточно хороши. : D Эй, результат короче, чем C, C # или Java!
Выходные данные этой программы заканчиваются двумя разрывами конечной строки; Надеюсь, что это не сделка.
Во всяком случае, здесь нет настоящего ума. Я просто идентифицировал повторяющиеся строки и определил для них односимвольные ярлыки, и повторял до тех пор, пока не увидел больше повторяющихся строк. Я сделал это более-менее наивно и жадно. Я, однако, намеренно определил ярлык для «улыбки на блохе в ... море», затем «блоха на лету в… море» и т. Д., Чтобы сформировать цепочку ярлыков , В результате вся последовательность новых существительных четко видна в коде, и я нахожу это довольно приятным. :)
После замены V и U мы получаем следующий более читаемый код:
источник
LaTeX, 265
268символовкомпилируется в хороший PDF, с отступами абзаца и все.
Развернулся и прокомментировал:
Из вывода:
источник
C # (интерактивный компилятор Visual C #) , 220 байт
Попробуйте онлайн!
-5 байтов благодаря @ASCIIOnly и -2 байта благодаря @someone!
У меня маленький ребенок, и я могу заверить вас, что эта песня в равной степени броская и раздражающая.
источник
.Any()
->!=""
?in
вforeach
> _>