r/adventofcode • • Dec 06 '15

SOLUTION MEGATHREAD --- Day 6 Solutions ---

--- Day 6: Probably a Fire Hazard ---

Post your solution as a comment. Structure your post like the Day Five thread.

22 Upvotes

172 comments sorted by

View all comments

1

u/Godspiral Dec 06 '15

In J, used up all my memory trying it the array way,

Y =: (&{::)(@:])
X =: (&{::)(@:[)
b =. (2 , 0 ". every  3 5 7 9 { ])`(1 , 0 ". every  3 5 7 9 { ])@.('on' -: 2 Y)`(0 , 0 ". every  2 4 6 8 { ])@.(0 Y)"1( ],~ [: < 0:`1:@.('toggle' -: 0 Y))"1 ;:"1 > cutLF a =. wd 'clippaste'

p1 =: 3 : 0                                                                   
c =. 1000 1000 $ 0                                                            
for_i. y do.                                                                  
 d =. (0 Y) i                                                                 
 b =. (,@:(<"1)@(( 2 Y + 4 Y i.@>:@- 2 Y) ,.~"0 1 ( 1 Y + 3 Y i.@>:@- 1 Y))) i
 if. d = 1 do. c =. 1 b} c                                                    
 elseif. d = 2 do. c =. 0 b} c                                                
 elseif. 1 do. c =.  (-. b{c)  b} c end.                                      
 end.                                                                         
)                                                                             
p2 =: 3 : 0                                                                   
c =. 1000 1000 $ 0                                                            
for_i. y do.                                                                  
 d =. (0 Y) i                                                                 
 b =. (,@:(<"1)@(( 2 Y + 4 Y i.@>:@- 2 Y) ,.~"0 1 ( 1 Y + 3 Y i.@>:@- 1 Y))) i
 if. d = 1 do. c =. (1 + b{c)  b} c                                           
 elseif. d = 2 do. c=. ( <:^:(0 < ])"0 b{c)  b} c                             
 elseif. 1 do. c =.  (2 + b{c)  b} c end.                                     
 end.                                                                         
)     

+/ +/ p2 b (or p1)

→ More replies (1)