2023(e)ko otsailaren 24(a), ostirala

6. astea | letra bat asmatzen

Ordenadoreak letra bat pentsatuko du eta guk asmatu beharko dugu



A eta Z bitartean dagoen letra bat aukeratuko du ordenadoreak eta ezezaguna den letra hori guk asmatuko dugu. Egiten dugun saiakera bakoitzeko, programak informazioa emango digu esanez letra ezezaguna zein tartetan dagoen. Algoritmoa hauxe da:


  1. Ordenadoreak letra bat aukeratuko du, A eta Z bitartean dagoen letra bat aukeratuko du. Horretarako, random() funtzio estandarra erabiliko du (randomize prozedurarekin batera)

  2. Ezezaguna den letraren heina [A, Z] da hasieran, behemuga A eta goimuga Z. Beraz, cBehemuga:='A' eta cGoimuga:='Z'

  3. Errepikatu letra asmatu arte edo 5 saiakera egin arte:


    • Teklatuaren bitartez irakurriz, soluzio bat proposatuko diogu programari. Nahi dugun soluzioa proposatuko diogu programari, modurik eraginkorrena da tartearen erdiko letra proposatzea programari, erdikoa honela kalkulatuko genuke: cSoluzioa := chr((ord(cBehemuga) + ord(cGoimuga)) div 2)

    • Gure proposamenaren arabera programak bi aukera izango ditu eta honela jokatuko du:


      • Proposatutako letra eta programak asmatutakoa bat datoz, letra asmatu dugunez begiztatik irten

      • Proposatutako letra eta programak asmatutakoa ez datoz bat, ez dugunez letra asmatu beste saiakera bat emango digu programak (5 saiakeraren muga ez badugu oraindik gainditu). Hurrengo saiakeraran erakutsiko digun tartea egokituko du programak, honelaxe:


        • Proposatu diogun letra programarena baino handiagoa bada (tartearen cGoimuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)

        • Proposatu diogun letra programarena baino txikiagoa bada (tartearen cBehemuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)




  4. Emaitza erakutsi, begiztatik irteteko aukerak:


    • Letra asmatu diogu programari: cSoluzioa erakutsi

    • Saiakerak 5 baino gehiago izan dira







  Zergatik 5 saiakera?


  A-ren eta Z-ren artean 26 karaktere. Urrats bakoitzean,

  karaktere guztietatik erdiak baztertzen dira. Beraz:



log2(26)=4,70044


  logaritmo (2 oinarrian) 26 zenbakiarena 4,70044 da

  2x = 26   >>>   ln(2x) = ln(26)   >>>
x·ln(2) = ln(26) >>> x = ln(26)/ln(2)
x = 3.25810/0.69315 = 4.70044 >>> x=5






Ikusi LetraAsmatu.exe programaren balizko exekuzio bat:






Eskatzen den ariketaren hurbilpen hau... LetraAsmatu_hasiera.pas ...abiapuntutzat har daiteke. Hau da...
LetraAsmatu.pas ...iturburu-programa bat. Zein da zurea?




 

iruzkinik ez:

Argitaratu iruzkina