advent of code 2017
1.0.0
เป้าหมายของฉันเช่นปีที่แล้วคือการทำในแต่ละวันในภาษาที่แตกต่างกัน เราจะเห็นว่าเกิดอะไรขึ้น ฉันอาจย้อนกลับไปและทำวิธีแก้ปัญหาหลายครั้งในหนึ่งวันถ้าฉันเสียใจที่ไม่ได้ทำอะไรใน APL หรือ LISP
ฉันควรเพิ่มข้อจำกัดความรับผิดชอบว่าโซลูชันเหล่านี้จำนวนมากไม่ได้เป็นสำนวนในภาษาที่เลือก บางครั้งเพราะฉันไม่ทราบถึงการประชุมและบางครั้งเพราะฉันท้าทายพวกเขาอย่างแข็งขัน
ก่อนหน้านี้.
s ← "123123" ⋄ +/⍎¨"0",s/⍨s=s⌽⍨2÷⍨⍴s ใน APL+/ ((#~(=>.))@(#~(1&~:))@,@(%/]))"1 is ใน 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]--;การอภิปรายเกี่ยวกับเรื่องนี้นำไปสู่การสาธิตสิ่งเหล่านี้บางส่วนเป็น (unpythonic มากเกินไป) รายการ 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 )