Sie sind ein kleiner Fleck in einem kartesischen Flugzeug. Über deine Existenz nachdenkend beschließt du, in deinem Flugzeug herumzulaufen und Dinge anzufassen. Sie bemerken, dass jedes Koordinatenpaar, das Sie besuchen, einen Lichtschalter hat. Um sich zu unterhalten, entscheiden Sie sich, jeden Schalter, auf den Sie stoßen, umzuschalten.
Die Herausforderung : Erstellen Sie ein Programm , das eine Eingabe von Stichlänge nehmen, nur die Zeichen mit v
, ^
, <
, und >
. Diese Zeichen entsprechen Bewegungen.
<
bewegt Sie eine Einheit nach links^
bewegt Sie eine Einheit nach oben>
bewegt Sie eine Einheit nach rechtsv
bewegt Sie eine Einheit nach unten
Berechnen Sie anhand dieser zufällig generierten Eingabe, wie viele Schalter in der ON
Position OFF
verbleiben , vorausgesetzt, Sie beginnen bei (0,0), alle Lichter beginnen im Status und Sie schalten keine Lichter ein, bis Sie Ihren ersten Schritt ausführen. (Wenn Sie bei (0,0) beginnen und 1 Einheit auf (0,1) aufsteigen, leuchtet jetzt 1 Licht auf). Wenn Sie auf einen Schalter stoßen, der sich in der ON
Position befindet, wird er gedreht OFF
.
Testfälle:
v>v<^^<v<<^<^><<>^^>>><v>vv^v>v^><><<^>><<<vvv^vvv>v>>v><vv^^<<>vv^^>v^<>>^^<^^>^^v<^>^<vvv^v^v><^<<v<<>><<>v>>^><^>^^<>>>>vv>^<<^<<><vvv<v^>>vvv>v^>>><<v^>^^^^v>>^>^v>v<vv^<>^<<v>vv>><^^<^><vv^^v<v<v^^^>v<^vv^v<><vv^^^>v^>v>vv<<^><v<^v><<v^^v>>v<vv<><^^^v<^v><><<^^<>^>><^^^>vv^<>>>>^<^<<<<>>>v<<v<v<vv><<vv<vv<^v^^^>>vv<>v>><<<v^>vv><v<<<v<<>^vvv^<v^v>^^v^v><<v^>>>v<v<v^>>>v><>>>^<><<<<>vv>v><v>v><^v<>v>>>vv<<>^>^>v<^><^<^vv^><^^>v<^^v>v^v<^^^^vv<>v<>><v^^><>v<<<>v^<v^^><>^<>^<>><>^^<>^v><>>><v<^^>>v>^^^<v
ergibt 125 Lichter an.
>>><^>>>^vv><^^v^<<<>>^<>>^<^>^<<^^v^<v^>>^<<><<>^v<^^^vv>v><^>>^<^<v><^v<^<<^^v><>>^v<^>^v<vvv<<<v^vv>>^vv>^^<>>vv>^<^>vv<>v^<^v<^^<v^^^<<^><><>^v>vvv<^vvv<vv><vv<^^v^^<^^>>><<<>^<>>><^<<<>><>^v><^^vv<>>><^^^<^>>>>v<v^><<>v<v<v^<<^><v^^><>v>^<>^^^vvv<v^>^^^^v>v<v>>>v^^<v<vv>><<>^vv><<vv<<>^^v>>v<^^v>><v<v<<>^^vv>>^v>v>v<>^>^v<>>><>v>v<<v<^<>>>vv>>v>^<>vv^v><><^v^>v<^^>v<^v>>v^>^>>v>v>^>^<^^>vv>>^vv<^><>^><<v^<><<^<^>^^vv^<<^^<^^v<v<>^>v>>>>>>vv<<v>^>vv^>^><^<^^><<vvvv>vvv<><<><v^vv><v^^<>^>><^vv<><>^>vv>>>vv^vv<<^v^^<<v^^>^>vvv<><<v>^>^>v<v>^<^^^^<^>^>><>>^^vv<>v<^>v><v<v^>>v<^v<vv>v^>v<v^<^^^^v<^<^<<v<<<v<v^^>vv^>><<<v>>^^^>^<^>>>v^v><^^vv^>><^^vv<vv<v^><>>^><<<>>^^v^v<<v^<vv^^^>><>>^v^^^>>^>^<<^>v>^^v>><>v>^>vv^^<vvvv<><^v>^><<>>><^<^v^<<vvv^v<<<<<><><<><><<v>v<v>v><^v^^vvv>><>^>^>^v<<vv^^^v^vv><v><><v<v<<>>>v<^<^v<<>^v<<^v<><>v>>^^>^<v^<<^v^^^vv>><v^<v>^v><^<>>>>^^<vv<>^^>^>v^v^^>><>^^<^v^<v<<v<^<<^^vv>v>^<vv<<^^v^vv^>^^<>v>^>^<>vv><v>>><<><<vv^^<vv<>>^v>^<<vv>^><<>^<v>v><<v^<v<><v>^<^<^><^^^^>>>^<>^^><>>v^<vv^<^<<vvvv>>>v^v>>^>v^><<>>v<>>^>><vvvvv<<vvvv<v>^v<vv^<>><<><v^^<^<v>^v<^<<>^v<v^<>v<<>^<<vvv><^><^^^<>>v^<<>vv><^^^>><^>v^v>v<v^>>v>>v>vv<<v<<vvv^^^>^<v^^<^<v<^<>>v^<<v>>v^><v<vvvvv^^^<v^^<><v<<^>>^><^<v^v^^>><v><>v>^<vvvv><<v^^v^>^>v>><>^^v>v^>vv^>v<^<<^vv^>vv^<v>^<v^<>^v>v^>v^<<>^^<^>^^>vv^>>vv>v>vvv><>^v<<<<v^>v^^v<><v<v>^<^><^><<v<>><<>v^^>>><<><>>><<>><v^^>><^>><^<>v^^vvv>v<^<<vv^>vv^><<>v><>^<>v^^v>^>v^<>^><v>^><<^v<v^^<v>><^^>>^<^<^v<v>^>^<^<v><><>>>><>^<^<v>v<v^>v><>v^>v^<<><^<>>v<^vv^^^>^<<<<>^>^<><^vvv>^^<v^v>v>v^v>v>>vv>^><>^vv>^<v<v^<>vv^<v<><>^>>vvv><>>^<<v^<<>^<v^>v<^^^<^<^^<>^>>v>^<v>vv<v^^>><<<<<>>v>^v>^>>>>v>>^^>^<<<^<<<v>>^><<<<^vv<<>^v<^>v^<v<<>v<>^<^<^<^<>>^^^vvv<v>^vv>^><^<v^>^v<v>><><vvv<^^>>v<^v>^>>>><v^<v^^<^^v<vvv<v>^^<<>><^<v^v<^vv>v>vv>^^<>^^^^>>^v><vv<<<v>^v^>>v^>><<<^v^v<<>><<vvvvv<v^vv>vvvv><v^v<^^^><vv^^<>><>><^>^^^^v>v><><v^<>^v<>^^<^^>^^^vvv>>vv^v^<v<vv^v>v>>>^v^^vv^<^v>v^v>>^v>v<v^<^^><vvv>><<>><>><v>v<^<v>>>>v^^v^^>^><<v><^<<>>v<>^^<<>vv^>>vv^^^v>>>^v^><v<<^>v<v><>>>^>>^<<>>^><<vv<^^>^^^v^^<>>>vv><<>v<><<<>v<<>>>v<>v<>^<vv^v<^^<<<v>^v>>^^>^><<^vv<><><>v>^v>^<>v>>^^^<^^>>vv>v<<<v^><<v><^v><>v<^<<^<>^vv>^><^^^^^<<v^^<>v>><^<v^^^vv>^v<>^<v<v>v>^><^<<^<>><^^>vv^<>^<>vv<>>v<vv^>><^^<^>v<><>vv<v<>>v><v^^^>^^^<<vv^><^^v>v>^<^>v^><<vvv>v^><vv<><^<><^>^v<><<v^<<><>^^^^<<^>>^>^v^>v>^<<^>vv^vv^v<>^<<^>v<^^<<v<v<<<^>vv^>><>v>><><v>v><v^><vvv>vv<<vvv>v^<<^v<^<><<^v>v<>>vv<<v^>v>v<<>>^vv^<^^^<^v>>^<vv>^<v>><>v>^^<<v^<>>>>>v^v>><>v^>>^<>>^<^vvv^^^<^v<><vvv^>^>v><<v>>^v>v<v>v^<v>v>^<>vvv>vvv^^<>vv>^^^^^>v<<^v<>>>><<<>>><vv>>^v^^v<v^>>>^>^v<^v>^v<>vv<><vvv^v<<<<v<vv>vv^<^vvv<^v>v^^vv<^>>>^^>>^^><>^>>v<>>>^^<<v<^<<<<<^^<v^^^<<>><<<^>^v^>vv<>>>^^v><<>^^^^<vvv><^^<>>>^><<^>><v>^<>^v^<vvvv^>>^><<>><^<v^>>vv^vv<^>>>><^>^v<^<v<^^<^<^><^<>>^<>v^v<<>v>v<>><<v<^v<<<^v<v<>><v<^<^>>v>v>><v^<v><>>>>>v^v>><^<^<v>><v^v>v<>v<v><<<>^^><>^^<^vv^^<>v><><><^>^^v^vv^<><>>>>v><>>^>^<<^<v<v^>v^^<v>>><<^^vv^^>><<^<vvvvv>><^>^>>^vv<><<>v>v^<<<^v<^^<<^vv>v<vvv><^v>vv^vvvv<^>^v^<<<<^v<<<>^vvv>^v><<>>v<v<^v^<>v>>^^v^vv>>>^v^^>>^<><><<<<^vv>>>>>v>v^>v<>><<<>^vv>^^^^<^^^>^^^^>^^^v^v><^>^>>>v<v<^<^^<<^v<<^<>vvv^^^^v^<<>vv>^^>>><^^v<^<<<v<>v<<><>v<><>^<v<<^>^^>><<v>^^><^^v<^<v^<^^<>^<>^v^>>^^v^v^<>v<>^<<<>^v^v>^<vvvv<>v<<>vv^<<>vv>>>>^<v><>>>v^><<>^v>><<>>^^v><^<>>vv^^^>vv^<^^v><v>>vvv^v<^v>v<<^^<>v^^^v^^>><v^>>v^v^vv<^>v^<^>^>v<v^><vvv^>^<>v<<^><^^<vv>v>>vv>v^>>^vvv>>v^>^^>vvv>>v><<>>^^v>v<v<><<<<^^v<^<>^v>><v^^^<>>vvv>v><<v>^^<^vvvv^v>v>^vv>^vv^^v><<>>^^>>v>>>^v><^>v<^^<>vv>v>v^^^>>^^^><<<<>>^>>^<^v<^<^<>^><v<<v>v<>^>>^<<v^^<v^vvvvv>>v^>>^^^<^^<><<><><>^v>vvv^>^^>v<^^>^<<^v^^^><>><<v<^^^<<<<>><>><<^^v><v^<<^v<v><<>^<v>^>^v>vv>><v^<^<v<v<v><^^^^>>><^<><^v^v<<<^>vv^<v^>^^v^>>><<<<^<>>><v>>>vv^>^^<v^v>>>v^<^<>vv>^v^^><<<v>v>v>><>>>v<^>^<>>^^<v^<<^<v^>><^v^><><v><><v^vvv<<>v>>><<><v>v<>>><^<^^v<v>^<<>^v>^>^>^^<^^><^>>>>><^^>vv>^<^^<><^>^<^^><^<v>v^>><^>^^^>>v^v<^>>^<v^<>^><><v>>^v<v^^^^v<^vv><^v>>^^^<>^<^<^>vv^v<<>vv>^<>v>^>^>vv^v<vv<^^^v<v>v>v^<^^^v><v<<<^^<><^^>>>><<^^v<<^>v<<vv^^^vv^vv^<v><>^v<v>>><vv^v<v^>>>>^<<<vv^>>v>^><<><<^<^><<vv^>v^>><>v^<<<>v^><>><<>>v><>v^<v><>^v>>><><>>>^vvv^v>vv>>>^^v^><<v<>>^^^v^^><<^v<><><v<<v<v<><<<v^<^^^<>v^^v<^^<<^>v<<v><^<<<<>><>^v>^<>^<^^v^vvv>^^<>^>><v^^vv^<>^<><<^^^v<^^^>>^^v>^>^<^>v><<^<>^v<><vv^vv<><<<<<<v<<v<<vv^<<^<^vvvv><v^v^v<>>>vvvvv^<vv^<^<>vv>^<><<v><>v^^<v<>>>vvv^><^<^>v^^<v>^<>>>^^v^<vv<<<<^><v<<<>v<<<v<>>^^^>^><>v>^v^>^<v^^><^v^^<^v^^>^v>>^^^<<><><<<>v>><^><>>>vvvv>v>>v>^^^^v<><vv<^<v^v>>^^vv<^>vvv>^v>>><v<v<v^<^>^^<vvv<vv<v>>^vv>^<<^<^<v>v^<vv^^^v>vv<v><v><v>^<v>>vv<>v>^^>v^^^<>v<>v^v<>^<><v><^>^<v^v><<^v^v^v<<v><<^^<^vv>^<^v><>v>><v^v^>><><><<<v<>v<^vv>v<v<<>^vvvvv^<<<^<vv><<><>v^<^v<<<^>v>v<v^<<^>v<<^<v><<<^>vv>v>^<^^v>>>><>vv>>vv>vvv<>^^<>^v^<>vvv<^^^vv>v><<<<vv^v><v^<^<<<><v<>^><<>^>v<^^<<>v>>v<<>><^^<<<^<^vv^^>v>v<>^^>>^v^vvv>^v^>v>>v>v>v>>vv^<><<<<>v^^>vv<^^v>>v<vv<^>>^<>^^v<><vv^<><v><v<<v^v<^^<^v^v<>v<<><vvv><<<^<^^<<>>^v>>>^v>>>v<>>^><<<><><<<v<vv<^<>v^^v^^>^<<^^^v^>^<<^>^>^>>>>v<v<v<>vv<<vv^<<^<vv>^^<^<<>><^v><><>^<v><v^>^v>^<^>^^><v><<^<v^^<<^><><v>v<>>><<^><v<^vvv^<<<>><<>^v^^><vv>vv<>^>^>vv<>v^<^<>vv><<>^<v<vv<^<^<><^vv<<^>>>v<>><<>>>^^^^<<^v>>v<vv>^^>v<v<vv^><<><>>>v>>^^v<^v^^>>v^<>>v^>><^<^^v<v<><<><>>^<>><^v<^^^^><>^>vv>>^vv<<>v<<<<<<><<<><<>><v><^^^<>>v<^><^vvv<>^>^^v>^<v><^v^vv^<<>v<<<<v>^vv>>v>vv<<^>^<>>vvv^<v<><>><>^^^^vvvvvvv<<>v<^><^^>vv^^<v<<^^<vvv<v<v<<>><<><v^^>><^<>^v^vv<<v<v<>><<>>>>>^vv<><v<>v><v>v>><v<v^vvvvv<><>v>>v<><<<^^<>^<^^<v>v^<vv>^vv^<>^<<^<vv><v<v>>v>^<>v^<<v^<v>^v<>><v>>>>^<<^^^v<^<>><^<><v>>vv^>^<^<^>>v^>^^^^>vvvvv>^v<^><^^<^^>^<^^^^^^^>v>>vv>v^^^v^^^<>v><^>>>v>^>^>^>vv<vv<^^>>^>>>v<>v><<^<<v^>^>>>>^^><^^<v<<<<>>v>v^v^^<>><v<^<<<<v^^^^<v<<<^>v>^^<vv<^^^^^v>^v^<v><>>^^>^v>^>^vv^v>v>v^>v>^>>^^^^>>^>>^><>><v>v>>><<^v^v^>^>^>>vv><<^>v<v<v^<<>>^v<<^v<<^><^>>^<v>^>vv>v>^^^>v^^<^<^^>vv>^^><v>>^v>^v<<^^^<<^v^>^<<^>vv^>>^<^v><<>v><^^^<^^>>vv>^vv>><^<<<^>vv^v>v<^<<<^<^<<><^^>>>v^<^^^>^<><^v>>^<<v<^v>>v^<^<^<^^^<v^><<vvv^<^v^vv^vv<v<<v<^<>^v>^^^<^^v<v<v><<<^<>^^^^v>v^v^v^v<v><v>>^v><vv^^^v>><<v^vvvv<<<^v<<><^>^<v^^v<>vvvv^vv<>^v<><>^^<>>vvv<^>><v^<<>v>v<>^v^>v^>><<>>^^<^v<>>^>^><>>^<v<v^^<^v><v^<v<><><^<<><v^v<<>vv<v<v<^>>><>vv^^<><<v<^^<<^<><^^^>^>>>^<^>>>^>><^^^<^v^^^v^v^v>v>v><vv>><vvv<<v><><^^>^v<v>><v><^><^<<>v^vv^v><^vv>^>>v<vv><^<^^v<^^vv<vv<v<v>v><v<vv<<>^^v^^v<<<^<>v^^^<><>>><^>v^^^v^vv<<<^>>v><^>v^<>>>>^<>^^vvv^^<><^>^^<><>^vvv^^<vv^>vv^^^^v<>vv<^^^v<<>><<vvvvv>v>^^^vv>><v><v<>vvvv<v^><^<>^>^<>v>v>v^vvvv<><^v>>>^^>><vvv<>^>^v^<vvv>v^vv^vv><>><>v^^v^vv<^v>vv>>v<v><^<<^v<>>^vv^<v>v><v>v>^v>^<v>^<<^>vv>v<^<^vv^<^><<<v<<^^vv<vvv><>v>v<vv^<><><^vvv>>vv<^^^v><^v><<^>^^v>^<>><v<>>^^<<<v><>^>^><vvvv<>^<<<><<<^<>>v^vv^>><^vv^^>^<v^<v>><^^>>>^v>^v<>^v<><^><vv>v^^^<^>>^<<^<^><<<^^<v<<^vv<^<>v<^<<^^<v<vv<<><v<v^<>^<>v>>v<^v>v<>^^vvv<>vv^v^<><v^vv^<^v^v><>^><v^<>>^^^<>>vv^<v>^^v><v<^>^^^^^^><>>vvv<<><><v<^>v<>v^v<<<<>v^>>>>^v>^^<v^>v><v^<^^v<<<<v<<<>^v<^>^v>v^^>v^^vvv>vv<>^>v><v<>^<vv><>>><<^>>><<v>v^^<^<<<<v^<>>>v<<<^v^vv<>^v>v<<<<>^^>><v><>v<v><^^>><>^>^>v>>><v>^vvvv<><><^>>^v^><<>^v<><><^><<<>v^^>v>^>v^<v^vv<>><^vv^^>^^><vv<<>v>v^^>><v^>^<^<>>>vv<>^>v>v^<>v<^<<v>>>^<>v^>v>>vv^^<>>v<v<<^<>v>v^<^^^>v^^>v>v>vv<^<v>v^^><<<v<><>^^<>v>v>^^v>v>v^v>>^<v^v>><>^^>^<>>>^vv^><v^<^>v^>^v><^>^^^vv^^v<>vv<>>^><<^v>^v^>>v>^v^<<^^^vv<<vvv>^vv^v<<<v^^<<><vv<>>^^vv>^^^vv>><><v>v<^v^>>>vv^><>><v<^v<>^><v<^^^^>><^<>v>^v<^vv>v>v<^<>v>v>^<vv>v<^>vvv<v^<vv<vv<>v>^><v^v<>>>>>v>><^v<>v>^v><v^v^vv<>^<vvv^>><v^<vvv^^<^vvv^v^<>><v>v^^v<><>v^^^v<<<^><v<<<>><<vv<<><vvv^v>>v^v<v^>>><<v<>^v><>vv<<v>v^vv>v^v<^<vv<><><^v>^<vv>v^^>>^^^><vv<><^>>>^<v^<<^^>^>vv^><v<vvv>^^>>>^><<vv>vv>^<>>^^><^v><<>^<<<v^>^
Ergibt 1408 Lichter an.
Zum Generieren von Eingaben können Sie das folgende Python-Skript verwenden:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Standard Code-Golf Scoring, Gewinner ist die kleinste Anzahl von Bytes.
Antworten:
MATL ,
19181713 Bytes5 Bytes weniger dank der Idee von @ LeakyNun (siehe seine Antwort ), die imaginäre Einheit als Basis für die Exponentiation zu verwenden.
Probieren Sie es online! Testfälle: 1 , 2 .
Erläuterung
Der Code zeichnet den Pfad in Einheitenschritten in der komplexen Ebene nach. Dann zählt es, wie oft jede Position besucht wurde, und gibt aus, wie viele Positionen ungerade oft besucht wurden.
quelle
0+1i 0-1i -1+0i 1+0i
i
statt verwendenj
?Python, 68 Bytes
25 Bytes dank Sp3000.
2 Bytes dank Luis Mendos Idee, Modul mit 11 zu nehmen.
17 Bytes dank xnor.
Ideone es!
quelle
d^={p}
und zu verwendenlen(d)
.Java 8,
169130127 BytesVielen Dank an Leaky Nun für das Speichern von
29 bis32 Bytes.Ungolfed (sorta):
quelle
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
kann seinfor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
, 8 Bytes zu sparen: Probieren Sie es online.Jelly , 13 Bytes
Ein Port von Luis Mendos Antwort in MATL
Probieren Sie es online!
Verdienste
œ^/
um Dennisquelle
Perl, 49 Bytes
Enthält +1 für
-p
Run mit der Steuerzeichenfolge für STDINlights.pl
:Wenn die Eingabe auf 10000 Byte beschränkt ist, reduziert sich dies auf
44+1
:quelle
TSQL,
238235203191 BytesErstellen einer Tabelle im Speicher mit rekursivem SQL. Auswahl und Berechnung aus dieser Tabelle (einzeiliger Code).
Golf gespielt:
Ungolfed:
Geige
quelle
Mathematica, 64 Bytes
Ein Port von Luis Mendos MATL-Antwort .
quelle
SQF , 160 Bytes
Verwenden des Formats "Funktion als Datei":
Anrufen als:
"STRING" call NAME_OF_COMPILED_FUNCTION
Ungolfed:
quelle
compile "CODE"
.Python:
207189181 BytesDie Eingabe ist eine Zeichenfolge.
Vielen Dank an @LuisMendo für den Hinweis, dass ich eigentlich nur um 1 Leerzeichen einrücken kann. Verdammt, meine Python-Lehrer, weil sie mir gesagt haben, dass ich es immer in Viererschritten machen soll.
Durch die Korrektur, dass die Eingabe erhalten und nicht als gespeichert angenommen wurde, wurden mir tatsächlich 8 Bytes gespart.
quelle
input()
und lagern Sie es einfach irgendwoRuby, 64 + 6 = 70 Bytes
+6 Bytes für
-rset
Flag.Ein direkter Port von Leaky Nuns Python-Antwort .
Siehe es auf repl.it: https://repl.it/Cnjy
quelle
-rset
Flag zählt nur 4 Bytes.-rset
Flag nun als 0 Bytes.-e
dass "frei" in Ruby-n
1 Byte statt 3 bedeutet, aber Leute, die nichts davon wissen, könnten andere Bytecounts melden), aber für jeden von ihnen besitzen. Übrigens,Set[]
spart 2 Bytes mehrSet.new
.rset
:bytes.map
Spart 4 Bytes,each_char
weil Sie denord
Anruf entgegennehmen können.R,
17215613710196 BytesVerwendung der komplexen Flugzeugidee von @ LeakyNun.
ungolfed
quelle
Javascript (ES6),
979385 BytesEDIT: -8 Bytes, danke an Neil
Prüfung:
quelle
[...i]
anstelle voni.split('')
. Außerdem glaube ich , Sie schreiben können ,(p=1E6,v=[-1,1,-1E3,1E3],0)
wie0,p=1E6,v=[-1,1,-1E3,1E3]
.^
zuerst kommt, wirdsearch
ein Byte gespeichertindexOf
. (Sie müssen die^
erste , weil seinsearch
behandelt^
als regexp metacharacter.)S=
Teil nicht zählen .S=
") ist jedoch optional (da Sie die Funktion einfach wie folgt aufrufen können(«function code here»)(«argument»)
).PowerShell , 136 Byte
Probieren Sie es online!
Ich denke, es gibt hier noch mehr zu optimieren, aber dies ist das niedrigste, was ich bisher erreicht habe.
Einfacher zu lesen:
Erläuterung: Die Eingabe wird in ein Zeichenarray geändert, und jedes Stück wird einem der ersten 4 Schalterfälle zugeordnet, um die x- oder y-Koordinate zu erhöhen. Alles passt zum fünften Fall, in dem wir entscheiden, ob ein Licht ein- oder ausgeschaltet wird. Die Länge am Ende bestimmt die Gesamtanzahl der eingeschalteten Schalter.
Hinweis: Das Komma in den Koordinaten ist notwendig, damit wir keine Kollisionen wie (10,10) und (101,0) bekommen.
quelle
-ne
arbeitet mit Array 115 BytesPowerShell ,
96 bis95 ByteProbieren Sie es online!
Abgerollt:
PowerShell ,
112 -109 ByteEin Port von Luis Mendos MATL-Antwort .
Probieren Sie es online!
quelle
Eigentlich ,
2423 BytesDies ist eine Portierung von Luis Mendos MATL-Antwort . Golfvorschläge sind willkommen. Probieren Sie es online!
Edit: Ein Byte dank Leaky Nun.
Ungolfing:
quelle
:11
als4P
, kann ich mir keine Golf-Tipps einfallen lassenC
203190189 BytesO (n ^ 2) mit O (1) Speicheralgorithmus.
Es durchläuft jede Position, prüft, ob diese Position früher auftritt, und wenn nicht, prüft es, ob diese Position danach eine gerade / ungerade Zeitspanne auftritt, und addiert sie zur Gesamtsumme.
quelle
Perl,
102 98 9190 (89 + -n) BytesLesbar:
quelle
for/./g
anstelle von verwendenwhile
, wodurch Sieord()
anstelle von verwenden könnenord($&)
.say
stattprint
(da-M5.010
oder-E
frei) und benutze-n
stattdessen flag (kosten 1 Byte)$_=<>
.C #
210205139138135128113 BytesErläuterung
Count
aufSum
quelle
Distinct()
eher als verwendenGroupBy(z=>z)
? Sie können auch verwendenSum(g=>g.Count()%2)
, da es immer 0 oder 1 ist, sollte ich denken.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(fügen Sie einfach eine Zahl hinzu, die wir aus dem Zeichen mit einem dummen Modul und so weiter berechnen). Ich habe es nicht getestet, ich lasse es dich reparieren, wenn es kaputt ist;) Das sollte eine Menge Bytes sparen, wenn ich es nicht vermasselt habe! (Und es gibt sicherlich ein billigeres Ausdruckspaar, aber genau das habe ich mir in den letztenDistinct()
funktioniert nicht (es sei denn, ich vermisse etwas), da es einen von jedem String zurückgibt, anstatt mir die Vorkommen zu zählen.c%6%3-1
einfach abbildet ASCII - Werte von<>v^
bis-1,1,0,0
(Veränderungx
, Note die Nullwerte) und der andere Ausdruck ergeben ein ähnliches Ergebnis füry
. Es gibt wahrscheinlich bessere Ausdrücke (ich sah nicht sehr genau aus), ein Tropfen Dreistoff könnte sich auszahlen. Dies war meine erste Anstrengung, die es vielleicht offensichtlicher macht, was los ist:(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
(aber offensichtlich ist es ein bisschen länger!)Perl 6 , 47 Bytes
Probieren Sie es online!
(-i, *i, ... *)
die unendlich wiederholende Sequenz-i
,1
,i
,-1
, ...[.ords X% 11]
schneidet mit den Ordnungswerten der Zeichen in der Eingabezeichenfolge modulo 11 in diese Sequenz.[\+]
führt eine dreieckige Verkleinerung (oder "Abtastung") dieser Werte durch und erstellt eine Liste der auf der komplexen Ebene besuchten Koordinaten.bag()
Erstellt eineBag
mit den Koordinaten, denen jeweils eine Vielzahl zugeordnet ist (die Häufigkeit, mit der sie in der Liste angezeigt wurden).{*}
holt alle Multiplizitäten aus der Tasche.X% 2
kreuzt diese Multiplizitäten mit der Zahl unter2
Verwendung des Moduloperators%
. Ungerade Multiplizitäten ergeben a1
, gerade Multiplizitäten ergeben a0
.sum
summiert diese Reste.quelle
Common Lisp ,
198 Bytes186 BytesLösung:
Starte es!
Erläuterung:
Hinweis: i (Eingabe) ist definiert als:
quelle
(99 1 -99 -1)
2 Bytes zu rasieren verwenden ..K (oK) ,
372927 BytesLösung:
Probieren Sie es online!
Erläuterung:
Erstellen Sie eine Liste von Schritten, erstellen Sie einen Pfad, gruppieren Sie, zählen Sie jede Wiederholung, wenn Mod 2 0 ist, dann aus, sonst ein. Fühlte mich sehr AdventOfCode-ish.
Anmerkungen:
quelle
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?KRP , 137 Bytes
Probieren Sie es online!
Erläuterung
Probieren Sie es online!
Leider hat krrp nur eine ziemlich langsame Implementierung, was es schwierig macht, die langen Testfälle zu überprüfen.
krrp String Konvertierung .
quelle
APL (Dyalog Unicode) ,
2120 Bytes SBCSProbieren Sie es online!
Verwendet
⎕io←1
⎕
Eingang'^<v'⍳
Finden Sie den Index jedes Eingabezeichens unter'^<v'
, dh^
wird 1,<
2,v
3 und alles andere 40j1*
Ich zur Macht (die imaginäre Konstante)+\
Teilbeträge⊢⌸
Matrix, in der jede Zeile die Liste der Vorkommen (Indizes) einer eindeutigen Teilsumme ist; mit 0en aufgefüllt, um es rechteckig zu machen×
signum - alle Indizes werden zu 1s, der Abstand bleibt 0s≠/
summe mod 2 für jede zeile+/
Summequelle
Ruby , 67 Bytes
Inspiriert von der C-Lösung von orlp. Fügt eine Liste aller besuchten Positionen zusammen und zählt dann für jede einzelne Position (unter Verwendung von setwise intersection,
(d&d)
da dadurch ein Byte überschrieben wird) die Positionend.uniq
mit einer ungeraden Anzahl von Vorkommen (technisch gesehen, ordnen Sie sie den Vorkommen% 2 zu und addieren Sie sie , da das das selbe tut)Probieren Sie es online!
quelle