Introducción
En la mayoría de las fuentes de todos los caracteres del alfabeto en mayúsculas, además BDO
cuenta con líneas individuales de aproximadamente tocar algunas de las cuatro esquinas del rectángulo de delimitación del personaje: ACEFGHIJKLMNPQRSTUVWXYZ
.
Por ejemplo, las dos patas de un A
"toque" las esquinas inferior izquierda e inferior derecha del personaje. Del mismo modo, C
toca sus esquinas superior e inferior derecha (es un poco curva pero está lo suficientemente cerca). L
solo toca sus esquinas superiores izquierda e inferior derecha con líneas simples. La esquina inferior izquierda de L
es un vértice, no el final de una sola línea.
Aquí hay una tabla de qué personajes tocan qué esquinas de acuerdo con la fuente de Stack Exchange que veo (y espero que veas). 1
es para arriba a la izquierda, 2
es para arriba a la derecha, 3
abajo a la izquierda, 4
abajo a la derecha.
A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4
Preparar
Imagine que estas líneas que tocan las esquinas se extienden en la dirección de la esquina que tocan para que los arreglos de estos caracteres en una cuadrícula se puedan "conectar".
Por ejemplo, todos los personajes en
A
C X
están conectados porque la parte inferior izquierda A
y superior derecha de C
connect y la parte inferior derecha A
y superior izquierda de X
connect.
Sin embargo,
CAX
no tiene conexiones porque las conexiones solo ocurren diagonalmente de un personaje a otro .
Desafío
Escriba el programa más corto posible (en bytes) que muestre todos los caracteres ACEFGHIJKLMNPQRSTUVWXYZ
en un gran árbol completamente conectado, de acuerdo con las reglas anteriores. Cada personaje debe aparecer exactamente una vez. Use espacios para espacios vacíos.
Ejemplo
Se puede llegar a todo en este árbol de 23 letras desde cualquier otra cosa a través de las conexiones diagonales definidas anteriormente:
Q
A J R
C U S Y
I M N
E H X
F L T
G Z K P
V W
Notas
- Puede codificar su solución.
- Su salida solo debe contener
ACEFGHIJKLMNPQRSTUVWXYZ
espacios y líneas nuevas.BDO
No será utilizado. - Los espacios iniciales / finales están bien siempre que todas las conexiones estén colocadas correctamente.
- La cuadrícula de salida no debe tener más de 30 por 30 caracteres (incluidas líneas nuevas y espacios).
- Solo se consideran las conexiones de esquina. La parte inferior de
Y
no se conecta a nada. Debe usar las conexiones de esquina de la tabla anterior. - No todas las esquinas conectables necesitan conectarse a algo. Las esquinas conectables y no conectables pueden bordearse entre sí.
- Salida a stdout. No hay entrada
- Incluir un gráfico de conectividad hecho con barras como lo ha hecho Peter Taylor es un toque útil, pero no es obligatorio.
Actualización:
githubhagocyte ha realizado un verificador de validez de árbol alfabético en Github .
fuente
Respuestas:
Pyth , 32
Salida:
Conexiones, gracias al corrector de @ githubphagocyte:
Combina el truco de byte nulo de @ grc y la sintaxis extremadamente corta de Pyth. Hice mi propia cuadrícula por el placer de hacerlo.
Explicación:
j
es la unión de cuerdas de python.d
es el espacio\0
es la secuencia de escape para el byte nulo. Es un NOP cuando se imprime, por lo que la tercera línea tiene exactamente dos espacios al frente. Además, tenga en cuenta que las cadenas pueden terminarse en EOL en Pyth, así como también entre comillas.fuente
GolfScript (41 caracteres)
Demostración en línea
Gráfico de conectividad:
fuente
Python, 49
Ejemplo:
Creo que ahora se conecta correctamente, pero es posible que haya perdido algo nuevamente.
fuente
F4
parece conectado aG1
, que no es válidoMarbelous
164158143utilizaba el árbol de marcas, ya que estaba casi perfectamente optimizado para Marbelous . El código en este caso es solo el código ascci para todos los caracteres (incluidos los espacios y las nuevas líneas) de izquierda a derecha, delimitados por espacios.
Salida:
Un mejor enfoque de Marbelous
135129Éste genera el mismo árbol con un espacio adicional antes y después de cada línea, funciona alimentando los literales en una subrutina que imprime un espacio antes de imprimir el literal. Y solo imprime un espacio si el literal es un espacio (20 HEX)
fuente
BrainF * ck 669
Hecho este para las risas. Emite exactamente lo mismo que el ejemplo.
Proporcionará otra solución más tarde.No puedo pensar en una forma inteligente de hacer esto en Lua, así que me limitaré a este :)Salida
fuente
PHP 46
Esto se parecía más a la resolución de acertijos que a la programación, por lo que mi respuesta se parece más a la solución de acertijos que al código. Sin embargo, es un programa PHP válido, así que lo estoy enviando.
Actualiza lo mismo en Perl. La longitud sigue siendo 46:
fuente
HTML, 55
código
salida:
fuente
Bash + coreutils, 46
Ahora prestando descaradamente el árbol óptimo de @ core1024 :
Salida:
fuente
STATA 63
Editar: ahora mi propia solución. Deberían ser todas las letras.
fuente
Javascript 83
Comenzaré por codificar SU solución
fuente
alert
lugar deconsole.log
PHP, 69
da
fuente
"/\w/",'\0 '