Вступление
Песня детства Eeny, meeny, miny, moe часто использовалась, чтобы выбрать, кто был "этим", играя тэг. Каждый будет стоять в кругу и указывать на одного человека, выбранного случайным образом. Они будут петь:
Eeny, meeny, miny, moe,
Поймай тигра за палец.
Если он кричит, отпусти его,
Эни, Мини, Мин, Моу.
Когда они пели каждое слово, они указывали на следующего человека в круге. Человек, на которого указывают, когда пели последнее «мо», будет «этим». Дети сразу встали бы и разбежались.
Цель
Реализуйте самую короткую программу в байтах, которая принимает входные данные, количество дочерних элементов и перечисляет слова, которые пели, когда на них указывали.
Победитель будет выбран через одну неделю.
вход
От STDIN, одно, положительное целое число, количество детей. Это может быть больше, чем количество слов в песне.
Выход
Записывает в STDOUT список, где каждая строка представляет ребенка и содержит слово, спетое в то время, когда на него указывали. Если дочерних элементов слишком много, пустые строки могут быть пропущены.
Требования
- Всегда начинай с первого ребенка.
- Показать слова без знаков препинания.
- Заключительное «мо» должно быть подчеркнуто как «МЧС!» в том числе пунктуация.
пример
вход
3
Выход
Eeny moe tiger toe hollers go miny
meeny Catch by If let Eeny MOE!
miny a the he him meeny
вход
7
Выход
Eeny by him
meeny the go
miny toe Eeny
moe If meeny
Catch he miny
a hollers MOE!
tiger let
вход
1
Выход
Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!
вход
21
Выход
Eeny
meeny
miny
moe
Catch
a
tiger
by
the
toe
If
he
hollers
let
him
go
Eeny
meeny
miny
MOE!
источник
Ответы:
TeaScript , 82 байта
Распаковать, портировать, транспонировать, объединить, вывести.
объяснение
Попробуйте онлайн
Неконкурентный 81 байт
α
Не получал прикован ,.
так что я должен был исправить это ошибкаисточник
Пит,
1038984 символовСохранено 18 байтов при сжатии строк благодаря @Dennis и @FryAmTheEggman
Сохранено еще один байт благодаря @isaacg
Предупреждение: в коде много непечатных элементов; используйте ссылки ниже, чтобы попробовать это.
Попробуй это онлайн |Тестирование
Может быть, в гольф. Предложения приветствуются!
Как это работает
источник
Eeny meeny miny
каким-либо образом должно сэкономить несколько байтов. Кроме того, Pyth имеет две встроенные функции для (де) сжатия (.Z
и."
).."
экономит 14 байтов!FNQ
==VQ
кстати.Желе, 84 байта
Попробуйте онлайн!
источник
JavaScript (ES6), 167 байт
объяснение
источник
l=Array(n).fill``
работает по какой-то причине?Haskell,
160157 байтГотовьтесь
"Eeny meeny miny "
к другим частям ("moe Catch ..."
и"MOE!"
), объединяйте обе строки, разделяйте их на слова, берите куски необходимого размера, транспонируйте и объединяйте снова в одну строку.@Mauris нашел 3 байта, выделив общую подстроку "Eeny meeny miny" и сделав ее
f
бессмысленной.источник
s="Eeny meeny miny "
сохраняет некоторые байты.f=unlines.map unwords.transpose.(`chunksOf`(["moe Catch a tiger by the toe If he hollers let him go","MOE!"]>>=words.("Eeny meeny miny "++)))
f
мы совершенно бессмысленны, мы можем опустить даже название.Python 2,
154147 байтРЕДАКТИРОВАТЬ: Спасибо Джо Уиллис!
При этом используется трюк, заключающийся в том, что [0 :: n] печатает n-й элемент списка.
Попробуй здесь
источник
::
оператор? Это как в цикле?Рубин, 160 байт
Все мои попытки «сжать» строку просто удлинили ее.
Все еще пытаюсь...источник
JavaScript (ES6), 189 байт:
Объяснение:
источник
I=>(b=Array(I--).fill``,c=0,"Eeny meeny miny moe Catch a tiger by the toe If he hollers let him go Eeny meeny miny MOE!".split` `.forEach(v=>(b[c]+=v+' ',c+=c>I-1?-c:1)),b)
длиной 172 байта. Он возвращает каждую строку как элемент в массиве. Я думаю, что это приемлемо..map()
вместо.forEach()
, вы можете сохранить 3 байта, уменьшив до 169 байтов. С немного большим количеством возни, это на самом деле может быть твиттер!STDIN
иSTDOUT
поэтому я думаю, что он ограничивает ответы JavaScriptprompt
и,alert
к сожалению, ограничен .alert(b.join`<newline>`)
в конце. Но урон все еще можно уменьшить с помощью.map()
, вместо.forEach()
.Python 3,
279278272173 байта(спасибо Матиасу Эттингеру, который буквально спас мне 100+ БАЙТОВ! )
Если у кого-то есть советы или предложения, я буду очень признателен. Благодаря!
источник
int(i)
должно занять место3
, но есть и другие ошибки, которые нужно исправить после этого.%
. Идеально подходит для циклических счетчиков..split()
разделить на пробелы (пробел, новые строки, табуляции) 2)range(0, x)
лучше всего записать какrange(x)
3) взглянуть на нотацию срезов:w[0::3]
вернет список из каждых трех слова вw
.Mathematica, 154 байта
Использует метод split-chunk-transpose-join-output большинства других ответов.
источник
MATLAB, 167 байт / символов:
Объяснение:
Не получу никаких наград за длину этой, но это было весело. :-)
источник
Japt
908786 байтМного непечатных. Попробуйте онлайн!
Как это работает
Я пытался сжать строку с разными разделителями. Единственной вещью, более эффективной, чем пробелы, была бы строчная буква, но большинство из них уже используются, и, следовательно, не могут использоваться для разделения строки. Вот сколько сжатия достигается с оставшимися:
В настоящее время я использую
d
. Может быть возможно сохранить байт с помощьюs
замены другой буквы вhollers
.источник