AI. Projekt Mlyn

Mlyn sa hrá na hracom pláne, aký je na obrázku  vpravo.  

Pravidlá:

  • Na začiatku hry je hrací plán prázdny, obaja hráči majú po 12 kameňov
  • Striedavo prikladajú na kruhy  hracieho plánu  kamene, ak hráč vytvorí trojicu vedľa seba ležiacich kameňov rovnakej farby (mlyn), súperovi vezme ľubovoľný kameň, ktorý nie je súčasťou mlynu
  • Keď boli položené všetky kamene, hráči môžu kamene posúvať po líniách o jedno políčko, ak je políčko voľné.
  • Ak má hráč iba tri kamene, môže kameňmi skákať na ľubovoľné voľné políčko
  • Prehráva hráč, ktorému zostanú dva kamene

Continue reading

Excel. Voľby do NR SR. 1. skrutínium. Vzorce

  • Na internete vyhľadajte, aký je volebný systém do Národnej rady Slovenskej republiky
  • Na základe preštudovania tohto systému vytvorte odhad počtu mandátov pre jednotlivé strany v prvom skrutíniu, ak by počet platných hlasov bol 2000000 a voľby by dopadli presne podľa výsledkov prieskumu.

Pojmy, ktoré pri vytvorení vzorcov budete potrebovať:

  • volebný prah
  • volebné číslo
  • celkový počet mandátov v NR SR
  • 1. skrutínium

Excel. Voľby do NR SR. Grafy

  • Vyhľadajte na internete najnovší prieskum volebných preferencií agentúry AKO a výsledky prieskumu zadajte do excelovskej tabuľky.
  • Vytvorte koláčový graf preferencií.
  • Vyhľadajte aj predchádzajúce výsledky prieskumov tej istej agentúry a vytvorte čiarový graf pre jednotlivé strany, ako sa vyvíjali ich preferencie v čase (aspoň tri prieskumy)

AI. Projekt Krtko

Vašou úlohou bude naprogramovať jednoduchú hru Krtko.

Na obrazovke sa každú sekundu objaví krtko na náhodnej pozícií, úlohou hráča je kliknúť na krtka, ak hráč krtka trafí, pripočítajú sa mu body a krtko sa objaví na novej pozícii, ak netrafí, zvýši sa hodnota mimo, ak hráč v stanovenom limite na krtka neklikne, krtko sa premiestni inam a zvýši sa hodnota pozde.

Continue reading

App Inventor. Projekt Grafický editor

Vytvorme jednoduchý grafický editor, ktorý bude kresliť  čiary a malé a veľké bodky,  v ktorom bude možné nastaviť farbu pera, mazať nakreslený obrázok, ktorý bude alebo nebude mať pozadie a v ktorom bude používateľ môcť urobiť fotku a táto fotka sa stane pozadím. Naučíte sa pracovať s prvkami Canvas (plátno), Camera (fotoaparát, kamera), Variables (premenné) … Continue reading

App Inventor. Projekt Kocúr

Úloha: Vytvorte projekt Kocur (krátke u nie je preklep, v AI v názvoch objektov nemožno používať diakritiku). Na obrazovke telefónu bude obrázok kocúra, ak naň klikneme, kocúr zamňauká. Ak prst na kocúrovi podržíme, kocúr bude priasť (telefón zavibruje). Keď mobilom zatrasieme, kocúr bude prskať.

Po vytvorení nového projektu New project sa zobrazí nasledujúca stránka:

Vľavo sú ovládacie prvky, v strede dizajn aplikácie, napravo zoznam použitých prvkov a celkom vpravo vlastnosti aktuálneho objektu.

Najprv umiestnime na obrazovku telefónu pokyn, ako má používateľ aplikáciu ovládať. Presunieme kurzor na prvok Label (nápis, návestie, štítok). Myšou ho presunieme na telefón, upravíme vlastnosti nápisu: zväčšíme veľkosť písma (FontSize) , farbu pozadia (BackgroundColor), farbu textu (TextColor), zmažeme text a nahradíme ho textom Pohlaďte kocúra.

Potrebujeme aplikácii sprístupniť dva súbory: obrázok kocúra a zvuk, ktorý vydáva. Kliknite na Média pre projekt  kocúr, celkom dole kliknite na kitty.png, súbor stiahnite do počítača, potom kliknite na meow.mp3 a tiež ho stiahnite do počítača. Môžete tiež vyhľadať obrázok kocúra na internete a vyhľadať iné mňaučanie.

Presuňte na telefón prvok Button (tlačítko), vo vlastnostiach kliknite na Image (obrázok), otvorí sa nové okno, kliknite na UploadFile (nahraj súbor) a z priečinka kam sa uložili súbory kitty.png a meow.mp3 nahrajte súbor kitty.png. Tlačítko sa zmenilo na kocúra. Stredom tlačítka prechádza nápis, postavte sa vo vlastnostiach tlačítka na Text a text zmažte.

V ľavej sekcii prejdite na položku Media, vyberte prvok Sound a presuňte ho na telefón. Sound sa v telefóne nezobrazí, zobrazí sa pod ním medzi Non-visible component (neviditeľné prvky). Vo vlastnostiach kliknite na Source (zdroj), potom na UploadFile a nahrajte súbor meow.mp3.

Dizajnovú časť máte predbežne hotovú. Prejdite k programovaniu aplikácie. Vpravo hore kliknite na Blocks. Zobrazia sa dve sekcie, vľavo je sekcia Blocks (bloky), vpravo sekcia Viewer (zobrazovač, náhľad). Kliknutím na Button1 sa zobrazia nasledujúce bloky:

Hnedé bloky predstavujú udalosti, ktoré  môžu s tlačítkom nastať. Prvý  when Button1.Click (keď je tlačítko stlačené) je ten, ktorý potrebujete. Postavte sa naň, držte stlačené tlačítko myši a presuňte ho do sekcie Viever. Keď klikneme na Button1, má sa ozvať mňaukanie, kliknite v sekcii Blocks na Sound1, zobrazí sa:

Je tu jedna udalosť a niekoľko akcií, ktoré možno so zvukom robiť. Chcete prehrať zvuk, vyberte blok Call Sound1.Play a presuňte ho do bloku When Button1.Click. Ďalej chceme, aby kocúr nielen mňaukal, ale aj priadol (vibroval). Vyberieme blok When Button1.longClick, presuňte blok call Sound1.Vibrate do bloku longClick.  Tento blok má výrez, kam pre blok s počtom milisekúnd, ako dlho má mobil vibrovať. Potrebujete blok s číslom, čísla súvisia s matematikou, kliknite na položku Math a prvý blok je číslo, presunieme ho do výrezu a nastavíme napríklad číslo 500.

Aplikácia je hotová, potrebujeme ju skompilovať, nájdite celkom hore položku Build, kliknite na ňu zobrazia sa možnosti App (provide QR code for Apk) a App (save .apk to my computer). Vyberte prvú položku, aplikácia sa preloží, po preklade sa zobrazí okienko s čiarovým kódom, keď kód zosnímete čítačkou čiarových kódov, stiahne sa súbor s vašou aplikáciou. Po stiahnutí súboru, kliknite na otvoriť, mobil vás možno upozorní, že takýto typ súboru môže poškodiť mobil, keďže ste aplikáciu sami vytvorili, je bezpečná, takže ju nainštalovať môžete.

Pokiaľ chceme, aby kocúr syčal, keď mobilom trasieme, vráťte sa do dizajnéra, v ľavej sekcii vyberte položku Sensors (senzory), potom AccelerometerSensor (senzor zrýchlenia), presuňte ho na mobil. Na internete vyhľadajte zvuk syčania mačky, stiahnite ho do počítača, na telefón presuňte blok Sound a uploudujte zvuk syčania. Znova otvorte Blocks, kliknite na AccelerometerSensor1, vyberte blok when AccelerometerSensor1.Shaking, kliknite na Sound2 a vyberte blok Play. Znova skompilujte aplikáciu a stiahnite ju čítačkou čiarového kódu.

Poznámka: Aby ste nemuseli aplikáciu stále kompilovať a inštalovať do telefónu, na Google play nájdite aplikáciu Mit AI2 Companion, keď ju na mobile spustíte a v prehliadači kliknete na Connect a Companion, zobrazí sa QR kód. Po jeho zosnímaní mobilom sa v mobile spustí simulácia aplikácie.

Námety na samostatnú prácu

  • aplikáciu môžete upraviť podľa vlastnej fantázie, môžete pridať tlačítko na ktorom bude pes a po kliknutí naň bude štekať, môžete pridať aj iné zvieratá a zvuky, ktoré vydávajú (obrázky a zvuky nájdite pomocou vyhľadávača)
  • ak máte psa alebo mačku, môžete ich odfotiť a nahrať zvuky, ktoré vydávajú
  • aplikáciu možno upraviť tiež tak, že používateľ môže odfotiť zviera a nahradiť obrázok, ktorý je v aplikácií vlastným obrázkom, to isté možno urobiť so zvukom
  • možno ju tiež upraviť do podoby kvízu, kliknutím na tlačítko sa ozve náhodný zvuk a používateľ má kliknúť na zviera, predmet, … , vydávajúci takýto zvuk
  • Aby ste sa v programovacej sekcii lepšie orientovali, je vhodné v Designer nazvať jednotlivé prvky podľa toho čo predstavujú. Button1Kocur, Sound1Mnau, …

Literatúra:

Udalosti (tlačidlá)

Štandardná myš má tri tlačidlá, môžeme jej v programe priradiť tri funkcie, ktoré sa vykonajú po ich stlačení. Geometrických tvarov, ktoré by sme potrebovali kresliť je omnoho viac, potrebujeme preto nástroje, ktorými môžeme rozšíriť možnosti nášho  grafického editora. Takýmto nástrojom je príkaz Button, ktorý vytvorí tlačidlo. Každému tlačidlu môžeme priradiť nejakú funkciu.  Continue reading

Python. Tkinter. Nakreslenie mnohouholníka

Mnohouholník nakreslíme príkazom create_polygon.

Prvé parametre sú súradnice vrcholov mnohouholníka. Ďalšie paramentre sú rovnaké, ako v iných grafických príkazoch, farba výplne – fill, farba vonkajších hrán – outline, hrúbka vonkajších hrán – width.

Príkaz: platno.create_polygon(100,100,300,100,300,200,fill=“pink“) nakreslí trojuholník vyplnený ružovou farbou. Continue reading

Eliza 2

Už úvodná Elizina otázka Ako sa voláš?, či skôr odpoveď používateľa, predstavuje komplikovaný problém. Niekto odpovie  menom, niekto menom a priezviskom, ďalší priezviskom a menom, iný prezývkou v kombinácii s priezviskom či bez neho a ktosi odpovie svojim priezviskom. Ak by Eliza bola človek, vo väčšine prípadov by vedela identifikovať, o ktorý variant ide. Continue reading

Eliza (umelá inteligencia?) 1

Žiaci 8. B prišli s nápadom, rozvinúť dialóg s programom tak, aby to neboli len otázky počítača človeku, ale aby aj človek mohol klásť otázky počítaču a aby to vyzeralo, ako skutočný dialóg medzi dvoma ľuďmi. Spomenul som si na program Eliza, ktorý bol pravdepodobne inšpirovaný Turingovým testom umelej inteligencie – program bude mať vlastnosti umelej inteligencie, keď človek pri dialógu s programom alebo s človekom nerozozná, či je na druhom konci človek alebo počítač. Continue reading

Hra Logik v Pythone

Pravidlá hry Logik:

  • Hráč 1 si myslí štvorciferné číslo bez opakovania číslic
  • Hráč  2 toto číslo háda tak, že povie štvorciferné číslo, bez opakovania číslic  a hráč 1 odpovie koľko číslic  je na správnom mieste a koľko číslíc do čísla patrí, ale nie sú na svojom mieste. Číslice na správnom mieste sú označené počtom A, číslice na nesprávnom mieste počtom B.

Continue reading

Tabuľka ASCII

Informácie v počítači sú kódované podľa dohodnutých pravidiel. Najrozšírenejším kódovaním je kódovanie ASCII. Každý znak má pridelené nejaké číslo, napríklad A – 65, B – 66 až Z – 90.

Pôvodne malo kódovanie ASCII iba 128 znakovo od nula po 127, bolo to 7 bitové kódovanie, v súčasnosti je to 8 bitové kódovanie, takže možno zakódovať 256 znakov.

Ak sme v zahraničí, v internetovej kaviarni pravdepodobne nebude slovenská klávesnica. Znaky ako á, é, ô, ä … získame tak, že použijeme nasledujúcu tabuľku. Ak stlačíme a držíme stlačený kláves ALT a napíšeme číslice z tejto tabuľky a ALT pustíme, získame príslušný znak: Continue reading

Kompresor obrázkov

Online komprimovanie obrázkov

Ak chcete zverejniť fotografie na www stránke, väčšinou stačí výrazne menšie rozlíšenie než má originálna fotografia a možno tiež použiť komprimovanie originálneho obrázku. Ak sú  na stránke menšie obrázky, načíta sa výrazne rýchlejšie, zároveň na danom hostingu máte predplatený nejaký priestor a ak tam budete dávať zbytočne objemné súbory, tak si tento priestor veľmi rýchlo vyčerpáte. Zmenšenie rozlíšenia sa nijako neprejaví na kvalite obrázka, pokiaľ ho nebudete potrebovať zobraziť v pôvodnom rozlíšení. Dvojnásobné zmenšenie lineárnych rozmerov zmenší  súbor štvornásobne, ak k tomu pridáte ešte komprimáciu, ktorá sa môže pohybovať okolo 70%, pôvodnú veľkosť súboru možno    zmenšiť približne 12 násobne. Komprimácia obrázka môže jeho kvalitu znížiť, komprimačné algoritmy pre obrázky sú navrhnuté tak, aby napriek tomu, že ide o stratovú komprimáciu, ľudské oko nepostrehlo, že sa obrázok líši od originálu. Ak je zmena kvality zjavná, treba zmenšiť kompresný pomer.

Na tejto adrese nájdete jeden z online kompresorov obrázkov:

Pokiaľ potrebujete komprimovať obrázky pravidelne, je vhodnejšie mať na počítači nainštalovaný niektorý z programov, ktoré komprimáciu majú implementovanú.

 

Tic-Tac-Toe v Baltíku

Väčšina z vás sa na počítačoch najradšej hrá. Aj ja sa na počítačoch a mobiloch zvyknem hrať, ale najväčšou zábavou pre mňa je niečo naprogramovať. Kedysi som sa naučil programovať  hlavne tým, že som programoval rôzne počítačové hry. Prvý počítač som si kúpil v roku 1985, bol to osembitový japonský počítač Sord, mal 8 kilobajtov pamäte a programy sa doň nahrávali pomocou kazetového magnetofónu. Do ôsmich KB sa toho veľa nezmestilo, preto som sa snažil programovať efektívne s čo najmenšími pamäťovými nárokmi a programujem tak doteraz. Vtedajšie počítače boli mnohotisíckrát pomalšie, ako dnešné, takže, ak hra mala byť hrateľná, bolo potrebné optimalizovať aj rýchlosť programu. Programovacím jazykom bol Basic a kritické časti som programoval v asemblery.

Na tento počítač takmer žiadne hry neexistovali a tak, keď som na iných počítačoch videl nejakú hru, naprogramoval som ju aj na mojom počítači.

Začneme jednoduchou logickou hrou Tic-Tac-Toe. Hrá sa na hracom pláne 3×3. Do plánu hráči striedavo zapisujú svoje symboly – krížik a krúžok. Kto uloží svoje symboly tak, že sú vedľa seba, pod sebou alebo po diagonále tri, vyhral. Ak sú všetky políčka obsadené a nik nemá tri rovnaké symboly v rade, hra skončila remízou. Na obrázku vpravo vyhral hráč, ktorý kreslil krúžky. Continue reading

Projekt Sudoku

 

1. etapa

Na prvej hodine ste takmer všetci zvládli nakresliť hrací plán Sudoku (obrázok vpravo). Mnohí postupovali extenzívne, niektorí zvládli aj efektívnosť riešenia. Počet použitých príkazov sa pohyboval od 21 do 93 (mne sa to podarilo na 18 príkazov, svoje riešenie sprístupním, keď všetky triedy dokončia prvú etapu a sprístupním tiež najefektívnejšie riešenia žiakov a jedno či viac riešení, ktoré budú niečim originálne.   Continue reading

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