From 828750cad524102e0909a24fb3de9cd7f08e0589 Mon Sep 17 00:00:00 2001 From: tess Date: Tue, 3 May 2022 05:42:27 +0200 Subject: [PATCH] aaa,, mi pali e ijo mute a!! nimi_ale.txt li lon. nimi sin li ken ala sin ala. mi pali e ijo ante kin. taso mi pali e ijo mute la mi sona ala e ijo ale --- nimi_ale.txt | 5 +++++ src/lipu_nimi.rs | 11 +++++++++++ src/main.rs | 1 + src/nimi_sin.rs | 13 +++++++++---- src/toki.rs | 19 ++++++++++++------- 󱥠.png | Bin 0 -> 2097 bytes 6 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 nimi_ale.txt create mode 100644 src/lipu_nimi.rs create mode 100644 󱥠.png diff --git a/nimi_ale.txt b/nimi_ale.txt new file mode 100644 index 0000000..5912a45 --- /dev/null +++ b/nimi_ale.txt @@ -0,0 +1,5 @@ +akesi ala alasa ale anpa ante awen esun ijo ike ilo insa jaki jan jelo jo kala kalama kama kasi ken kili kiwen ko kon kule kulupu kute lape laso lawa len lete lili linja lipu loje 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 seli selo seme sewi sike sin sina sinpin sona sitelen soweli suli suno supa suwi taso 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 namako oko soko +kepeken sama tan tawa lon +li e o a la +w t p s j k l n m +e u i o a diff --git a/src/lipu_nimi.rs b/src/lipu_nimi.rs new file mode 100644 index 0000000..5567660 --- /dev/null +++ b/src/lipu_nimi.rs @@ -0,0 +1,11 @@ + +pub fn pana(i: usize, j: usize) -> Vec { + let lipu_nimi = std::fs::read_to_string("nimi_ale.txt").unwrap(); + let mut kulupu_nimi = Vec::new(); + for nanpa in i..j+1 { + for nimi in lipu_nimi.lines().nth(nanpa).unwrap().split_whitespace() { + kulupu_nimi.push(String::from(nimi)); + } + } + kulupu_nimi +} diff --git a/src/main.rs b/src/main.rs index 13c581e..40c8736 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ use markov::Chain; mod toki; mod nimi_sin; +mod lipu_nimi; fn main() { let nimi_sin = nimi_sin::pali(4); diff --git a/src/nimi_sin.rs b/src/nimi_sin.rs index 527fcbc..34d42f9 100644 --- a/src/nimi_sin.rs +++ b/src/nimi_sin.rs @@ -1,4 +1,6 @@ use rand::Rng; +use rand::seq::SliceRandom; +use crate::lipu_nimi; pub fn pali(i: u8) -> String { let mut npsa = rand::thread_rng(); //ni li pali e nanpa pi sona ala (npsa) @@ -34,15 +36,18 @@ pub fn pali(i: u8) -> String { nimi_pini = nimi; x += 1; } + if lipu_nimi::pana(0,2).contains(&nimi_sin) { + return pali(i) + } 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())] + let kulupu_nimi = lipu_nimi::pana(3,3); + kulupu_nimi.choose(&mut rand::thread_rng()).unwrap().chars().nth(0).unwrap() } fn nimi_e() -> char { - let kulupu_nimi = ['e', 'u', 'i', 'o', 'a']; - kulupu_nimi[rand::thread_rng().gen_range(0..kulupu_nimi.len())] + let kulupu_nimi = lipu_nimi::pana(4,4); + kulupu_nimi.choose(&mut rand::thread_rng()).unwrap().chars().nth(0).unwrap() } diff --git a/src/toki.rs b/src/toki.rs index 91bfb08..dcca0c9 100644 --- a/src/toki.rs +++ b/src/toki.rs @@ -1,4 +1,8 @@ use rand::Rng; +use rand::seq::SliceRandom; +use crate::lipu_nimi; + + pub fn pali(nimi_sin: &str) -> String { let mut toki = String::new(); @@ -8,8 +12,9 @@ pub fn pali(nimi_sin: &str) -> String { } fn pali_lili(toki: String, nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String { - let kulupu_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 kulupu_nimi_ante = ["kepeken", "sama", "tan", "tawa", "lon"]; //kepeken li nimi ni li sama ala kepeken pi nimi ante. + let nimi_pi_ku_suli = lipu_nimi::pana(0,1); + let nimi_tawa = lipu_nimi::pana(1,1); + let mut toki_sin = String::clone(&toki); let mut mi_anu_sina = false; let mut la_anu_seme = rand::thread_rng().gen_range(0_u8..10) == 0; @@ -31,7 +36,7 @@ fn pali_lili(toki: String, nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: b toki_sin.push_str("e "); //nimi "e" } if x == 3 { - toki_sin.push_str(kulupu_nimi_ante[rand::thread_rng().gen_range(0..kulupu_nimi_ante.len())]); //nimi sama nimi "kepeken" + toki_sin.push_str(nimi_tawa.choose(&mut rand::thread_rng()).unwrap()); //nimi sama nimi "kepeken" toki_sin.push_str(" "); } let mut y = 0; @@ -41,16 +46,16 @@ fn pali_lili(toki: String, nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: b suli_kipisi = rand::thread_rng().gen_range(1_u8..4); //kipisi la nimi tu tu li ken lon } while y < suli_kipisi { - let nimi_ni = kulupu_nimi[rand::thread_rng().gen_range(0..kulupu_nimi.len())]; - if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 { + let nimi_ni = nimi_pi_ku_suli.choose(&mut rand::thread_rng()).unwrap(); + if (nimi_ni == &"mi" || nimi_ni == &"sina") && suli_kipisi == 1 { mi_anu_sina = true; //nimi li nimi "mi" taso anu nimi "sina" taso } 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! } else { - toki_sin.push_str(kulupu_nimi[rand::thread_rng(). - gen_range(0..kulupu_nimi.len())]); //ilo li pana e nimi pi ku suli + toki_sin.push_str(nimi_pi_ku_suli.choose(&mut rand::thread_rng()) + .unwrap()); //ilo li pana e nimi pi ku suli } toki_sin.push_str(" "); y += 1; diff --git a/󱥠.png b/󱥠.png new file mode 100644 index 0000000000000000000000000000000000000000..c01d9d18c3471956a83dc186bb0d1377ed7c2608 GIT binary patch literal 2097 zcmV-12+sG3P)EX>4Tx04R}tkv&MmKpe$iQ%glE4lN?$kfAzR5WjHLDionYs1;guFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|=;Wm6A|?JWDYS_7;J6>}?mh0_0YbgZG^=Y2&~)2O zCE{WxyDA1>5rBYxOd%{Y%b1g-Bsz|-d-(Wz7vou-&;2=i)ttoupGZ8*4AUmwAfDc| z4bJ<-5muB{;&b9rlP*a7$aTfzH_io@1)do()2Vsl2(egbW2KE*(bR}1iKD8fQ@)V# zSmnIMSu0mr^Pc>Lp`5<5%ypVWNMI35kRU=q6(y8mBSx!EiiH&I$2<53UB5&wgZ37qAElt@2E_Z-|Cqp)6SMt*o@_FF>jJ_!ggl~bKHLthkK29HiGeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00s$3L_t(|+U=Wdh*VV=$A3FJtGO?=_gdsikfx;I7EvM; z5)MRQVnG;X1qu-o5x(5OT~gHOmAZxnB1w>au|TO@q7Q!9jf|kMB#7Lw+90(|@11lv z+n3qx!#q=WujkC1nLBr8XLtW_nZ0Mu+_M@cWnvSPitv zz3b%f)lmsJ1YA<|+vvIea*go`MgQM`T`?1IqhXtQ46q%m&vX65iWzSOKJ#4v6mSse z2UaMI9|ewx2#Q-0&oFE&DhL9+2RsBcDZJ%oS!-hox38q}ImKzxR@4#z_!{`M$UVeJ zg^iDo0Ll4#HL(EAdVjIP#>b`uf?lu<=mf6UMEM-f0bRuy-|f52617`|=(8!yDR%cb zWY|_b0pbO3dai#2cnesShlJaK4?Nd@*mkVrhWFhHYzz>v2iRW1*1KKNMz`d! zIekLJ&PcmK&-J@K*B_J56~KdJ>wzlcj{`RWwrqh_X=hc$z}#!l=WK!RyA1XsY2ZLo z6dm$;i|qbXZvPXoAs6jE*WWK|?S@dlC7$ayN2m$9l2+$yzV{7geK&Bqlpr`;bHM>% zT$HyRtKW0|kAbH{eXkWaK3F0FUBC~(V(~N&I0>9GO_eFj`A)Jx$vPm246sv^;ttD= z5+RkizElFl$P;o@LcMR5X9mLg^qdR;%iIU+!*3_U~|fH-cN|) z8_whUd-IgU`Zba{N0qG=dW9*W#cWeTbb01`5b zuPSPPLx5`#&HD`7Ofk1Y`=EjUc7u}IHUp;vYh;^YAUYcIg0!ZzW{QRi5#WtmtF~k9 z%MLP>9Jz)Zy+ zV7|!YR#B4U6jzmtB^gCqJwVcP{nPwkUM@Gk~zs!Y|A3xacFGCqf^0`Z|* z_*q9lr5<25Ma%;8B#;$Cy%^RKvaMcspNaSc_i9Dk3`G==ibPZbGK_x$JR-8VL8><8 zBp?pd=?J)>sOY?`=(p5%tP_fi(V^*YijfM5p}%wloU8Q(=Yh7FfxTB80hIlUjiAlY)-$=n3020qj+!J-JL zFC}(NCIT9#IswV4PQZCh;bF=U@GaSjOb%nj|Gxkeihys(zD)3|sJ<@(DsURpn8q}w bQOo!jmWRi=M|z-=00000NkvXXu0mjf8Q#j0 literal 0 HcmV?d00001