advent of code 2017
1.0.0
Tujuan saya, seperti tahun lalu, adalah melakukan setiap hari dalam bahasa yang berbeda. Kita akan lihat apa yang terjadi. Saya mungkin kembali dan melakukan beberapa solusi untuk satu hari jika saya menyesal tidak melakukan sesuatu di APL atau LISP.
Saya harus menambahkan penafian bahwa banyak dari solusi ini tidak idiomatik dalam bahasa yang dipilih. Terkadang karena saya tidak menyadari konvensi, dan kadang -kadang karena saya secara aktif menentangnya.
Sebelumnya.
s ← "123123" ⋄ +/⍎¨"0",s/⍨s=s⌽⍨2÷⍨⍴s di APL+/ ((#~(=>.))@(#~(1&~:))@,@(%/]))"1 is di jsum(1 for l in f if len({''.join(sorted(w)) for w in l.split()}) == len(l.split()))BOUNDfor (size_t i = 0; i < N; ++n) i += j[i] <3 ? j[i]++ : j[i]--;Beberapa diskusi seputar hal ini mengarah pada demo beberapa dari ini sebagai (terlalu banyak unpythonic) Daftar Python:
with open ( 'day1.in' ) as f : ds = [ int ( c ) for c in f . readline (). strip ()]
r = 1 # or len(ds)/2 for part 2
sum ( a for ( a , b ) in zip ( ds , ds [ r :] + [ ds [: r ]]) if a == b ) with open ( 'day2.in' ) as f : ls = [[ int ( i ) for i in line . strip (). split ()] for line in f ]
sum ( max ( row ) - min ( row ) for row in ls )
sum ([ q // d for q in row for d in row if q != d and 0 == q % d ][ 0 ] for row in ls ) with open ( 'day4.in' ) as f : sum ( 1 for l in f if len ( set ( l . split ())) == len ( l . split ()))
with open ( 'day4.in' ) as f : sum ( 1 for l in f if len ({ '' . join ( sorted ( w )) for w in l . split ()}) == len ( l . split ())) > >> with open ( "day5.in" ) as f : jumps = [ int ( i ) for i in f ]
> >> i , n = 0 , 0
> >> while 0 <= i < len ( jumps ): j = i + jumps [ i ]; jumps [ i ] = jumps [ i ] + ( 1 if jumps [ i ] < 3 else - 1 ); n += 1 ; i = j
> >> print ( n )