Konference: ATARI a 8 mi bitové počítače

Od: lacika dušan
Datum: 18.9.2011 12: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 

 

 
[2011/2 (3)] [2011/6 (4)] [2011/7 (14)] [2011/8 (3)] [2011/9 (19)] [2011/10 (4)]


[1999 (6)] [2000 (23)] [2001 (19)] [2002 (27)] [2003 (13)] [2004 (86)] [2005 (61)] [2006 (31)] [2007 (7)] [2008 (38)] [2009 (99)] [2010 (73)] [2011 (47)] [2012 (5)] [2013 (5)]