Būvējam paši savu robotu – 2. daļa!

Sāku domāt par šī paša sacerētā uzdevuma risinājuma variantiem un secināju, ka darbu ļoti atvieglotu vēl vienas komandas pievienošana robotam saprotamo komandu sarakstam:

nnRnd(Nr0,Nr1) – ģenerēt nejaušu veselu skaitli x no intervāla [0..1]; pāriet uz komandu ar numuru Nr0, ja x=0, pāriet uz komandu ar numuru Nr1 pretējā gadījumā.

Droši vien uzdevumu var atrisināt arī tikai ar jau manā iepriekšējā formulējumā minētajām komandām, bet, pievienojot šo papildus komandu, risinājums kļūst triviāls.. Taču tai pat laikā tam piemīt divi būtiski trūkumi:
1)
robots (visticamāk) patērē ievērojami vairāk enerģijas nekā deterministiska algoritma gadījumā
2)
nav iespējams pierādīt, ka robots beidz darbu (izsūc visu istabu) galīgā laikā

 

Ja uz šiem diviem trūkumiem pieveram acis, programma iznāk pavisam īsa un vienkārša:
     00Reset
     01Clean
     02Add
    
03Rnd(06,04)
     04Turn
     05Turn
     06Rnd(08,07)
     07Turn
     08Can(09,03)
     09Go
     10Been(03,01)

Nākamais uzdevums – uztaisīt interpretatoru, kurš pēc dotas šāda veida programmas spēj noteikt, vai robots, vadoties pēc šīs programmas patiešām izdarīt prasīto darbu vai nē. Vēlama arī vizualizācija!

One thought on “Būvējam paši savu robotu – 2. daļa!

  1. Atpakaļ ziņojums: Būvējam paši savu robotu! « Rūdas vīra neironu uzplaiksnījumi!

Komentēt

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Mainīt )

Twitter picture

You are commenting using your Twitter account. Log Out / Mainīt )

Facebook photo

You are commenting using your Facebook account. Log Out / Mainīt )

Google+ photo

You are commenting using your Google+ account. Log Out / Mainīt )

Connecting to %s