Neste desafio, você precisa trazer arte ASCII (que geralmente é 2D) para 3D!
Quão?
como isso,
X X DD
X D D
X X DD
para...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Então, como fazemos isso ?
Dada a arte ascii e N
, repita esse N
tempo.
- para cada personagem (vamos chamar isso
A
): - deixe
B
ser o personagem que é exatamente 1 direita e 1 a partir deA
- se
B
é um espaço ou é indefinido: - definido
B
comoA
.
Especificações
- A primeira entrada pode ser uma sequência com caracteres de nova linha ou uma lista de sequências representando a arte ASCII 2D.
- Você tem permissão para usar
%END%
para marcar o final da entrada, mas isso não é necessário. - A segunda entrada será
N
. Será um número inteiro positivo. - todas as linhas das cordas terão o mesmo comprimento.
Exemplos
Entrada: ("###\n###",1)
Resultado:
###
####
###
Regras
Aplicam-se regras básicas de golfe com código .
Além disso, se você tiver dúvidas, não deixe de perguntar nos comentários!
Respostas:
Perl, 81 bytes
Código de 75 bytes + 6 para
-i -n0
.Observe que os
\e
caracteres são ASCII,\x1b
mas\e
são usados para facilitar o teste.Observe que esta solução usa seqüências de escape ANSI e requer um terminal compatível, além de usar o
-i
argumento de linha de comando para passar o número de 'dimensões' desejadas.Uso:
Em um terminal compatível com Linux, execute
PS1=
primeiro para garantir que seu prompt não substitua a imagem exibida.fonte
CJam,
2524 bytesUm bloco sem nome que espera uma lista de cadeias e o número de repetições na pilha e deixa uma nova lista de cadeias.
Teste aqui. (Inclui um invólucro de teste que lê a string do STDIN por conveniência.)
Explicação
fonte
S
funciona para o espaço inicial? Além disso, é permitido usar variáveis (que podem ter sido substituídas) em uma função?S
não funciona, porquef
seria o mapeamento dessa string. Re-funções, acredito que sim, em linguagens "normais", também existem muitas submissões de funções que dependem de globais que não são adulteradas entre invocações.APL, 49 bytes
Entrada: vetor de vetores de caracteres. Exemplo:
Como funciona:
↑⍵
transforma o argumento em uma matriz de caracteres⎕UCS
de char para inteiro(32∘≠×⊣)
substituir os espaços (32) por zeros...⍣⍺⊣
apply ⍺ (o argumento da esquerda) vezes a função à esquerdas←0⍪⍵,0
borda com zeros no topo e à direita o argumento1⊖¯1⌽
gire 1 para cima e 1 para a direitas+(s=0)×
soma ao original a versão deslocada, mas apenas em cima dos zeros do original32⌈
volta os zeros em 32s⎕UCS
de inteiro para charfonte
MATL , 24 bytes
O formato de entrada é
Então o outro exemplo é
A saída contém espaço em branco extra, o que é permitido pelo desafio.
Experimente online!
Se uma matriz de caracteres 2D for aceitável como entrada (pedi duas vezes ao OP ...), a primeira
c
pode ser removida, então 23 bytes :O formato de entrada neste caso é (todas as seqüências têm comprimentos iguais, o que pode exigir preenchimento à direita com espaços):
Experimente online!
Explicação
fonte
Convexo , 23 bytes
A contagem de bytes assume a codificação CP-1252.
Um bloco sem nome que espera uma lista de cadeias e o número de repetições na pilha e deixa uma nova lista de cadeias.
Experimente online!
Esta é uma porta direta da minha resposta CJam para Convex (que é fortemente baseada em CJam). A única diferença é que o Convex usa em
Ë
vez deer
transliteração, economizando um byte. Agradeço à GamrCorps por me informar.fonte
Pitão,
5433 bytesSuíte de teste.
fonte
;
?;
não é o habitual;
em linguagens de programação.;
é uma variável;
em lambdas ...I
,.?
,V
,F
,;
, (declarações explícitas) muito menos, e eles serão substituídos por?
,m
,u
,F
,M
,L
,R
,#
, ...JavaScript (ES6), 128 bytes
Aceita e retorna uma matriz de seqüências de caracteres, acrescenta uma linha extra para a saída, garante que cada linha contenha pelo menos um espaço, as divide em caracteres, faz um loop enquanto tenta copiar os caracteres para a linha acima e a coluna para a direita; chama-se recursivamente para completar o loop.
fonte
Python 2, 116 bytes
Vou jogar isso mais em breve.
fonte
lambda
não é menor?e
lá. Além disso,exec
é uma declaração, portanto, não pode estar em um lambda.Ruby, 95 bytes
Cada
<Esc>
um é um caractere ESC literal (0x1b
).Uso
Atribua o lambda a uma variável, por exemplo
func
.Ungolfed
A
forward
sequência de escape,,\e[1C
move o cursor para a frente (direita) 1 espaço e\e[<n>A
move-o para ciman
linhas. Basicamente, o que esse código faz é imprimir as "camadas" de trás para frente, substituindo espaços pelaforward
sequência para evitar a substituição das outras camadas por um espaço.fonte
f=
antes do->
na versão golfed. Remova-o por -2 bytes.