Uma string snakified se parece com isso:
T AnE eOf ifi ing
h s x l A k e r
isI amp Sna dSt
Sua tarefa
Pegue uma string s
e um tamanho n
e depois produza a string snakified. As entradas ThisIsAnExampleOfaSnakifiedString
e 3
produziria o exemplo acima.
Especificações
s
conterá apenas caracteres ASCII entre os pontos de código 33 e 126, inclusive (sem espaços ou novas linhas).s
terá entre 1 e 100 caracteres.n
é um número inteiro que representa o tamanho de cada segmento de sequência de saída. Cada linha de caracteres (para cima / baixo ou esquerda / direita) que compõem as curvas da "cobra" temn
caracteres longos. Veja os casos de teste para exemplos.n
será entre 3 e 10, inclusive.- A cadeia de saída sempre começa a apontar para baixo.
- Espaços à direita em cada linha são permitidos.
- Trailing newlines no final da saída também são permitidos.
- Espaços iniciais não são permitidos.
- code-golf significa o menor código em bytes ganhos.
Casos de teste
a 3
a
----------
Hello,World! 3
H Wor
e , l
llo d!
----------
ProgrammingPuzzlesAndCodeGolf 4
P ngPu Code
r i z d G
o m z n o
gram lesA lf
----------
IHopeYourProgramWorksForInputStringsWhichAre100CharactersLongBecauseThisTestCaseWillFailIfItDoesNot. 5
I gramW tStri 100Ch gBeca CaseW DoesN
H o o u n e a n u t i t o
o r r p g r r o s s l I t
p P k n s A a L e e l f .
eYour sForI Which cters ThisT FailI
----------
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 10
! <=>?@ABCDE `abcdefghi
" ; F _ j
# : G ^ k
$ 9 H ] l
% 8 I \ m
& 7 J [ n
' 6 K Z o ~
( 5 L Y p }
) 4 M X q |
*+,-./0123 NOPQRSTUVW rstuvwxyz{
code-golf
string
ascii-art
code-golf
code-golf
string
balanced-string
decision-problem
code-golf
string
geometry
grid
code-golf
tips
lisp
code-golf
quine
tips
king-of-the-hill
code-challenge
math
code-golf
string
palindrome
math
fastest-code
code-golf
string
counting
code-golf
code-golf
internet
code-golf
quine
source-layout
hello-world
code-golf
math
number
sequence
arithmetic
code-golf
ascii-art
grid
code-golf
number
grid
code-golf
string
crossword
code-golf
code-golf
ascii-art
grid
counting
code-golf
code-golf
math
sequence
arithmetic
number-theory
code-golf
code-golf
graphical-output
geometry
random
code-golf
ascii-art
grid
counting
code-golf
string
ascii-art
code-challenge
test-battery
code-golf
string
code-golf
ascii-art
kolmogorov-complexity
code-golf
interpreter
code-golf
math
sequence
code-golf
math
primes
set-partitions
code-golf
user81655
fonte
fonte
Respostas:
Pitão,
4845444342 bytesExperimente online.
Essa abordagem faz o mesmo abuso de espaço em branco à direita da resposta do Ruby.
fonte
Ruby, 87 bytes
Alguns pequenos abusos da regra
Trailing spaces on each line are allowed.
Cada linha de saída possuiw
caracteres longos, além de uma nova linha, ondew
está o comprimento da string original, ou seja, tempo suficiente para conter toda a entrada. Portanto, há bastante espaço em branco desnecessário à direita para grandes dimensõesn
.Ungolfed in program program
fonte
JavaScript (ES6), 143 bytes
Onde
\n
representa uma nova linha literal. Ungolfed:fonte
Pitão,
857459 bytesKl@Q0J0=Y*]d-+*@Q1K@Q1 1FNr1@Q1=XY-+*KNN1b;VK=XYJ@@Q0N=+J@[+K1 1-_K1 1).&3/N-@Q1 1;sY
=G@Q1=H@Q0KlHJ0=Y*]dt+*GKGFNr1G=XYt+*KNNb;VK=XYJ@HN=+J@[hK1t_K1).&3/NtG;sY
Obrigado a @FryAmTheEggman por me ajudar muito!
Jogava golfe o máximo que podia. Experimente aqui! Por alguma razão, a quebra de linha torna a saída estranha. Você pode dar uma olhada na saída na página inteira
Explicação
Respire um segundo e concentre-se. Isso pode ser dividido em três seções, como quase qualquer algoritmo "clássico".
A primeira seção
É onde as variáveis são inicializadas. Pode ser dividido em duas partes:
a segunda parte :
A segunda seção
Ele contém a lógica real.
A terceira seção
Esta é a parte de saída. Não é realmente interessante ...
BÔNUS
Eu escrevi o programa pyth a partir deste script python.
fonte
JavaScript (ES6), 122 bytes
Mesmo algoritmo que a resposta de @ LevelRiverSt.
fonte
C, 138 bytes
Isso usa escapes ANSI. Funciona no terminal linux.
Ungolfed:
fonte
JavaScript (ES6), 131
Algoritmo: mapeando a posição
x,y
na saída para o índice na sequência de entrada, de alguma forma semelhante a esta resposta (não relacionada).Peguei emprestado do @LevelRiverSt o truque de manter a largura horizontal igual ao comprimento da entrada.
Menos golfe
Este foi o primeiro esboço antes de jogar golfe
Teste
fonte
Pitão, 122 bytes
Eu fiz uma fórmula para calcular as posições x, y de cada caractere com base no tamanho / módulo do segmento, mas elas ficaram maiores do que eu esperava: c
Explicação:
Teste aqui
Para as fórmulas matemáticas, usei o mod para gerar sinalizadores 0/1 e, em seguida, multiplicado por um fator com base na entrada
n
, adicionei a planilha com cada etapa do trecho abaixoMostrar snippet de código
fonte
PHP,
127126124120119118117110106 bytesUsa a codificação ISO-8859-1.
Execute assim (
-d
adicionado apenas para estética):Ungolfed:
Tweaks
<
vez de!=
0
a princípio, para não precisar acrescentar outra0
(caso a primeira saída de uma linha fosse a0
), produzindo verdade00
.$o[$y]
==
comparar a direção com 1 para alterar a coordenada xnull
paraint
a seqüência de compensação, como seqüência de deslocamento é convertido para int de qualquer maneira$c
fonte