Skip to content

Commit 8f72fba

Browse files
committed
docs: fix bugs in pseudocode
1 parent 2c6036e commit 8f72fba

File tree

6 files changed

+23
-19
lines changed

6 files changed

+23
-19
lines changed

levels/cycle_sort.gd

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ demonstration, in the actual level, swaps are used instead.
1010
1111
This results in a quadratic runtime but gives it the special property
1212
of being optimal in the number of writes to the array. This makes cycle
13-
sort useful in storage types where writes are very expensive or reduce
14-
its lifespan.
13+
sort useful in situations where writes are very expensive.
1514
1615
1716
If the highlighted element is less than the element below the blue
@@ -25,13 +24,17 @@ const CODE = """
2524
def cycle_sort(a):
2625
for i in range(len(a)):
2726
while True:
28-
position = 0
29-
for j in a:
30-
if a[j] > a[i]:
31-
position += 1
32-
if i == position:
27+
less = equal = 0
28+
for element in a:
29+
if element < a[i]:
30+
less += 1
31+
elif element == a[i]:
32+
equal += 1
33+
if less <= i and i < less + equal:
3334
break
34-
a.swap(i, position)
35+
while a[i] == a[less]:
36+
less += 1
37+
a.swap(i, less)
3538
"""
3639
const ACTIONS = {
3740
"SMALLER": "Left",

levels/merge_sort.gd

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@ def merge_sort(a):
2626
i = begin
2727
j = begin + size
2828
while len(merged) != size * 2:
29-
if i >= begin + size or a[j] < a[i]:
30-
merged.append(a[j])
31-
j += 1
29+
if i >= begin + size:
30+
merged += a[j:begin + size * 2]
31+
elif j >= begin + size * 2:
32+
merged += a[i:begin + size]
33+
elif a[i] < a[j]:
34+
merged.append(a[i++])
3235
else:
33-
merged.append(a[i])
34-
i += 1
35-
a[begin:begin + size] = merged
36+
merged.append(a[j++])
37+
a[begin:begin + size * 2] = merged
3638
size *= 2
3739
"""
3840
const ACTIONS = {

levels/quick_sort.gd

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,9 @@ extends ComparisonSort
2323
const CODE = """
2424
def quicksort(array, low=0, high=len(a) - 1):
2525
if low < high:
26-
pivot = a[high]
2726
pointer = low
2827
for i in range(low, high):
29-
if a[i] < pivot:
28+
if a[i] < a[high]:
3029
a.swap(i, pointer)
3130
pointer += 1
3231
a.swap(pointer, high)

levels/selection_sort.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const CODE = """
2222
def selection_sort(a):
2323
for i in range(len(a)):
2424
smallest = i
25-
for j in range(i, len(a)):
25+
for j in range(i + 1, len(a)):
2626
if a[j] < a[smallest]:
2727
smallest = j
2828
a.swap(i, smallest)

levels/shell_sort.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def shell_sort(a):
2727
for i in range(gap):
2828
for j in range(i, len(a) - gap, gap):
2929
k = j
30-
while k > gap and a[k - gap] > a[k]:
30+
while k > i and a[k - gap] > a[k]:
3131
a.swap(k - gap, k)
3232
k -= gap
3333
"""

scripts/levels.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func _reload():
4848
_restart()
4949
_load_scores(_level)
5050
$NamesContainer/Names/Current.text = _level.NAME
51-
$Level/Left/Code.text = _level.DESCRIPTION + "\n" + _level.CODE
51+
$Level/Left/Code.text = _level.DESCRIPTION + "\n\n" + _level.CODE.strip_edges()
5252
$Level/Right/Info/ControlsContainer/Controls.text = _level.CONTROLS
5353

5454
func _restart():

0 commit comments

Comments
 (0)