Anda sedikit titik pada pesawat Cartesius. Merenungkan keberadaan Anda, Anda memutuskan untuk berkeliaran di sekitar pesawat Anda dan menyentuh beberapa hal. Anda perhatikan bahwa setiap pasangan koordinat yang Anda kunjungi memiliki saklar lampu. Untuk menghibur diri sendiri, Anda memutuskan untuk mengaktifkan setiap sakelar yang Anda temui.
Tantangan : Buat sebuah program yang akan mengambil masukan dari panjang acak, hanya menggunakan karakter v
, ^
, <
, dan >
. Karakter ini sesuai dengan gerakan.
<
menggerakkan Anda satu unit ke kiri^
memindahkan Anda satu unit ke atas>
menggerakkan Anda satu unit ke kananv
memindahkan Anda satu unit ke bawah
Dengan menggunakan input yang dihasilkan secara acak ini, hitung berapa banyak sakelar yang akan dibiarkan di ON
posisi, dengan asumsi Anda mulai dari (0,0), semua lampu mulai dalam OFF
keadaan, dan Anda tidak menyalakan lampu apa pun sampai Anda melakukan langkah pertama. (Artinya, jika Anda mulai dari (0,0), dan naik 1 unit ke (0,1), sekarang akan ada 1 lampu menyala). Jika Anda menemukan saklar yang ada di ON
posisi, itu akan berubah OFF
.
Kasus uji:
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
menghasilkan 125 lampu menyala.
>>><^>>>^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^>^
menghasilkan 1408 lampu menyala.
Untuk menghasilkan input, Anda dapat menggunakan skrip Python berikut:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Penilaian standar kode-golf , pemenang adalah jumlah byte terkecil.
Jawaban:
MATL ,
19181713 byte5 byte off berkat ide @ LeakyNun (lihat jawabannya ) menggunakan unit imajiner sebagai basis untuk eksponensial.
Cobalah online! Uji kasus: 1 , 2 .
Penjelasan
Kode ini melacak jejak menggunakan langkah unit di bidang kompleks. Kemudian dihitung berapa kali setiap posisi dikunjungi, dan menghasilkan berapa banyak posisi yang dikunjungi beberapa kali.
sumber
0+1i 0-1i -1+0i 1+0i
i
bukanj
?Python, 68 byte
25 byte berkat Sp3000.
2 byte berkat ide Luis Mendo untuk mengambil modulus dengan 11.
17 byte terima kasih kepada xnor.
Ide itu!
sumber
d^={p}
danlen(d)
.Java 8,
169130127 byteTerima kasih kepada Leaky Nun karena telah menghemat
2932 byte.Tidak disatukan (agak):
sumber
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
dapatfor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
menyimpan 8 byte: Cobalah secara online.Jelly , 13 byte
Port jawaban Luis Mendo di MATL
Cobalah online!
Penghargaan
œ^/
trik untuk Dennissumber
Perl, 49 byte
Termasuk +1 untuk
-p
Jalankan dengan string kontrol di STDINlights.pl
:Jika input dibatasi hingga 10.000 byte, ini berkurang menjadi
44+1
:sumber
TSQL,
238235203191 byteMembuat tabel di memori menggunakan SQL rekursif. Memilih dan menghitung dari tabel itu (satu kode baris).
Golf:
Tidak Disatukan:
Biola
sumber
Mathematica, 64 byte
Port jawaban Luis Mendo dari MATL .
sumber
SQF , 160 byte
Menggunakan format fungsi-sebagai-file:
Panggil sebagai:
"STRING" call NAME_OF_COMPILED_FUNCTION
Tidak Disatukan:
sumber
compile "CODE"
.Python:
207189181 BytesInput adalah sebuah string.
Terima kasih kepada @LuisMendo karena telah menunjukkan bahwa saya sebenarnya hanya dapat membuat indentasi dengan 1 spasi. Darn guru Python saya untuk memberitahu saya untuk selalu melakukannya dengan penambahan empat.
Memperbaikinya sehingga input diperoleh daripada yang diasumsikan tersimpan sebenarnya menyelamatkan saya 8 byte.
sumber
input()
dan simpan di suatu tempatRuby, 64 + 6 = 70 byte
+6 byte untuk
-rset
bendera.Port langsung dari jawaban Python Leaky Nun .
Lihat di repl.it: https://repl.it/Cnjy
sumber
-rset
bendera hanya dihitung sebagai 4 byte.-rset
bendera sekarang dihitung sebagai 0 byte.-e
menjadi "gratis" di Ruby berarti-n
1 byte, bukan 3 tetapi orang-orang yang tidak tahu tentang hal itu dapat melaporkan bytecounts berbeda) tetapi untuk masing-masing mereka sendiri. BTW,Set[]
menghemat 2 byte lebihSet.new
.rset
jawaban tidak :bytes.map
menghemat 4 byteeach_char
karena Anda dapat menerimaord
panggilan.R,
172156137 13710196 byteMenggunakan ide pesawat kompleks @ LeakyNun.
ungolfed
sumber
Javascript (ES6),
979385 byteEDIT: -8 byte, terima kasih kepada Neil
Uji:
sumber
[...i]
sebagai gantii.split('')
. Juga, saya pikir Anda dapat menulis(p=1E6,v=[-1,1,-1E3,1E3],0)
sebagai0,p=1E6,v=[-1,1,-1E3,1E3]
.^
menjadi yang pertama,search
simpan byte lebihindexOf
. (Anda perlu^
menjadi yang pertama karenasearch
memperlakukan^
sebagai metacharacter regexp.)S=
bagian.S=
") adalah opsional (karena Anda bisa memanggil fungsi seperti(«function code here»)(«argument»)
).PowerShell , 136 byte
Cobalah online!
Saya pikir ada lebih banyak untuk mengoptimalkan di sini, tetapi ini adalah yang terendah yang saya dapatkan untuk saat ini.
Lebih mudah dibaca:
Penjelasan: Input diubah ke array karakter dan masing-masing bagian dicocokkan dengan salah satu dari 4 case switch pertama untuk menambah x atau y coord. Semuanya cocok dengan case ke-5 di mana kami memutuskan apakah lampu dinyalakan atau dimatikan. Panjang pada bagian akhir menentukan jumlah sakelar yang dihidupkan.
Catatan: Koma dalam koordinat diperlukan sehingga kami tidak mendapatkan tabrakan seperti (10,10) dan (101,0)
sumber
-ne
bekerja dengan array 115 bytePowerShell ,
9695 byteCobalah online!
Belum dibuka:
PowerShell ,
112109 bytePort jawaban Luis Mendo dari MATL .
Cobalah online!
sumber
Sebenarnya ,
2423 byteIni adalah port dari jawaban MATL Luis Mendo . Saran bermain golf diterima. Cobalah online!
Sunting: Satu byte terima kasih kepada Leaky Nun.
Tidak melakukan pelanggaran:
sumber
:11
sebagai4P
, saya tidak dapat memberikan saran golfC,
203190189 byteO (n ^ 2) dengan algoritma memori O (1).
Ia melingkupi setiap posisi, memeriksa apakah posisi ini terjadi lebih awal, dan jika tidak memeriksa apakah posisi ini terjadi dalam jumlah genap / ganjil setelahnya, menambahkannya ke total.
sumber
Perl,
102 98 9190 (89 + -n) byteDapat dibaca:
sumber
for/./g
bukanwhile
, yang memungkinkan Anda untuk menggunakanord()
bukanord($&)
.say
alih-alihprint
(karena-M5.010
atau-E
gratis) dan gunakan-n
bendera (biaya 1 byte) alih-alih melakukan$_=<>
.C #
210205139138135128113 BytesPenjelasan
Count
keSum
sumber
Distinct()
bukanGroupBy(z=>z)
? Anda juga dapat menggunakanSum(g=>g.Count()%2)
, karena selalu 0 atau 1, saya harus berpikir.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(tambahkan saja nomor yang kita hitung dari char dengan beberapa modulus bodoh dan semacamnya). Saya belum menguji, saya akan membiarkan Anda memperbaikinya jika rusak;) Ini seharusnya menghemat banyak byte jika saya tidak mengacaukannya! (Dan ada beberapa ekspresi bermuka masam yang lebih murah, tapi ini hanya apa yang bisa saya dapatkan dalam 20 menit terakhir)Distinct()
tidak berfungsi (kecuali saya kehilangan sesuatu) karena mengembalikan salah satu dari setiap string, daripada memberi saya hitungan kejadian.c%6%3-1
hanya memetakan nilai ASCII<>v^
untuk-1,1,0,0
(perubahanx
, catatan nilai nol) dan ekspresi lainnya menghasilkan hasil yang sama untuky
. Mungkin ada ekspresi yang lebih baik (saya tidak terlihat terlalu keras), setetes ternary mungkin terbayar. Ini adalah upaya pertama saya, yang mungkin membuatnya lebih jelas apa yang sedang terjadi:(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
(tapi jelas itu agak lebih lama!)Perl 6 , 47 byte
Cobalah online!
(-i, *i, ... *)
adalah tak terbatas mengulangi urutan-i
,1
,i
,-1
, ...[.ords X% 11]
mengiris urutan itu dengan nilai-nilai ordinal karakter dalam string input, modulo 11.[\+]
melakukan pengurangan segitiga (atau "memindai") pada nilai-nilai itu, menghasilkan daftar koordinat yang dikunjungi pada bidang kompleks.bag()
membuat yangBag
berisi koordinat tersebut, yang masing-masing memiliki multiplisitas terkait (berapa kali muncul dalam daftar).{*}
mengambil semua multiplisitas dari tas.X% 2
melintasi kelipatan tersebut dengan angka2
menggunakan operator modulus%
. Multiplisitas ganjil menghasilkan1
, bahkan multiplisitas menghasilkan a0
.sum
jumlah sisanya.sumber
Common Lisp ,
198 byte,186 byteLarutan:
Menjalankannya!
Penjelasan:
Catatan: i (input) didefinisikan sebagai pengujian sebagai:
sumber
(99 1 -99 -1)
untuk mencukur 2 byte ..K (oK) ,
372927 byteLarutan:
Cobalah online!
Penjelasan:
Buat daftar langkah-langkah, buat jalur, grup, hitung setiap pengulangan, jika mod 2 bernilai 0 maka mati, kalau tidak, aktifkan. Merasa sangat AdventOfCode-ish.
Catatan:
sumber
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?krrp , 137 byte
Cobalah online!
Penjelasan
Cobalah online!
Sayangnya, krrp hanya memiliki satu implementasi yang agak lambat, membuat kasus uji yang panjang sulit untuk diverifikasi. konversi string
krrp .
sumber
APL (Dyalog Unicode) ,
2120 byte SBCSCobalah online!
menggunakan
⎕io←1
⎕
memasukkan'^<v'⍳
temukan indeks masing-masing input char'^<v'
, yaitu^
menjadi 1,<
2,v
3, dan yang lainnya 40j1*
i to the power (konstanta imajiner)+\
jumlah parsial⊢⌸
matriks di mana setiap baris adalah daftar kemunculan (indeks) dari jumlah parsial unik; empuk dengan 0s untuk membuatnya persegi panjang×
signum - semua indeks menjadi 1s, paddingnya tetap 0s≠/
jumlah mod 2 untuk setiap baris+/
jumlahsumber
Ruby , 67 byte
Terinspirasi oleh solusi C orlp. Merakit daftar semua posisi yang dikunjungi, dan kemudian untuk masing-masing posisi yang unik (menggunakan persimpangan setwise
(d&d)
karena menghemat satu byte lebihd.uniq
), hitung yang dengan jumlah kejadian ganjil (secara teknis, petakan ke tempat kejadian% 2, dan jumlahkan bersama-sama , karena itu melakukan hal yang sama)Cobalah online!
sumber