Golfcoder FAQ LOGIN
Error

Advent of Code Leaderboard 2023 / Day 16

View puzzle on adventofcode.com

Submit solution



Rules
  • You're welcome to participate alone or in a team.
  • You may submit multiple solutions and explore different programming languages.
  • Stick to the standard library of your language, no further dependencies/libraries, except the ones which OneCompiler provides (e.g. NumPy for Python).
  • Ensure your code aligns to the template (Python, Rust, Go, Kotlin, JavaScript, C#, TypeScript, C++, Java, C, Swift, Scala, Ruby), reading the puzzle input from stdin (terminated with end-of-file), and printing the solution to stdout.
  • Please refrain from making network requests, reading data from files, or storing data in variable/function/class names for reflection.

Leaderboard

Name Language Tokens Sum Tokens Part 1 Tokens Part 2 Last change
1 Profile imageDan Houghton Python 10184 184 - 7 months ago

184 tokens in Python for part 1 by Dan Houghton

Download solution

importsys

cells={
complex(i,j):cforj,rinenumerate(sys.stdin)fori,cinenumerate(r.strip())
}
visited={}
beams=[(-1,1)]
whilebeams:
pos,dir=beams.pop()
whiledirnotinvisited.setdefault(pos,[]):
visited[pos].append(dir)
pos+=dir
ifposnotincells:
break
c=cells[pos]
rotated=1j*dir.conjugate()
ifc=="|":
dir=1j
beams.append((pos,-1j))
elifc=="-":
dir=1
beams.append((pos,-1))
elifc=="/":
dir=-rotated
elifc=="\\":
dir=rotated
print(len(visited)-1)