data Tochka a = Tochka a a
newtype Tochki a = Tochki {unTochki :: [a]}
instance (Show a
) => Show (Tochka a
) where
instance (Show a
) => Show (Tochki a
) where show = foldl (\acc x
-> acc
++ show x
++ "\n") "Tochki:\n" . unTochki
okrujnost r x0 y0
= \x
-> sqrt (r
** 2 - (x
- x0
) ** 2) - y0
liniya k x0 y0 = \x -> k * (x - x0) + y0
kusok0 = 0
kusok1 r
= negate . okrujnost r
((-2) * r
) 0kusok2 r = liniya 1 (-r) 0
kusok3 r = okrujnost r 0 0
kusok4 r = liniya (-1) 0 r
kusok5 r = liniya (3 / 6) r 0
funkciya r x
| x < (-3) * r = kusok0
| x < (-2) * r = kusok1 r x
| x < (-r) = kusok2 r x
| x < 0 = kusok3 r x
| x < r = kusok4 r x
main = do
print $ Tochki
$ map (\x
-> Tochka x
$ funkciya r x
) [-9, -8.5 .. 9]
ZGF0YSBUb2Noa2EgYSA9IFRvY2hrYSBhIGEKbmV3dHlwZSBUb2Noa2kgYSA9IFRvY2hraSB7dW5Ub2Noa2kgOjogW2FdfQoKaW5zdGFuY2UgKFNob3cgYSkgPT4gU2hvdyAoVG9jaGthIGEpIHdoZXJlCglzaG93IChUb2Noa2EgeCB5KSA9IHNob3cgeCArKyAiXHQiICsrIHNob3cgeQoJCmluc3RhbmNlIChTaG93IGEpID0+IFNob3cgKFRvY2hraSBhKSB3aGVyZQoJc2hvdyA9IGZvbGRsIChcYWNjIHggLT4gYWNjICsrIHNob3cgeCArKyAiXG4iKSAiVG9jaGtpOlxuIiAuIHVuVG9jaGtpCgkKCm9rcnVqbm9zdCByIHgwIHkwID0gXHggLT4gc3FydCAociAqKiAyIC0gKHggLSB4MCkgKiogMikgLSB5MApsaW5peWEgayB4MCB5MCA9IFx4IC0+IGsgKiAoeCAtIHgwKSArIHkwCgprdXNvazAgPSAwCmt1c29rMSByID0gbmVnYXRlIC4gb2tydWpub3N0IHIgKCgtMikgKiByKSAwCmt1c29rMiByID0gbGluaXlhIDEgKC1yKSAwCmt1c29rMyByID0gb2tydWpub3N0IHIgMCAwCmt1c29rNCByID0gbGluaXlhICgtMSkgMCByCmt1c29rNSByID0gbGluaXlhICgzIC8gNikgciAwCgpmdW5rY2l5YSByIHgKICAgIHwgeCA8ICgtMykgKiByID0ga3Vzb2swCgl8IHggPCAoLTIpICogciA9IGt1c29rMSByIHgKCXwgeCA8ICgtcikgICAgID0ga3Vzb2syIHIgeAoJfCB4IDwgMCAgICAgICAgPSBrdXNvazMgciB4Cgl8IHggPCByICAgICAgICA9IGt1c29rNCByIHgKCXwgb3RoZXJ3aXNlICAgID0ga3Vzb2s1IHIgeAoKbWFpbiA9IGRvCglwcmludCAiRW50ZXIgUjoiCglyIDwtIHJlYWRMbgoJcHJpbnQgJCBUb2Noa2kgJCBtYXAgKFx4IC0+IFRvY2hrYSB4ICQgZnVua2NpeWEgciB4KSBbLTksIC04LjUgLi4gOV0=