Você deve gerar um estereograma de texto de acordo com uma sequência de entrada que contenha um parágrafo de texto, uma linha vazia e a mensagem oculta. O resultado será exibido como um par de parágrafos, um com espaçamento diferente, causando o efeito de ser levantado quando visualizado estereograficamente (uma explicação pode ser encontrada aqui ).
Exemplo
Entrada:
I invented vegetarianism. It is a diet involving no meat, just vegetables. It is also common in cows - they are awesome.
vegetarianism. is awesome.
Saída:
I invented I invented
vegetarianism. vegetarianism.
It is a diet It is a diet
involving no involving no
meat, just meat, just
vegetables. It vegetables. It
is also common is also common
in cows - they in cows - they
are awesome. are awesome.
Bônus
- Adicionar opção para escolher entre paralela e vesga como entrada do usuário (-20)
- Largura da coluna ajustável como entrada do usuário (-50)
Este é o código de golfe, portanto, o código mais curto após a vitória dos bônus.
Respostas:
Bash, sed:
228223197(242 - 70) = 172Se o script estiver em um arquivo executável chamado "estéreo", digite
column_width é um número; 25-45 funcionará, o padrão é 35.
page_width é um número, deve ter aproximadamente o dobro da column_width, o padrão é 80
Para visualização em vesgo, use "r l" como o quarto argumento. O padrão é "l r", que é configurado para visualização paralela.
EDIT: reescreva para dividir o arquivo em uma palavra por linha e depois remonte no final. Nota: reserva o sinal "=" para uso próprio. Qualquer sinal de "=" no arquivo de entrada ficará em branco.
EDIT: Se a sua mensagem tiver sinais "=", você poderá escolher outro símbolo para o script, fornecendo-o como o quinto parâmetro.
Exemplo
Entrada: vegetarianism.txt:
Resultado
./stereo vegetarianism.txt 32 72 "l r": | expandir (usando os dois pontos para seu símbolo de trabalho interno)
./stereo washington.txt 35 75 "l r" | expandir
O "| expand" não é necessário, mas ao mudar a saída em 4 locais, os TABs são manipulados incorretamente. Pode ser colocado no script a um custo de 7 bytes.
Variação do ImageMagick
Substituindo a última linha por um comando ImageMagick de texto para imagem:
Neste, o "r" e "l" para visualização cruzada versus visualização paralela são argumentos separados:
./im_stereo vegetarianism.txt 40 80 lr =
(fonte: simplesystems.org )
EDIT 3: Adicionado variação do ImageMagick.
fonte
TeX 212
Estou usando um sistema de composição, não ASCII. A largura da coluna pode ser alterada alterando
90pt
a quarta linha, mas não sei se isso é suficiente para se qualificar para o desconto de 50 bytes. A distância entre as duas cópias do texto pode ser alterada alterando o9pt
, também na quarta linha. O código provavelmente pode ser reduzido. Pode-se substituir cada nova linha por um único espaço, mas não removê-las completamente.Após ligar
tex filename.tex
para o terminal, o usuário é solicitado a fornecer o texto principal e, em seguida, é solicitado novamente uma lista de palavras para mudar. Nenhuma linha vazia no meio. A lista (separada por espaços) de palavras dada na segunda linha deve aparecer exatamente como no texto principal (a pontuação é tratada como uma letra seria, apenas os espaços delimitam as palavras).fonte
Javascript 391 (441 - 50)
(Meu primeiro código de golfe)
Resultado
Código longo:
fonte
Q='length'
e, em seguida, substituir coisas comoA.length
comA[Q]
.Javascript 493 (expectativas mínimas)
Esse código configura duas matrizes de linhas (esquerda e direita), organiza-as em uma sequência e imprime no
f12
console.Esta é apenas uma resposta mínima, não pretendendo vencer.
fonte
L=b=>b.length;c=console.log;p=prompt;r=(l=p().split(g=" ")).slice(),m=p().split(g),s=(f=[]).slice(),n=w=a="";for(i=0;i<L(l);i++)l[i]==m[0]&&(m.shift(),l[i]=g+r[i],r[i]+=g),L(l[i])+1>w&&(w=L(l[i])+1);for(;L(l);){f[L(f)]="";for(s[L(s)]="";L(l)&&L(f[L(f)-1])+L(l[0])<w;)f[L(f)-1]+=l[0]+g,s[L(s)-1]+=r[0]+g,l.shift(),r.shift();f[L(f)-1]+=g.repeat(w-L(f[L(f)-1]))}for(c(f,s);L(f);)a+=f[0]+s[0]+"\n",f.shift(),s.shift();c(a)
GolfScript 209 (279 -50 -20)
Este é o meu primeiro grande programa GolfScript. Eu não ficaria surpreso se houvesse otimizações. Ambos os bônus são suportados; espera-se que eles sejam encontrados após as entradas da mensagem, como:
Se você salvou esse arquivo no
input
(e baixou o GolfScript ), pode invocar o script com:Golfe
Ungolfed
fonte
JavaScript 391
fonte