From 03773647cc91f06121250656865abc093901ce2e Mon Sep 17 00:00:00 2001 From: aria Date: Mon, 14 Jul 2025 22:49:41 +1000 Subject: [PATCH] feat: initial bottom text generation --- .gitignore | 1 + Cargo.lock | 280 ++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 7 ++ bottom-text.txt | 63 +++++++++++ src/main.rs | 25 +++++ 5 files changed, 376 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 bottom-text.txt create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..8a3faa1 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,280 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "cfg-if" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "fixedbitset" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" + +[[package]] +name = "getopts" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", +] + +[[package]] +name = "libc" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "markov" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6ad68e26d51a9558f65e93b9795c9422630d0932717a3235668bb9ab71e3fd" +dependencies = [ + "getopts", + "itertools", + "petgraph", + "rand", + "serde", + "serde_derive", + "serde_yaml", +] + +[[package]] +name = "naomi-chain" +version = "0.1.0" +dependencies = [ + "markov", +] + +[[package]] +name = "petgraph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "syn" +version = "2.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..fdefade --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "naomi-chain" +version = "0.1.0" +edition = "2024" + +[dependencies] +markov = "1.1.0" diff --git a/bottom-text.txt b/bottom-text.txt new file mode 100644 index 0000000..bab1ab8 --- /dev/null +++ b/bottom-text.txt @@ -0,0 +1,63 @@ +hiimorningjxnsjdjd +awawawa +!!!! +rtwyy4kwtuke +:3 +wruff +! +dthdrhsjgdzhhgr +WRUFFEURFF +lmfaosdofodfjodfodo +bwaaaaaa +!!!!!; +awaqa7eyehwususueiwjdi38j3f8x +nininininingirhyhr4thtgiortje3rt5j34tletjetlgtle4tgmrlgmrkgnrkgn +rt58gyjmiogjme3oe3jm +lmfaosjdfioe4jtgiojgij +keysmash +,;,,;,,;' +;f,as;dgjhgjmngjhuie4uhtfg +wtk7kuteiiy4w4w77tdu +jklrjtgrioriopgyjr54jyior54 +u4ujr4t6ujt5ghnrtfghrtfgh +aaasgawbwbawgbehredgte4yhr5yhr5h +trhrebhrbhr54bhr4bh +gjntioe4hr4yhrf8ujh4yniorg +sdfijriojmiy +jnjjhmnjhmnjhnjhmhuyjhuyu +;, +yT$WT^W@T^ +,; +rr4ghr4 +.. +sl;dgjse4iogjase4yisej54ysepjo +arf arf +!!!!! +:D +rfgtfghth +Jhduddw4:!hrbd +rgypqw34YQ#W$YGW# +bfbfgee3fgrfbh +wkulitjsfskurwhfms +xbbdbdbfb +arbrhdgagagag +masodjfoerjgorjgorj +zjsuduxiisxue;r8diixks +wawawadkfhighertn5y,tY +>><><<<<<<< +3lNGOPONmLnaYWBwbLlxmcQy0HWdSIWbnRFFCmTfDTtrZiSBZFJ1VBmNkqbBVzfo +wqaaahhhhitjhgjmr4gjrf +rt6ujhnt5BH RHTGT%yhr5 +rfhgr4ity5UY^&U^uw34rt6ujnt6U +wawawawawa +,,,, +uxjsdiduw8f8zj8eyo728k28o25ik2je) +bwbahwhdx +bwabwbshevvri2bdid +hhshshehehdbhxbebdnx +wkiyek85w8ki5wktwwu2i7? +wahjuxueh3r +ajyrksrufhhrne +rjrhhrbrvdgbdbd +hc4sgsxw +hbyx3ahsvctyjwrxnwj6u \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..a37b863 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,25 @@ +use std::fs::read_to_string; + +use markov::Chain; + +fn main() { + let bottom_text = read_lines("bottom-text.txt"); + let mut chain: Chain = Chain::new(); + for text in bottom_text { + chain.feed_str(&text); + } + for x in 0..10 { + println!("Generation {x}: {}", chain.str_iter().take(3).collect::()); + + } +} + +fn read_lines(filename: &str) -> Vec { + let mut result = Vec::new(); + + for line in read_to_string(filename).unwrap().lines() { + result.push(line.to_string()) + } + + result +} \ No newline at end of file