Kalibracija laserja

Rok za oddajo: torek, 28. december 2021, 08.00

Marsovske ladje se zdaj boljše skrivajo in SOVA jim ni več kos. Na srečo je priskočila na pomoč moskovska sadjarska zadruga MOSSAD z dvema funkcijama.

  • r(koordinate) vrne polmer kroga, katerega središče je na podanih koordinatah. Koordinati podamo s terko, na primer r((5.25, 8.625)).
  • notranji(koordinate) vrne množico središč vseh krogov, ki se nahajajo neposredno znotraj kroga s podanim središčem. Pri krogih na spodnji sliki bo za krog s središčem v (0, 10) vrnil le tri (večje) kroge, ne pa dveh, ki sta potem še bolj znotraj.

Tidve funkciji sta podani. Kako delujeta, ni pomembno; MOSSAD-u bi bilo ljubše, če ne veš.

Zaradi konstrukcijskih zahtev (vsak krog je pritrjen z vijakom skozi središče in na Marsu nimajo vijakov, ki bi bili daljši od debeline dveh plošč) se nikoli ne zgodi, da bi imela dva kroga isto središče.

Pred napadom bo potrebno natančno kalibrirati moč laserjev in jih pravilno usmeriti. Moč laserja mora biti enaka površini vseh krogov, ki sestavljajo ladjo. Laser je potrebno usmeriti v središče najmanjšega kroga, ki sestavlja ladjo.

Obvezna naloga

Napiši naslednji funkciji.

  • povrsina(koord) vrne skupno površino vseh krogov, ki sestavljajo ladjo s središčem, podanim s terko koord.

  • najmanjsi(koord) vrne središče najmanjšega izmed krogov, ki sestavljajo ladjo.

To je vaja iz rekurzije, torej morata biti funkciji rekurzivni. V izogib skušnjavam in čudnim rešitvam, dodatne funkcije niso dovoljene, funkciji pa ne smeta imeti dodatni argumentov (niti s privzetimi vrednostmi).

Dodatna naloga

Funkciji naj bosta napisani v eni vrstici.

Na ta način sta pravzaprav preprostejši. Pozorno preberi dokumentacijo funkcije min.

O testih

Testi uporabljajo tri postavitve ladij. Kažejo jih spodnje slike, le da se vzorec pri drugi in tretji nadaljuje, tako da imamo tam tisoče in tisoče krogov.