This commit is contained in:
lda committed 2025-01-20 23:23:54 +07:00
1 parent 9799c5af2f
commit bfc7eab495
2 files changed
+31 -6

No files matched your search

+27 -5
View File
@@ -1,3 +1,5 @@
//! this file is pure brain fuck DO NOT read below code YOU HAVE BEEN WARNED
use std::ops::Range;
/// a vec like struct, where everything is ever increasing and not by anything more than one.
@@ -73,18 +75,36 @@ impl DB {
} else if self.len() < *bro {
panic!("run DB::verify_len(&self) ")
}
self.len -= 1;
} else {
// self.len.checked_sub(1);
self.len -= 1
// self.len -= 1;
// }
// else {
}
// self.len.checked_sub(1);
self.len -= 1
}
return returnvalue;
}
fn len(&self) -> u32 {
self.len
}
/// looks the same as [`DB::vec`](DB::vec)(&self).[`get`](core::slice::get)(ind as usize)
/**
get you know get it like its a traditional long ass vec
## useage:
```
# use lda_strdist::common_subsequence::db::DB;
# fn alterget(dp: &DB, ind: u32) {
DB::vec(dp).get(ind as usize);
# }
# fn main() {
let c = [0, 1, 1, 2, 3, 3, 3, 4, 4].to_vec();
let dp = DB::try_from_vec(c.clone()).expect("source vector with wrong form");
let ind = 5;
assert_eq!(DB::vec(&dp).get(ind as usize).cloned(), dp.get(ind));
# }
```
*/
pub fn get(&self, ind: u32) -> Option<u32> {
if self.len() <= ind {
// panic!("index {ind} >= len {selflen} which is ugly")
@@ -170,6 +190,7 @@ impl DB {
(None, None)
}
// result? change depend on up is not none
pub fn change(&mut self, ind: u32, val: u32) {
let (avail, up) = self.available_values(ind);
if let (Some(avail), Some(up)) = (avail, up) {
@@ -199,6 +220,7 @@ impl DB {
if self.len() > 0 {
if matches!(self.last(), Some(x) if (x) > 0) {
match self.get(ind) {
// what is this fucking logic idk man what the fuck is this code
Some(vecv) if vecv == val => {
self.inner.truncate(val as usize);
}
+4 -1
View File
@@ -1,6 +1,6 @@
use db::DB;
mod db;
pub mod db;
pub fn lcs_gen(str1: &str, str2: &str) -> Vec<Vec<u32>> {
let c1: Vec<char> = str1.chars().collect();
@@ -62,6 +62,9 @@ pub fn lcs_gen_db(str1: &str, str2: &str) -> Vec<DB> {
db
}
#[cfg(test)]
mod test {