Arvutiteaduse instituut
  1. Esileht
  2. Teeme ise arvutimänge
EN
Logi sisse

Teeme ise arvutimänge

  • Esileht
  • I RAAMAT
  • II RAAMAT
  • III RAAMAT
  • IV RAAMAT
  • V RAAMAT
  • VI RAAMAT

Tsükkel

Kombinatsioonid ja permutatsioonid

Nagu eelnevalt korraks juttu oli, siis on mitmekordsed tsüklid head just kõikvõimalike kombinatsioonide ja permutatsioonide välja selgitamiseks.

Mis asjad on kombinatsioonid ja permutatsioonid?

  • Permutatsioon on matemaatiline termin, mis tähendab unikaalset viisi, kuidas kombineerida asjade järjestust.
  • Kombinatsioon on peaaegu sama asi, kuid siin elementide järjestus ei loe, ta ei ole unikaalne.

Vaatame mõningaid näiteid:

Kui ma palun sul valida välja kolm arvu 1-10, siis kaks võimalikku varianti oleksid järgmised

  • 8, 3, 5
  • 7, 2, 10

neid nimetatakse laiemalt kombinatsioonideks. Permutatsioon tuleb aga mängu siis, kui sa valisid näiteks kogemata samad arvud, kuid erinevas järjekoras

  • 7, 2, 10
  • 10, 7, 2
  • 2, 7, 10

siis see on üks ja seesama arvude kombinatsioon, kuid kolm täiesti erinevat permutatsiooni.

Kõige parem viis nende mõistete seletamiseks, on tuua üks konkreetne näide. Olgu selleks kooli söökla. Oletame, et sul on võimalik valida oma sööklas päevaprae juures, mida sa taldrikule tahad panna ja kas sa jooki juurde võtad (komponentideks on üldjuhul midagi sellist: kartul, kaste, salat, liha, jook). Kuidas oleks võimalusega teada saada kõikvõimalikud erinevad kombinatsioonid, mida õpilased üldse võivad oma lõunasöögiks valida.

Üks võimalik viis sellist ülesannet lahendada, on kasutada otsustuste puud:

Sellel joonisel üks teekond tipust alla ongi üks kombinatsioon. Üks kõikidest võimalikest kombinatsioonidest on ka joonisel paksu joonega välja toodud. Sellel ühel juhul võttis õpilane kartulit, salatit ja joogi. Liha ja kastme jättis paremaid päevi ootama.

Teine võimalus selle ülesande lahendamiseks, on aga see ülesanne programmeerida:

Seda koodi uurides, võid imestada, et mis see "\t" seal igal pool teeb. Kuid kui sa koodi käima panid, siis paned tähele kui ilusasti on kõik andmed üksteise alla tabelisse reastatud. Seda rolli see "\t" mängibki - kirjutab kahe teksti vahele ühe tabi ehk tabulaatori.

0 ja 1 igas for-tsükli reas tähendab sama, mis jah ja ei otsustuste puus, nii et kui sulle 0 ja 1 ei meeldi, võid kirjutada ka "jah" ja "ei"naeratus

Programmi tulemusest on näha, et sööklas oleks sellisel korral võimalik 32 erinevat tellimust teha, teine küsimus on muidugi see, kui mõttekad mõned kombinatsioonid neist on, aga nagu öeldakse, maitse üle ei vaielda.

Näide

Vaatame veelkord söökla näidet ja proovime selle teha veel huvitavamaks. Lisame iga toiduaine juurde ka tema kalorite hulga ja arvutame iga rea lõppu välja valitud portsioni kalorite summa. Programmis on kasutatud ligilähedasi kalorite suurusi, nii et need peaksid peaaegu isegi õiged olema. :)

Kuidas seda ülesannet lahedada? Igale toiduliigile tuleb lisada kaloritega varustatud muutujad ja lisada kõige sisemisse tsüklisse ka kalorite kokku arvutamise valem. Proovi seda teha kõigepealt iseseisvalt ja alles siis vaata, kuidas olen selle ülesande lahendanud mina.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused