More comments
This commit is contained in:
parent
7c02f21b75
commit
6bfbd22108
|
@ -79,11 +79,11 @@ Game⇐{ # The Game function creates a game object
|
||||||
|
|
||||||
# w‿d Bounce x | x: map | w‿d: w: current position, d: direction of the laser
|
# w‿d Bounce x | x: map | w‿d: w: current position, d: direction of the laser
|
||||||
# Calculates the bounces of a laser beam recursively
|
# Calculates the bounces of a laser beam recursively
|
||||||
Bounce←{(w‿d)S x:{
|
Bounce←{(w‿d)S x:{ # Base case:
|
||||||
⊑opaque∊˜⊑w⊑x? # When the beam touches an opaque object (not a mirror):
|
⊑opaque∊˜⊑w⊑x? # When the beam touches an opaque object (not a mirror):
|
||||||
(machine=⊑w⊑x)◶⟨x, # we do nothing if it doesn't touch a machine
|
(machine=⊑w⊑x)◶⟨x, # we do nothing if it doesn't touch a machine
|
||||||
⟨pmachine⟩˙⌾(w⊸⊑)x # and if it does we change it to a powered machine
|
⟨pmachine⟩˙⌾(w⊸⊑)x # and if it does we change it to a powered machine
|
||||||
⟩@;
|
⟩@; # and the recursion stops
|
||||||
⊑empties∊˜⊑w⊑x ? # When the beam passes through an empty space:
|
⊑empties∊˜⊑w⊑x ? # When the beam passes through an empty space:
|
||||||
# we draw the laser beam and recurse to the next:
|
# we draw the laser beam and recurse to the next:
|
||||||
⟨w+d,d⟩S{ # we choose the type of laser beam to draw
|
⟨w+d,d⟩S{ # we choose the type of laser beam to draw
|
||||||
|
@ -99,6 +99,7 @@ Game⇐{ # The Game function creates a game object
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# We find each laser machine and shoot a beam in its direction
|
||||||
# Shoot 𝕩 | 𝕩: map | calculates the bounces for each laser
|
# Shoot 𝕩 | 𝕩: map | calculates the bounces for each laser
|
||||||
Shoot←{𝕩 {𝕨Bounce´⌽𝕩} ∾⟨<0‿¯1,<0‿1,<¯1‿0,<1‿0⟩(⊣⋈˜¨+)¨ FindIdx⟜(⊑¨𝕩)¨ lasers}
|
Shoot←{𝕩 {𝕨Bounce´⌽𝕩} ∾⟨<0‿¯1,<0‿1,<¯1‿0,<1‿0⟩(⊣⋈˜¨+)¨ FindIdx⟜(⊑¨𝕩)¨ lasers}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue