advent of code 2017
1.0.0
Mon objectif, comme l'année dernière, est de faire chaque jour dans une langue différente. Nous verrons ce qui se passe. Je pourrais revenir en arrière et faire plusieurs solutions pour une journée si je regrette de ne pas faire quelque chose dans APL ou LISP.
Je dois ajouter l'avertissement que bon nombre de ces solutions ne sont pas idiomatiques dans les langues choisies. Parfois parce que je ne connais pas les conventions, et parfois parce que je les défie activement.
Précédemment.
s ← "123123" ⋄ +/⍎¨"0",s/⍨s=s⌽⍨2÷⍨⍴s en apl+/ ((#~(=>.))@(#~(1&~:))@,@(%/]))"1 is en 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]--;Une partie de la discussion autour de cela a conduit à la démonstration de certains d'entre eux comme des compréhensions de liste de python (excessivement-unpythonique):
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 )