Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First (='ω'=) solution in 3rd party category for Counting Tiles by Magu
from sympy.geometry import ellipse, Point
from math import ceil, dist
def checkio(radius):
part, full = 0, 0
l_pts = [[(x, y), (x+1, y), (x, y+1), (x+1, y+1)] for x in range(8) for y in range(8)]
c = ellipse.Ellipse((q := Point(ceil(radius), ceil(radius))), radius, radius)
for l in l_pts:
cnt = [0, 0]
for t in l:
p = Point(t[0], t[1])
if dist(p, q) < radius: cnt[0] += 1
elif dist(p, q) == radius: cnt[0] += 1; cnt[1] += 1
match cnt:
case [0, 0]|[1, 1]: continue
case [4, _]: full += 1
case _: part += 1
return [full, part]
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio(2) == [4, 12], "N=2"
assert checkio(3) == [16, 20], "N=3"
assert checkio(2.1) == [4, 20], "N=2.1"
assert checkio(2.5) == [12, 20], "N=2.5"
Nov. 8, 2021
Comments: