Skip to content

Instantly share code, notes, and snippets.

@nariakiiwatani
Created August 6, 2020 04:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nariakiiwatani/af49687ec5e1b8e715c6af0d746ebd78 to your computer and use it in GitHub Desktop.
Save nariakiiwatani/af49687ec5e1b8e715c6af0d746ebd78 to your computer and use it in GitHub Desktop.
(defvar jack [-38 -67.1875])
(defvar red0 [-31 -161.1875])
(defvar red1 [-119 -171.1875])
(defvar red2 [33 -116.1875])
(defvar blue0 [-115 -78.1875])
(defvar blue1 [84 50.8125])
(defvar blue2 [22 -26.1875])
(defvar blue3 [-81 -10.1875])
(defvar size 10)
(def red [red0 red1 red2])
(def blue [blue0 blue1 blue2 blue3])
(defn nearest
[origin positions]
(reduce (fn [near pos]
(let [nearDist (vec2/dist origin near)
dist (vec2/dist origin pos)
]
(if (< dist nearDist)
pos
near
))) (first positions) positions)
)
(defn farest
[origin positions]
(reduce (fn [far pos]
(let [farDist (vec2/dist origin far)
dist (vec2/dist origin pos)
]
(if (> dist farDist)
pos
far
))) (first positions) positions)
)
(def key
(let [nearRed (nearest jack red)
nearBlue (nearest jack blue)
pos (farest jack [nearRed nearBlue])
side (if (< (vec2/dist jack nearRed) (vec2/dist jack nearBlue))
:red :blue)
distance (vec2/dist jack pos)
]
{
:pos pos
:side side
:dist distance
}
))
(defn scoreCircle
[pos size side]
(style
(fill (cond (= side :red) "#FFC0C0B0" :else "#C0C0FFB0"))
(circle pos size))
)
;(prn key)
:start-sketch
(background "#88E46CF7")
(scoreCircle jack (get key :dist) (get key :side))
(style
(stroke "white" 2)
(circle (get key :pos) (+ size 2))
(line jack (get key :pos))
)
(style
(fill "white")
(circle jack size)
)
(style
(fill "red")
(circle red0 size)
(circle red1 size)
(circle red2 size)
)
(style
(fill "blue")
(circle blue0 size)
(circle blue1 size)
(circle blue2 size)
(circle blue3 size)
)
(style
(stroke "#FFFF00" 3)
(map (fn [pos] (circle pos (+ size 3)))
(filter #(> (get key :dist) (vec2/dist jack %))
(cond (= (get key :side) :red) red :else blue))
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment