Na última quinta-feira, o usuário @SpookyGengar nos encantou com seu primeiro desafio sobre o Making Squared Words . E se dobrarmos o número de lados?
O desafio
Pegue uma string como entrada em qualquer formato razoável necessário ( string
, char
matriz ...) e produza uma representação octogonal da entrada (também em qualquer formato razoável:, string
lista de string
s, char
matriz ...) como nos próximos exemplos:
Input: golf
Output:
golf
o l
l o
f g
l o
o l
g f
o l
l o
flog
Input: HelloWorld
Output:
HelloWorld
e l
l r
l o
o W
W o
o l
r l
l e
d H
l e
r l
o l
W o
o W
l o
l r
e l
H d
e l
l r
l o
o W
W o
o l
r l
l e
dlroWolleH
Input: a
Output:
a
Input: ab
Output:
ab
b a
a b
ba
Input: code golf
Output:
code golf
o l
d o
e g
g e
o d
l o
f c
l o
o d
g e
e g
d o
o l
c f
o l
d o
e g
g e
o d
l o
flog edoc
Notas
- A entrada consistirá apenas em caracteres ASCII imprimíveis.
- Os espaços em branco à esquerda e à direita e as novas linhas são permitidos enquanto a forma octogonal for mantida.
- Este é o código-golfe , portanto, pode ganhar o programa / função mais exigente para cada idioma!
code golf
<Space>
considerado imprimível?Respostas:
Carvão , 16 bytes (10 bytes não-concorrentes)
Experimente online! Link é a versão detalhada do código. Explicação:
Correção alternativa de comprimento 1, também 16 bytes: versão detalhada.
Uma correção de bug do Charcoal significa que o seguinte código de 10 bytes agora funciona: Versão detalhada.
fonte
⟲
parece que deveria fazer isso. Lolcode golf
funciona?θθθ
porθθ»θ
).code golf
? Eu acho que isso tem a ver com a maneira como o carvão vegetal recebe informações, o que, infelizmente, a desqualifica completamente desse desafio, pois isso não pode ser contornado.JavaScript (ES6), 156 bytes
Retorna uma matriz de caracteres.
fonte
?:
!Mathematica, 247 bytes
fonte
Alignment
e economiza bytes usando delayedset (:=
) para reduzir a repetição de ,s[[i]]
es[[-i]]
você obtém 224 bytes com estas idéias: (T = Tabela; q: = s [[i]]; r: = s [[- i]]; k = Comprimento [s = Caracteres @ #]; Se [k == 1, #, Coluna [Achatar @ {#, T ["" <> {q, T ["", k / 2-2 + i], r}, {i, 2, k}], T ["" <> {r, T ["", k + k / 2-2], q}, {i, 2, k}], T ["" <> {q, T ["", 3k / 2-1-i], r}, {i, 2, k-1}], StringReverse @ #}, Centro] Também tenho uma solução alternativa de apenas 145 bytes no momento deste comentário.Pitão ,
796965 bytesConjunto de teste .
fonte
Japonês ,
8479 bytes-5 bytes graças a @ETHproductions.
A nova linha líder faz parte do programa. Pega uma string como entrada e retorna uma matriz de strings.
Experimente online! com o
-R
sinalizador para ingressar na matriz resultante com novas linhas.Não é o meu trabalho mais orgulhoso, mas o baixei de ~ 100 bytes, pelo menos. Minha idéia aqui foi criar as partes superior e média e, em seguida, anexar a parte superior, girada em 180 °.
fonte
Ul É
paraUÅl
e alternar V e W para economizar mais 2 bytes: codepen.io/justinm53/full/…AnV ?
->V-A?
, eUq £
->U£
¬
.Python 2 ,
220213 bytesExperimente online!
fonte
PHP 7,1,
230 156155 bytesExecute como pipe
-nR
ou experimente online .demolir
fonte
Mathematica,
168166147127 bytesIsso pega uma lista de cadeias de caracteres de um caractere e gera uma matriz de cadeias de caracteres de um caractere.
Salvei 18 bytes, explorando a simetria de usar
-l
eCross/@l
que leva algo como um produto cruzado de cada um dos dois únicos 2D vetores para levar{x,y}
a{-y,x}
. Basicamente, as duas direções iniciais são Leste (borda superior) e Sudoeste (borda superior direita). Em seguida, adicionamos rotações de 90 graus no sentido anti-horário comCross
: Norte para a borda esquerda e Sudeste para a borda inferior esquerda. Em seguida, adicionamos as outras quatro peças usando-l
para virar as quatro que cobrimos.Você pode testá-lo na sandbox com algo como:
fonte