Commented in some quick sort tests

This commit is contained in:
Chad Stearns 2020-08-29 17:46:27 -04:00
parent 8547b7de89
commit d0587fa92c

View file

@ -1028,151 +1028,151 @@ mod gen_list {
}) })
} }
// #[test] #[test]
// fn foobar2() { fn foobar2() {
// with_larger_debug_stack(|| { with_larger_debug_stack(|| {
// assert_evals_to!( assert_evals_to!(
// indoc!( indoc!(
// r#" r#"
// quicksort : List (Num a) -> List (Num a) quicksort : List (Num a) -> List (Num a)
// quicksort = \list -> quicksort = \list ->
// quicksortHelp list 0 (List.len list - 1) quicksortHelp list 0 (List.len list - 1)
//
//
// quicksortHelp : List (Num a), Int, Int -> List (Num a)
// quicksortHelp = \list, low, high ->
// if low < high then
// when partition low high list is
// Pair partitionIndex partitioned ->
// partitioned
// |> quicksortHelp low (partitionIndex - 1)
// |> quicksortHelp (partitionIndex + 1) high
// else
// list
//
//
// swap : Int, Int, List a -> List a
// swap = \i, j, list ->
// when Pair (List.get list i) (List.get list j) is
// Pair (Ok atI) (Ok atJ) ->
// list
// |> List.set i atJ
// |> List.set j atI
//
// _ ->
// []
//
// partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ]
// partition = \low, high, initialList ->
// when List.get initialList high is
// Ok pivot ->
// when partitionHelp (low - 1) low initialList high pivot is
// Pair newI newList ->
// Pair (newI + 1) (swap (newI + 1) high newList)
//
// Err _ ->
// Pair (low - 1) initialList
//
//
// partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ]
// partitionHelp = \i, j, list, high, pivot ->
// # if j < high then
// if False then
// when List.get list j is
// Ok value ->
// if value <= pivot then
// partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot
// else
// partitionHelp i (j + 1) list high pivot
//
// Err _ ->
// Pair i list
// else
// Pair i list
//
//
//
// quicksort [ 7, 4, 21, 19 ]
// "#
// ),
// &[19, 7, 4, 21],
// &'static [i64],
// );
// })
// }
// #[test]
// fn foobar() { quicksortHelp : List (Num a), Int, Int -> List (Num a)
// with_larger_debug_stack(|| { quicksortHelp = \list, low, high ->
// assert_evals_to!( if low < high then
// indoc!( when partition low high list is
// r#" Pair partitionIndex partitioned ->
// quicksort : List (Num a) -> List (Num a) partitioned
// quicksort = \list -> |> quicksortHelp low (partitionIndex - 1)
// quicksortHelp list 0 (List.len list - 1) |> quicksortHelp (partitionIndex + 1) high
// else
// list
// quicksortHelp : List (Num a), Int, Int -> List (Num a)
// quicksortHelp = \list, low, high ->
// if low < high then swap : Int, Int, List a -> List a
// when partition low high list is swap = \i, j, list ->
// Pair partitionIndex partitioned -> when Pair (List.get list i) (List.get list j) is
// partitioned Pair (Ok atI) (Ok atJ) ->
// |> quicksortHelp low (partitionIndex - 1) list
// |> quicksortHelp (partitionIndex + 1) high |> List.set i atJ
// else |> List.set j atI
// list
// _ ->
// []
// swap : Int, Int, List a -> List a
// swap = \i, j, list -> partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ]
// when Pair (List.get list i) (List.get list j) is partition = \low, high, initialList ->
// Pair (Ok atI) (Ok atJ) -> when List.get initialList high is
// list Ok pivot ->
// |> List.set i atJ when partitionHelp (low - 1) low initialList high pivot is
// |> List.set j atI Pair newI newList ->
// Pair (newI + 1) (swap (newI + 1) high newList)
// _ ->
// [] Err _ ->
// Pair (low - 1) initialList
// partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ]
// partition = \low, high, initialList ->
// when List.get initialList high is partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ]
// Ok pivot -> partitionHelp = \i, j, list, high, pivot ->
// when partitionHelp (low - 1) low initialList high pivot is # if j < high then
// Pair newI newList -> if False then
// Pair (newI + 1) (swap (newI + 1) high newList) when List.get list j is
// Ok value ->
// Err _ -> if value <= pivot then
// Pair (low - 1) initialList partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot
// else
// partitionHelp i (j + 1) list high pivot
// partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ]
// partitionHelp = \i, j, list, high, pivot -> Err _ ->
// if j < high then Pair i list
// when List.get list j is else
// Ok value -> Pair i list
// if value <= pivot then
// partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot
// else
// partitionHelp i (j + 1) list high pivot quicksort [ 7, 4, 21, 19 ]
// "#
// Err _ -> ),
// Pair i list &[19, 7, 4, 21],
// else &'static [i64]
// Pair i list );
// })
// }
//
// when List.first (quicksort [0x1]) is #[test]
// _ -> 4 fn foobar() {
// "# with_larger_debug_stack(|| {
// ), assert_evals_to!(
// 4, indoc!(
// i64, r#"
// ); quicksort : List (Num a) -> List (Num a)
// }) quicksort = \list ->
// } quicksortHelp list 0 (List.len list - 1)
quicksortHelp : List (Num a), Int, Int -> List (Num a)
quicksortHelp = \list, low, high ->
if low < high then
when partition low high list is
Pair partitionIndex partitioned ->
partitioned
|> quicksortHelp low (partitionIndex - 1)
|> quicksortHelp (partitionIndex + 1) high
else
list
swap : Int, Int, List a -> List a
swap = \i, j, list ->
when Pair (List.get list i) (List.get list j) is
Pair (Ok atI) (Ok atJ) ->
list
|> List.set i atJ
|> List.set j atI
_ ->
[]
partition : Int, Int, List (Num a) -> [ Pair Int (List (Num a)) ]
partition = \low, high, initialList ->
when List.get initialList high is
Ok pivot ->
when partitionHelp (low - 1) low initialList high pivot is
Pair newI newList ->
Pair (newI + 1) (swap (newI + 1) high newList)
Err _ ->
Pair (low - 1) initialList
partitionHelp : Int, Int, List (Num a), Int, Int -> [ Pair Int (List (Num a)) ]
partitionHelp = \i, j, list, high, pivot ->
if j < high then
when List.get list j is
Ok value ->
if value <= pivot then
partitionHelp (i + 1) (j + 1) (swap (i + 1) j list) high pivot
else
partitionHelp i (j + 1) list high pivot
Err _ ->
Pair i list
else
Pair i list
when List.first (quicksort [0x1]) is
_ -> 4
"#
),
4,
i64
);
})
}
#[test] #[test]
fn empty_list_increment_decrement() { fn empty_list_increment_decrement() {