# @param {Integer[][]} board
# @return {Integer}
def snakes_and_ladders(board)
q=[];l=r=0
board.reverse!
b=0
board.each{|v|v.reverse! if b==1;b^=1}
board.flatten!.map!{|v|v<0?v:v-1}
p board
push=->(x){q[r]=x;r+=1}
pop=->{t=q[l];l+=1;t}
vis=[]
push.call([0,0])
while l<r
t,d=pop.call
next if vis[t]
p [t,d]
vis[t]=d
(1..6).each do|dc|
break if t+dc>=board.size
if board[t+dc]<0
push.call([t+dc,d+1])
else
push.call([board[t+dc],d+1])
end
end
end
vis[board.size-1]||-1
end
루비가 너무 좋아요
댓글 0