Mezinárodní soutěž v programování

ICP '98

Úloha korespondenčního kola

Pavouci

Na ostrově žijí dva druhy "pavouků" -- X a Y. Jsou to kovoví roboti a kovem se také živí. Mohou se tedy živit i pavouky, ale pouze druhé rasy.

Zdrojem energie pavouků je sluneční záření.

Pavouci Y mají akumulátory, které se ve dne dobíjejí. Pavouci Y se mohou pohybovat ve dne i v noci, ale jsou pomalejší než pavouci X.

Pavouci X nemají akumulátory, takže jsou v noci nehybní. Během dne jsou rychlejší než pavouci druhu Y.

Pavouci sní všechnu kovovou potravu, kterou mají v cestě.

Při střetu pavouků stejného druhu, při nárazu pavouka do zdi nebo při styku s vodou se náhodně změní směr pohybu.

Při střetu pavouků opačného druhu zvítězí s nastavitelnou pravděpodobností pavouk X ve dne a s jinou pravděpodobností pavouk Y v noci. Vítězný pavouk vždy sežere poraženého.

Pokud má pavouk alespoň dvojnásobek své původní hmotnosti, oddělí se od něj nový pavouk s jednotkovou hmotností.

Úkol:

Vytvořte program, který simuluje život pavouků na ostrově a splňuje následující požadavky:

  1. Program umožní uživateli pomocí myši vytvořit na obdélníkové ploše ostrov.
  2. Program umožní uživateli pomocí myši na ostrově vytvořit zdi.
  3. Program umožní uživateli zadat počet a rychlost pavouků pro každý druh zvlášť, pravděpodobnosti jejich vítězství při střetu, celkovou hmotnost kovové potravy (zadanou relativně vůči hmotnosti pavouka) a počet míst, na která bude potrava rozmístěna.
  4. Program umožní zadat délku dne a noci v sekundách.
  5. Pozice potravy a pavouků se vygeneruje náhodně.
  6. Program umožní uživateli spustit a ukončit simulaci života na ostrově. Po spuštění simulace se pavouci začnou pohybovat náhodným směrem. Program průběžně zobrazuje ostrov, zdi, pavouky, potravu a počty pavouků.