Tässä tehtävässä harjoitellaan erityisesti seuraavia asoita:
Tee Eclipseen uusi projekti, jonka nimi on tehtava6_4, ja luo tähän projektiin moduuli siteswap. Kirjoita siihen ohjelma, jonka avulla käyttäjä voi generoida jongleerauskuvioita siteswap-notaatiota käyttäen.
Uuden sirkuksen keskuksessa työskentelee jonglööri, joka on saanut tehtäväkseen uudistaa puhkikulunutta sirkusnumeroaan. Yrittäessään keksiä uusia kuvioita hän hoksaa että tietokoneella voi generoida jongleerauskuvioita sitewap-notaatiota käyttäen! Sinun tehtäväsi on kirjoittaa jonglöörille ohjelma, jolla tämä onnistuu.
Siteswap on notaatio, jota käytetään jongleerauskuvioiden kuvaamiseen. Siinä heitot on kirjoitettu lukujonona, jossa kukin luku kuvaa yhtä heittoa ja kertoo kuin monen tahdin päästä sama pallo heitetään uudestaan. On helpompaa ajatella luvun kuvaavan heiton korkeutta kuin sitä kuinka monen tahdin päähän se laskeutuu. Siteswap olettaa seuraavaa:
Aika eli tahdit siis juoksevat koko ajan ja kuvio toistuu eli heitot heitetään vuorokäsin toistensa perään.
Tahdit: 012345678...
Siteswap: 534534534...
Kirjoita ohjelmaasi seuraavat funktiot:
int()
-funktiolla. Esimerkiksi 534: (5+0) % 3 = 2, (3 + 1) % 3 = 1, (4
+ 2) % 3 = 0.
Em. luvut listattuna siis huomataan että [2, 1, 0]
ei
tullut kahta samaa numeroa ja siteswap on validi.
int()
-funktiolla.
int()
-funktiolla.
for luku in range(10**(jakso - 1), 10 ** jakso): mahdollinen_siteswap = str(luku) ...Funktion palauttamat siteswapit ovat em. silmukan mukaisessa järjestyksessä ja niitä on korkeintaan 10 kappaletta. Vaikka 0 voi olla heitto, aloitetaan siteswapit niin että ensimmäinen numero on vähintään 1. Funktio kutsuu kaikkia aiemmin kuvattuja funktioita ennen siteswapin lisäämistä palautettavaan listaan. Ennen funktioiden kutsumista tai listaan lisäämistä silmukan generoimat luvut pitää muuttaa merkkijonoiksi.
http://jugglinglab.sourceforge.net/siteswap.php?XXXmissä XXX on kyseinen siteswap. Kopioimalla kyseisen linkin selaimen osoiteriville voit katsoa miltä kyseinen jongleerauskuvio näyttää. Jos siteswap ei ole validi, funktio palauttaa: "Ei validi siteswap."
generoi_siteswappeja
ja katso esimerkkiajoista tarkemmin, miten
ohjelman pitää toimia. Lopuksi ohjelman pitää kysyä käyttäjältä jokin (mikä tahansa, ei siis noudata alussa annettuja rajoituksia) siteswap ja tulostaa
linkki animaattoriin kyseiselle siteswapille sen ollessa validi. Muussa tapauksessa ohjelma tulostaa "Ei validi siteswap".
Voit olettaa, että käyttäjän antama syöte on muilta osin järkevä. Testaa jälleen ohjelmaasi ajamalla sitä itse ennen kuin palautat ohjelman Gobliniin. Palauta Gobliniin tiedosto siteswap.py.
[ohjelman suoritus alkaa] Monenko pallon kuvio (1-9)? 5 Heiton maksimikorkeus (5-9)? 8 Jaksonpituus (1-5)? 2 Siteswapit: 28 37 46 55 64 73 82 Anna jokin siteswap? 46 http://jugglinglab.sourceforge.net/siteswap.php?46 [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Monenko pallon kuvio (1-9)? 12 Monenko pallon kuvio (1-9)? 3 Heiton maksimikorkeus (3-9)? 2 Heiton maksimikorkeus (3-9)? 5 Jaksonpituus (1-5)? 3 Siteswapit: 144 153 225 234 252 315 333 342 414 423 Anna jokin siteswap? 3 http://jugglinglab.sourceforge.net/siteswap.php?3 [ohjelman suoritus päättyy]
[ohjelman suoritus alkaa] Monenko pallon kuvio (1-9)? 5 Heiton maksimikorkeus (5-9)? 5 Jaksonpituus (1-5)? 1 Siteswapit: 5 Anna jokin siteswap? 112 Ei validi siteswap. [ohjelman suoritus päättyy]
Värikoodit:
Sininen: Syöte käyttäjältä
Vihreä: Ohjelman tuloste
Punainen: Erityishuomatus: ei tulosteta