49 lines
1.4 KiB
Rust
49 lines
1.4 KiB
Rust
use rand::Rng;
|
|
|
|
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 {
|
|
loop {
|
|
nimi = nimi_w();
|
|
if nimi_pini != 'n' { break; }
|
|
if nimi != 'n' && nimi != 'm' { break; }
|
|
}
|
|
nimi_sin.push(nimi);
|
|
nimi_pini = nimi;
|
|
}
|
|
|
|
loop {
|
|
nimi = nimi_e();
|
|
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';
|
|
nimi_sin.push(nimi);
|
|
}
|
|
nimi_pini = nimi;
|
|
x += 1;
|
|
}
|
|
nimi_sin
|
|
}
|
|
|
|
fn nimi_w() -> char {
|
|
let kulupu_nimi = ['w', 't', 'p', 's', 'j', 'k', 'l', 'n', 'm'];
|
|
kulupu_nimi[rand::thread_rng().gen_range(0..kulupu_nimi.len())]
|
|
}
|
|
|
|
fn nimi_e() -> char {
|
|
let kulupu_nimi = ['e', 'u', 'i', 'o', 'a'];
|
|
kulupu_nimi[rand::thread_rng().gen_range(0..kulupu_nimi.len())]
|
|
}
|