Nehmen wir an, ich habe etwas geschrieben und es versehentlich in die falsche Box geschrieben:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| Truck | |
| eat | Banana |
| | Car |
+-------+--------+
Da ich faul bin, zeichne ich nur einen Pfeil auf die Stelle, an der er sein sollte:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
|[Truck]---> |
| eat | Banana |
| | Car |
+-------+--------+
Ihre Aufgabe ist es, es hübsch aussehen zu lassen - machen Sie daraus Folgendes:
+-------+--------+
| Verbs | Nouns |
+-------+--------+
| | Truck |
| eat | Banana |
| | Car |
+-------+--------+
Regeln
- Sätze oder Wörter sind in Klammern ([...])
Mehrzeilige Einträge werden als [...](mehrzeilig entfernt), Zeilenumbruch, [...] --...--> bezeichnet. Der Pfeil kommt also immer aus derunterenrechten Klammer
Beispielsweise:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
|[is a noun]-> |
| eat | Banana |
| | Car |
+-----------+----------+
Verwandelt sich in:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| | |
| | is a noun|
| eat | Banana |
| | Car |
+-----------+----------+
- Kästchen werden durch Pluszeichen ("+") begrenzt, und es sollte angenommen werden, dass Pfeile nicht über ein Pluszeichen gehen
- Am Ende eines Pfeils ist immer Platz für das Wort oder die Phrase
- Reihenfolge ist wichtig - das Wort muss dort erscheinen, wo der Pfeil zeigt, obwohl die vertikale Ausrichtung nicht wichtig ist
- Die Pfeile können jeweils um 90 Grad gedreht werden, jedoch nur zwischen "/" und "\" (siehe unten).
Beispielsweise:
+-----------+----------+
| Verbs | Nouns |
+-----------+----------+
| [Truck]--\| |
/------------/| <--\
| | eat | Banana ||
| | /--\ | Car ||
| +--|--|-----+----------+|
\----/ \-----------------/
Der Wettbewerb
Jede Eingabe ist akzeptabel (Textdatei, STDIN usw.).
Jede lesbare Ausgabe ist akzeptabel (Textdatei, STDOUT usw.).
Hier sind einige weitere Beispiele:
Dies ist Code Golf, also gewinnt der kürzeste Code!
Einige Testfälle:
+--------+----------+-------------+
| 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 | |
+-----------+--------------------+---------+
Antworten:
Python,
700681676667 ZeichenNoch nicht vollständig Golf gespielt, wollte aber eine Antwort geben.
Strategie :
Ich verwandle die Eingabe in eine Matrix. Dann scanne ich es Zeile für Zeile und finde
[
s. Für jeden[
finde ich die Übereinstimmung]
, dann rufe ich die Trace-FunktionT
mit dem Punkt unmittelbar rechts von auf]
. Die Trace-Funktion folgt der Zeile, ersetzt den Pfad durch' '
s und gibt zurück, wohin das Wort gehen soll. Dann lösche ich das Wort an der alten Stelle und setze das Wort an die neue Stelle.Zum Schluss rufe ich an
F
, der die Boxen rekursiv rekonstruiert.Tests :
quelle