Ho a che fare con il seguente problema e stavo cercando di scrivere uno pseudo-codice per sviluppare un algoritmo che può essere generico per un tale problema.
Ecco cosa ho scoperto fino ad ora.
PASSO 1
In questo passaggio cerco di ottenere il robot dove potrebbe essere collocato nell'angolo in alto a sinistra.
Turn Left -> If no window or Wall detected keep going forward 1 unit..
if window or wall detected ->Turn right --> if no window or Wall detected keep going forward..
if window or wall detected then top left corner is reached.
PASSO 2 (Iniziamo a contare le finestre dopo che siamo arrivati a questo punto per evitare errori di conteggio)
Vorrei dichiarare una variabile chiamata turni in quanto mi aiuterà a tenere traccia del fatto che il robot abbia aggirato l'intera stanza.
Turns = 4;
Ora siamo rivolti a nord e posizionati nell'angolo in alto a sinistra.
while(turns>0){
If window or wall detected (if window count++)
Turn Right
Turn--;
While(detection!=wall || detection!=window){
move 1 unit forward
Turn left (if window count++)
Turn right
}
}
Credo che in questo modo il robot girerà per l'intera stanza e conterebbe le finestre e si fermerà una volta che avrà girato l'intera stanza mentre le virate diminuiscono. Non ritengo che questa sia la soluzione migliore e apprezzerei i suggerimenti su come posso migliorare il mio Pseudo-codice. Non sto cercando alcun codice solo un algoritmo per risolvere un problema del genere ed è per questo che non l'ho postato nello stack overflow. Mi scuso se il mio Pseudo-codice è scritto male, per favore, fai dei suggerimenti se riesco a migliorarlo come sono nuovo in questo. Grazie.