Introducción
Escriba un programa para generar la espiral saliente del famoso pangrama siguiendo las reglas dadas.
Desafío
Un pangrama es una oración que usa cada letra de un alfabeto dado al menos una vez. Uno de los pangramas más famosos es el que se usa ampliamente en el visor de fuentes de Windows, a saber, " El rápido zorro marrón salta sobre el perro perezoso ". El desafío es generar una espiral basada en este texto.
Su tarea genera este texto exacto:
heeeeellllllllllllazzzzzzzzzzz
hummmmmmmmmmmmmppppppppppppppy
hubrrrrrrrrrrrrrrrrrrooooooosy
hukyddddoooooooooooooooggggwsy
hukyveeeeerrrrrrrrrrrrrrrrtwsy
hukyvxjjjjjjjjjjuuuuuuuuuttwsy
hukyvxkbbrrrrrrrrrrrrrrrmttwsy
hukyvxkogggggggttttttttomttwsy
tukyvokoellllllllllllahomttwsy
tukyvokoeovvvvvvvvvvvzhomttwsy
tukyvocoeoummmmmmmmmezhomttwsy
tukyvocoeoufooooooopezhomttwsy
tukyvocohoufroooooxpezhomttwsy
tukyvoiohoufrquuuwxpezhomttwsy
tucyvoiohoufbqttiwxpezhomttwsy
tucyvoiohoufbeehiwxprzhomttwsy
tucyvoiohoufkccciwxprzeomttwsy
tjiyvoidhounnnnnnwxprzeomttwsy
tjiyvoidhojjjjjjjjxprzeomttwsy
tjiyvoidhssssssssssprzeopttwsy
tjiyvoidttttttttttttrzeopttwsy
tjiyvoiyyyyyyyyyyyyyyzqopttwoy
tjiyvouuuuuuuuuuuuuuuuqwpttwoy
tjiyvffffnnnnnnnnnnnnnnwpttwoy
tjiyossssssssssssssssssspthwoy
tjizzzzalllllllllllleeeeehhwoy
tjuuqqqqqqqqqqqqqqqqqeeeeehnod
txxxxxoooooooooooooooffffffnod
reeeeevvvvvvvvvvvvvvvvvvvvvvod
gggggggoooooooooooooood
Así es como se genera,
- Hubo un zorro celoso que disfrutó del pangrama "El rápido zorro marrón salta sobre el perro perezoso". Un día estaba en el centro de una espiral exterior y decidió saltar y pintar.
- Le gustaría pasar por el pangrama desde el principio hasta el final, y si una letra es la enésima letra del alfabeto, le gustaría pintarla n veces.
- Sin embargo, el zorro no era muy bueno para hacer giros en las esquinas, por lo que al llegar a cada esquina también tuvo que detenerse y pasar a la siguiente letra.
- También decidió repetir el pangrama tres veces para enfatizar que él es el zorro marrón rápido.
- Tu trabajo es mostrar cómo se vería la espiral después de que el zorro pintara todas esas letras.
(Versión simple sin contar historias)
El famoso pangrama "El rápido zorro marrón salta sobre el perro perezoso" se repite tres veces, con los espacios eliminados y todas las letras en minúsculas, para generar
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
La espiral comienza desde el centro y comienza con la letra "t", comienza yendo hacia la derecha y sale hacia la derecha. Si el carácter actual es la enésima letra del alfabeto, entonces cambia al siguiente carácter siempre que
- la espiral llega a una esquina, o
- Las letras actuales se imprimen exactamente n veces.
Para ilustrarlo mejor, explicaré cómo se genera la espiral relacionada con las tres primeras palabras "thequickbrown".
rooooo
rquuuw
bqttiw
beehiw
kccciw
nnnnnnw
El zorro comienza desde "t", va a la derecha, llega a la primera esquina, lo pinta con la "t" y luego cambia a "h" y baja, llega a la segunda esquina, cambia a "e" y va a la izquierda, llega a la Tercera esquina, cambia a "q" y sube, llega a la cuarta esquina, cambia a "u" y va a la derecha, llega a una esquina y cambia a "i", baja, llega a una esquina y cambia a "c", va izquierda, pinta con éxito 3 "c" s antes de llegar a la siguiente esquina , cambia a "k" y continúa hacia la izquierda , llega a una esquina de inmediato, cambia a "b" y sube, pinta 2 "b" s antes de llegar la siguiente esquina, cambia a "r"y sigue hacia arriba , llega a una esquina y cambia a "o", va a la derecha, luego a "w", abajo, "n", a la izquierda.
Especificaciones
Puede tomar una entrada opcional que contenga cualquier forma estándar de la cadena
thequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydogthequickbrownfoxjumpsoverthelazydog
Su salida debe estar formateada como una cadena y debe ir a STDOUT en lugar de archivos o STDERR, con líneas nuevas colocadas correctamente. El encabezado y el final de las líneas vacías no importan. Se permiten espacios de encabezado y final en cada línea, pero deben ser consistentes. Entonces, si agrega 5 espacios antes de una línea del texto dado, deberá agregar exactamente 5 espacios antes de cada línea para que la espiral se vea igual.
Este es el código de golf , gana el menor número de bytes.
Como de costumbre, las lagunas predeterminadas se aplican aquí.
Las explicaciones son bienvenidas, aunque no necesarias.
Título editado para que sea un pangrama por comentario por caird coinheringaahing.
El perro perezoso es demasiado perezoso para aparecer en la historia.
Mi objetivo es crear un desafío de cadena en el que la letra de salida no se pueda calcular mediante funciones simples de las coordenadas.
fuente
Respuestas:
Stax ,
35343332 bytesEjecútelo y depúrelo en línea
Stax es un idioma en el que he estado trabajando durante aproximadamente 6 meses. Este es el primer golf público con él. Vamos a ir al grano.
Stax normalmente se escribe en el conjunto de caracteres ASCII imprimible. Este envío de 34 bytes está empaquetado en una variante del juego de caracteres CP437. La representación ascii correspondiente es
Stax es un lenguaje basado en pila, pero tiene dos pilas de datos, "principal" y "entrada". La mayoría de las operaciones usan la pila principal, pero la entrada comienza en la pila de entrada. Las instrucciones Stax son principalmente secuencias ascii de uno o dos caracteres. La mayoría de ellos están sobrecargados, lo que significa que su comportamiento está determinado por los pocos valores superiores en la pila (s).
En un nivel alto, este programa crea una cuadrícula agregando repetidamente cadenas a la última fila. Cuando la última fila se llena, gira la cuadrícula en el sentido de las agujas del reloj. Al final, refleja la cuadrícula horizontalmente. Con más detalle, el programa funciona así.
fuente
Carbón ,
664036 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: guardado 16 bytes tomando el texto como entrada. Explicación:
Comience con 2
t
s por alguna razón.Recorre todas las letras del pangrama.
¿Ya hemos llegado a una esquina?
Mover hacia abajo (o cualquiera que sea la próxima dirección) una línea.
Gire la dirección de impresión 90 ° en sentido horario.
Calcule la longitud del siguiente lado.
Termine de arreglar la posición del cursor. (El carbón hubiera preferido que el lado terminara justo antes de la esquina, de modo que girara en la esquina misma).
Repite tantas veces como la posición actual de la letra en el alfabeto.
Si no hemos llegado a la esquina,
Disminuya el conteo e imprima la letra actual.
fuente
Rubí ,
217212209208 bytesPruébalo en línea!
Pasa una buena cantidad de tiempo manejando punteros, por lo que puede haber espacio para más golf.
-5 bytes: Triplique el pangrama antes de ingresar. Gracias a Weijun Zhou .
-3 bytes: rellena la cadena de entrada y recorta el último tramo, en lugar de generar el último tramo desde cero.
-1 bytes: se utiliza en
&&
lugar de un operador ternario con un valor de descarte.Explicación:
fuente
r
yl
lambdas. Según las respuestas actuales, el último tramo parece ser problemático, aunque no fue cuando escribí mi fragmento C para generar la salida de muestra ...s*=3
conjunto y también omitir el0
en el?:
operador. tio.run/…0
embargo, necesito eso , o Ruby sacará elc+=1
de la siguiente línea y solo lo ejecutará la mayor parte del tiempo. Y bonito desafío!