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

55 lines
1.9 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(i: u8) -> String {
let mut npsa = rand::thread_rng(); //ni li pali e nanpa pi sona ala (npsa)
let mute = npsa.gen_range(1..i); //suli nimi la ken mute li lon
let mut x = 0;
let mut nimi_pini = 'x'; //nimi 'x' li ken ala lon la ni li nimi_pini lon open
let mut nimi_sin = String::new();
while x < mute {
let mut nimi: char;
if rand::random() || x > 0 { //kipisi 1 la nimi ni li ken lon li ken lon ala. kipisi mute la nimi ni li wile lon
2022-05-02 16:52:19 +00:00
loop {
nimi = nimi_w();
if nimi_pini != 'n' { break; }
if nimi != 'n' && nimi != 'm' { break; } //o nn ala o nm ala
2022-05-02 16:52:19 +00:00
}
nimi_sin.push(nimi);
nimi_pini = nimi;
}
2022-05-03 13:33:59 +00:00
2022-05-02 16:52:19 +00:00
loop {
nimi = nimi_e();
//o wuwojiti ala
2022-05-02 16:52:19 +00:00
if nimi_pini != 'w' && nimi_pini != 'j' && nimi_pini != 't' { break; }
if nimi_pini == 'w' && nimi != 'o' && nimi != 'u' { break; }
if (nimi_pini == 'j' || nimi_pini == 't') && nimi != 'i' { break; }
}
nimi_sin.push(nimi);
if rand::random() { //nimi n li ken lon. TENPO KAMA LA mi ken wile e ni: nimi n li lon la, ante li lon ala. ante li lon la, nimi n li lon ala
2022-05-02 16:52:19 +00:00
nimi = 'n';
nimi_sin.push(nimi);
}
nimi_pini = nimi;
x += 1;
}
if lipu_nimi::pana(0,2).contains(&nimi_sin) { //nimi sin li sin ala la, o pali sin e nimi
return pali(i)
}
nimi_sin //o pana e nimi sin
2022-05-02 16:52:19 +00:00
}
fn nimi_w() -> char { //ni li pana e nimi sama nimi w
let kulupu_nimi = lipu_nimi::pana(3,3);
kulupu_nimi.choose(&mut rand::thread_rng()).unwrap().chars().nth(0).unwrap()
2022-05-02 16:52:19 +00:00
}
fn nimi_e() -> char { //ni li pana e nimi sama nimi e
let kulupu_nimi = lipu_nimi::pana(4,4);
kulupu_nimi.choose(&mut rand::thread_rng()).unwrap().chars().nth(0).unwrap()
2022-05-02 16:52:19 +00:00
}