Envie ou exiba as três linhas de texto a seguir, exatamente como são mostradas abaixo. Uma nova linha à direita é aceita.
bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ
Esse bloco de texto é o mesmo que o abaixo, mas onde a n-ésima coluna é girada n vezes para baixo:
!"#$%&'()*+,-./0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
Lembre-se de que esse é um desafio de complexidade kolmogorov , portanto, o formato de saída não é flexível.
code-golf
string
kolmogorov-complexity
alphabet
Stewie Griffin
fonte
fonte
Respostas:
Java 8,
16916215014611611310695949392919084 bytesSim, finalmente conseguimos! Vencemos a saída literal de 88 bytes que pode ser encontrada na parte inferior. Obrigado a todos que participaram do golfe!
-7 bytes graças a @StewieGriffin .
-42 bytes graças a @Neil .
-11 bytes graças a @PeterTaylor .
-3 bytes graças a @ OlivierGrégoire .
-6 bytes graças a @ OlivierGrégoire e @Neil (Olivier sugeriu uma porta da resposta JavaScript de Neil ).
Experimente online.
Explicação:
Veja aqui o que cada uma das partes aritméticas faz e como termina com os caracteres corretos.
Java 8, 88 bytes
Aborrecido,
mas utilizar a rotação de colunas pretendida não será mais curto em Java, com certeza ..Estou corrigido!Publicará uma solução em um momento para ver quantos bytes diferem.Aparentemente, a diferença é de apenas -4 bytes! : DExperimente online.
fonte
(x, y)
, o que provavelmente superará sua abordagem de 169 bytes e talvez até a string literal.v->{String a="";for(int i=2,j,t;++i<6;){for(j=31;++j<58;a+=(char)(t<1?j+65:t>1?j:j+33))t=(j-i)%3;a+="\n";}return a;}
v->{for(int i=0,r,c;++i<81;System.out.printf("%c",c<1?10:32*++r+c-1/r))r=(i/27+28-(c=i%27))%3;}
c
inteiramente)Casca , 13 bytes
Observe o espaço à direita. Experimente online!
Explicação
fonte
SPL (linguagem de programação de Shakespeare),
167916181600 bytesEu tive alguns problemas com o intérprete ( https://github.com/drsam94/Spl ), então não é tão pequeno quanto eu acho que poderia ter sido. Mas pelo menos isso funciona :)
Aqui está a mesma lógica no PHP, para tornar um pouco mais fácil ver o que está acontecendo.
fonte
JavaScript (ES6),
8675 bytesEditar: salvou 11 bytes graças a @Ryan. Agora 10 bytes mais curtos que o literal!
JavaScript (Node.js) , 64 bytes
Experimente online! Graças a @Ryan.
fonte
f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''
e outros 11 em um ambiente Node como um aparte:f=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
05AB1E ,
1715 bytesEconomizou 2 bytes graças a Erik the Outgolfer
Experimente online!
Explicação
fonte
εN
deveria ser uma coisa. Combina as duas idéiasvyNFÁ])ø»
e a sua.N
enquanto usavaε
. Tecnicamente, ele não se encaixa porqueε
não é um loop, embora, como às vezes o usemos como tal, seria bom tê-lo.CJam (18 bytes)
Demonstração online
Dissecação
A abordagem óbvia é gerar as linhas originais, compactar, girar com
ee::m>
e retroceder. Masee::
é bastante longo e é mais curto para gerar as colunas diretamente.fonte
Python 2 , 72 bytes
Experimente online!
Isso funciona removendo
31.333..
do caractere anterior, adicionando97
quando o ponto de código anterior é menor que 60 e subtraindo26
no final de cada linha.fonte
R ,
6463 bytesExperimente online!
-1 byte graças a Giuseppe
Cheguei a isso através de várias tentativas e erros, por isso estou lutando com uma explicação concisa. Essencialmente, em vez dos códigos de caractere, comecei com uma sequência mais simples de 1:81 representando o bloco de texto original (3 * 26 mais 3 novas linhas) e examinei os índices de onde esses valores acabam no bloco girado. Isto segue uma sequência regular que cai 26 por vez, módulo 81 (ou equivalente, aumenta 55 mod 81). Era então uma questão de recriar essa sequência
(0:80*55)%%81+1])
, mapeando para os valores unicode reaisc(32:57,10,65:90,10,97:122,10)
, convertendo em caracteres e imprimindo.fonte
55
invés de-26
since-26 == 55
(mod 81).Japonês ,
1715 bytesTeste online!
Explicação
7 outros 15 bytes possíveis:
fonte
CJam ,
2321 bytesExperimente online!
Explicação
fonte
MATL , 16 bytes
Experimente online!
Explicação
fonte
1:26
como mudança. Eu deveria tentar isso na minha resposta R ... #&
foi uma grande adição, da idéia de Suever :-)Gelatina , 13 bytes
Experimente online!
Como funciona
fonte
Perl 5 , 46 bytes
Economizei 13 bytes graças à magia arcana de @TonHospel !
Experimente online!
fonte
$i++
é justo$_
e você pode usá-lo emsay
vez deprint
fazê-lo, de fato50
{}
no mapa também para49
:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
47
:print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26
. Infelizmente,say
dá uma nova linha a mais.48
:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
R ,
88bytes 86Experimente online!
R é terrível na manipulação de cordas e, embora tenha algumas matrizes bem organizadas, as rotações são outra coisa que não faz com muita facilidade.Felizmente, darei uma recompensa a qualquer um que possa me jogar fora na R.Apesar de ter encontrado uma resposta mais curta, ainda concederei uma recompensa de 50 repetições à primeira outra resposta R com menos de 88 bytes.
Suponho que me daria a recompensa se pudesse, mas isso é dois bytes mais curto que a resposta "chata"! Evito rotações usando apenas a propensão de R para reciclagem.
EDIT: a resposta do user2390246 me superou completamente e eu concederei uma recompensa de 100 pontos, já que essa solução é muito superior.
Para chegar aqui, desconstruí a saída desejada para seus pontos de código ASCII com
utf8ToInt
(removendo as novas linhas), construí uma matriz e executei umadiff
delas, obtendo as diferenças entre as colunas. Observando a periodicidade lá, propus-me a construir a matriz de uma forma de golfe, esperando usardiffinv
para recriar o original.Graças à periodicidade, podemos recriar a
diff
matriz ed forçando R a reciclar com um comprimento não múltiplo e extrair as colunas que realmente queríamos:Em seguida, invertemos esse processo, com o
diffinv
objetivo de recriar os pontos de código, anexamos uma linha de10
(novas linhas) na parte inferior, reconvertemos em ASCII comintToUtf8
ecat
o resultado.fonte
Stax ,
1412 bytesExecute e depure
Descompactado, não jogado e comentado, parece com isso.
Execute este
Este programa usa apenas recursos que estão disponíveis desde o lançamento inicial do stax, mas aparentemente eu esqueci
K
mapa cruzado quando escrevi originalmente esta resposta.Uma coisa quase interessante a ser observada sobre essa resposta é que a
R
instrução é desnecessária porqueK
transforma implicitamente números inteiros em intervalos. No entanto, não há como pressionar3
e26
sem algum byte extra no meio.fonte
PowerShell , 53 bytes
Experimente online!
Vejo que isso é semelhante à resposta Perl de Dom, mas cheguei a ela independentemente.
Isso explora o fato de o padrão continuar
Symbol - Lowercase - Capital
, mesmo ao envolver novas linhas (8 - z - A
por exemplo) e, portanto, apenas adiciona o deslocamento apropriado (escolhido via$j++%3
) ao número atual$_
antes de-join
agrupá-los em uma única sequência. Isso foi feito três vezes para criar as três linhas (preservando$j
entre as iterações). Essas três linhas são deixadas no pipeline e o implícitoWrite-Output
nos fornece as novas linhas gratuitamente.fonte
Julia 0.6 , 79 bytes
[' ':'9' 'A':'Z' 'a':'z']
é a matriz 2d não rotacionada de caracteres,[n,mod1(i-n,3)]
indexa nessa matriz com a rotação apropriada.prod
leva um vetor de caracteres para uma string (já que a multiplicação é usada para junção de string). Existem duas compreensões de vetores aninhadas, resultando em um vetor contendo 3 cadeias e, em seguida,println.
imprime cada uma das cadeias no vetor, seguida por uma nova linha.O TIO não possui o método apropriado para multiplicar (com
prod
) dois caracteres para obter uma String. Sei que esse método foi adicionado recentemente, mas a versão do TIO parece ser a mesma do PC onde esse código funciona, então não posso explicar completamente por que ele não funciona no TIO.Exemplo de copiar e colar (
;
não é necessário, apenas suprime a saída extra no REPL):fonte
Carvão ,
262115 bytesExperimente online! Link é a versão detalhada do código. Explicação:
fonte
J ,
29, 2725 bytes-2 bytes graças a FrownyFrog -2 bytes graças a milhas
Experimente online!
Abordagem inicial: J , 29 bytes
Explicação:
i.26
- intervalo 0-2632 65 97+/]
- crie uma tabela de 3 linhas para os caracteres&.|:
transponha, faça o próximo verbo (|.
) e transponha novamente-|."_1
gire cada linha n vezesu:
converter para unicodeExperimente online!
fonte
|:u:(<26)2&(|.>:)32 65 97
economiza 2 bytes.C,
7069676064 bytes+4 bytes para tornar a função reutilizável .
Resposta inválida de 60 bytes que não é reutilizável:
Porta da
minha resposta Java 8 respostaJavaScript de @Neil .Experimente online.
fonte
i=t=0
.APL + WIN, 26 bytes
Origem do índice 0
Gere uma matriz de valores de índice inteiro dos caracteres no vetor atômico APL.
Gire cada coluna para baixo pelo seu valor numérico.
Use os índices resultantes para exibir os caracteres do vetor atômico.
fonte
Vim,
8179 bytesExplicação (simplificada)
fonte
C, 72 bytes
fonte
Python 2 , 65 bytes
Experimente online!
fonte
brainfuck ,
121115 bytesObrigado a @JoKing por salvar 6 bytes!
Experimente online!
fonte
+++[[<+>>++<-]>]
realmente é o começo de tudo, hein? Obrigado!Japonês , 17 bytes
Teste-o
Explicação
fonte
;Bå_cÄ é}"@`" ·y
C
após o almoço. Não sei comoy
e·
acabou no caminho errado; Eu devo terCtrl+Z
editado muitas vezes antes deCtrl+A
ing!Python 2 , 79 bytes
Experimente online!
fonte
APL (Dyalog Unicode) , 23 bytes ( SBCS de Adám )
Experimente online!
-1 graças a Adám .
É executado em um ambiente interativo.
Assume
⎕IO←0
.fonte
(⎕UCS-⊖∘↑32 65 97+⊂)⍳26
ou(⎕UCS-⊖32 65 97∘.+⊢)⍳26
K4 , 38 bytes
Solução:
Exemplo:
Explicação:
9 caracteres para executar a rotação ...
fonte
Perl,
4946 bytesou
fonte
$^x8
, mas não consigo pensar em outra var com comprimento suficiente, talvez"@INC"
mas seja muito longo e usando em"@-"
vez de$n++
, mas ainda, o mesmo comprimento. A menos que isso ajude você a diminuir ainda mais isso? A menos que você adicione-p
sinalizador e tenha saída implícita?