Недавно я видел людей Харе Кришна с их мантрой на эмблеме, и я обнаружил, что может быть довольно интересно кодировать гольф.
Соревнование
Напишите Харе Кришна мантру , то есть:
Hare Krishna Hare Krishna
Krishna Krishna Hare Hare
Hare Rama Hare Rama
Rama Rama Hare Hare
Критерии победы
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
правила
- Оболочка должна быть сохранена.
- Текст должен содержать новые строки.
- Линии могут иметь пробел (ы).
- Трейлинг новой строки разрешен.
- Разбор из сети или любого другого внешнего ресурса запрещен.
code-golf
string
kolmogorov-complexity
Дариуш Возняк
источник
источник
Ответы:
Желе , 22 байта
Попробуйте онлайн!
Как это устроено
источник
Convert 15973600 to base ["Hare", "Rama", "Krishna"]
Слава богу, ты объяснил это дальше, потому что это не имело смысла.["Hare", "Rama", "Krishna"]
.05AB1E , 38 байт
Может быть сокращено на 2 байта, если завершающие символы новой строки в порядке.
Попробуйте онлайн!
объяснение
источник
drama share irish dna
, действительно? Откуда пришла эта идея? +1 :)Python 2 , 60 байт
Попробуйте онлайн!
Похоже, это лучше, чем попытка замены шаблона .
источник
Октава,
7459 байтПроверьте вывод здесь .
Объяснение:
{'Hare ','Krishna ','Rama ',10}
создает массив ячеек с тремя строками, где четвертая строка10
(ASCII-значение для новой строки).{'ababdbbaadacacdccaa'-96}
это вектор, который индексирует массив ячеек выше. Вектор[1 2 1 2 4 ...]
так как мы вычитаем96
из строкиababd...
.Окружающие квадратные скобки используются для объединения результатов, вместо получения
ans = Hare; and = Krishna; ans = ...
источник
Сетчатка , 39 байт
Попробуйте онлайн!
В основном простые замены, единственный «трюк» - это модификатор,
*
который печатает результат замены, а затем возвращает строку обратно к тому, что было раньше.источник
PHP, 61 байт
просто замена из цифр в качестве ключа в массиве со значениями strtr
Попробуйте онлайн!
источник
JavaScript,
7570 байтПопробуйте онлайн!
источник
3
. Строка шаблона будет иметь такую же длину, но вам не придется заменять их позже. (Не вызывает проблемы индекса массива, потому что/./
не соответствует символам новой строки.)С
154 байта, 124 байта,96 байтовПопробуйте онлайн!
28 байтов сохранено благодаря Деннису
источник
int
и объявитьi
глобально, так что по умолчанию оно будет равно нулю. tio.run/nexus/…main(){for(char*t="BG@ESCB;:N8F6DIBA10Hare \0Krishna \0Rama \0\n";*t^72;printf(t+*t++-48));}
Сохраняет 4 байта.V ,
40, 36 байтовПопробуйте онлайн!
HexDump:
Объяснение:
Команда
<C-n>
чрезвычайно полезна для подобных задач. :)источник
C #, 109 байт
Довольно просто,
Console.Write
неявно форматирует строку и используетWrite
вместо того, чтобыWriteLine
не только сохранять 4 байта, но и избегать завершающего перевода строки. Использует перевод строки в стиле Unix, поэтому может не работать так хорошо на окнах, дополнительные 6 байтов для окон, если изменить\n
на\r\n
Этот метод будет выводиться непосредственно на консоль, если вы предпочитаете метод, который возвращает строку:
C #, 118 байт
В качестве альтернативы, если вам нужна полностью автономная и компилируемая программа:
C #, 135 байт
Это должно работать как скомпилированная программа, если вы указали
A
в качестве класса записи.источник
var
настолько большим, насколько я знаю, иvar.Format()
это определенно не вещьC 85 байт
Я бы предпочел светскую мантру, но я надеюсь, что это одна из тех мирных религий.
Посмотрите, как это работает здесь .
Это сокращает наивную реализацию на 23 байта.
источник
Python 2,
928874 байтаПопробуйте онлайн!
Нет , это не умно, нет, это не самое короткое, но эй, я новичок в этом, и это работает.
Другое решение (
8480 байт):источник
Perl, 67 байт
Вдохновлен этой записью JavaScript .
Perl, 67 байт
источник
(Hare,Krishna,Rama)
сохраняет два байта в вашем первом коде.Matlab
139 136105 байт (благодаря @ 2501 )Попробуйте онлайн в Октаве!
источник
x={'Hare ','Krishna ','Rama ',10};[x{'ababdbbaadacacdccaa'-96}]
составляет 64 байта. : P (перевод октавского представления @Stewie Griffin)MySQL,
115100 байт(Спасибо @manatwork!)
источник
AS
.R
758583 байтаОн создает вектор с помощью
Hare
,Krishna
и символ новой строки, берет необходимые и затем повторяет его, заменяяKrishna
наRama
.Нужно включать пробел в каждое слово и
sep=""
потому, что в противномcat()
случае ставится пробел в начале каждой строки.источник
print()
илиcat()
будет необходимо. Это потребует гораздо больше байтов. Яobject 'h' not found
tio.run/nexus/…h=
сh<-
внутри вызововp
PowerShell,
735352 байтаДжефф Фриман полностью уничтожил - используя реальный перевод строки вместо
\n
сохранения другого байта, а также сохранил еще один в формате массива. (от(1,2)
до,1,2
)-1 благодаря TesselatingHeckler, без запятой в обозначении массива.
Мой старый ответ - попробовал несколько других методов замены, но все закончилось как-то немного дольше.
в строке есть переводы строки.
довольно просто, использует тот факт, что powershell будет расширять переменные в двойных кавычках, и более короткий метод назначения переменных для сохранения некоторых байтов.
источник
Сед, 72
Оценка включает в себя +1 за
-r
флаг.Попробуйте онлайн .
источник
c
,a
ppend илиi
nsert вместоs
ubstitute. Изменить: не уверен, что больше; Редактировать редактировать: да нет, это не работает, потому что они не работают в пространстве шаблонов, а вместо этого выводят напрямуюРубин ,
6261 байтКогда я работал над этим, он в конечном итоге стал почти идентичным ответу @ xnor на Python, за исключением того, что в Ruby в его
print
функции нет пробелов между аргументами , что вынуждает меня использовать соединения и приводит к более длинному ответу ...-1 байт из @manatwork
Попробуйте онлайн!
источник
:Hare
символ.Баш,
9390 байтисточник
s=
до 79h="Hare " k="Krishna " r="Rama ";echo -e "$h$k$h$k\n$k$k$h$h\n$h$r$h$r\n$r$r$h$h"
Pyth -
4541 байтПопробуй
источник
AHK ,
10792 байтаЭто кажется смешным, но я не могу найти более короткое средство в AHK, чтобы сделать это:
Вот то, что я попробовал сначала, это было 107 байтов и попытался быть модным. Как указала Digital Trauma , было бы короче просто отправить необработанный текст.
StringSplit создает псевдомассив с 1 в качестве первого индекса. Итак, на первый термин ссылаются
s1
, на второйs2
- и т. Д. В противном случае здесь нет ничего особенного.источник
Send Hare Krishna ...
?Пакетный, 75 байтов
источник
C 96 байт
Вам нужно всего лишь два бита информации, чтобы выяснить, какое слово из молитвы необходимо далее, поэтому вместо того, чтобы использовать кучу памяти и кодировать ее как строку, вы можете просто закодировать ее как 40-битное целое число (т.е. внутри длинного целого ).
источник
ksh / bash / sh, 66 байт
источник
APL (Dyalog) , 47 байтов
Требуется
⎕IO←0
по умолчанию во многих системах.Попробуйте онлайн!
8×4 1 5 2
умножать; [32,8,40,16](4⍴3)⊤
преобразовать в 4-значную базу 3; матрица [[1,0,1,0], [0,0,1,1], [1,2,1,2], [2,2,1,1]]...
[
...]
индекс↓
разделить на список списков∊¨
подключить (сгладить каждый)↑
смешать в матрицу (заполнение пробелами)источник
Сетчатка, 60
Прямой порт моего седа ответ :
Попробуйте онлайн .
источник
Java 7,
104103 байтаОбъяснение:
Попробуй это здесь.
источник
Пакет,
117111103 байтовДо 103 теперь, когда трейлинг-переводы строки разрешены.
^\n\n
используется для вставки новой строки в конце первых трех строк, а после - пробелRama
.источник
Perl,
7674 байтаисточник