This commit is contained in:
@@ -15,25 +15,25 @@ pub type DLList(a) {
|
||||
}
|
||||
|
||||
pub fn main() {
|
||||
let l = new()
|
||||
let l2 = insert(l, 123) |> echo
|
||||
let l3 = insert(l2, 456) |> echo
|
||||
let l4 = insert(l3, 789)
|
||||
let l5 = insert(l4, 0)
|
||||
// let l = new()
|
||||
// let l2 = insert(l, 123) |> echo
|
||||
// let l3 = insert(l2, 456) |> echo
|
||||
// let l4 = insert(l3, 789)
|
||||
// let l5 = insert(l4, 0)
|
||||
|
||||
get(l5) |> echo
|
||||
l5 |> echo
|
||||
l5 |> to_list |> echo
|
||||
let l6 = delete(l5)
|
||||
l6 |> echo
|
||||
let l7 = delete(l6)
|
||||
l7 |> echo
|
||||
let l8 = delete(l7)
|
||||
l8 |> echo
|
||||
let l9 = delete(l8)
|
||||
l9 |> echo
|
||||
// get(l5) |> echo
|
||||
// l5 |> echo
|
||||
// l5 |> to_list |> echo
|
||||
// let l6 = delete(l5)
|
||||
// l6 |> echo
|
||||
// let l7 = delete(l6)
|
||||
// l7 |> echo
|
||||
// let l8 = delete(l7)
|
||||
// l8 |> echo
|
||||
// let l9 = delete(l8)
|
||||
// l9 |> echo
|
||||
|
||||
from_list([1, 2, 3, 4]) |> echo
|
||||
// from_list([1, 2, 3, 4]) |> echo
|
||||
|
||||
let l1 = new() |> insert(1)
|
||||
l1 |> echo
|
||||
@@ -43,6 +43,13 @@ pub fn main() {
|
||||
l2 |> echo
|
||||
let l2t = take(l2, 5)
|
||||
l2t |> echo
|
||||
|
||||
let l3 = insert(l2, 3)
|
||||
l3 |> echo
|
||||
let l3t = take(l3, 7)
|
||||
l3t |> echo
|
||||
let l3t2 = take_rev(l3, 7)
|
||||
l3t2 |> echo
|
||||
}
|
||||
|
||||
pub fn new() -> DLList(a) {
|
||||
@@ -210,6 +217,21 @@ fn take_loop(list: DLList(a), n_times: Int, acc: List(a)) -> List(a) {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn take_rev(list: DLList(a), n_times: Int) -> List(a) {
|
||||
take_rev_loop(list, n_times, [])
|
||||
}
|
||||
|
||||
fn take_rev_loop(list: DLList(a), n_times: Int, acc: List(a)) -> List(a) {
|
||||
use <- bool.guard(when: is_empty(list), return: [])
|
||||
case n_times {
|
||||
0 -> list.reverse(acc)
|
||||
n -> {
|
||||
let assert Ok(item) = get(list)
|
||||
take_rev_loop(move_left(list), n - 1, [item, ..acc])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_list(list: DLList(a)) -> List(a) {
|
||||
case is_empty(list) {
|
||||
True -> []
|
||||
|
||||
Reference in New Issue
Block a user