Informatika

Súťaž v programovaní Imagine

Vašou úlohou je naprogramovať prázdny hrací plán hry Sudoku na čo najmenší počet príkazov. Riešenie musí byť vytvorením procedúry, ktorá tento hrací plán nakreslí a nemožno použiť už predkreslený obrázok.

Vzor, ako by mal hrací plán vyzerať:

Do počtu príkazov nepočítame viem názov_procedúry a koniec a číselné parametre či už vo forme čísla alebo premennej.

Celkové poradie

  1. Čajka 9. A 18
  2. Petróc 7.A 21
  3.  Micheĺ 9.A 22
  4.  Varinský 7.A 29
  5. Richnavský 31

Poradie podľa jednotlivých tried

9.A

  1. Čajka 18
  2. Micheľ 22
  3. Richnavský 31
  4. Krajňáková 39
  5. Sabovčíková a Genčiová 91
  6. Kalina 98

7. A

  • Petróc 21
  • Varinský 29
  • Melicherová 31
  • Gbúrová 32
  • Lukáč, Orosz 75
  • Bucher 85

7. B

  • Sremaňák 40 (Patrikove riešenie zverejním, ako jediný použil parameter, ktorý určuje, aký veľký bude hrací plán)
  • Jakubčák 56
  • Šašala – veľa 🙂

Učiteľ TM 17. Pôvodne som mal 21, keď Petróc dosiahol rovnaký počet, ešte som to zredukoval.

 

Genetické algoritmy

Čo je sudoku, takmer všetci vedia, väčšina nevie, čo je genetický algoritmus alebo genetické programovanie.

Genetický algoritmus je nedeterministická metóda riešenia problému, vychádzajúca z princípov Darwinovej evolučnej teórie. 

Každé riešenie úlohy (aj “zlé”) sa nazýva chromozóm, je tvorené binárnym reťazcom danej dĺžky, ktorá je rovnaká pre všetky chromozómy populácie. Populácia je konečná množina chomozómov. Základná populácia resp. nultá generácia populácie je začiatočný stav riešenia. Vývoj k optimálnemu riešeniu prebieha prirodzeným vývojom populácií. Nultá generácia je vygenerovaná náhodne, vygenerované chromozómy, musia byť riešením problému.

Proces reprodukcie:

  • Výber chromozómov na kríženie či mutáciu (pseudonáhodný výber podľa pravdepodobnosti úmernej jeho fitness)
  • Kríženie chromozómov (výmena podreťazcov, kde môže prebiehať kríženie jednobodovo, či viacbodovo)
  • Mutácia, náhodne zmutujú niektoré gény, mutuje sa s malou pravdepodobnosťou, aby zostala zachovaná genetická informácia

Náhodnosť sa zaisťuje pomocou generovania pseudonáhodných čísel.
Continue reading

Modul Math jazyka Python

Základný modul jazyka Python obsahuje iba základné matematické operácie. Ak potrebujeme v programe použiť zložitejšie operácie a funkcie, buď ich musíme naprogramovať alebo importovať modul, ktorý matematické funkcie obsahuje. Takýmto modulom je napríklad modul math, ktorý je súčasťou štandardnej distribúcie. Príkazy modulu sprístupníme príkazom import\, math. Ak potrebujeme pracovať s väčšou prenosťou, musíme si doinštalovať špeciálny matematický modul, napríklad mpmath. Continue reading

Python 1. Shell a matematické operácie

Programovacie jazyky, s ktorými ste doteraz pracovali (Imagine, Baltík, Scratch …), sú prispôsobené detskému používateľovi. V Baltíku a v Scratchi ste príkazy zadávali pomocou grafických ikon, v Imagine sa síce zadávali príkazy v tvare textu, ale s takou syntaxou, ktorá sa v iných programovacích jazykoch nepoužíva a navyše namiesto anglických príkazov ste používali slovenské príkazy. Z hľadiska rýchleho pochopenia čo ten ktorý príkaz robí, je to  efektívne, ale z dlhodobého hľadiska, keď si budete chcieť osvojiť niektorý zo všeobecne používaných programovacích jazykov, budete sa musieť anglické ekvivalenty príkazov tak či tak naučiť.  Programovací jazyk Python je navrhnutý tak, že používa podobnú syntax a podobné názvy príkazov, ako iné programovacie jazyky, takže, ak sa ho naučíte, nemal by pre vás byť v budúcnosti problém prejsť na iný programovací jazyk a je to zároveň profesionálny programovací jazyk, ktorý používa napríklad firma Google. Continue reading

Metóda Monte Carlo

Náhoda hrá vo vede významnú úlohu. Mnohé dôležité objavy boli objavené na základe náhodných okolností. Niektoré sú možno iba mytologizáciou skutočnosti napríklad objav Archimedovho zákona a údajný beh nahého Archimeda Syrakúzami vykrikujúceho Heuréka! alebo Pád jablka na hlavu Newtona. Mnohé iné sa určite stali napríklad Flemingov objav penicilínu. Vo všetkých týchto prípadoch však popri náhode bolo dôležité, že príslušný vedec mal adekvátne vedomosti a tvorivú myseľ a tak hoci predtým tisíckam ľudí padli jablká či hrušky na hlavu, až Newton si dal veci do súvisu a prišiel na to, že rovnaká sila udržiava planéty okolo Slnka a Mesiac okolo Zeme, aká pôsobí na padajúce jablko, stovky vedcov mali neumyté misky a iba ich umyli, pričom si nevšimli žiadnu anomáliu až Fleming aj pri umývaní misiek premýšľal. Keď môže byť náhoda alebo omyl čas od času príčinou pokroku, stojí za úvahu, či neskúmať niektoré prírodné javy pomocou využitia náhody. Continue reading

Kurča a kocúr

V projekte Kurča a kocúr bude vašou úlohou naprogramovať počítačovú hru, v ktorej sa po pyramíde pohybujú kurča a kocúr. Kocúr je ovládaný počítačom a raz za čas sa náhodne pohne s väčšou pravdepodobnosťou smerom ku kurčaťu. Kurča ovláda hráč a jeho úlohou je prefarbiť všetky vrchné štvorce. Keď skočí na neprefarbený štvorec, prefarbí ho, ak skočí na prefarbený, tak v závislosti od úrovne hry sa buď nestane nič, alebo sa prefarbí na pôvodnú farbu alebo … Continue reading

Pomocníci (šachovnica)

Keď som vám dal úlohu nakresliť šachovnicu, tak sa vám tá úloha zdala byť náročná, pretože ste ju realizovali mechanicky. Vyčarovali ste biele pole,  pohli ste sa, vyčarovali ste čierne pole, pohli ste sa, keď ste došli na koniec riadku, otočili ste sa na sever, pohli ste sa, otočili ste sa na západ a znova ste začali kresliť políčka šachovnice. Vaše programy mali 140 až 170 prvkov.

Efektívne programovanie spočíva v tom, že sa programátor nad problémom zamyslí a všetko čo sa opakuje zovšeobecní. Continue reading

Parametrizácia procedúr (šachovnica)

Tak ako jednoduché stroje už v  staroveku ľuďom uľahčovali fyzickú prácu, počítače môžu uľahčiť netvorivú mechanickú duševnú prácu a čoskoro budú schopné vykonávať aj niektoré úkony tvorivej práce. Ak vám zadám úlohu: Nakreslite v Imagine štvorec so stranou 100, mechanickým postupom napíšete napríklad nasledujúcu postupnosť príkazov:

do 100
vpravo 90
do 100
vpravo 90
do 100
vpravo 90
do 100
vpravo 90 

Poznámka: do je skratka príkazu dopredu.

Continue reading

Zoznamy v Imagine

Zoznam/zoznamy použijeme, keď máme viac objektov, s ktorými potrebujeme postupne jednotným spôsobom pracovať.

Príkazy zadané do príkazového riadku sú napísané tučne, čo sa vypíše v informačnej časti obrazovky je napísané kurzívou. Za maltézskym krížom # sú uvádzané poznámky k príkazom.
Všetky nižšie uvedené príkazy si individuálne vyskúšajte.

Ak by sme potrebovali mať zoznam čísel od jedna do 100, môžeme ho vytvoriť nasledujúcim spôsobom:

urob „zoznam [ ]  #vytvorenie prázdneho zoznamu

opakuj 100 [urob „zoznam veta :zoznam počítadlo]

Funkcia veta spája dva zoznamy.

Continue reading

Tic-tac-toe v Imagine

Prebrali sme už väčšinu príkazov jazyka Imagine. Pomocou týchto príkazov môžete naprogramovať všetky jednoduché hry, ktoré hrávate na počítačoch alebo v mobiloch. Vašou úlohou je naprogramovať hru Tic-Tac-Toe. Stretnete sa pritom s väčšinou problémov a úloh, ktoré pred programátorom vyvstanú, ak chce aby hra bola hrateľná, funkčná, aby dobre vyzerala, aby boli ošetrené všetky možné situácie, …

plantictac

  • Tic-Tac-Toe sa hrá na hracom pláne rozmerov 3×3. Obrázok vľavo
  • Hráči striedavo kreslia krúžky a krížiky.
  • VýhraKomu sa podarí vytvoriť tri rovnaké symboly vodorovne, zvislo alebo po uhlopriečkach vyhrá. Na obrázku vpravo, vyhral hráč, ktorý kreslil krúžky.
  • Ak sú všetky políčka obsadené a nik nevytvoril trojicu rovnakých symbolov, hra končí remízou.
  • Ďalšiu hru začína druhý hráč

Continue reading