157 tokens in Python for part 1 by Abbas Moosajee
Download solution
map_dict_p1={}
forrow_no,row_datainenumerate(open(0)):
forcol_no,cellinenumerate(row_data):
ifcell=='S':
start_pos=row_no,col_no
map_dict_p1[row_no,col_no]=cell
queue=[start_pos]
visited=set()
split_count=0
whilequeue:
beam_pos=queue.pop()
beam_row,beam_col=beam_pos
ifbeam_posinvisited:
continue
visited.add(beam_pos)
map_cell=map_dict_p1.get(beam_pos,' ')
ifmap_cellin'.S':
queue.append((beam_row+1,beam_col))
elifmap_cell=='^':
split_count+=1
queue.append((beam_row,beam_col+1))
queue.append((beam_row,beam_col-1))
print(split_count)