Boustrophedon é um tipo de texto bidirecional em que linhas sucessivas alternam entre a leitura da esquerda para a direita e da direita para a esquerda. A direção dos caracteres também foi refletida em relação à direção da leitura. Nos sistemas de escrita boustrophedon reversa, os caracteres foram girados 180 em vez de espelhados.
Desafio
Escreva um programa / função que aceite uma sequência de texto e um número de colunas e produza a sequência formatada no número especificado de colunas com linhas alternadas viradas de cabeça para baixo.
Entrada
Seu programa deve aceitar dois argumentos:
- S, a sequência de texto a ser formatada
- N, o número de colunas
Resultado
Seu programa deve gerar S envolto em N colunas com linhas alternadas invertidas 180 graus.
- A direção de leitura da primeira linha é sempre da esquerda para a direita.
- Não se preocupe sobre onde colocar quebras de linha, as linhas podem ser divididas em qualquer caractere, sem necessidade de hifenização de palavras.
- Você pode assumir que a string de entrada não conterá nenhuma quebra de linha.
Aqui estão os caracteres que seu programa deve suportar com suas contrapartes invertidas:
Uppercase:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z
Lowercase:
abcdefghijklmnopqrstuvwxyz
ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz
Punctuation:
&_?!"'.,
⅋‾¿¡„,˙'
Casos de teste
S: The quick brown fox jumps over the lazy dog.
N: 30
Output:
The quick brown fox jumps over
˙ƃop ʎzɐl ǝɥʇ
S: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vel libero arcu. Nunc dictum elementum lectus nec aliquet. Donec dolor nunc, sodales at dolor rhoncus, hendrerit scelerisque purus. Pellentesque vel sagittis libero, et rutrum leo. Nullam vulputate enim et massa dictum, vitae venenatis augue lobortis. Fusce sollicitudin ultrices consequat. Vestibulum quis nunc non tortor eleifend facilisis. In at nunc elit. Aliquam pellentesque, lectus quis aliquam posuere, quam lectus sagittis metus, ut auctor sem quam a neque. Integer rhoncus lobortis nisl. Pellentesque mi dui, laoreet in metus quis, mollis accumsan est. Nunc dignissim tortor ac eleifend tempus. Ut ut tellus aliquam, luctus nulla quis, consectetur nunc. Suspendisse viverra molestie condimentum. Curabitur et hendrerit augue.
N: 50
Output:
Lorem ipsum dolor sit amet, consectetur adipiscing
uǝɯǝlǝ ɯnʇɔᴉp ɔunN ˙nɔɹɐ oɹǝqᴉl lǝʌ ǝnbsᴉnQ ˙ʇᴉlǝ
tum lectus nec aliquet. Donec dolor nunc, sodales
lǝԀ ˙snɹnd ǝnbsᴉɹǝlǝɔs ʇᴉɹǝɹpuǝɥ 'snɔuoɥɹ ɹolop ʇɐ
lentesque vel sagittis libero, et rutrum leo. Null
sᴉʇɐuǝuǝʌ ǝɐʇᴉʌ 'ɯnʇɔᴉp ɐssɐɯ ʇǝ ɯᴉuǝ ǝʇɐʇndlnʌ ɯɐ
augue lobortis. Fusce sollicitudin ultrices conse
ɔɐɟ puǝɟᴉǝlǝ ɹoʇɹoʇ uou ɔunu sᴉnb ɯnlnqᴉʇsǝΛ ˙ʇɐnb
ilisis. In at nunc elit. Aliquam pellentesque, lec
ʇǝɯ sᴉʇʇᴉƃɐs snʇɔǝl ɯɐnb 'ǝɹǝnsod ɯɐnbᴉlɐ sᴉnb snʇ
us, ut auctor sem quam a neque. Integer rhoncus lo
snʇǝɯ uᴉ ʇǝǝɹoɐl 'ᴉnp ᴉɯ ǝnbsǝʇuǝllǝԀ ˙lsᴉu sᴉʇɹoq
quis, mollis accumsan est. Nunc dignissim tortor
u snʇɔnl 'ɯɐnbᴉlɐ snllǝʇ ʇn ʇ∩ ˙sndɯǝʇ puǝɟᴉǝlǝ ɔɐ
ulla quis, consectetur nunc. Suspendisse viverra m
˙ǝnƃnɐ ʇᴉɹǝɹpuǝɥ ʇǝ ɹnʇᴉqɐɹnƆ ˙ɯnʇuǝɯᴉpuoɔ ǝᴉʇsǝlo
fonte
Japt ,
182179 bytesJapt é uma versão abreviada do Ja vaScri pt . Intérprete
Como funciona
Existem alguns problemas, mas eles não devem afetar a validade do programa:
\xA1
é três bytes mais longa.Talvez haja uma maneira de encurtar a corda. Sugestões são bem-vindas!
fonte
CJam, 152
Teste aqui.
Eu acho que eu deveria procurar um pouco para compactar essa string Unicode ...
fonte
Javascript (ES6),
407400366360353 bytesEstou contando apenas as duas primeiras "linhas" neste trecho como a contagem total, pois o restante é código para executá-lo.
Explicação
fonte
.split("")
e.join("")
para.split``
e reduzir.join``
alguns bytes. Também.join("\n")
pode ser reescrito como acima com uma nova linha literal em vez de\n
.exec
-lo e mantê-lo curto, poisexec
precisa ser repetido para obter todas as correspondências.Pitão, 141 bytes
Testado com um Pyth Compiler online.
Como funciona
Mapa
Normal
Invertida (nada extravagante)
fonte
Python,
453363 bytesfonte