El reto
Dadas dos cadenas, cada una de hasta 30, que consiste en caracteres ASCII imprimibles (códigos ), ¡colóquelos en una balanza en la menor cantidad de bytes de código! Esto consta de los siguientes pasos:
- Calcular y comparar los pesos de las cuerdas.
- Elija la escala de arte ASCII inclinada adecuadamente
- Coloque las dos cuerdas en la escala.
Las cadenas se pueden pasar como una matriz, dos argumentos o cualquier otro método razonable.
El peso de una cadena se define como la suma de los pesos de los caracteres de esa cadena, donde:
- Los espacios tienen un peso de 0 (
) - Las letras minúsculas tienen un peso de 2 (
abcdefghijklmnopqrstuvwxyz) - Las letras mayúsculas tienen un peso de 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - Todos los demás símbolos tienen un peso de 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~)
Las escalas se ven así:
. _ _
El | _- * / \
| - * / \
_- * | / \
_- * | / \
/ \ | * ------ *
/ \ |
/ \ |
/ \ |
* ------ * |
______ | ______
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
El | / \
El | / \
El | / \
El | * ------ *
______ | ______
.
El |
______ | ______
/ \ | / \
/ \ | / \
/ \ | / \
/ \ | / \
* ------ * | * ------ *
El |
El |
______ | ______
Si la primera cadena es más pesada, use el primer dibujo como base de su salida; si la segunda cuerda es más pesada, use el segundo dibujo; Si las cuerdas tienen el mismo peso, use la tercera. Se permite el espacio en blanco al final.
Usaré un segmento del tercer dibujo como base para todos los siguientes ejemplos.
La primera cuerda debe colocarse en la bandeja izquierda y la segunda cuerda en la bandeja derecha.
Coloque una cadena en una bandeja colocando sus caracteres no espaciales dentro del área de 6x5 inmediatamente arriba de los guiones, como se marca con #s aquí (puede terminar sobrescribiendo parte de la escala de equilibrio, eso está bien):
###### _ ###### ###### ###### / ###### \ * ------ *
Todos estos caracteres deben "resolverse", es decir. ya sea encima de un -carácter u otro carácter de la cadena:
Incorrecto Incorrecto Correcto
____ ____ ____
f / \ / \ / \
l \ / \ / \
/ \ / hov \ / s \
/ oating \ / eri ng \ / ettled \
* ------ * * ------ * * ------ *
Además, toda la pila debe ser lo más plana posible, lo que significa que de las seis columnas de 1 ancho, la altura de la más alta y la más baja no deben diferir en más de 1:
INCORRECTO INCORRECTO CORRECTO CORRECTO
[más alto: 5] [más alto: 4] [más alto: 5] [más alto: 2]
[más corto: 0] [más corto: 2] [más corto: 4] [más corto: 2]
5__5_ ____ 5_5__ ____
45445 y / \ 445454 / \
45445 $% & $ @ 445454 / \
/ 45445 &% @% $ & 445454% & $ @% &
/ 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \
* ------ * * ------ * * ------ * * ------ *
El orden exacto / disposición de los personajes no importa. Los siguientes son todos los arreglos válidos para la cadena "¡Sopesa tus palabras!":
____ ____ ____ ____ / \ / \ / \ / \ ds! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Weighy \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Casos de prueba
ENTRADA: "CODE GOLF", "desafíos de codificación"
PESOS: 32, 32
EJEMPLO DE SALIDA:
.
El |
______ | ______
/ \ | / \
/ \ | nge \ s
/ OO \ | desafíos
/ CFGLED \ | /codificación\
* ------ * | * ------ *
El |
El |
______ | ______
ENTRADA: "", "$"
PESOS: 0, 3
EJEMPLO DE SALIDA:
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
El | / \
El | / \
El | PS
El | * ------ *
______ | ______
ENTRADA: "¡SABES LO QUE DICEN!", "There_always_a_relevant_xkcd"
PESOS: 75, 65
EJEMPLO DE SALIDA:
. tr_a_s
El | _hekx_y
| - * elcdta
_- * | renovar
_- * | / e's_al \
T / \ | * ------ *
AUYOHY |
A! HWYK |
/ OTSMEW \ |
* ------ * |
______ | ______
+1. Primero: si los espacios no "pesan" nada y no se incluyen en la obra de arte, ¿por qué incluirlos? Es una sobrecarga innecesaria filtrarlos primero. En segundo lugar: esto se siente como un desafío "2 en 1" / camaleón para mí - Desafío 1: Determine qué cuerda es "más pesada", Desafío 2: Genere algo de arte ASCII.