TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach

FEI archív 2013/2014 => 1. ročník => Topic started by: misho.17 on 15.12.2013, 04:12:50

Title: UPS - Karel
Post by: misho.17 on 15.12.2013, 04:12:50
Potreboval by som poradiť s Karlom.

Ako by ste riešili zozbieranie značiek, ak sa Karol nachádza v pravom dolnom rohu a má postupne po riadkoch zozbierať značky tak, aby značky zostali len na vedľajšej diagonále. Riešenie má byť pre akúkoľvek mapu sveta. Nepožadujem, že mi tu vypíšete všetky príkazy, len by som chcel nápad na to, ako ich pozbierať.

Prikladám obrázky:
obr. vpravo reprezentuje začiatok programu.
obr. vľavo reprezentuje koniec programu (zostanú iba značky, ktoré sú vyznačené, ostatné sú pozbierané).

Title: Re: UPS - Karel
Post by: misho.17 on 15.12.2013, 04:19:38
Ešte doplním zadanie úlohy pre lepšie pochopenie:


Robot si postaví pomocou značiek uprostred plochy sveta štvorec. Potom postupuje vodorovne po riadkoch a počas cesty do konečnej pozície upraví štvorec tak, že z nej zostane iba vedľajšia diagonála.
Počiatočná situácia:

Karel sa nachádza v ľavom hornom rohu. Rozmery sveta sú vždy štvorcové.

>.....

......

......

......

......

......

Situácia po postavení štvorca:

......

.****.

.****.

.****.

.****.

.....>

Koncová situácia:

Karel sa opäť nachádza v ľavom hornom rohu.

>.....

....*.

...*..

..*...

.*....

......
Title: Re: UPS - Karel
Post by: panKapitan on 15.12.2013, 04:25:21
Najprv si zisti rozmery sveta while(frontIsClear()){movek();sirka++} a pre výšku to isté a potom si predstav, že rozmery vieš a robíš všetko postupne čo treba, už to potom neje ťažké
Title: Re: UPS - Karel
Post by: xxx3 on 15.12.2013, 04:27:34
tak ako pise panKapitan .. zistit sirku a vysku a potom budes zbierat tie znacky s tym, ze v druhom riadku nechas prvu zprava, v tretom riadku druhu, vo stvtom tretiu .. a tak vzdy o jednu poziciu dalej az kym nedojdes na predposledny riadok
Title: Re: UPS - Karel
Post by: misho.17 on 15.12.2013, 04:51:13
Diagonála sa dá zobraziť len v štvorcovom, takže stačí zmerať napr. len šírku. No ale ako zapísať aby v 2. riadku nechalo značku v 2. stĺpci, v 3. riadku v 3.stĺpci..? Nejak si s tým nakoniec aj tak neviem poradiť...

A ešte napr. po vykreslení značiek sa dá prekontrolovať aj šírka, aj výška, tie by sa potom dali porovnať a ak by neboli rovnaké, tak by sa ukončil program, aby sa to nevykresľovalo.