Infelizmente, um dos maiores escritores de quadrinhos faleceu ontem à tarde. Muitas estrelas de Hollywood, músicos, atores e muitas outras pessoas estão prestando homenagem a esse escritor incrível, então devemos fazer algo também.
Desafio
Imprimir o logotipo dos Vingadores
Nota: Você pode usar qualquer outro caractere no lugar de # que não seja um caractere de espaço; enquanto você deve usar um caractere de espaço para o espaço
Na arte ASCII
######
###############
##### ##########
#### ####### ####
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### ########### ###
### ########### ###
### #### ### ###
### ### ### ###
#### #### ####
######## ######
#################
###
Opcional
Quem foi (na sua opinião) seu maior herói e vilão em todo o universo das maravilhas?
Aplicam-se regras de código-golfe padrão
code-golf
ascii-art
kolmogorov-complexity
Luis felipe De jesus Munoz
fonte
fonte
Respostas:
Geléia ,
625958 bytesGraças a @ JonathanAllan por jogar fora um byte!
Experimente online!
Como funciona
é um literal inteiro bijetivo base-250, que usa os caracteres na página de códigos do Jelly como dígitos.
Os codifica literais o inteiro , que se converte em duodecimal, originando .10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163 30 b 620 b 40 b um 54 um 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b um 3 1230 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b a 312
b12
Existem alguns zeros, porque 14 espaços (por exemplo) são codificados como 3 espaços, 0 hashes e 11 espaços. Isso mantém a base pequena (a maior execução consiste em 17 hashes), sem adicionar nenhuma lógica adicional ao decodificador.
Ė
(enumerar) prefixa cada dígito de base 12 pelo seu índice baseado em 1 eŒṙ
executa a decodificação de duração da execução.Agora, para cada número inteiro na matriz resultante,
Ḃ
extrai o bit menos significativo ea⁶
(AND space) substitui os por espaços, deixando os zeros inalterados.Por fim,
s27
divide a matriz de caracteres não formatados em pedaços de comprimento 27, que sãoY
separados por feeds de linha.fonte
R ,
198,173,163,157,144, 142 bytesExperimente online!
Também
R
honra ao grande Stan.Notas :
#
, usamos o caractere4
porque salva 2 bytes e:4
parece um mini "inclinado"A
)Explicação :
A aplicação de uma codificação de comprimento de execução (
rle
função) nos caracteres da sequência (excluindo'\n'
) retorna 88 repetições da alternância<space>,<hash>,<space>,<hash>,<space>,<hash>...
.As 88 repetições são todos valores no intervalo
[1,17]
, portanto, somando-64
se os pontos de código das letras que[A...Q]
obtêm a sequência:"NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"
Portanto, o código basicamente faz as operações opostas:
fonte
#
, usar0
no lugar de"#"
deve salvar mais 2 bytes. @ J.Doe que também pode funcionar melhor para o seu gzip.Chiclete ,
71666564 bytesObrigado a @ovs por jogar fora um byte!
Experimente online!
fonte
#
para!
.Python 2, 129 bytes
Experimente online!
fonte
\n
da sequência compactada.Carvão ,
716867 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Saída metade do círculo.
Reflita e desenhe na parte inferior.
Desenhe o braço esquerdo e a barra transversal do A.
Desenhe o braço direito do A.
Mude todos os caracteres para
#
s.fonte
C (GCC) ,
244243242 bytesExperimente online!
-1 Agradecimentos a Peter Cordes
-1 Graças a tetocat
Usa compactação de bits.
Explicação:
O objetivo é imprimir um conjunto de números em binário usando espaço e # como dígitos que representam o logotipo. Um pouco de mágica do bash converte o logotipo em máscaras binárias:
Isso resulta no fato de os 'números' binários:
Existe um padrão óbvio no meio, onde cada linha contém
### ### ###
Podemos economizar espaço compactando a seção intermediária com base em salvar esse padrão e em OR contra ele. Além disso, todas essas linhas simplesmente adicionam algumas coisas à esquerda da seção do meio, então criamos a
z
macro que a pega??????????????
e a converte###??????????????### ###
. Isso envolve deslocamento de bits deixado por 10 e OR-ing com o binário desse padrão, que é 117441415.Agora podemos entender mais facilmente o código:
fonte
x?y:0
ser substituído porx&&y
, ou a precedência do operador não funciona? Talvez com em&
vez de,
separar as 3 chamadas de função porque&
tenha maior precedência que&&
ou,
( en.cppreference.com/w/c/language/operator_precedence ). Ou não, porque apenas,
fornece um ponto de sequência para a impressão vs. recursão, para evitar comportamentos indefinidos.&&
fato por causa da precedência, enquanto&
não provoca curto-circuito. Até o momento, não encontrei uma alternativa mais curta, embora não descartasse uma.&
ou|
ou^
substituindo,
( porque eles não causam curto-circuito) e&&
substituindo?
(porque isso ocorre). Like_<19 && b() & puts() & main(_+1);
(espaços adicionados para facilitar a leitura). A ordem da avaliação é indefinida, o que pode na verdade ter um comportamento indefinido devido a efeitos colaterais nãostdout
desejados em en.cppreference.com/w/c/language/eval_order , mas, na prática, qualquer compilador escolherá alguma ordem para um determinado conjunto de destinos opçõesT-SQL,
341338 bytesAs primeiras quatro quebras de linha são apenas para legibilidade, a quebra de linha final faz parte de uma cadeia de caracteres literal.
Semelhante ao meu tributo a Adam West , codifiquei manualmente uma cadeia longa e fiz as seguintes substituições:
*7
é substituído por+REPLICATE('#',7)
$4
é substituído por+SPACE(4)
&
é substituído por uma quebra de linha entre aspasIsso resulta em uma enorme sequência de comandos SQL:
Que, quando executado, produz a saída necessária.
Longo, mas ainda melhor que minha melhor solução baseada em conjunto ( 463 bytes ):
fonte
CHAR(8000)
em vez deVARCHAR(max)
(a enorme comando é de 1453 bytes)CHAR(2E3)
lo, mas não parecia gostar disso. Também salvei um byte usando um literal de quebra de linha em vez deCHAR(13)
.Tela ,
747371 bytesExperimente aqui!
fonte
JavaScript (ES6),
173170 bytesExperimente online!
Node.js , 163 bytes
Desde que uma matriz de seqüências de caracteres seja uma saída válida:
Experimente online!
fonte
05AB1E ,
1018864 bytes-24 bytes, criando uma porta da resposta @ Dennis ♦ 'Jelly .
Experimente online.
Explicação:
Consulte esta minha dica 05AB1E (seções Como compactar números inteiros grandes? E Como compactar listas inteiras? ) Para entender como a compactação do número inteiro e da lista funciona.
fonte
•∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вDg„ #s∍S×J27ô»
substituindo„#
eεN>yи}˜è
porDg„ #s∍S×
C (gcc) ,
174168164160 bytes-6 bytes graças a Dennis.
Experimente online!
fonte
/// , 170 bytes
Experimente online!
fonte
Bash ,
192176 bytesExperimente online!
-16 graças a manatwork
Isso é semelhante à minha resposta C, exceto que ela usa apenas uma compactação bruta de base 16 e a passa por bc, depois usa tr para converter 1 em # e 0 em espaço. Cada linha tem 1 anexado a ela e removida dela para manter o alinhamento.
Infelizmente
dc
é mais curto quebc
.fonte
^
. Mas, melhor ainda, use emcut -c2-
vez dased
peça.echo
e ainda mais curto com emdc
vez debc
: Experimente online!echo
, mas vamos lá -dc
por Stan Lee ... você deve estar brincando;)Haskell,
170163 bytesEdit: -7 bytes graças a @ Ørjan Johansen
Experimente online!
Os espaços são codificados como caracteres maiúsculos (comprimento:
Z
baixo para caractere), sinais de hash como caracteres minúsculos (comprimento:a
para caractere) e os três últimos#
de cada linha, além de nova linha como espaço. Funçãom
decodifica.fonte
"###\n"
.Perl 6 ,
136112 bytesExperimente online!
Analisa um número 128 base dos valores ordinais da sequência compactada, converte na base 2 e substitui os
1
por espaços. Isso usa zeros como o personagem principal. A string tem 9 bytes nulos, o que era uma droga para digitar no TIO. Eu teria usado a base 127 para a mesma quantidade de bytes, mas sem valores nulos, mas com um retorno de carro, o que parece impossível de distinguir de uma nova linha:(
Explicação:
fonte
J ,
130128 bytesExperimente online!
Solução inicial
J , 164 bytes
Experimente online!
fonte
PHP ,
286212209208 bytesExperimente online!
fonte
Perl 5 , 181 bytes
Experimente online!
fonte
MATLAB : 144 bytes
Experimente online! (Tecnicamente em oitava)
Explicação:
Isso usa a mesma estratégia que digEmAll no R, apenas com a sintaxe do MATLAB. A principal diferença é que o MATLAB tem conversão automática de caracteres para números inteiros.
fonte
C # (.NET Core) , 199 bytes
Experimente online!
Usa a mesma abordagem que minha solução para o tributo a Adam West .
fonte
Peixe morto ~ ,
726723 bytes-3 bytes graças a @squid
Experimente online!
Nunca tendo visto / lido nada da Marvel e confiando apenas em spoilers, parece que Thanos é o melhor.
fonte
Máquina de Turing, mas muito pior - 16913 bytes
Feito com o gerador de programa do ASCII_only
fonte
desinflar, 79 bytes
eJyVkcsJADAIQ ++ ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg / FmNXndgLRbNvL7ifsLfMw6iQ ==
fonte
deflate
idioma, já que esta apenas se parece com uma string base64Brainf ***,
656652605 bytesO loop no início inicia a fita para
Em seguida, o restante do código gera esses caracteres.
(-47 bytes graças ao orthoplex)
fonte
T-SQL, 244 bytes
Golfe:
Ungolfed:
Experimente a versão online não destruída
fonte