Die Welt besteht aus fünf mal fünf Zellen. Es wickelt sich nach allen Seiten. Es kann visualisiert werden wie ...
XXXXX XXXXX XXOXX XXXXX XXXXX
Du bist ein O. Du liebst es, die Welt zu bereisen, und das nach den folgenden Regeln (lass C der aktuelle Tag sein):
- An den besten Tagen fühlen Sie sich nostalgisch. Kehren Sie dorthin zurück, wo Sie gestern angefangen haben.
- An ungeraden Tagen haben Sie Heimweh. Wenn möglich, einen horizontalen Schritt näher an den Wohnort und, wenn möglich, einen vertikalen Schritt näher an den Wohnort. Ignorieren Sie das Umbrechen der Welt, um die Nähe zu bestimmen.
- An geraden Tagen fühlen Sie sich abenteuerlustig. Gehe 2 Schritte nach Süden.
- An viereckigen Tagen fühlt man sich abenteuerlustig. Gehe zur Ostwand.
- An Fibonacci- Tagen dehnt sich die Welt um eine Reihe nach Süden aus.
- An dreieckigen Tagen dehnt sich die Welt um eine Säule nach Osten aus.
Wenn zwei oder mehr der oben genannten Regeln gleichzeitig gelten, wenden Sie sie in der angegebenen Reihenfolge an. Kehren Sie beispielsweise an einem ungeraden Primetag zunächst dorthin zurück, wo Sie gestern begonnen haben, und bewegen Sie sich dann einen Schritt weiter nach Hause.
Sie leben in der Mitte der (ursprünglichen) Welt, dh Position (2,2), nullindiziert von der Nordwestecke. Sie beginnen Ihre Reise dort am ersten Tag.
Eingang
Eine einzelne ganze Zahl, N.
Ausgabe
Ihre X- und Y-Koordinate am N-ten Tag, nullindexiert von der Nordwestecke, getrennt durch ein einzelnes Leerzeichen.
Testfall mit Erklärung
Bei einer Eingabe von 3
lautet die korrekte Ausgabe:
2 3
Wir können diesen einen Tag nach dem anderen durcharbeiten. Ab Tag 1 müssen wir die folgenden Schritte ausführen:
- Ungerade, quadratisch, Fibonacci und dreieckig
- Prime, Even und Fibonacci
- Prime, Odd, Fibonacci und Triangular
In visueller Form:
Tag 1 Tag 2 Tag 3 XXXXX XXXXXX XXXXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXOXX -> XXXXOX -> XXXXXX -> XXXOXXX XXXXX XXXXXX XXOXXX XXXXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXXXXX XXXXXX XXXXXXX XXXXXX XXXXXXX XXXXXXX
Zusätzliche Testfälle
Mit freundlicher Genehmigung von Martin Büttner ‚s Referenzlösung (bitte beachten Sie, dass Sie nur eine einzige Ausgabe - Koordinaten sollte, nicht alle von ihnen):
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Output: 4 2 2 3 3 2 6 4 2 2 2 5 2 2 2 6 7 5 7 0 6 4 6 0 5 3 5 10 4 9 9 6 3 8 3 6 2 7 2 6 2 5 2 4 2 4
Das ist Code Golf. Die kürzeste Einsendung gewinnt.
Antworten:
Pyth,
157156153 BytesSie können es hier ausprobieren.
Das war ein lustiges Problem beim Golfen! Ich gewöhne mich immer noch an Pyth, aber es ist eine wirklich großartige Sprache.
quelle
,
- dafür ist es da.(G%+H/N2b)
,(GH)
,(tZH)
.Haskell, 394 Bytes
Es kann definitiv optimiert werden und auch nach einer schnellen Überprüfung auf Richtigkeit
anscheinend erhalte ich andere ergebnisse als das gepostete. Ich komme zurück und überprüfe meinen Code gründlicher, wenn ich mehr Zeit habe ^^Nettes Problem übrigens!
BEARBEITEN: Meine Lösung wurde unter Berücksichtigung der wertvollen Ratschläge von Zgarb bearbeitet . Es funktioniert jetzt perfekt!
EDIT2: dank nimi habe ich den code noch kleiner gemacht. Ich mache jetzt auch die Prüfungen für gerade und ungerade in einer Funktion anstelle von zwei, die insgesamt die Anzahl von 446 auf 414 Bytes verringert.
EDIT3: weiter verbessert von 414 auf 400 Bytes. Danke nimi für weitere 2 Bytes, du bist in Flammen! :)
EDIT4: 4 weitere Bytes von nimi :)
quelle
0<1
kürzer alsotherwise
und0/=mod x y
kann auf gekürzt werden0<mod x y
. Auch1==mod(d)2
istodd d
und0==mod(d)2
isteven d
.0<1
anstatt zuotherwise
arbeiten?t
), daelem d[1..div(d*d-d)2]
dies für alle giltd > 2
.otherwise
ist nur ein anderer Name fürTrue
.C
425396 BytesEs gibt Teile, die verbessert werden könnten, aber es funktioniert für die Testfälle .
Erläuterung
quelle
Perl 5, 284 Bytes
283 Bytes plus 1 für
-E
Flag anstelle von-e
Gleicher Code, jedoch mit mehr Leerzeichen, mehr Klammern und längeren Variablennamen:
Ich bin zuversichtlich, dass dies weiter golfen werden kann.
quelle
Javascript,
361359 BytesDer Code verwendet Destructuring Assignment . Es wird derzeit nur in Firefox und Safari unterstützt.
Erläuterung
quelle