Adam West faleceu, e eu gostaria de honrar sua memória aqui no PPCG, embora duvide que ele soubesse de nossa existência. Embora existam muitas coisas diferentes pelas quais esse homem é conhecido, nenhuma é mais proeminente do que seu papel como o batman original . Eu sempre me lembrarei do meu padrasto ainda assistindo o Batman e Robin da velha escola até hoje. Esse desafio é de natureza simplista, nada alinhado com o homem complicado que era Adam West. No entanto, é o melhor que pude apresentar, pois esta é a imagem mais icônica da carreira do homem.
Eu queria postar isso antes, mas estava esperando alguém aparecer com algo melhor.
Saída o seguinte (com ou sem espaços à direita / novas linhas):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
Isso é código-golfe , a menor contagem de bytes vencerá.
fonte
Respostas:
Geléia , 44 bytes
Experimente online!
Como funciona
Este é um literal numérico. Todos os caracteres são substituídos por seus índices baseados em 1 na página de códigos de Jelly, o resultado é interpretado como um inteiro bijetivo base-250, resultando em
Em seguida,
b25
converta esse número inteiro na base 25 eo99
substitua 0 por 99 , produzindoJx$
substitui a j- ésima base-25 dígitos n por n cópias de j , produzindoAgora,
ị⁾ *
indexa o par de caracteres. A indexação é baseada em 1 e modular, portanto, números ímpares são substituídos por espaços, mesmo números com asteriscos. Isso geras25
corta o resultado em pedaços de comprimento 25 . Se escrevermos cada pedaço em sua própria linha, obteremosO átomo de rejeição
ŒB
palindromiza cada pedaço anexando uma cópia invertida sem seu primeiro caractere, produzindoPor fim,
Y
apresenta os feeds de linha reais.fonte
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
era curto o suficiente em 53 bytes ...Wordfuck ,
57612686 bytesAcho que usar o nome dele como código-fonte dá a Adam West alguma honra.
Experimente online! (brainfuck transpilado)
Adam West cantando (obrigado @carusocomputing)
fonte
Pitão,
530529528524 bytesfonte
B.pop(0)
pouco chato. Por que não reverterB
para que você possa usar o muito mais eficiente (e mais curto)B.pop()
? Elepop(0)
precisa mover todos os elementos restantes da lista para um slot. Claro, isso acontece na velocidade C, mas ainda é menos eficiente do que sair do final da string.POP
,BIFF
,POW
,OOF
me fez cuspir para fora o que eu estava bebendo no meu monitor. Graças lol. +1.JavaScript (ES6),
148146 bytesDemo
Mostrar snippet de código
fonte
Python,
149142 bytes7 bytes salvos graças a @ PM2Ring
fonte
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 bytesExperimente online!
Como funciona
Isso usa as seguintes técnicas padrão:
1
para11
, portanto, a sequência de comprimentos de execução é compactada pela conversão de base , de base11
para base94
(caracteres ASCII imprimíveis, exceto aspas simples, que precisariam ser escapados).fonte
[1:12 20 24 99]
, o que dificulta a compactação. Minha melhor tentativa é de 60 bytesY|
,? Eu não sei o suficiente atm MATL para testar se isso é realmente mais curto ...[1:24 99]
, removi um byte . Se eu usar[0:24]
(base 25) Eu não sei como transformar0
em99
em alguns bytesY|
não funciona no MATL / Octave, como no Jelly / Python. Neste último,0 or 99
produz 99 ...05AB1E , 47 bytes
Experimente online!
fonte
replace 99 trick
dele (salvou 4 bytes pelo caminho direto). Ainda estou procurando uma maneira melhor..∞
vez de€û»
(espelhos ingressar implicitamente em listas em novas linhas primeiro na versão herdada, antes de aplicar o espelho). Eu também tentei usar₂в
em vez de25в
, mas infelizmente o número inteiro comprimido é então 1 byte mais tão bem, por isso não salvar nada:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156 bytesIsso pressupõe um ambiente Unix, para
rev
. I usar um bastante simples (contagem, de caracteres) que codifica, com N e A anexando ume
*
, respectivamente, e B fazendo a cópia e reverso.No arquivo real, as entradas entre colchetes são substituídas pelos bytes literais que representam.
<C-v>
é 0x16,<ESC>
é 0x1b e<CR>
é 0x0d.Experimente online
fonte
:nm N a <C-v><esc>
e:nm A a*<C-v><esc>
<C-v>
arquivo em um arquivo do que é, então usei o método de rotatória para testá-lo{ cat foo.vim; echo ':wq'; } | vim out.txt
. Não sei por que não me ocorreu tentar<C-v><C-v>
ontem.-v
bandeira permite que você use descrições principais vim (como<C-v>
e outros enfeites)<NL>
vez de<NEWLINE>
?Carvão ,
69545248 bytesExperimente online! Link é a versão detalhada do código. Editar: Graças a @ ASCII-somente, salvo 4 bytes por comutação de um sinalizador separado para loop sobre índices,
7 bytes, utilizando o (não documentada?)e mais 4 bytes, utilizando o alfabeto para a codificação de comprimento de percurso. Salvou mais 2 bytes porque⸿
De caracteres,AtIndex
assume automaticamente o módulo. Salvou mais 4 bytes porqueMap
cria automaticamente uma variável de índice. Explicação:O externo
Map
retorna uma matriz.Print
lida com isto, a impressão de cada elemento na sua própria linha, evitando ter que manualmenteJoin
os com\n
.A sequência codifica todas as meias linhas da saída. Letras alternadas referem-se ao número de se
*
espaços (a=0
é usado para manipular uma linha que começa com um espaço). O espaço é uma escolha conveniente de delimitador, mas também é compactado bem (x também é compactado para 55 bytes gerais). Cada linha é processada separadamente. (Nota: o deverbosifier falha ao remover o separador entre uma sequência compactada e não compactada, caso contrário, o código teria uma,
legibilidade.)Faça um loop sobre cada letra, expandindo para o número apropriado de
*
s ou espaços. A variávelm
é o índice do loop interno para issoMap
, enquantol
mantém a letra. O resultado éJoin
editado em uma única sequência usando a sequência vazia predefinidaw
.Depois que todas as linhas forem impressas, reflita tudo à esquerda, sobrepondo a coluna do meio.
Tentei manipular as novas linhas, espaços e estrelas em um único loop, mas na verdade foram necessários mais dois bytes desta maneira:
fonte
Clojure,
833437 bytesQuase por definição, Clojure nunca ganhará nenhum prêmio por brevidade, mas como eu esperava TODAS AS SEMANAS SEMANA nos DOIS (conte-os - DOIS ) episódios de Batman (mesmo tempo de morcego, mesmo canal de morcego!), Fica claro que há nao ha tempo a perder!
Rápido, Robin - para o Bat-REPL !!!
Versão sem golfe:
RIP Adam West. Não importa quão ridículos sejam esses shows, aqueles de nós que éramos crianças o saudam.
fonte
C (gcc) , 191 bytes
Experimente online!
fonte
Várias soluções, todas usando a codificação de comprimento de execução, com uma variedade de técnicas para codificar os dados do RLE.
Python 3,
125121 bytesEsta versão usa uma
bytes
string para armazenar os dados.Let
s
Ser uma seqüência de estrelas ou de espaços. Em seguida, an
codificação de bytess
é fornecida porPython 2,
133126 bytesEsta versão usa codificação alfabética. O valor da letra determina o comprimento da sequência de saída, o caso da letra determina se é composta de espaços ou estrelas.
Minha solução original de 133 bytes Python 2.
Esta versão usa cadeias de comprimento zero para que possa alternar facilmente entre cadeias de estrelas e de espaço.
Apenas por diversão, aqui está uma lista usando a codificação alfabética.
Python 2, 148 bytes
Para ainda mais diversão, aqui está um padrão no Jogo da Vida de Conway que gera uma versão do logotipo do Batman. Eu tive que dobrar cada linha para manter a proporção mais ou menos a mesma da versão em texto. Esse padrão realmente não computa o logotipo (embora seja possível fazer cálculos no Life - ele é completo em Turing), apenas o substitui de loops de memória, então acho que não posso publicá-lo como uma entrada de código de golfe (embora Eu o criei usando um script Python que escrevi há alguns anos). ;)
É codificado em um formato RLE bastante padrão que a maioria dos mecanismos Life pode carregar. Se você não possui um programa GoL (por exemplo, Golly ), é possível visualizá-lo em ação online com este mecanismo Life online , que pode importar arquivos Life RLE. Aqui está uma versão PNG desse padrão Life , alguns programas Life (incluindo Golly) podem carregar padrões Life a partir de PNGs e vários outros formatos de arquivo de imagem.
fonte
T-SQL,
283 276222 bytesImplementando a compactação GZIP da string batman original, através do método postado aqui . Isso funciona apenas no SQL 2016 e posterior.
Para versões anteriores do SQL, use meu método anterior ( 276 bytes ):
Basicamente, estou codificando manualmente uma string gigante que determina o que imprimir a seguir, usando o seguinte método:
#7
é substituído por+REPLICATE('*',7)
$4
é substituído por+SPACE(4)
&
é substituído por+CHAR(13)
Após a substituição, a seqüência completa de 958 caracteres se parece (com quebras de linha em cada linha no símbolo do Batman:
Que é executado como SQL dinâmico, produzindo a seguinte saída:
fonte
PHP , 137 bytes
Experimente online!
PHP , 177 bytes
Experimente online!
PHP , 179 bytes
Experimente online!
fonte
Java,
296214 bytesGolfe:
Ungolfed:
fonte
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
para dados efor(char a:x){a=(int)a-48; [...]
basicamente adiciona 48 a cada um dos números e os converte em seu equivalente ascii char. Eu acredito que isso vai lhe poupar 70-80 bytes. Também acredito que codificar os dados no lamba também reduzirá bytes.boolean b=false;
pode serboolean b=1<0
, ou melhor ainda, você pode usar umint
e também combinar a declaraçãoi
na mesma linha;).i
no seu loop for, acho que você pode usarfor(int i=0;i++<a-48;)
comofor
-head.Bubblegum , 75
Despejo xxd:
Experimente online .
fonte
Coffeescript (282 bytes)
Explicação (usando ES6 comum)
fonte
V , 102 bytes
Experimente online!
Hexdump:
Isso usa a codificação de comprimento de execução para gerar a seguinte metade do batman:
E depois inverte e duplica cada linha.
fonte
Python 2 , 134 bytes
Experimente online!
O comprimento da execução codifica cada linha da metade esquerda na base 36. Espelha-a para criar a linha completa, que é impressa. Os espaços iniciais não são codificados; em vez disso, a metade esquerda é preenchida com o comprimento 25.
fonte
Mathematica 151 Bytes
Barato e sem criatividade. A sequência é apenas do
Compress
comando interno usado na saída necessária.Atualizar:
Acho que posso fazer melhor com as funções
ImportString
\ExportString
internas, mas não consigo copiar e colar as seqüências resultantesExportString
corretamente. Por exemploNão consigo copiar a saída de texto da segunda linha para substituir
%
a terceira linha.fonte
Bash ,
407322 bytesExperimente online!
realmente horrível, precisa de mais tempo ou ajuda para jogar golfe. gera a saída com 0 an 1 e translitera no final. Codificado em dígitos hexa a quantidade de 0 e 1, tendo o cuidado de fazer o último dígito 0 para as duas primeiras linhas como um sinalizador para gerar a coluna do meio. Utiliza a pressão printf no dígito ou na seqüência de caracteres para gerar 0 e 1. acha que o
%.$[0x${X}]C
padrão pode ser usado para jogar golfe.fonte
Python 3,
232197183164 bytesMais uma resposta em Python. Nenhum código de compressão chato embora. Código de compactação emocionante.
Estou usando o número mágico 35 porque, dessa forma, não ocorrem caracteres de controle, espaços ou coisas que precisariam escapar. Triste que eu tenha que processar os espaços e as estrelas separadamente, isso me custa um pouco.
Ungolfed:
fonte
print
chamada na mesma linha que ofor
. 2 Se você usar umabytes
corda, poderá se livrar dessasord
chamadas. 3 Você pode substituir orange
zipando sobre um par de iteradores. Aqui está um gerador que combina essas duas idéias:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Essas mudançasPowerShell, 305 bytes,
307 bytes,316 bytesTalvez alguém possa me ajudar a reduzi-lo ainda mais, embora eu não possa descobrir como, a menos que haja uma maneira mais concisa de definir um acelerador de tipo personalizado.
Edit: Versão reduzida (obrigado @root). A sequência codificada (codificação pré-base64) pode ser cortada por oito posições da matriz e o intervalo pode ser diminuído. Não sei por que o StreamWriter está introduzindo esse inchaço no MemoryStream. A compreensão do comportamento subjacente seria apreciada.
Ungolfed:
Código de compressão:
fonte
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
são ambos 0. Eles são necessários?('225','193','82','192','106','2','0','0')
podem ser removidas para criaçãoH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. Eu não entendo de onde eles estão vindo.Perl 5, 168 bytes
Observe o espaço à direita no final apenas da primeira linha. Requer
-M5.01
, que é gratuito.Provavelmente pode ser jogado um pouco mais.
fonte
LaTeX, 314 bytes
A versão ungolfed com explicações:
fonte
C # (.NET Core) ,
342 333 328 185175 bytesExperimente online!
Muitos bytes salvos após alterar a abordagem. Tomando o desenho como uma matriz 2D, calculei a codificação RLE por arquivos:
Índices ímpares representam
s e índices pares representam
*
s. Substituí cada número por uma representação ASCII imprimível (assumindo o caractere '#' como 1) e obtive:Portanto, o algoritmo calcula o desenho descompactando essa string e adicionando novas linhas nos locais apropriados.
fonte
l
uma variável, basta usá-la diretamente no loop..ToString(i, 2)
->.ToString(i,2)
ou seja, remova o espaço em branco.1e10
) para esses números? Este desafio é realmente útil aqui.PowerShell ,
129128 bytesExperimente online!
Ungolfed:
Resultado:
A ideia principal é muito simples
A codificação do emblema:
Decodificação (este script):
Length
vezesAlgumas coisas inteligentes
½
pors*t
(73 asteriscos, 0 espaços, 74 asteriscos).Extra: Scipt para codificação do Emblema
fonte
Mathematica, 271 bytes
fonte
Braingolf ,
590580579577428423312 bytes-111 bytes porque LeakyNun é um deus do golfe
Experimente online!
Braingolf não é bom em arte ASCII, mas caramba, eu tentei.
De jeito nenhum eu estou explicando esse clusterf ** k
fonte
/// ,
171166 bytes5 bytes salvos porque eu estava usando
\r\n
na fonte, lol.Experimente online!
Compactado usando iterações sucessivas de substituição das substrings "mais econômicas" por um único caractere. Isso é quase ideal, embora uma das duas coisas possa ser o caso:
fonte