This commit is contained in:
@@ -15,25 +15,25 @@ pub type DLList(a) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let l = new()
|
// let l = new()
|
||||||
let l2 = insert(l, 123) |> echo
|
// let l2 = insert(l, 123) |> echo
|
||||||
let l3 = insert(l2, 456) |> echo
|
// let l3 = insert(l2, 456) |> echo
|
||||||
let l4 = insert(l3, 789)
|
// let l4 = insert(l3, 789)
|
||||||
let l5 = insert(l4, 0)
|
// let l5 = insert(l4, 0)
|
||||||
|
|
||||||
get(l5) |> echo
|
// get(l5) |> echo
|
||||||
l5 |> echo
|
// l5 |> echo
|
||||||
l5 |> to_list |> echo
|
// l5 |> to_list |> echo
|
||||||
let l6 = delete(l5)
|
// let l6 = delete(l5)
|
||||||
l6 |> echo
|
// l6 |> echo
|
||||||
let l7 = delete(l6)
|
// let l7 = delete(l6)
|
||||||
l7 |> echo
|
// l7 |> echo
|
||||||
let l8 = delete(l7)
|
// let l8 = delete(l7)
|
||||||
l8 |> echo
|
// l8 |> echo
|
||||||
let l9 = delete(l8)
|
// let l9 = delete(l8)
|
||||||
l9 |> echo
|
// l9 |> echo
|
||||||
|
|
||||||
from_list([1, 2, 3, 4]) |> echo
|
// from_list([1, 2, 3, 4]) |> echo
|
||||||
|
|
||||||
let l1 = new() |> insert(1)
|
let l1 = new() |> insert(1)
|
||||||
l1 |> echo
|
l1 |> echo
|
||||||
@@ -43,6 +43,13 @@ pub fn main() {
|
|||||||
l2 |> echo
|
l2 |> echo
|
||||||
let l2t = take(l2, 5)
|
let l2t = take(l2, 5)
|
||||||
l2t |> echo
|
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) {
|
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) {
|
pub fn to_list(list: DLList(a)) -> List(a) {
|
||||||
case is_empty(list) {
|
case is_empty(list) {
|
||||||
True -> []
|
True -> []
|
||||||
|
|||||||
Reference in New Issue
Block a user