Jesteś małą plamką na kartezjańskim samolocie. Zastanawiając się nad swoim istnieniem, decydujesz się wędrować po swoim samolocie i dotykać różnych rzeczy. Zauważasz, że każda para współrzędnych, którą odwiedzasz, ma włącznik światła. Aby się bawić, decydujesz się na przełączanie każdego napotkanego przełącznika.
Wyzwanie : stworzyć program, który zajmie wejście losowej długości, przy użyciu tylko znaki v
, ^
, <
, i >
. Te postacie odpowiadają ruchom.
<
przesuwa cię o jedną jednostkę w lewo^
przesuwa cię o jedną jednostkę w górę>
przesuwa cię o jedną jednostkę w prawov
przesuwa cię o jedną jednostkę w dół
Korzystając z tego losowo generowanego sygnału wejściowego, obliczyć, ile przełączników pozostanie w tej ON
pozycji, zakładając, że zaczniesz od (0,0), wszystkie światła zaczynają się w OFF
stanie i nie włączasz żadnych świateł, dopóki nie wykonasz pierwszego ruchu. (Oznacza to, że jeśli zaczniesz od (0,0) i przejdziesz o 1 jednostkę w górę do (0,1), teraz będzie 1 lampka). Jeśli natrafisz na przełącznik, który jest w ON
pozycji, zostanie on obrócony OFF
.
Przypadki testowe:
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
włącza 125 świateł.
>>><^>>>^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^>^
daje 1408 włączonych świateł.
Aby wygenerować dane wejściowe, możesz użyć następującego skryptu Python:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Standardowa punktacja golfa , zwycięzcą jest najmniejsza liczba bajtów.
Odpowiedzi:
MATL ,
19181713 bajtów5 bajtów mniej dzięki pomysłowi @ LeakyNun (patrz jego odpowiedź ) na użycie jednostki urojonej jako podstawy do potęgowania.
Wypróbuj online! Przypadki testowe: 1 , 2 .
Wyjaśnienie
Kod śledzi ścieżkę za pomocą kroków jednostkowych na płaszczyźnie złożonej. Następnie oblicza, ile razy każda pozycja była odwiedzana, i wyświetla liczbę odwiedzonych pozycji nieparzystą liczbę razy.
źródło
0+1i 0-1i -1+0i 1+0i
i
zamiastj
?Python, 68 bajtów
25 bajtów dzięki Sp3000.
2 bajty dzięki pomysłowi Luisa Mendo na przyjęcie modułu z 11.
17 bajtów dzięki xnor.
Ideone to!
źródło
d^={p}
ilen(d)
.Java 8,
169130127 bajtówDzięki Leaky Nun za zaoszczędzenie
2932 bajtów.Ungolfed (sorta):
źródło
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
możnafor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
zapisać 8 bajtów: Wypróbuj online.Galaretka , 13 bajtów
Port odpowiedzi Luisa Mendo w MATL
Wypróbuj online!
Kredyty za
œ^/
sztuczkę dla Dennisaźródło
Perl, 49 bajtów
Zawiera +1 dla
-p
Run z ciągiem kontrolnym na STDINlights.pl
:Jeśli dane wejściowe są ograniczone do 10000 bajtów, zmniejsza się to do
44+1
:źródło
TSQL,
238235203191 bajtówTworzenie tabeli w pamięci za pomocą rekurencyjnego SQL. Wybieranie i obliczanie z tej tabeli (jeden kod wiersza).
Gra w golfa:
Nie golfowany:
Skrzypce
źródło
Mathematica, 64 bajty
Port odpowiedzi MATL Luisa Mendo .
źródło
SQF , 160 bajtów
Używając formatu pliku jako funkcji:
Zadzwoń jako:
"STRING" call NAME_OF_COMPILED_FUNCTION
Nie golfowany:
źródło
compile "CODE"
.Python:
207189181 bajtówDane wejściowe to ciąg znaków.
Dzięki @LuisMendo za zwrócenie uwagi, że faktycznie mogę wciąć tylko o 1 spację. Cholera, moi nauczyciele języka Python za to, że kazali mi zawsze robić co cztery.
Naprawienie go tak, aby dane wejściowe zostały uzyskane, a nie założone, że zapisało mi 8 bajtów.
źródło
input()
i przechowuj gdzieśRubinowy, 64 + 6 = 70 bajtów
+6 bajtów dla
-rset
flagi.Prosty port odpowiedzi Python nieszczelnej zakonnicy .
Zobacz na repl.it: https://repl.it/Cnjy
źródło
-rset
flaga liczy się tylko jako 4 bajty.-rset
flaga liczy się teraz jako 0 bajtów.-e
bycie „wolnym” w Rubim oznacza-n
1 bajt zamiast 3, ale ludzie, którzy nie wiedzą o tym, mogą zgłaszać różne liczby bajtów), ale każdemu posiadać. BTW,Set[]
oszczędza 2 bajtySet.new
.rset
odpowiedzi:bytes.map
oszczędza 4 bajty,each_char
ponieważ możesz odebraćord
połączenie.R,
17215613710196 bajtówKorzystanie ze złożonego pomysłu na samolot LeakyNun.
bez golfa
źródło
JavaScript (ES6),
979385 bajtówEDYCJA: -8 bajtów, dzięki Neilowi
Test:
źródło
[...i]
zamiasti.split('')
. Myślę też, że możesz pisać(p=1E6,v=[-1,1,-1E3,1E3],0)
jako0,p=1E6,v=[-1,1,-1E3,1E3]
.^
aby był pierwszy,search
oszczędzasz bajtindexOf
. (Musisz^
być pierwszy, ponieważsearch
traktuje^
jako metaznak wyrażenia regularnego.)S=
części.S=
”) jest opcjonalne (ponieważ można po prostu wywołać funkcję jak(«function code here»)(«argument»)
).PowerShell , 136 bajtów
Wypróbuj online!
Myślę, że można tu zoptymalizować więcej, ale na razie jest to najniższa kwota.
Łatwiej czytać:
Objaśnienie: Dane wejściowe są zmieniane na tablicę znaków, a każdy element jest dopasowywany do jednego z pierwszych 4 przypadków przełączników, aby zwiększyć współrzędną x lub y. Wszystko pasuje do piątego przypadku, w którym decydujemy, czy światło jest włączone, czy wyłączone. Długość na końcu określa całkowitą liczbę włączonych przełączników.
Uwaga: Przecinek we współrzędnych jest konieczny, abyśmy nie otrzymywali kolizji takich jak (10,10) i (101,0)
źródło
-ne
współpracuje z tablicą 115 bajtówPowerShell ,
9695 bajtówWypróbuj online!
Rozwinięty:
PowerShell ,
112109 bajtówPort odpowiedzi MATL Luisa Mendo .
Wypróbuj online!
źródło
Faktycznie ,
2423 bajtówTo jest port odpowiedzi MATL Luisa Mendo . Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!
Edycja: Jeden bajt dzięki Dziurawej Zakonnicy.
Ungolfing:
źródło
:11
jak4P
jestem w stanie wymyślić wszelkie rady golfowegoC,
203190189 bajtówO (n ^ 2) z algorytmem pamięci O (1).
Zapętla się nad każdą pozycją, sprawdza, czy ta pozycja występuje wcześniej, a jeśli nie, sprawdza, czy ta pozycja występuje później przez parzystą / nieparzystą ilość czasu, dodając ją do sumy.
źródło
Perl,
102 98 9190 (89 + -n) bajtówCzytelny:
źródło
for/./g
zamiastwhile
, co pozwala na użycieord()
zamiastord($&)
.say
zamiastprint
(od-M5.010
lub-E
są darmowe) i użyj-n
flagi (koszt 1 bajt) zamiast robić$_=<>
.C #
210205139138135128113 113 bajtówWyjaśnienie
Count
naSum
źródło
Distinct()
zamiastGroupBy(z=>z)
? Możesz również użyćSum(g=>g.Count()%2)
, ponieważ zawsze jest to 0 lub 1, tak myślę.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(po prostu dodaj liczbę obliczaną z char z jakimś głupim modułem i tym podobnym). Nie testowałem, pozwolę ci to naprawić, jeśli jest zepsute;) Powinno to zaoszczędzić wiele bajtów, jeśli nie popsułem! (I jest ponoć tańsza para wyrażeń, ale to właśnie mogłem wymyślić w ciągu ostatnich 20 minut)Distinct()
nie działa (chyba że czegoś mi brakuje), ponieważ zwraca jeden z każdego ciągu, zamiast podawać mi liczbę wystąpień.c%6%3-1
po prostu odwzorowuje wartości ASCII<>v^
dla-1,1,0,0
(zmianax
, uwaga wartości zerowe), a drugie wyrażenie daje podobny wynik dlay
. Prawdopodobnie są lepsze wyrażenia (nie wyglądałem zbyt mocno), kropla trójki może się opłacić. To był mój pierwszy wysiłek, który może(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
Perl 6 , 47 bajtów
Wypróbuj online!
(-i, *i, ... *)
jest nieskończone powtarzanie sekwencji-i
,1
,i
,-1
, ...[.ords X% 11]
wycina do tej sekwencji z wartościami porządkowymi znaków w ciągu wejściowym, modulo 11.[\+]
wykonuje trójkątną redukcję (lub „skan”) tych wartości, tworząc listę współrzędnych odwiedzanych na płaszczyźnie złożonej.bag()
tworzyBag
zawierające te współrzędne, z których każda ma powiązaną krotność (liczbę wyświetleń na liście).{*}
pobiera wszystkie wielokrotności z torby.X% 2
krzyżuje te krotności z liczbą2
za pomocą operatora modułu%
. Dziwne krotności skutkują a1
, parzyste krotności skutkują a0
.sum
sumuje te resztki.źródło
Common Lisp ,
198 bajtów186 bajtówRozwiązanie:
Uruchom!
Wyjaśnienie:
Uwaga: i (wejście) jest zdefiniowane jako test:
źródło
(99 1 -99 -1)
do ogolenia 2 bajtów ..K (oK) ,
372927 bajtówRozwiązanie:
Wypróbuj online!
Wyjaśnienie:
Stwórz listę kroków, stwórz ścieżkę, pogrupuj, policz każde powtórzenie, jeśli mod 2 to 0, to wyłącz, w przeciwnym razie włączony. Czułem się bardzo AdventOfCode-ish.
Uwagi:
źródło
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?krrp , 137 bajtów
Wypróbuj online!
Wyjaśnienie
Wypróbuj online!
Niestety, krrp ma tylko jedną dość powolną implementację, co utrudnia weryfikację długich przypadków testowych.
krrp Konwersja ciągów .
źródło
APL (Dyalog Unicode) ,
2120 bajtów SBCSWypróbuj online!
wykorzystuje
⎕io←1
⎕
Wejście'^<v'⍳
znajdź indeks każdego znaku wejściowego między'^<v'
, tzn. stanie^
się 1,<
2,v
3 i cokolwiek innego 40j1*
i do potęgi (wyimaginowana stała)+\
sumy cząstkowe⊢⌸
macierz, w której każdy wiersz jest listą wystąpień (indeksów) unikalnej sumy częściowej; wypełnione zerami, aby prostokąt był prostokątny×
signum - wszystkie indeksy stają się 1s, dopełnienie pozostaje zerem≠/
suma mod 2 dla każdego wiersza+/
sumaźródło
Rubin , 67 bajtów
Zainspirowany rozwiązaniem C. orlp. Tworzy listę wszystkich odwiedzanych pozycji, a następnie dla każdego unikalnego (używając przecięcia ustawionego,
(d&d)
ponieważ oszczędza bajtd.uniq
), policz te z nieparzystą liczbą wystąpień (technicznie, zamapuj to na wystąpienia% 2 i zsumuj je razem , ponieważ robi to to samo)Wypróbuj online!
źródło