Davon inspiriert .
Hintergrund
Der böse Bauer hat beschlossen, Ihr Weizenfeld niederzubrennen, um die Preise anzuheben. Um eine vollständige Zerstörung zu gewährleisten, hat er Ihr Feld auch mit Benzin angefeuchtet. Noch bedauerlicher ist, dass du zufällig auf dem Feld gelaufen bist, als es angezündet wurde, und du musst schnell raus, um zu überleben.
Herausforderung
Bestimmen Sie bei einem Feld mit Weizen, Feuer und Ihrem Standort, ob Sie das Feld rechtzeitig verlassen können.
Ein Feld besteht aus Weizen (hier dargestellt durch .
) und Feuer ( F
). Hier ist Ihr Standort mit einem gekennzeichnet O
. Beispielsweise:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Jede Sekunde bewegt man sich zu einer benachbarten Zelle (aber nicht diagonal) und jedes Feuer breitet sich auf jede benachbarte Zelle aus. Wenn Sie sich nicht in eine Zelle begeben können, die nicht in Flammen steht, sterben Sie. Wenn Sie es außerhalb des Feldes schaffen, überleben Sie. Mal sehen, was in diesem Beispiel passiert:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
..FFF.FF
FF.F...F
FF......
FFF.....
.F.F.O..
..FFF...
.F.F..F.
FFF..FFF
FFFFFFFF
FFFFF.FF
FFFF...F
FFFF....
FF.FF.O.
.FFFFFF.
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFF.FF
FFFFF.FF
FFFFFFFO
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFFO <-- you made it out and survived, barely
FFFFFFFF
FFFFFFFF
FFFFFFFF
Regeln
- Ihre Eingabe ist das Feld als Gitter. Sie können ein beliebiges Eingabeformat auswählen, einschließlich einer Zeichenfolge mit Zeilentrennzeichen oder eines 2D-Arrays.
- Sie dürfen die Feuerstellen und / oder sich selbst nicht als Eingabe nehmen.
- Sie können 3 verschiedene Werte als Weizen, Feuer und Ihre Position verwenden, einschließlich Nicht-Zeichenfolgen für die Array-Eingabe.
- Felder sind immer mindestens 1x1 groß, rechteckig und enthalten keine ungültigen Zeichen.
- Jedes Feld enthält genau einen Wert, der Ihren Standort darstellt, und jede andere Position kann ausgelöst werden oder nicht.
- Ihre Ausgabe ist einer von zwei unterschiedlichen Werten für "Sie überleben" oder "Sie sterben", wie bei Entscheidungsproblemen üblich .
- Es gelten die Standardregeln für Code-Golf .
Testfälle
Überlebt
O
....
.O..
....
FFFFF
.....
..O..
.....
FFFF
FFFO
FFFF
.F....
......
......
.F....
..O...
.FF...
.F....
..FF..
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Nicht überlebt
FFF
FOF
FFF
F.F
.O.
F.F
....F
.....
..O..
.....
F....
.F....F.
........
........
F..O....
........
.....F..
...F...F
F......F
........
.F......
....O...
...F....
........
.F....F.
F..F
.O..
FF..
quelle
Antworten:
Schnecken, 15 Bytes
Probieren Sie es online!
1
bedeutet Überleben, während0
Tod bedeutet.Da es unmöglich ist, dem Feuer zu entkommen, ist es niemals nützlich, zu versuchen, es zu umgehen. Die beste Route ist immer eine gerade Linie. Es gibt also nur vier mögliche Fluchtwege. Um festzustellen, ob eine Richtung sicher ist, prüfen wir, ob
F
der "Feuerkegel" in diese Richtung zeigt.quelle
Python 2 ,
283218209208 BytesProbieren Sie es online!
Nimmt Eingaben als durch Zeilenumbrüche getrennte Zeichenfolge und gibt
True/False
für zurückDead/Alive
Überprüfen Sie jede Richtung (udlr) auf
F
Zorn, indem Sie nach außen schauen:Beispiel:
Eingang:
Feuerkontrollen:
Wenn alle Richtungen Feuer enthalten, stirbt man, sonst gibt es eine Flucht.
Bearbeiten: Zurück zum Aufnehmen eines Strings als Eingabe, und jetzt wird nur nach oben / rechts gesucht, aber die Eingabe wird auch rückwärts geprüft (nach unten / links).
Dank Mr. Xcoder und Felipe Nardi Batista konnten viele Bytes gespart werden
quelle
JavaScript, 174 Byte
Eingabeformat:
F
, 1 für.
, 0 fürO
Ausgabe:
Versuch es:
Code-Snippet anzeigen
Betrachten Sie einen zellularen Automaten. Es gibt 3 Zustände für eine Zelle
O
(für Menschen erreichbar),F
(gefeuert),.
(nichts ist gerade passiert). Die Regel für die Erstellung der nächsten Generation lautet:Sobald eine Zelle am Rand einen
O
Zustand hat, überleben die Menschen. Wenn dies nicht in ausreichender Menge geschah, starben die Menschen.quelle
Oktave, 71 Bytes
Probieren Sie es online!
oder
Überprüfen Sie alle Testfälle!
Eingabeformat:
1
für.
,2
fürO
und3
fürF
Ausgabe:
true
undfalse
Erläuterung:
Erläuterung:
quelle
Retina , 243 Bytes
Probieren Sie es online! Erfordert, dass der Hintergrund Leerzeichen anstelle von
.
s enthält (oder ein anderes regexp-sicheres Zeichen verwendet werden kann). Erläuterung:Wenn es eine
O
Kante gibt, löschen Sie alles andere (Überlebensfall)Platzieren Sie a
#
an einer beliebigen Stelle über einem vorhandenenO
.Und ein
#
in jedem Raum unterhalb eines BestehendenO
.Ändern Sie das
#
s inO
s und auch einen beliebigen Bereich links oder rechts von einem vorhandenenO
.Platzieren Sie
#
s über allen vorhandenenF
s. Diese können sowohlO
s als auch Leerzeichen überschreiben .Platzieren Sie
#
s unter vorhandenenF
s, überschreiben Sie auchO
s und Leerzeichen.Ändern Sie das
#
s inF
s und auch ein beliebigesO
oder Leerzeichen links oder rechts von einem vorhandenenF
. Wiederholen, bis dieF
s alles verbraucht haben.Wenn nicht, kehre zurück,
1
um zu überleben0
.quelle