Skip to content

Commit 3365eda

Browse files
authored
Mostly cosmetic tweaks to a handful of tests and implementations (#436)
1 parent 43522c2 commit 3365eda

File tree

18 files changed

+367
-321
lines changed

18 files changed

+367
-321
lines changed

workspaces/adventure-pack/goodies/kotlin/src/traverse_level_order/Main.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ package traverse_level_order
22

33
public data class TreeNode(val `val`: Int, var left: TreeNode? = null, var right: TreeNode? = null)
44

5-
public fun TreeNode?.traverseLevelOrder(): Sequence<Collection<TreeNode>> {
5+
public fun TreeNode?.traverseLevelOrder(): Sequence<List<TreeNode>> {
66
if (this == null) {
77
return sequenceOf()
88
}
99

1010
var nodesAtLevel = listOf(this)
1111

1212
return sequence {
13-
while (nodesAtLevel.isNotEmpty()) {
13+
do {
1414
yield(nodesAtLevel)
1515

1616
nodesAtLevel = nodesAtLevel.flatMap { listOf(it.left, it.right) }.filterNotNull()
17-
}
17+
} while (nodesAtLevel.isNotEmpty())
1818
}
1919
}

workspaces/adventure-pack/goodies/kotlin/src/traverse_level_order/Test.kt

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,29 @@ package traverse_level_order
33
import kotlin.test.*
44

55
internal class LevelOrderTraversalTest {
6-
76
@Test
8-
fun itTraversesLevelOrderEmptyTree() {
9-
val root: TreeNode? = null
7+
fun traversesSimpleTree() {
8+
val root =
9+
TreeNode(
10+
314,
11+
TreeNode(159, TreeNode(265, TreeNode(35)), TreeNode(8979)),
12+
TreeNode(323, TreeNode(846), TreeNode(26)))
1013
assertContentEquals(
11-
root.traverseLevelOrder().flatMap { it }.map { it.`val` }.toList(), emptyList<Int>())
14+
root.traverseLevelOrder().map { level -> level.map { it.`val` } }.toList(),
15+
listOf(listOf(314), listOf(159, 323), listOf(265, 8979, 846, 26), listOf(35)))
1216
}
1317

1418
@Test
15-
fun itTraversesLevelOrderSingleNode() {
16-
val root: TreeNode = TreeNode(0)
17-
assertContentEquals(
18-
root.traverseLevelOrder().flatMap { it }.map { it.`val` }.toList(), listOf<Int>(0))
19+
fun traversesEmptyTree() {
20+
val root: TreeNode? = null
21+
assertContentEquals(root.traverseLevelOrder().toList(), emptyList())
1922
}
2023

2124
@Test
22-
fun itTraversesLevelOrderFullTree() {
23-
val root: TreeNode =
24-
TreeNode(
25-
1,
26-
TreeNode(2, TreeNode(4, TreeNode(8)), TreeNode(5)),
27-
TreeNode(3, TreeNode(6), TreeNode(7)))
25+
fun traversesSingleNode() {
26+
val root = TreeNode(0)
2827
assertContentEquals(
29-
root.traverseLevelOrder().flatMap { it }.map { it.`val` }.toList(),
30-
listOf<Int>(1, 2, 3, 4, 5, 6, 7, 8))
28+
root.traverseLevelOrder().map { level -> level.map { it.`val` } }.toList(),
29+
listOf(listOf(0)))
3130
}
3231
}

workspaces/adventure-pack/goodies/python3/src/flatten/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from typing import Generator, TypeVar
22

33
T = TypeVar("T")
4+
NestedList = T | list["NestedList"]
45

5-
nested_list = T | list["nested_list"]
66

7-
8-
def flatten(self: nested_list) -> Generator[T, None, None]:
7+
def flatten(self: NestedList) -> Generator[T, None, None]:
98
for i in self:
109
if isinstance(i, list):
1110
yield from flatten(i)

workspaces/adventure-pack/goodies/python3/src/flatten/test.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,5 @@ def test_flatten_random_types():
1212
dictionary = {"something": "something_else"}
1313
l = [["hi", -80, "c", 0.0], [[(3, 3), dictionary, 6], [5, 4, 3]], 2, 1, 0]
1414
flattened = list(flatten(l))
15-
assert isinstance(l[0], list)
1615
expected = ["hi", -80, "c", 0.0, (3, 3), dictionary, 6, 5, 4, 3, 2, 1, 0]
1716
assert flattened == expected
Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
from typing import TypeVar
22

3-
matrix_element = TypeVar("matrix_element")
3+
T = TypeVar("T")
44

55

6-
def transpose_matrix(
7-
input: list[list[matrix_element]],
8-
) -> list[list[matrix_element]]:
6+
def transpose_matrix(input: list[list[T]]) -> list[list[T]]:
97
r = len(input)
108
c = len(input[0]) if r != 0 else 0
119
if r == 0 or c == 0:
12-
raise ValueError("Can't transpose a matrix that has a 0 dimension")
10+
raise ValueError("Can't transpose a matrix that has a 0 dimension!")
1311
if any(len(row) != c for row in input):
14-
raise ValueError("Matrix has rows of different lengths")
12+
raise ValueError("Matrix has rows of different lengths!")
1513

1614
return [list(row) for row in zip(*input)]
Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from . import *
2+
23
import pytest
34

45

@@ -13,33 +14,30 @@ def test_improper_input() -> None:
1314
transpose_matrix([[0], [0, 1]])
1415

1516

16-
def test_nonsymetric_transpose() -> None:
17-
input_1 = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
18-
expected_1 = [[0, 4, 8], [1, 5, 9], [2, 6, 10], [3, 7, 11]]
19-
input_2 = [
17+
def test_nonsymmetric_transpose() -> None:
18+
matrix_1 = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
19+
transpose_1 = [[0, 4, 8], [1, 5, 9], [2, 6, 10], [3, 7, 11]]
20+
assert transpose_matrix(matrix_1) == transpose_1
21+
22+
matrix_2 = [
2023
["0", "1", "2"],
2124
["3", "4", "5"],
2225
["6", "7", "8"],
2326
["9", "10", "11"],
2427
]
25-
expected_2 = [
28+
transpose_2 = [
2629
["0", "3", "6", "9"],
2730
["1", "4", "7", "10"],
2831
["2", "5", "8", "11"],
2932
]
30-
input_3 = [[3, 1, 4], [1, 5, 9], [2, 6, 5], [3, 5, 8]]
31-
expected_3 = [[3, 1, 2, 3], [1, 5, 6, 5], [4, 9, 5, 8]]
32-
actual_1 = transpose_matrix(input_1)
33-
actual_2 = transpose_matrix(input_2)
34-
actual_3 = transpose_matrix(input_3)
35-
assert expected_1 == actual_1
36-
assert expected_2 == actual_2
37-
assert expected_3 == actual_3
38-
39-
40-
def test_symetric_transpose() -> None:
41-
input_1 = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
42-
expected = [[0, 3, 6], [1, 4, 7], [2, 5, 8]]
43-
actual = transpose_matrix(input_1)
33+
assert transpose_matrix(matrix_2) == transpose_2
4434

45-
assert expected == actual
35+
matrix_3 = [[3, 1, 4], [1, 5, 9], [2, 6, 5], [3, 5, 8]]
36+
transpose_3 = [[3, 1, 2, 3], [1, 5, 6, 5], [4, 9, 5, 8]]
37+
assert transpose_matrix(matrix_3) == transpose_3
38+
39+
40+
def test_symmetric_transpose() -> None:
41+
matrix = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
42+
expected = [[0, 3, 6], [1, 4, 7], [2, 5, 8]]
43+
assert transpose_matrix(matrix) == expected

0 commit comments

Comments
 (0)