Recentemente, eu vi pessoas Hare Krishna com seu mantra no emblema e descobri que pode ser bastante interessante codificar golfe.
O desafio
Escreva o mantra Hare Krishna , ou seja:
Hare Krishna Hare Krishna
Krishna Krishna Hare Hare
Hare Rama Hare Rama
Rama Rama Hare Hare
Critérios de vitória
Isso é código-golfe , então o código mais curto em bytes vence!
Regras
- O invólucro deve ser preservado.
- O texto deve conter novas linhas.
- As linhas podem ter espaços à direita.
- Nova linha à direita é permitida.
- Análise da Web ou de qualquer outro recurso externo não permitido.
code-golf
string
kolmogorov-complexity
Dariusz Woźniak
fonte
fonte
Respostas:
Gelatina , 22 bytes
Experimente online!
Como funciona
fonte
Convert 15973600 to base ["Hare", "Rama", "Krishna"]
Graças a Deus você explicou isso ainda mais, porque isso não fazia sentido.["Hare", "Rama", "Krishna"]
mais a base .05AB1E , 38 bytes
Pode ser reduzido em 2 bytes se as novas linhas à direita estiverem corretas.
Experimente online!
Explicação
fonte
drama share irish dna
, realmente? De onde veio essa ideia? 1)Python 2 , 60 bytes
Experimente online!
Isso parece superar abordagens de substituição de modelo como esta tentativa .
fonte
Oitava,
7459 bytesVerifique a saída aqui .
Explicação:
{'Hare ','Krishna ','Rama ',10}
cria uma matriz de células com três cadeias, onde a quarta é10
(valor ASCII para nova linha).{'ababdbbaadacacdccaa'-96}
é um vetor que indexa a matriz de células acima. O vetor é[1 2 1 2 4 ...]
porque subtraímos96
da stringababd...
.Os colchetes circundantes são usados para concatenar os resultados, em vez de obter
ans = Hare; and = Krishna; ans = ...
fonte
Retina , 39 bytes
Experimente online!
Na maioria das vezes substituições simples, o único "truque" é o modificador
*
que imprime o resultado da substituição e depois reverte a string de volta ao que era antes.fonte
PHP, 61 bytes
basta substituir os dígitos como chave na matriz pelos valores strtr
Experimente online!
fonte
JavaScript,
7570 bytesExperimente online!
fonte
3
. A sequência do modelo terá o mesmo comprimento, mas você não precisará substituí-las posteriormente. (Não vai causar problema índice da matriz, porque/./
não corresponde caracteres de nova linha.)C
154 bytes, 124 bytes,96 bytesExperimente online!
28 bytes salvos, graças a Dennis
fonte
int
e declarari
globalmente para que o padrão seja zero. tio.run/nexus/…main(){for(char*t="BG@ESCB;:N8F6DIBA10Hare \0Krishna \0Rama \0\n";*t^72;printf(t+*t++-48));}
Salva 4 bytes.V ,
40, 36 bytesExperimente online!
Hexdump:
Explicação:
O
<C-n>
comando é extremamente útil para desafios como este. :)fonte
C #, 109 bytes
Bastante simples,
Console.Write
formata implicitamente a sequência e, aoWrite
invés deWriteLine
salvar não apenas 4 bytes, evita uma nova linha à direita. Usa novas linhas no estilo Unix, portanto, pode não funcionar tão bem no Windows, 6 bytes extras para o Windows mudando\n
para\r\n
Este método produzirá diretamente no console, se você preferir um método que retorne uma string:
C #, 118 bytes
Como alternativa, se você precisar de um programa totalmente independente e compilável:
C #, 135 bytes
Isso deve funcionar como um programa compilado, desde que você defina
A
como a classe de entrada.fonte
var
, tanto quanto eu sei, evar.Format()
não é definitivamente uma coisaC, 85 bytes
Eu preferiria um mantra secular, mas espero que essa seja uma dessas religiões pacíficas.
Veja como funciona aqui .
Isso compacta uma implementação ingênua por 23 bytes.
fonte
Python 2,
928874 bytesExperimente online!
Não , não é inteligente, não, não é o mais curto, mas, ei, sou novo nisso e funciona.
Outra solução (
8480 bytes):fonte
Perl, 67 bytes
Inspirado por esta entrada JavaScript .
Perl, 67 bytes
fonte
(Hare,Krishna,Rama)
salva dois bytes no seu primeiro código.Matlab
139 136105 bytes (graças a @ 2501 )Experimente Online no Octave!
fonte
x={'Hare ','Krishna ','Rama ',10};[x{'ababdbbaadacacdccaa'-96}]
é de 64 bytes. : P (traduzindo envio de oitava do @Stewie Griffin)MySQL,
115100 bytes(Obrigado @manatwork!)
fonte
AS
.R,
758583 bytesEle cria um vetor com
Hare
,Krishna
e a nova linha, pega os necessários e depois o repete substituindoKrishna
porRama
.Precisava incluir o espaço em cada palavra e
sep=""
porque, caso contráriocat()
, colocaria um espaço no início de cada linha.fonte
print()
oucat()
seria necessário. Isso exigiria muito mais bytes. Vou postar uma alternativa com eles neste fim de semana :)object 'h' not found
tio.run/nexus/…h=
comh<-
dentro das chamadas parap
PowerShell,
735352 bytesabsolutamente demolido por Jeff Freeman - usando uma nova linha real em vez de
\n
salvar outro byte e também salvou mais um no formato de matriz. (de(1,2)
até,1,2
)-1 graças a TesselatingHeckler, sem vírgula na notação de matriz.
Minha antiga resposta - Tentei alguns outros métodos de substituição, mas todos acabaram sendo um pouco mais longos de alguma forma.
existem novas linhas na string.
bastante simples, usa o fato de que o powershell expandirá variáveis em aspas duplas e um método mais curto de atribuir variáveis para economizar alguns bytes.
fonte
Sed, 72
A pontuação inclui +1 para a
-r
bandeira.Experimente online .
fonte
c
,a
ppend oui
nsert em vez de ubstitutes
. Edit: não tenho mais certeza; Editar: sim não que não funciona porque eles não funcionam no espaço de padrões, mas em vez diretamente de saídaRuby ,
6261 bytesEnquanto eu trabalhava nisso, ele acabou se tornando quase idêntico à resposta Python do @ xnor, exceto que Ruby não tem espaços entre argumentos em sua
print
função, forçando-me a usar junções e resultando em uma resposta mais longa ...-1 bytes de @manatwork
Experimente online!
fonte
:Hare
um símbolo.Bash,
9390 bytesfonte
s=
ela cai para 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"
Pitão -
4541 bytesTente
fonte
AHK ,
10792 bytesIsso parece ridículo, mas não consigo encontrar um meio mais curto no AHK para fazer isso:
Aqui está o que eu tentei primeiro com 107 bytes e tentei ser chique. Como o Digital Trauma apontou , porém, teria sido mais curto enviar apenas o texto bruto.
StringSplit cria um pseudo-array com 1 como o primeiro índice. Portanto, o primeiro termo é referenciado com
s1
, o segundo coms2
, etc. Caso contrário, não há nada sofisticado aqui.fonte
Send Hare Krishna ...
?Lote, 75 bytes
fonte
C 96 bytes
Você só precisa de dois bits de informação para descobrir qual palavra da oração é necessária a seguir. Portanto, em vez de usar um monte de memória e codificá-la como uma string, basta codificá-la como um número inteiro de 40 bits (ou seja, dentro de um int longo )
fonte
ksh / bash / sh, 66 bytes
fonte
APL (Dyalog) , 47 bytes
Requer
⎕IO←0
qual é o padrão em muitos sistemas.Experimente online!
8×4 1 5 2
multiplicar; [32,8,40,16](4⍴3)⊤
converter para base de 4 dígitos 3; matriz [[1,0,1,0], [0,0,1,1], [1,2,1,2], [2,2,1,1]]...
[
...]
índice↓
dividido em lista de listas∊¨
alistar-se (achatar cada)↑
misture em matriz (preenchimento com espaços)fonte
Retina, 60
Porta direta da minha resposta sed :
Experimente online .
fonte
Java 7,
104103 bytesExplicação:
Experimente aqui.
fonte
Lote,
117111103 bytesAté 103 agora que novas linhas à direita são permitidas.
^\n\n
é usado para inserir uma nova linha no final das três primeiras linhas e há um espaço depoisRama
.fonte
Perl,
7674 bytesfonte