ilo-pali-pi-nimi-sin/src/toki.rs

55 lines
2.7 KiB
Rust

use rand::Rng;
pub fn pali(nimi_sin: &str) -> String {
let nimi = ["akesi", "ala", "alasa", "ale", "anpa", "ante", "awen", "esun", "ijo", "ike", "ilo", "insa", "jaki", "jan", "jelo", "jo", "kala", "kalama", "kama", "kasi", "ken", "kepeken", "kili", "kiwen", "ko", "kon", "kule", "kulupu", "kute", "lape", "laso", "lawa", "len", "lete", "lili", "linja", "lipu", "loje", "lon", "luka", "lukin", "lupa", "ma", "mama", "mani", "mi", "moku", "moli", "monsi", "mu", "mun", "musi", "mute", "nanpa", "nasa", "nasin", "nena", "ni", "nimi", "noka", "olin", "ona", "open", "pakala", "pali", "palisa", "pan", "pilin", "pimeja", "pini", "pipi", "poka", "poki", "pona", "pu", "sama", "seli", "selo", "seme", "sewi", "sike", "sin", "sina", "sinpin", "sona", "sitelen", "soweli", "suli", "suno", "supa", "suwi", "tan", "taso", "tawa", "telo", "tenpo", "toki", "tomo", "tu", "unpa", "uta", "utala", "walo", "wan", "waso", "wawa", "weka", "wile", "tonsi", "ku", "epiku", "jasima", "kijetesantakalu", "kin", "kipisi", "kokosila", "lanpan", "leko", "meso", "misikeke", "monsuta", "monsuta", "namako", "oko", "soko"]; //nimi pi ku suli
let nimi_ante = ["kepeken", "sama", "tan", "tawa", "lon"];
let mut x = 1;
let suli = rand::thread_rng().gen_range(0_u8..5);
let mut nimi_suli = String::new();
let mut mi_anu_sina = false;
let mut nimi_sin_li_lon = false;
loop {
if x == 2 {
if rand::thread_rng().gen_range(0_u8..10) == 0 {
nimi_suli.push_str("o ");
} else if !mi_anu_sina{
nimi_suli.push_str("li ");
}
}
if x == 3 {
nimi_suli.push_str("e ");
}
if x == 4 {
nimi_suli.push_str(nimi_ante[rand::thread_rng()
.gen_range(0..nimi_ante.len())]);
nimi_suli.push_str(" ");
}
let mut y = 0;
let suli_kipisi = rand::thread_rng().gen_range(1_u8..4);
while y < suli_kipisi {
let nimi_ni = nimi[rand::thread_rng().gen_range(0..nimi.len())];
if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 {
mi_anu_sina = true;
}
if (rand::thread_rng().gen_range(0..4) == 0 || (x+1 == suli && y == suli_kipisi-1)) && !nimi_sin_li_lon {
nimi_suli.push_str(nimi_sin);
nimi_sin_li_lon = true;
} else {
nimi_suli.push_str(nimi[rand::thread_rng()
.gen_range(0..nimi.len())]);
}
nimi_suli.push_str(" ");
y += 1;
if suli_kipisi-y > 1 && rand::random() {
nimi_suli.push_str("pi ");
}
}
x += 1;
if x > suli { break; }
}
nimi_suli
}