Dado un número de entrada n
de 1
a 26
(o 0
to 25
), genera la lectura del alfabeto de izquierda a derecha hasta e incluyendo esa letra correspondiente, con a=1, b=2, c=3, ...
. El giro es que las letras también deben repetirse verticalmente correspondientes a su posición en el alfabeto. Los números impares (cuando están 1
indexados) deben equilibrarse a través de la línea horizontal, mientras que los números pares deben alternar entre favorecer la parte superior o inferior (puede elegir qué dirección ir primero). Si está indexando a 0, intercambie impar / par en la oración anterior.
Dicho de otra manera: si el valor alfabético de una letra ?
es #
, entonces debería haber #
copias de esa letra en la salida, todas ellas en la #
columna th. Estas letras deben estar equilibradas por encima y debajo de la línea horizontal que tiene el a
. Si las letras no se pueden equilibrar de manera uniforme, alterne teniendo la letra "extra" encima y debajo de esa línea.
Aquí están las primeras seis salidas ( n = 1,2,3,4,5,6
indexadas en 1, eligiendo alternar primero a la parte inferior), separadas por nuevas líneas, para que pueda ver el patrón. Los comentarios que explican el patrón comienzan con #
.
a # On a line by itself
ab
b # The "extra" letter is below the horizontal
c
abc # The 'c' splits evenly
bc
d # Because the 'b' was below, the extra 'd' must be above
cd
abcd
bcd
de
cde
abcde # The 'e' balances
bcde
e
def
cdef
abcdef
bcdef
ef
f # Since the 'd' was above, the extra 'f' must be below
(omita algunos para n=26
)
xyz
wxyz
tuvwxyz
stuvwxyz
pqrstuvwxyz
opqrstuvwxyz
lmnopqrstuvwxyz
klmnopqrstuvwxyz
hijklmnopqrstuvwxyz
ghijklmnopqrstuvwxyz
defghijklmnopqrstuvwxyz
cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
fghijklmnopqrstuvwxyz
ijklmnopqrstuvwxyz
jklmnopqrstuvwxyz
mnopqrstuvwxyz
nopqrstuvwxyz
qrstuvwxyz
rstuvwxyz
uvwxyz
vwxyz
yz
z
Reglas
- Puede elegir la salida en mayúsculas o minúsculas, pero debe ser coherente.
- La salida no puede tener espacios en blanco extraños, a excepción de una nueva línea final opcional.
- Un programa completo o una función son aceptables.
- El número de entrada se puede tomar a través de cualquier formato adecuado .
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
-
para generar las líneas en orden inverso, lo que creo que está permitido?x*-(x&2)
funcionaPyth , 26 bytes
Una puntuación perfecta para un desafío sobre el alfabeto.
Pruébalo en línea!
fuente
Jalea , 25 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
fuente
Javascript (ES6),
127126 bytesUtiliza el truco de @ Lynn. Escribir el alfabeto completo era dos bytes más barato que calcularlo. Editar: guardado 1 byte gracias a @ETHproductions porque olvidé señalar que en
\n
realidad representa el carácter de nueva línea literal. (No me gusta poner nuevas líneas literales en mi respuesta cuando la línea es tan larga).fuente
btoa`...`
donde...
se reemplaza con el resultado deatob`abcdefghijklmnopqrstuvwxyzz`
. (Además, puede reemplazar\n
con una nueva línea literal).