Sua tarefa é imprimir a seguinte arte ASCII:
_ _ _______ _
| | | | (_______) _ | |
| |__ | | ____ ____ ____ _ _ _____ ____ ___| |_ ____ ____| |
| __)| |/ _ | _ \| _ \| | | | | ___) / _ |/___) _)/ _ )/ ___)_|
| | | ( ( | | | | | | | | |_| | | |____( ( | |___ | |_( (/ /| | _
|_| |_|\_||_| ||_/| ||_/ \__ | |_______)_||_(___/ \___)____)_| |_|
|_| |_| (____/
Lembre-se, isso é código-golfe , portanto o código com a menor quantidade de bytes vence. Boa sorte.
code-golf
string
kolmogorov-complexity
Oliver Ni
fonte
fonte
|()/\_
que leva a formas de compressão completamente diferentes. Tivemos desafios semelhantes à arte ASCII antes, mas eu gostaria de ver essa pergunta ser executada para ver se alguém tira proveito da geometria. Por outro lado, não é extremamente notável, e você está certo, não precisamos de uma etiqueta de Páscoa.Respostas:
Chiclete, 130 bytes
Experimente online.
Comprimido usando
zopfli --deflate --i10000
.fonte
JavaScript (ES6),
377373360359345 bytesObrigado a @ Neil por uma economia de um byte e a @ edc65 por mais 14!
Achei que eu tentaria. Compacta padrões comuns de repetição no texto.
_____
(5 sublinhados) é armazenado como_5
5
| | | | |
(5 do|
padrão) é armazenado como~5
fonte
=>
._
s._
com um_
seguido por quantos existem na execução~1
ou_2
dificilmente parece valer a pena. (Por que não usar|2
por exemplo?)BinaryFuck ,
565378 bytesIsso basicamente armazena os caracteres usados na matriz e depois navega pela matriz, imprimindo-os de acordo. Atualmente bastante longo, irá encurtá-lo.
Aqui está o código não destruído:
EDIT: reorganizando a ordem dos caracteres nas células, salvei 186 bytes!
fonte
1
. Forneça um link para um intérprete e o hexdump do código-fonte para que seus resultados possam ser reproduzidos.JavaScript (ES6), 380 bytes
Para completar, este é meu esforço para usar um método de compactação diferente, embora, ao que parece, não seja tão eficiente quanto a codificação de duração da execução. Cada dígito especifica que os últimos N caracteres já gerados são repetidos. Os dígitos subseqüentes podem repetir caracteres já repetidos, por exemplo, se
| 23
transformam em| | |
. Eu só queria poder compactar uma série de três caracteres.fonte
C,
517427407 bytesUngolfed Try Online
fonte
JavaScript, 297 bytes
Codificação simples dos dez substratos mais comuns (até onde eu sei). Eles não estão em ordem devido a sobreposições; meu codificador (abaixo) precisa ver, por exemplo,
'_ '
e' _'
antes' '
.Isso requer uma string e uma matriz de substrings para codificar e retorna a) a string codificada b) a lista de possíveis economias futuras c) o número de bytes salvos até o momento.
fonte
72, 72 caracteres / 209 bytes
Try it here (Firefox only).
Bem, pelo menos a contagem de caracteres é ótima, mas não podemos usar a página de código personalizada. É apenas uma descompressão LZString. Também estou trabalhando em outra solução - mais sobre isso mais tarde.
fonte
Perl 5, 286 bytes
perl -M5.01 happy.pl
, ondehappy.pl
é:Agradeço a Dom Hastings (em um comentário aqui) por uma idéia que me salvou dois bytes e levou a outra ideia minha que salvou mais quatro.
fonte
L
como atalho para|_
;-)Python 2,
343328316 bytesEsta solução não usa funções de descompressão ou outras importações.
Versão legível:
Usa uma versão da codificação de duração da execução com 3 bits para um símbolo do conjunto "\ n _ | () /". O restante do byte é o comprimento, mas limitei o comprimento a 10 e o manipulei para que os resultados sejam caracteres imprimíveis válidos em uma string python sem nenhum escape.
Substituir a sequência correspondente a "|" por um único caractere nos dados codificados economiza mais alguns bytes.
Eu removi os espaços finais nas linhas 1 e 5, o que pode estar distorcendo um pouco as regras, mas parece prático.
Este programa gera os dados compactados:
fonte
Python 2, 159 bytes
Essa fonte contém caracteres não imprimíveis, portanto é apresentada como um hexdump que pode ser decodificado
xxd -r
.fonte
Raquete,
367364 bytesUngolfed
Baseado em um desafio semelhante, eu respondi .
fonte
/// ,
282279 bytesMelhoria: notei que há muitos
//
nos comandos de substituição, então decidi compactá-los também (param
), o que me salvou em 3 bytes.Comprima repetidamente a substring mais frequente.
Décima terceira geração, 282 bytes
Experimente online!
Primeira geração, 486 bytes
Sem compactação. Escapou do
/
e do\
.Experimente online!
Segunda geração, 402 bytes
Comprimido dois espaços para
a
. Os/a/ /
meios "substituem todas as ocorrências dea
dois espaços".Experimente online!
Terceira geração, 369 bytes
Comprimido
__
parab
. O/b/__/
começo significa "substituir todas as ocorrências deb
para__
".Experimente online!
Quarta geração, 339 bytes
Comprimido
|
parac
. O/c/ |/
começo significa "substituir todas as ocorrências dec
para|
".Experimente online!
O restante das regras de compactação
Então, a lista de regras de compactação:
a
.__
parab
.|
parac
.aa
parad
.bb
parae
.cc
paraf
.dd
parag
.|c
parah
.\/
parai
. Tanto o\
eo/
nas regras são ainda escapou.b_
paraj
.|a
parak
._
paral
.//
param
.Como você pode ver, existem regras de compactação sobrepostas. Por exemplo,
g
codificadd
que codificaaaaa
que codifica 8 espaços.fonte
Sua mãe (não concorrente), 331 bytes
Decodifique a string e descompacte-a usando o compressor Jelly
fonte
Python 3, 377 bytes
semelhante à resposta do javascript, RLE usado mais um monte de substituições para substrings comuns.
Acho que fui um pouco exagerado com a substituição, provavelmente não ajudou muito, mas tudo bem.
fonte
JavaScript (ES6), 354 bytes
Outra tentativa. Infelizmente, não é tão eficiente quanto o comprimento da execução.
Armazena vários números da base 36 na primeira sequência, delimitada por um
e,
!
separador. Em seguida, substitui os números (junto com o!
) pelas representações de base 4 dos números. Substitui todos os 0 de 1, de 2, e do número base-4 com_
,|
respectivamente, e todas as 3 da são substituídos com os elementos da segunda cadeia sequencialmente.fonte
Python 3, 263 bytes
Passe inicial usando builtins.
algumas aspas extras e quebras de linha adicionadas para evitar a rolagem horizontal apenas para fins de exibição (não contadas na pontuação)
fonte
repr()
da corda crua era muito mais do que ASCII85CJam, 229
Sem caracteres descolados e sem compactação :)
Experimente online
fonte
Lua, 353 bytes
Programa:
Graças a @jrich pela compactação.
fonte
Ruby,
271262248 bytesExperimente aqui
fonte
Vim ,
374365326319313311 pressionamentos de teclas9 pressionamentos de tecla graças ao @Dr Green Eggs e Ham DJ .
Provavelmente pode ser jogado mais longe usando
:nn
?fonte
<number>a <esc>
muito. Se você fizeryl
um espaço, poderá substituí-lo por<number>p
. Isso deve economizar cerca de 8. 2. Você pode substituirea
porA
. Você provavelmente poderia levar ainda mais se mudar sua abordagem, mas essas são as dicas rápidas que eu vejo._
e|
etc?:s
substitui apenas em uma linha. Você quer:% s
. Você também pode salvar algumas teclas pressionando:im
(imap) em vez de pesquisar e substituir. (Embora você possa precisar usar ctrl-v ou ctrl-q para mapear para um espaço) #:im
só pode jogar golfe com mais alguns bytes, suponho.Javascript (ES6)
464352 bytesExperimente aqui!
fonte
HTML,
482481475 bytesfonte
05AB1E , 171 bytes
Experimente online.
Explicação:
Consulte esta minha dica 05AB1E (seção Como compactar números inteiros grandes? E Como compactar listas inteiras? ) Para entender como o número inteiro compactado e a lista Base-8 funcionam.
fonte
C (gcc) ,
280279 bytesExperimente online!
Atropelar
Definimos um alfabeto de 8 símbolos
" _|/\\()\n"
e compactamos os dados compactando dois símbolos por byte de acordo com seu índice no alfabeto, com o primeiro símbolo nos bits 0..2 e o segundo em 3..5. O bit 6 está definido para trazer o byte resultante para o território ASCII imprimível. Um RLE simples é executado na sequência compactada. Se um símbolo na cadeia ocorrer mais de duas vezes seguidas, ele será armazenado como um par de caracteres, o primeiro contendo o comprimento da execução mais 32 (conjunto de bits 5) e o segundo o próprio símbolo.Experimente online!
fonte
Javascript ES6, 314 bytes
Contém bytes não imprimíveis. Usa alguma magia JS preta para executar. Se
console.log()
for necessário para que essa resposta seja válida, a contagem de bytes será 327.Foi uma grande dor para acertar, e eu não consegui me livrar do
.slice(0,-2)
:(Irá editar em uma explicação amanhã quando estiver menos cansada.
Substituiu cada byte pelo valor hexadecimal correspondente para que o snippet de código possa ser executado
fonte
JavaScript,
294292 bytesIsso ... é literalmente apenas codificação da arte ... com isso ...
Se
console.log()
necessário, a contagem de bytes é307305 bytes.294-> 292, -2B para codificação
\n
para7
.fonte