0 eta 100 bitartean dagoen zenbaki osoa pentsatuko dugu eta ordenagailuak galdera batzuk eginez zenbaki hori asmatuko digu. Algoritmoa hauxe da:
- Zenbaki oso bat pentsatu dugu, hots, 0 eta 100 bitartean dagoen zenbaki osoa pentsatu dugu
- Ezezaguna den zenbakiaren heina [0, 100] da hasieran, behemuga 0 eta goimuga 100. Beraz, iBehemuga:=0 eta iGoimuga:=100
- Errepikatu zenbakia asmatu arte edo 7 saiakera egin arte:
- Programak proposatuko digun soluzioa kalkulatuko du, soluzioa: baligarria den heinaren erdia. Beraz, iSoluzioa := (iBehemuga + iGoimuga) div 2
- Programak galdetuko digu proposatu duen soluzioa egokia den ala ez, aukerak:
- B, bai, proposatu digun zenbakia guk pentsatu duguna izan da (begiztatik irten)
- H, ez, proposatu digun zenbakia ez da guk pentsatutakoa, proposatu digun zenbakia gurea baino handiagoa da (heinaren iGoimuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)
- T, ez, proposatu digun zenbakia ez da guk pentsatutakoa, proposatu digun zenbakia gurea baino txikiagoa da (heinaren iBehemuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)
- Emaitza erakutsi, begiztatik irteteko aukerak:
- Gure erantzuna B izan denez, ordenagailuak gure zenbakia asmatu du: iSoluzioa erakutsi
- Saiakerak 7 baino gehiago izan dira, horrek esan nahi du ez dugula zuzen jokatu eta gure erantzunetan gezurra esan diogula programari
Zergatik 7 saiakera? 0-tik 100-ra, biak barne, 101 aukera. Urrats bakoitzean, aukera guztietatik erdiak baztertzen dira. Beraz: log2(101)=6,658 logaritmo (2 oinarrian) 101 zenbakiarena 6,658 da 2x = 101 >>> ln(2x) = ln(101) >>> |
Ikusi ZenbakiaAsmatu.exe programaren balizko exekuzio bat:
Eskatzen den ariketaren hurbilpen hau... ZenbakiaAsmatu_hasiera.pas ...abiapuntutzat har daiteke. Hona hemen... ZenbakiaAsmatu.pas ...iturburu-programa, eta... ZenbakiaAsmatu_azpiprogramak.pas beste iturburu-programa bat da. Ikusten denez, soluzio bakarra ez dago, zein da zurea?
iruzkinik ez:
Argitaratu iruzkina