(Inspirado por este desafio )
Dadas duas seqüências de entrada, uma das quais é exatamente um caractere mais longo que a outra, organize as sequências na arte ASCII como se fossem duas metades de um zíper com zíper apenas na metade. A palavra mais longa forma a parte inferior do zíper e é o primeiro e o último caractere da parte com zíper combinada. Como esse parágrafo é difícil de entender, dê uma olhada em alguns exemplos:
zippered
paragraph
z
i
p
p
gerraepdh
a
r
a
p
Observe como paragraph
(a palavra mais longa) forma o zíper inferior, e a g r a p h
parte encapsula a e r e d
parte zippered
e as partes z i p p
e p a r a
são deslocadas uma da outra.
Entrada
- Duas seqüências ASCII em qualquer formato conveniente , uma garantida para ter um comprimento uniforme e a outra exatamente um caractere maior.
- Nenhuma das cadeias conterá espaço em branco, mas poderá conter qualquer outro valor ASCII imprimível.
- Você pode receber a entrada em qualquer ordem. Indique no seu envio a ordem de entrada.
Saída
A representação artística ASCII resultante das palavras com zíper, como descrito acima, novamente em qualquer formato conveniente.
Regras
- Novas linhas à esquerda ou à direita ou espaços em branco são opcionais, desde que os próprios caracteres estejam alinhados corretamente.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
ppcg
tests
p
p
sctgs
e
t
string
strings
s
t
r
iinnggs
r
t
s
one guaranteed to be even in length and the other exactly one character longer.
A corda mais curta é sempre parRespostas:
Japonês ,
3128 bytesTeste online! Pega a corda mais curta primeiro.
Explicação
fonte
Carvão ,
3331 bytesExperimente online! Link é a versão detalhada do código. Pega a corda mais curta primeiro. Editar: salvou 2 bytes ajustando a detecção do ponto médio. Explicação:
Faça um loop sobre cada corda por vez.
Faça um loop sobre cada caractere da sequência.
Imprima o personagem e mova um quadrado extra para a direita.
Para a primeira metade da string, também mova o cursor para baixo ou para cima, conforme apropriado.
Depois de imprimir a primeira sequência, pule para o ponto inicial da segunda sequência e substitua a primeira pelo segundo, para que seja impressa no segundo ciclo. (O código é executado nos dois loops, mas na segunda vez é um no-op.)
fonte
Pitão , 35 bytes
Experimente online!
fonte
Geléia ,
2726 bytes-1 byte graças a Erik, o Outgolfer (use repeat,,
¡
para substituir if?
, e uma cláusula else else¹
)Um programa completo que imprime o resultado com espaço em branco à esquerda, conforme permitido na pergunta (ou um link diádico retornando uma lista de caracteres).
Experimente online!
Quão?
fonte
C¹Ḃ?
->CḂ¡
Python 2 ,
128119 bytesExperimente online!
fonte
V ,
473830272625 bytesFinalmente bata a resposta atual do Jelly \ o /
Recebe entrada com a palavra mais longa no topo
A seguir, não pense que há muito mais para jogar golfe.
Experimente online!
Explicação
fonte
V , 79 bytes
Experimente online!
O texto a seguir deve ser lido com bastante sarcasmo e citações no ar .
Por que continuo fazendo isso comigo mesmo?
Hexdump:
fonte
Gelatina , 28 bytes
Experimente online!
Woo Jelly está realmente competindo em uma corda e ascii-art desafio! \ o /
fonte
Ṗ
não adicionará um espaço à direita, mas uma à direita1
. E omitir qualquer coisa relacionada a espaços remove a linha das letras. Geralmente, esse algoritmo usa indexação para que as letras cheguem a um índice específico em uma coluna e, em seguida, o restante seja preenchido com espaços, então eu acho que isso não pode mais ser jogado. Pelo menos estou feliz que Jelly não seja derrotada por CJam. ;)05AB1E ,
2623 bytesExperimente online!
Explicação
Com o exemplo input =
ppcg, tests
fonte
C # (.NET Core) , 163 bytes
Experimente online!
Provavelmente muito golfe aqui, mas aqui está uma tentativa inicial não-LINQ. Função Lambda que pega primeiro a palavra mais longa e retorna uma string com a saída.
fonte
l=>s=>
) ou sejaFunc<input1, Func<input2, output>>
.Java 8, 216 bytes
Um lambda ao curry: leva
String
e retorna um lambda deString
paraString
. O parâmetro para a lambda externa é a sequência mais curta.Não sendo possível indexar em
String
s com sintaxe de matriz é ... lamentável.Lambda ungolfed
Explicação
l
é o comprimento da entrada mais curta ei
é um índice multiuso, inicializado para se referir ao primeiro caractere da segunda metade da entrada mais curta.o
acumula o resultado,p
finalmente armazena espaços para preenchimento en
é um alias para"\n"
.O primeiro loop intercala as segundas metades das duas strings (excluindo o último caractere da entrada mais longa) e cria
p
a quantidade adequada de preenchimento para a linha do meio.A próxima linha completa a linha do meio da saída.
Gostaria de me desculpar com James Gosling pelo segundo ciclo. Ele adiciona as linhas acima e abaixo da linha do meio de dentro para fora. Ao inserir o loop,
i
él - 1
, então um caractere de preenchimento é anexado juntamente com o último caractere da primeira metade da sequência mais curta.i
é decrementado para que o próximo preenchimento (anexado ao resultado) seja um caractere menor. Por divisão inteira, o mesmo caractere de posição da string mais longa é anexado. Isso se repete e o resultado concluído é retornado.Coisas legais
A linha 13 costumava ser
porque sem a sequência vazia,
+
adicionou os valores dos caracteres e anexou uma sequência numérica. Ao expandir a atribuição composta, a concatenaçãoo
et.charAt(i)
é avaliada primeiro, o que gera o resultado desejado sem a necessidade da cadeia vazia, economizando 2 bytes. É a primeira vez que vejo uma atribuição composta se comportar de maneira diferente de sua expansão.fonte
Javascript (ES6),
140 137133 bytesCerteza de que isso pode ser jogado ainda mais
fonte
`<newline>`+` `
ser mesclado`<newline> `
? (Eu não sei JS).Mathematica, 174 bytes
Entrada
fonte
TXR Lisp , 126 bytes
fonte
PHP,
149129 bytesCorra com
-nr
ou experimente online .fonte
Perl 5 , 163 bytes
Experimente online!
Leva a corda mais longa primeiro.
fonte