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

75 lines
2.8 KiB
Rust
Raw Normal View History

2022-05-02 16:52:19 +00:00
use rand::Rng;
use rand::seq::SliceRandom;
use crate::lipu_nimi;
2022-05-02 16:52:19 +00:00
pub fn pali(nimi_sin: &str) -> String {
2022-05-02 22:43:00 +00:00
let mut toki = String::new();
toki = pali_lili(toki, nimi_sin, true, false); //ilo li pali e toki la nimi "la" li ken lon la nimi sin li lon ala
toki //ilo li pana e toki
}
fn pali_lili(toki: String, nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String {
let nimi_pi_ku_suli = lipu_nimi::pana(0,1);
let nimi_tawa = lipu_nimi::pana(1,1);
2022-05-02 22:43:00 +00:00
let mut toki_sin = String::clone(&toki);
2022-05-02 16:52:19 +00:00
let mut mi_anu_sina = false;
2022-05-02 22:43:00 +00:00
let mut la_anu_seme = rand::thread_rng().gen_range(0_u8..10) == 0;
if la_li_ken == false {
la_anu_seme = false;
}
let mut nimi_sin_li_lon = nimi_sin_li_lon_a;
let mut x = 0;
let suli = rand::thread_rng().gen_range(1_u8..4); // toki la, kipisi tu tu li ken lon.
while x < suli {
if x == 1 {
2022-05-02 16:52:19 +00:00
if rand::thread_rng().gen_range(0_u8..10) == 0 {
2022-05-02 22:43:00 +00:00
toki_sin.push_str("o "); //o li ken lon
} else if !mi_anu_sina {
toki_sin.push_str("li "); //nimi "mi" anu nimi "sina" li lon ala la nimi "li" li ken lon
2022-05-02 16:52:19 +00:00
}
}
2022-05-02 22:43:00 +00:00
if x == 2 {
toki_sin.push_str("e "); //nimi "e"
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
if x == 3 {
toki_sin.push_str(nimi_tawa.choose(&mut rand::thread_rng()).unwrap()); //nimi sama nimi "kepeken"
2022-05-02 22:43:00 +00:00
toki_sin.push_str(" ");
2022-05-02 16:52:19 +00:00
}
let mut y = 0;
2022-05-02 22:43:00 +00:00
let suli_kipisi;
if suli == 1 { suli_kipisi = rand::thread_rng().gen_range(2_u8..4);
} else {
suli_kipisi = rand::thread_rng().gen_range(1_u8..4); //kipisi la nimi tu tu li ken lon
}
2022-05-02 16:52:19 +00:00
while y < suli_kipisi {
let nimi_ni = nimi_pi_ku_suli.choose(&mut rand::thread_rng()).unwrap();
2022-05-03 12:10:07 +00:00
if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 {
2022-05-02 22:43:00 +00:00
mi_anu_sina = true; //nimi li nimi "mi" taso anu nimi "sina" taso
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
if (rand::thread_rng().gen_range(0_u8..6) == 0 || (x == suli-1 && y == suli_kipisi-1)) && !nimi_sin_li_lon {
toki_sin.push_str(nimi_sin); //ilo li pana e nimi sin.
nimi_sin_li_lon = true; //ni la, nimi sin li lon!
2022-05-02 16:52:19 +00:00
} else {
toki_sin.push_str(nimi_pi_ku_suli.choose(&mut rand::thread_rng())
.unwrap()); //ilo li pana e nimi pi ku suli
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
toki_sin.push_str(" ");
2022-05-02 16:52:19 +00:00
y += 1;
2022-05-02 22:43:00 +00:00
if suli_kipisi-y > 1 && rand::random() { //nimi "pi" li ken lon la, ona li ken lon!
toki_sin.push_str("pi ");
2022-05-02 16:52:19 +00:00
}
}
x += 1;
2022-05-02 22:43:00 +00:00
}
if la_anu_seme {
toki_sin.push_str("la ");
toki_sin.push_str(pali_lili(String::new(), nimi_sin, false, nimi_sin_li_lon).as_str()); //nimi "la" li lon la, ilo li pali e toki sin li pana e toki ni
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
toki_sin //ilo li pana e toki
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00