2019(e)ko otsailaren 26(a), asteartea

24. astea | zenbaki bat asmatzen

Guk pentsaturiko zenbakia ordenadoreak asmatuko digu

0 eta 100 bitartean dagoen zenbaki osoa pentsatuko dugu eta ordenadoreak galdera batzuk eginez zenbaki hori asmat uko digu. Algoritmoa hauxe da:
  1. Zenbaki osoa pentsatu dugu, 0 eta 100 bitartean dagoen zenbaki osoa pentsatu dugu.
  2. Ezezaguna den zenbakiaren heina [0, 100] da hasieran, behemuga 0 eta goimuga 100. Beraz, iBehemuga:=0 eta iGoimuga:=100
  3. Errepikatu zenbakia asmatu arte edo 7 saiakera egin arte:
    • Proposatuko digun soluzioa kalkulatu, soluzioa: baligarria den heinaren erdia. Beraz, iSoluzioa := (iBehemuga + iGoimuga) DIV 2
    • Programak galdetuko digu proposatu duen soluzioa egokia den ala ez, aukerak:
      • B, bai, proposatutako zenbakia guk pentsatu duguna izan da (begiztatik irten).
      • H, ez, proposatutako zenbakia ez da guk pentsatutakoa, proposatutako zenbakia gurea baino handiagoa da (heinaren iGoimuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko).
      • T, ez, proposatutako zenbakia ez da guk pentsatutakoa, proposatutako zenbakia gurea baino txikiagoa da (heinaren iBehemuga aldatu eta  3. urratsaren hasierara itzuli saiakera berri bat egiteko).
  4. Emaitza erakutsi, begiztatik irteteko aukerak:
    • Gure erantzuna B izan denez, ordenadoreak 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?
1-tik 100-ra, biak barne, 101 aukera. Beraz:
log2(101)=6,658
logaritmo (2 oinarrian) 101 zenbakiarena 6,658 da

Ikusi programaren balizko exekuzio bat:

Eta hau da...

iruzkinik ez:

Argitaratu iruzkina