Konference: ATARI a 8 mi bitové počítače
Od: | lacika dušan |
Datum: | 18.9.2011 10:04 |
Předmět: | Re : Logik, kde hľadá i počítač |
Re : Logik, kde hľadá i počítač: |
Prechádzal som internetové stránky a zaujal ma Váš záujem o môj program, ktorý som vytvoril v 80. - tych rokoch. V jednom príspevku, som si prečítal výčitku, že je škoda, že autor bližšie nešpecifikoval tvorbu programu. Veľmi rád by som to urobil po rokoch ...
Najskôr trochu z "histórie". Chod tohoto programu som prvý krát videl na vysokoškolskej exkurzii vo výpočtovom stredisku VSŽ Košice na veľkom sálovom počítači IBM 370, kde si ho operátori púšťali vo voľných chvíľach i na otestovanie IQ prípadných návštevníkov. Z toho čo som videl, som si následne zostavil algoritmus, ktorý som úspešne naprogramoval vo viacerých jazykoch, s ktorými som mal možnosť so zoznámiť.
K samotnému algoritmu : Pri zahájení novej hry si ako Krok 1 : program vytvorí pomocné pole s 5040 možnými kombináciami, z ktorých si jeho súper vybral svoju kombináciu, program si vyberie svoju kombináciu 4 čísel viac menej náhodne, doporučujem modifikovať výber cez reálny čas, prípadne iné nezávisle sa meniace konštanty, z jediného dôvodu, aby číslo pre hádanie súpera bolo vždy iné.
Krok 2 : samotná hra. Najskôr je súper programu vyzvaný, aby on zadal číslo, ktorým chce uhádnúť zvolené číslo programu. Program "klasicky" vyhodnotí zadané číslo a odpovie v tvare XY, kde X je počet uhádnutých čísel a Y je uhádnutých počet čísel na správnom mieste. Potom si program vyberá číslo, ktorým háda číslo súpera. Na to použije pomocné pole s 5040 vygenerovanými možnými kombináciami. Pri zahájení hry sú všetky kombinácie platné a tak zahajuje náhodným výberom podobne modifikovaným ako v kroku 1 a overí, či na danom mieste je platná kombinácia. V prvom kroku sú všetky platné, v ďalších hľadá prvý výskyt inej kombinácie ako 0000. Potom program čaká na odpoveď súpera v tvare XY a následne podľa tejto odpovede si "prejde" svoje pomocné pole s 5040 vygenerovanými kombináciami a všetky kombinácie, ktoré nezodpovedajú odpovedi súpera XY vynuluje /nahradí číslom 0000/. Platné kombinácie spočíta a vypíše ich počet. Chod programu pokračuje rovnako až do tej fázy, pokiaľ programu zostáva ešte viac ako 50 možností. Ak je tých možností 50 a menej, program už nevyberá svoje číslo na hádanie "náhodne", ale pre každú vyhovujúcu kombináciu si spočíta najhoršiu možnú odpoveď /zostávajúci počet kombinácií/ a potom z nich vyberie tú s najnižšou hodnotou.
V prípade, že program dospeje k tomu, že už nemá vyhovujúcu kombináciu na odpovede súpera, vypíše mu oznam, že klame, v prípade uhádnutia hádaného čísla /odpeveď 44/ podobne oznámi výhru svoju alebo súpera a ponúkne ďalšiu novú hru, ktorá začína Krokom 1.
V programe je na všetky väčšie výpočty použitý strojový kód z jednoduchého dôvodu, aby odozvy počítača boli rýchle, pokiaľ by to bolo všetko v Basicu, bolo by to veľmi pomalé a prakticky nepoužiteľné. Kúzlo tomuto programu dáva jednoznačne tá časť programu, ktorá je napísaná v strojovom kóde. Ja som začínal pri sálových počítačoch a priznávam, že som bol veľmi spokojný, že to malé "čudo" - môj ATARI 800 XL, dokázalo veľmi slušne zvládnúť i takúto úlohu.
Ja sa samozrejme už programovaním a ani prácou s počítačom ATARI 800 XL nezaoberám, mám svoj notebook a už som i na dôchodku, ale keďže som najmä pracoval s FoxPro, tento program som prepísal i do VFP.
Lacika