Ihre Aufgabe ist es, das Gesamtziel von Objekten zu finden, die auf einen Planeten fallen. Sie erhalten folgende Eingaben:
7
...#...
.......
#..O..#
.......
...#...
.......
.......
Dabei ist O der Planet und # die Objekte. Beachten Sie, dass der Planet Objekte aus den für grundlegende Richtungen (NEWS) anzieht. Sie sollten Folgendes ausgeben:
#
#O#
#
dh die Objekte nach Erreichen ihres Ziels.
Die erste als Eingabe angegebene Zahl ist die Länge des Gitters (nxn), im obigen Beispiel ist es 7.
Das Objekt sollte sich immer in der kürzesten Richtung bewegen (beachten Sie, dass die zulässigen Richtungen nur horizontal und vertikal sind; das Objekt kann sich nicht diagonal bewegen).
Wenn ein Objekt aus zwei Richtungen gleich weit entfernt ist, sollte es im Uhrzeigersinn gehen:
..#
...
O..
Wird diese Seite erreichen:
...
...
O#.
Wenn ein Objekt mit dem Planeten kollidiert, stoppt es. Wenn es mit einem anderen Objekt kollidiert, werden sie zu einem Objekt.
4
.#..
#...
....
.O..
würde werden:
....
....
.#..
.O..
Ein letztes Beispiel:
6
..#...
.#....
......
.#O...
....#.
......
Ausgabe:
......
......
..#...
.#O#..
......
......
Hinweis: Sie sollten die endgültige Form ausgeben, damit alle Ausgaben akzeptiert werden, solange sie die endgültige Form des Planeten anzeigen.
Zum Beispiel für diese Eingabe:
...#
....
.O..
....
Sollte ausgeben:
O#
oder
....
....
.O#.
....
Beides wird akzeptiert.
Dies ist Code-Golf, also gewinnt die kürzeste Antwort
Anmerkung 2:
Wie Sie vielleicht bemerkt haben, .
stellt ein Vakuum dar, so dass der kürzeste Weg die kürzeste Anzahl von Punkten ist.
Zum Beispiel:
.#.
...
.O.
Wird nicht akzeptiert zu sein
O#
da der kürzeste Weg vertikal ist. Notiz 3:
Das Objekt sollte sich immer in einer der vier Richtungen in derselben Linie wie der Planet bewegen (Auswahl der kürzesten).
|<#
|
|
-----O------
|
Beschränkungen:
2 <= n <= 100
Antworten:
Perl,
156 153148Zeilenumbrüche zur besseren Lesbarkeit. Führen Sie mit
-0777p
(5 zur Zählung hinzugefügt) aus und geben Sie es über STDIN ein.Besser lesbar:
quelle
$=
der Variablen 'magick' (die nur eine ganze Zahl sein kann - spart uns 5 Zeichen 'int ()') und die Verwendung des\G
Ankers im Suchmuster. Hier setzen wir seine Position durch Zuweisen zurpos
Funktion (deren Standardargument ist$_
).Mathematica, 206 Bytes
Etwas lesbarer:
Wie Sie sehen können, nehme ich nur eine einzige Eingabe, die die Zeichenfolge ist, die die Eingabekarte enthält. Dies liegt daran, dass ich die Größenzahl sowieso nicht verwenden würde. Wenn Sie auf dem Eingabeformat bestehen, kann ich die Eingabezeichenfolge für ein weiteres Zeichen in das zweite Argument ändern.
Was den Algorithmus betrifft, sammle ich nur alle
{Δx, Δy}
Paare der Objekte und suche in jedem Quadranten nach einem Paar mit den Bedingungen, an die übergeben wurdeh
. Ich vermute, dass dies auch der Teil ist, der weiter unten gespielt werden könnte.quelle
Perl, 270 Zeichen
3 Schritte: 1) Finden des Planeten und der Satelliten in der Eingabe, 2) Bestimmen des Quadranten für jeden Satelliten, 3) Ausgabe
Weniger Golf:
quelle