From 5e9f118b1517debafa5f097de70cece45cf68805 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 16 Nov 2024 19:51:29 +0000 Subject: [PATCH] fixed two issues related to insertion in search-list.sml. First issue: in top level 'insert' function, we called 'insLeft' if new value is greater than first value on right, and we called 'insRight' in the opposite case; this is backwards. Second issue: in base cases of 'insLeft' and 'insRight', when we have reached the end of one side of the list, we used to return the same list we got back instead of adding the new value to this end of the list; this is now fixed. --- fcore/search-list.sml | 41 +++++++++++++++++++++-------------------- shf | Bin 1312976 -> 1312976 bytes 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/fcore/search-list.sml b/fcore/search-list.sml index b0c8077..79a5f6a 100644 --- a/fcore/search-list.sml +++ b/fcore/search-list.sml @@ -16,7 +16,7 @@ struct type t = {left: int vector list, right: int vector list} (* temp function for testing *) - fun printlst (left, right) = + fun printlst {left, right} = let val left = List.rev left val lst = List.concat [left, right] @@ -124,7 +124,10 @@ struct (* new = first *) {left = left, right = right} end - | [] => {left = left, right = right} + | [] => + let val new = Vector.fromList [new] + in {left = left, right = joinStartOfRight (new, right)} + end fun insRight (new, left, right) = case right of @@ -155,13 +158,16 @@ struct (* new = last *) {left = left, right = right} end - | [] => {left = left, right = right} + | [] => + let val new = Vector.fromList [new] + in {left = joinEndOfLeft (new, left), right = right} + end fun insert (new, {left, right}: t) = (* look at elements to see which way to traverse *) case right of hd :: _ => - if Vector.sub (hd, 0) >= new then insRight (new, left, right) + if new > Vector.sub (hd, 0) then insRight (new, left, right) else insLeft (new, left, right) | [] => insLeft (new, left, right) @@ -231,8 +237,7 @@ struct (* finish = last *) {left = left, right = tl} end - | [] => - {left = left, right = right} + | [] => {left = left, right = right} fun moveRightAndDelete (start, finish, left, right) = case right of @@ -396,23 +401,20 @@ struct if start < rfirst then if finish < rfirst then (case left of - lhd :: ltl => - let - val llast = Vector.sub (lhd, Vector.length lhd - 1) - in - if finish = llast then - delLeftFromHere (start, left, right) - else - moveLeftAndDelete (start, finish, left, right) - end - | [] => - {left = left, right = right}) + lhd :: ltl => + let + val llast = Vector.sub (lhd, Vector.length lhd - 1) + in + if finish = llast then delLeftFromHere (start, left, right) + else moveLeftAndDelete (start, finish, left, right) + end + | [] => {left = left, right = right}) else (* finish >= rfirst *) delFromLeftAndRight (start, finish, left, right) else if start = rfirst then delRightFromHere (finish, left, right) - else + else (* finish > rfirst *) moveRightAndDelete (start, finish, left, right) end @@ -469,8 +471,7 @@ struct val startIdx = BinSearch.equalOrMore (from, hd) val mapEl = Vector.sub (hd, startIdx) val newHd = - Vector.map (fn el => if el < from then el else el + mapBy) - hd + Vector.map (fn el => if el < from then el else el + mapBy) hd in mapRight (mapBy, joinEndOfLeft (newHd, left), tl) end diff --git a/shf b/shf index 5ce2d48a11abd6055504920905073c3c06aa81f9..c7f4639668be4eef64b2a0dae272d575eda594fe 100755 GIT binary patch delta 9698 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 delta 9733 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