Digamos que estaba escribiendo algo, y accidentalmente lo escribí en el cuadro equivocado:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| Truck | |
| eat | Banana |
| | Car |
+-------+--------+
Entonces, siendo flojo, simplemente dibujo una flecha al espacio que debería ser:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
|[Truck]---> |
| eat | Banana |
| | Car |
+-------+--------+
Su trabajo es hacer que se vea bonito: conviértalo en esto:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| | Truck |
| eat | Banana |
| | Car |
+-------+--------+
Reglas
- Las frases o palabras están entre corchetes ([...])
Las entradas multilínea se denotan como [...](multilínea eliminada), nueva línea, [...] --...-->. Entonces la flecha siempre sale del soporteinferiorderecho
Por ejemplo:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
|[is a noun]-> |
| eat | Banana |
| | Car |
+-----------+----------+
Se convierte en:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
| | is a noun|
| eat | Banana |
| | Car |
+-----------+----------+
- Las casillas están delimitadas por más ("+"), y se debe suponer que las flechas no pasarán sobre un más
- Siempre habrá espacio al final de una flecha para que la palabra o frase se ajuste
- El orden importa: la palabra debe aparecer donde apunta la flecha, aunque la alineación vertical no es importante
- Las flechas pueden girar 90 grados a la vez, pero solo entre "/" y "\" (ver más abajo)
Por ejemplo:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| [Truck]--\| |
/------------/| <--\
| | eat | Banana ||
| | /--\ | Car ||
| +--|--|-----+----------+|
\----/ \-----------------/
La competencia
Cualquier entrada es aceptable (archivo de texto, STDIN, etc.)
cualquier salida legible es aceptable (archivo de texto, STDOUT, etc.)
Aquí hay algunos ejemplos más:
Este es el código de golf, por lo que gana el código más corto.
Algunos casos de prueba:
+--------+----------+-------------+
| Colors | Foods | Countries |
+--------+----------+-------------+
| red | pizza | Switzerland |
/--> /----> | |
| |[kale]/ | hot dogs | Brazil |
| | <----------------------\ |
| | orange |[yellow]\ | [green]/ |
| +--------+--------|-+-------------+
\-------------------/
/------------------------------------------\
| |
| +------------------+----------+-------+ |
| | frog | | | |
| | forge | dog | eagle | |
| | foundation | diligent | ease | |
| |[Brother]--\ | down | elf | |
| | | |[egg]--\ |[fort]---/
\----> | | | | |
| \-\ | \-----> |
+-------------|----+----------+ |
| Boy \--> | |
| Bull | |
| Browser | |
+-----------------------------+-------+
/--------------------------------------\
| /---------------\|
/------------|---------------------/ ||
| | /---------------\ ||
| +---------|-+-----------+-|------+--------|+ ||
\----> | | clarinet | \> | [drums]/| ||
| [viola]\\---> | +---------+ ||
| \-----> | | |/---/|
+-----------+ [violin]\ | | [cello]--/ |
| <------------/ | +---------+ |
| +-----------+ <----------\| |
| | | | [tuba]/| |
| | [piano]\ | | | |
| <-----------/ | | | |
| +-----------+--------+ | |
| | |[trumpet]------/
| [flute]-----> | |
| | saxaphone | |
+-----------+--------------------+---------+
Respuestas:
Python,
700681676667 caracteresTodavía no está totalmente golfizado, pero quería dar una respuesta.
Estrategia :
Convierto la entrada en una matriz. Luego lo escaneo línea por línea, encontrando
[
s. Para cada uno[
, encuentro la coincidencia]
, luego llamo a la función de rastreoT
con el punto inmediatamente a la derecha del]
. La función de seguimiento sigue la línea, reemplaza la ruta con' '
s a medida que avanza y regresa a donde debe ir la palabra. Luego borro la palabra en la ubicación anterior y pongo la palabra en la nueva ubicación.Finalmente, llamo
F
, que reconstruye recursivamente las cajas.Pruebas :
fuente