El jueves pasado, el usuario @SpookyGengar nos deleitó con su primer desafío sobre Making Squared Words . ¿Qué pasa si duplicamos el número de lados?
El reto
Tome una cadena como entrada en cualquier formato razonable que necesite ( string
, char
matriz ...) y envíe una representación octogonal de la entrada (también en cualquier formato razonable:, string
lista de string
s, char
matriz ...) como en los siguientes ejemplos:
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
- La entrada consistirá solo en caracteres ASCII imprimibles.
- Se permiten espacios en blanco iniciales y / o finales y líneas nuevas siempre que se mantenga la forma octogonal.
- Este es el código de golf , ¡así que puede ganar el programa / función más adecuado para cada idioma!
code golf
<Space>
considera imprimible?Respuestas:
Carbón , 16 bytes (10 bytes sin competencia)
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Corrección alternativa de longitud 1, también 16 bytes: versión detallada.
Una corrección de errores de carbón significa que ahora funciona el siguiente código de 10 bytes: versión detallada.
fuente
⟲
Parece que debería hacer esto. Lolcode golf
funcione, ¿verdad?θθθ
conθθ»θ
).code golf
? Creo que tiene que ver con la forma en que Charcoal toma aportes, lo que, desafortunadamente, lo descalifica por completo de este desafío, ya que no se puede eludir.JavaScript (ES6), 156 bytes
Devuelve una matriz de caracteres.
fuente
?:
!Mathematica, 247 bytes
fuente
Alignment
y guardaría bytes usando delayedset (:=
) para reducir la repetición des[[i]]
ys[[-i]]
, obtiene 224 bytes con estas ideas: (T = Tabla; q: = s [[i]]; r: = s [[- i]]; k = Longitud [s = Caracteres @ #]; Si [k == 1, #, Columna [Flatten @ {#, 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] ]) & Además, tengo una solución alternativa que solo tiene 145 bytes en el momento de este comentario.Pyth ,
796965 bytesBanco de pruebas .
fuente
Japt ,
8479 bytes-5 bytes gracias a @ETHproductions.
La nueva línea líder es parte del programa. Toma una cadena como entrada y devuelve una matriz de cadenas.
Pruébalo en línea!con la
-R
bandera para unir la matriz resultante con nuevas líneas.No es mi trabajo más orgulloso, pero al menos lo obtuve de ~ 100 bytes. Mi idea aquí era crear las partes superior y media, luego agregar la parte superior, girada 180 °.
fuente
Ul É
aUÅl
, y el interruptor V y W para guardar 2 bytes más: codepen.io/justinm53/full/...AnV ?
->V-A?
, yUq £
->U£
¬
.Python 2 ,
220213 bytesPruébalo en línea!
fuente
PHP 7.1,
230 156155 bytesEjecutar como tubería
-nR
o probarlo en línea .Descompostura
fuente
Mathematica,
168166147127 bytesEsto toma una lista de cadenas de un carácter y genera una matriz de cadenas de un carácter.
Ahorré 18 bytes explotando la simetría de usar
-l
yCross/@l
que toma algo así como un producto cruzado de cada uno de los dos individuales 2D vectores para llevar{x,y}
a{-y,x}
. Básicamente, las dos direcciones iniciales son Este (borde superior) y Suroeste (borde superior derecho). Luego agregamos rotaciones de 90 grados en sentido antihorario conCross
: Norte para el borde izquierdo y Sureste para el borde inferior izquierdo. Luego agregamos las otras cuatro piezas usando-l
para voltear las cuatro que cubrimos.Puedes probarlo en el sandbox con algo como:
fuente