Sananmuunnos Docs
Fall 2026
API

# Sana

o1.sananmuunnos.Sana
See the Sana companion object
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.

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
Graph
Supertypes
  class Object
  trait Matchable
  class Any

## Members list

### Value members

#### Concrete methods

def muunnos(`toinen`: Sana): String

Palauttaa sananmuunnoksen, joka saadaan yhdistämällä tämä sana annettuun toiseen sanaan tavalla, joka selitetään tämän luokan esittelyssä. Tuloksessa esiintyy vain pieniä merkkejä. Esimerkiksi jos tämän sanan merkit ovat `"tarja"` ja toisen sanan `"halonen"`, palauttaa merkkijonon `"harja talonen"`.

Palauttaa sananmuunnoksen, joka saadaan yhdistämällä tämä sana annettuun toiseen sanaan tavalla, joka selitetään tämän luokan esittelyssä. Tuloksessa esiintyy vain pieniä merkkejä. Esimerkiksi jos tämän sanan merkit ovat `"tarja"` ja toisen sanan `"halonen"`, palauttaa merkkijonon `"harja talonen"`.

## Attributes

override def toString: String

Palauttaa kuvauksen, josta näkyvät ne tämän sanan osat, jotka ovat sananmuunnosten kannalta oleellisia: 1) alun konsonantit (jos niitä on), 2) ensimmäinen vokaalimerkki ja sitä seuraavat identtiset vokaalit, sekä 3) loppuosa. (Ks. tämän luokan kuvaus yltä.) Kuvauksessa näiden osien väliin tulee `|`-merkit. Esimerkiksi sanan ollessa `"struuma"` kuvaus on `"str|uu|ma"`, ja sanan ollessa `"joulu"` kuvaus on `"j|o|ulu"`. Jos sanan alussa ei ole konsonantteja, alkaa palautettu merkkijono `|`-merkillä: `"|a|lku"`.

Palauttaa kuvauksen, josta näkyvät ne tämän sanan osat, jotka ovat sananmuunnosten kannalta oleellisia: 1) alun konsonantit (jos niitä on), 2) ensimmäinen vokaalimerkki ja sitä seuraavat identtiset vokaalit, sekä 3) loppuosa. (Ks. tämän luokan kuvaus yltä.) Kuvauksessa näiden osien väliin tulee `|`-merkit. Esimerkiksi sanan ollessa `"struuma"` kuvaus on `"str|uu|ma"`, ja sanan ollessa `"joulu"` kuvaus on `"j|o|ulu"`. Jos sanan alussa ei ole konsonantteja, alkaa palautettu merkkijono `|`-merkillä: `"|a|lku"`.

## Attributes

Definition Classes
  Any