advent of code 2017
1.0.0
Mein Ziel ist es, wie letztes Jahr jeden Tag in einer anderen Sprache zu tun. Wir werden sehen, was passiert. Ich könnte für einen Tag zurückgehen und mehrere Lösungen durchführen, wenn ich es bereue, nichts in APL oder Lisp zu tun.
Ich sollte den Haftungsausschluss hinzufügen, dass viele dieser Lösungen in den ausgewählten Sprachen nicht idiomatisch sind. Manchmal, weil ich mich der Konventionen nicht bewusst bin und manchmal, weil ich mich ihnen aktiv trotze.
Vorher.
s ← "123123" ⋄ +/⍎¨"0",s/⍨s=s⌽⍨2÷⍨⍴s in APL+/ ((#~(=>.))@(#~(1&~:))@,@(%/]))"1 is in J.sum(1 for l in f if len({''.join(sorted(w)) for w in l.split()}) == len(l.split()))BOUND Anweisungfor (size_t i = 0; i < N; ++n) i += j[i] <3 ? j[i]++ : j[i]--;Einige der Diskussionen darüber führen dazu, einige dieser als (übermäßig unpythonischen) Python-Listenverständnisse zu demonstrieren:
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 )