Disons que j'écrivais quelque chose, et je l'ai accidentellement écrit dans la mauvaise case:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| Truck | |
| eat | Banana |
| | Car |
+-------+--------+
Donc, étant paresseux, je dessine simplement une flèche vers l'espace qu'il devrait être:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
|[Truck]---> |
| eat | Banana |
| | Car |
+-------+--------+
Votre travail consiste à le rendre joli - transformez-le en ceci:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| | Truck |
| eat | Banana |
| | Car |
+-------+--------+
Règles
- Les phrases ou les mots sont entourés de crochets ([...])
Les entrées multilignes sont désignées comme [...](multiligne supprimée), retour à la ligne, [...] --...-->. Donc la flèche sort toujours du support enbas àdroite
Par exemple:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
|[is a noun]-> |
| eat | Banana |
| | Car |
+-----------+----------+
Se transforme en:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
| | is a noun|
| eat | Banana |
| | Car |
+-----------+----------+
- Les cases sont délimitées par des plus ("+"), et il faut supposer que les flèches ne passeront pas sur un plus
- Il y aura toujours de la place à la fin d'une flèche pour l'adaptation du mot ou de la phrase
- L'ordre est important - le mot doit apparaître là où la flèche pointe, bien que l'alignement vertical ne soit pas important
- Les flèches peuvent tourner de 90 degrés à la fois, mais uniquement entre "/" et "\" (voir ci-dessous)
Par exemple:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| [Truck]--\| |
/------------/| <--\
| | eat | Banana ||
| | /--\ | Car ||
| +--|--|-----+----------+|
\----/ \-----------------/
La compétition
Toute entrée est acceptable (fichier texte, STDIN, etc.)
toute sortie lisible est acceptable (fichier texte, STDOUT, etc.)
Voici quelques exemples supplémentaires:
C'est le golf de code, donc le code le plus court gagne!
Quelques cas de test:
+--------+----------+-------------+
| 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 | |
+-----------+--------------------+---------+
Réponses:
Python,
700681676667 caractèresPas encore joué au golf, mais je voulais trouver une réponse.
Stratégie :
Je transforme l'entrée en matrice. Ensuite, je le scrute ligne par ligne, trouvant l'
[
al. Pour chaque[
, je trouve la correspondance]
, puis j'appelle la fonction traceT
avec le point immédiatement à droite de la]
. La fonction trace suit la ligne, remplaçant le chemin par' '
s au fur et à mesure, et retourne où le mot doit aller. Ensuite, j'efface le mot dans l'ancien emplacement et le place dans le nouvel emplacement.Enfin, j'appelle
F
, qui reconstruit récursivement les boîtes.Tests :
la source