o1.sananmuunnos

package o1.sananmuunnos

Members list

Type members

Classlikes

class Sana(merkkijono: String)

Kukin Sana-tyyppinen olio kuvaa yhtä suomen kielen sanaa. Tavallisesta merkkijonosta Sana-olio eroaa eritoten siten, että sillä on metodi muunnos, jonka avulla voi muodostaa lasten ja lapsenmielisten suosimia sananmuunnoksia. Sananmuunnos saadaan yhdistämällä kahden sanan äänteitä (tässä: merkkejä) tiettyjen sääntöjen mukaan.

Kukin Sana-tyyppinen olio kuvaa yhtä suomen kielen sanaa. Tavallisesta merkkijonosta Sana-olio eroaa eritoten siten, että sillä on metodi muunnos, jonka avulla voi muodostaa lasten ja lapsenmielisten suosimia sananmuunnoksia. Sananmuunnos saadaan yhdistämällä kahden sanan äänteitä (tässä: merkkejä) tiettyjen sääntöjen mukaan.

Sananmuunnos muodostetaan pääpiirteissään siten, että otetaan kaksi sanaa, vaihdetaan niiden alkupään merkkejä keskenään ja pannaan syntyneet sanat peräkkäin. Ilmiöön liittyy kuitenkin koko joukko yksityiskohtia, joista lisää alla.

Sananmuunnoksen muodostamisen perusteet

Helppo perustapaus: sanat ovat "henri" ja "kontinen". Otetaan kummastakin ensimmäinen konsonantti ja sitä seuraava vokaali: saadaan "he" ja "ko". Vaihdetaan päittäin ja saadaan sananmuunnos:

henri kontinen → konri hentinen

tarja halonen → harja talonen

Jos sana alkaa usealla peräkkäisellä konsonantilla, siirretään ne kaikki toiseen sanaan. Jos taas konsonantteja ei alussa ole, vain ensimmäinen vokaali siirtyy:

frakki kontti → kokki frantti

ovi kello → kevi ollo

Yllä olevissa esimerkeissä kaikki vokaalit olivat ”lyhyitä” eli niissä oli vain yksi merkki. Jos sama ensivokaalimerkki esiintyy sanassa useasti peräkkäin, muodostuu ”pitkä” vokaali. Vokaalin pituus säilyy samana myös toiseen sanaan siirtäessä, vaikka itse vokaalimerkki voikin vaihtua:

haamu kontti → koomu hantti

Tarkempi selonteko edellisestä: Sanassa "haamu" on pitkä vokaali "aa". Kun sanan alkupää korvataan kirjaimilla k ja o, säilyy vokaalin pituus ja saadaan "koomu" eikä "komu". Sanassa "kontti" on puolestaan lyhyt vokaali "o". Kun sen alkupää korvataan merkeillä h ja a, saadaan "hantti" eikä "haantti".

Vaikka ensimmäisessä tavussa saattaakin olla useita eri vokaaleja, vain ensimmäisellä on tässä merkitystä:

hauva kontti → kouva hantti

puoskari kontti → kooskari puntti

Vokaalisointu

Suomessa on kahdenlaisia vokaaleja: etuvokaaleja (e, i, ä, y, ö) ja takavokaaleja (a, u, o). (Nimet liittyvät siihen, missä osassa suuta vokaalit äännetään.) Vokaalisoinnuksi kutsutun kieli-ilmiön vuoksi takavokaalit a, u ja o eivät tavallisesti esiinny samassa sanassa niitä vastaavien etuvokaalien ä, y ja ö kanssa.

Sananmuunnoksiin vokaalisointu liittyy seuraavasti. Jos mikä tahansa takavokaaleista a, u tai o sijoitetaan sanan alkuun, niin kaikki sanassa esiintyvät etuvokaalit ä, y ja ö on vaihdettava niitä vastaaviksi takavokaaleiksi. Niin käy tässä y- ja ä-kirjaimille, joka muuttuvat u:ksi ja a:ksi.

köyhä kontti → kouha köntti

Sama toimii myös toisin päin eli etuvokaaleista takavokaaleiksi. Tässä syntyvän sananmuunnoksen ensimmäiseen osaan tulee vain etuvokaaleita ja toiseen vain takavokaaleita:

hauva läähättää → läyvä haahattaa

Äänteen muuntumista toisen kaltaiseksi sanotaan assimilaatioksi. Vokaalit e ja i eivät assimiloidu suuntaan tai toiseen eivätkä aiheuta assimilaatiota toisissa vokaaleissa.

Huomaa, että vokaalisointua ”sovelletaan” jo ennen kuin sananmuunnoksen kaksi osaa yhdistetään. Vokaalisointu ei siis aiheuta muutoksia ”sanarajojen yli”, kuten yllä olevasta esimerkistä voi nähdä.

Lisäesimerkkejä

Alla on vielä muutama esimerkki sananmuunnoksista:

frakki stressi → strekki frassi

äyskäri kontti → kouskari äntti

hattu sfääri → sfätty haari

ovi silmä → sivi olma

haamu prätkä → präämy hatka

puoskari sfääri → sfäöskäri puuri

puoskari äyskäri → äöskäri puuskari

Tämä riittäköön tähän

Todellisen elämän sananmuunnoksiin liittyy tässä kuvattujen lisäksi eräitä muitakin sääntöjä, mutta niitä ei käytetä tässä. On erilaisia erikoistapauksia kuten lainasanat, jotka eivät noudata vokaalisointua ("vampyyri"), sekä yhdyssanat ("jääkiekko"). Tämän luokan toteutuksessa tällaiset tapaukset jätetään huomioimatta ja oletetaan, että vokaalisointu on aina tiukasti voimassa.

Parameters

merkkijono

sana, joka toimii toisena puoliskona sananmuunnoksessa (esim. "kontti"). Tämä merkkijono saa sisältää isojakin kirjaimia, mutta Sana-olio tulkitsee kaikki kirjaimet kuin ne olisivat pieniä.

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
object Sana

Tämä Sana-luokan kumppaniolio tarjoaa yhden metodin, jonka avulla sananmuunnoksia on hieman kätevämpi tehdä.

Tämä Sana-luokan kumppaniolio tarjoaa yhden metodin, jonka avulla sananmuunnoksia on hieman kätevämpi tehdä.

See also

Sana-luokka

Companion
class
Supertypes
class Object
trait Matchable
class Any

Value members

Concrete methods

def assimiloi(mika: Char, mihin: Char): Char

Palauttaa ensimmäisen parametrimerkin siirrettynä "taakse" tai "eteen" sen perusteella, millainen jälkimmäinen parametrimerkki on. Ensimmäisestä merkistä siis palautetaan sellainen versio joka muistuttaa ääntämispaikaltaan jälkimmäistä merkkiä.

Palauttaa ensimmäisen parametrimerkin siirrettynä "taakse" tai "eteen" sen perusteella, millainen jälkimmäinen parametrimerkki on. Ensimmäisestä merkistä siis palautetaan sellainen versio joka muistuttaa ääntämispaikaltaan jälkimmäistä merkkiä.

Tarkemmin sanoen:

Jos ensimmäinen parametrimerkki vastaa "muuttuvaa takavokaalia" (a, o, u) ja toinen parametri "muuttuvaa etuvokaalia" (ä, ö, y), niin palautetaan ensimmäinen merkki "etuvokaaliksi vaihdettuna". Esimerkiksi assimiloi('a', 'y') palauttaa ä-merkin.

Jos ensimmäinen parametrimerkki vastaa "muuttuvaa etuvokaalia" (ä, ö, y) ja toinen parametri "muuttuvaa takavokaalia" (a, o, u), niin palautetaan ensimmäinen merkki "takavokaaliksi vaihdettuna". Esimerkiksi assimiloi('ä', 'u') palauttaa a-merkin.

Kaikissa muissa tapauksissa palautetaan ensimmäisenä parametriksi saatu merkki sellaisenaan.

def eteen(symboli: Char): Char

Jos parametriksi annettu merkki vastaa "muuttuvaa takavokaalia" (a, o, u), palauttaa sitä vastaavan etuvokaalin (ä, ö, y). Muussa tapauksessa palauttaa annetun merkin sellaisenaan.

Jos parametriksi annettu merkki vastaa "muuttuvaa takavokaalia" (a, o, u), palauttaa sitä vastaavan etuvokaalin (ä, ö, y). Muussa tapauksessa palauttaa annetun merkin sellaisenaan.

def onKirjain(symboli: Char): Boolean

Palauttaa true, jos parametriksi annettu merkki kuuluu suomen kielen perusaakkosiin eli on sellainen merkki, jota käytetään suomessa jonkin vokaalin tai konsonantin kuvaamiseen. Palauttaa false muutoin.

Palauttaa true, jos parametriksi annettu merkki kuuluu suomen kielen perusaakkosiin eli on sellainen merkki, jota käytetään suomessa jonkin vokaalin tai konsonantin kuvaamiseen. Palauttaa false muutoin.

def onKonsonantti(symboli: Char): Boolean

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin konsonanttia, false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin konsonanttia, false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin "muuttuvaa etuvokaalia" (ä, ö, y), false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin "muuttuvaa etuvokaalia" (ä, ö, y), false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin "muuttuvaa takavokaalia" (a, o, u), false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin "muuttuvaa takavokaalia" (a, o, u), false muutoin.

def onMuuttuvaVokaali(symboli: Char): Boolean

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin "muuttuvaa vokaalia" (a, ä, o, ö, u, y), false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin "muuttuvaa vokaalia" (a, ä, o, ö, u, y), false muutoin.

def onVokaali(symboli: Char): Boolean

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin vokaalia, false muutoin.

Palauttaa true, jos parametriksi annettu merkki vastaa suomen kielen perusaakkosissa jotakin vokaalia, false muutoin.

def taakse(symboli: Char): Char

Jos parametriksi annettu merkki vastaa "muuttuvaa etuvokaalia" (ä, ö, y), palauttaa sitä vastaavan takavokaalin (a, o, u). Muussa tapauksessa palauttaa annetun merkin sellaisenaan.

Jos parametriksi annettu merkki vastaa "muuttuvaa etuvokaalia" (ä, ö, y), palauttaa sitä vastaavan takavokaalin (a, o, u). Muussa tapauksessa palauttaa annetun merkin sellaisenaan.

Concrete fields

merkkijono, joka sisältää kaikkia suomen kielen konsonantteja vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen konsonantteja vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen "muuttuvia etuvokaaleita" (ä, ö, y) vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen "muuttuvia etuvokaaleita" (ä, ö, y) vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen "muuttuvia takavokaaleita" (a, o, u) vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen "muuttuvia takavokaaleita" (a, o, u) vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen vokaaleita vastaavat kirjoitusmerkit

merkkijono, joka sisältää kaikkia suomen kielen vokaaleita vastaavat kirjoitusmerkit