Skip to content

Commit 939965a

Browse files
authored
Merge pull request #4 from go-nerds/adding-graph
Adding graph display option
2 parents 3aa43a9 + f1f626b commit 939965a

11 files changed

+204
-45
lines changed

bubble_sort.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ package main
22

33
import "time"
44

5-
func bubbleSortVisualizer(arr []int, delay time.Duration) {
5+
func bubbleSortVisualizer(arr []int, displayType string, delay time.Duration) {
66
n := len(arr)
77
for i := 0; i < n-1; i++ {
88
for j := 0; j < n-i-1; j++ {
9-
visualizeIteration(arr, j, j+1, delay)
9+
visualizeIteration(arr, j, j+1, displayType, delay)
1010
if arr[j] > arr[j+1] {
11-
visualizeIteration(arr, j, j+1, delay)
11+
visualizeIteration(arr, j, j+1, displayType, delay)
1212
arr[j], arr[j+1] = arr[j+1], arr[j]
13-
visualizeIteration(arr, j, j+1, delay)
13+
visualizeIteration(arr, j, j+1, displayType, delay)
1414
}
1515
}
1616
}

cocktail_shaker_sort.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,27 @@ package main
22

33
import "time"
44

5-
func cocktailShakerSortVisualizer(arr []int, delay time.Duration) {
5+
func cocktailShakerSortVisualizer(arr []int, displayType string, delay time.Duration) {
66
left := 0
77
right := len(arr) - 1
88

99
for left <= right {
1010
for i := left; i < right; i++ {
11-
visualizeIteration(arr, i, i+1, delay)
11+
visualizeIteration(arr, i, i+1, displayType, delay)
1212
if arr[i] > arr[i+1] {
13-
visualizeIteration(arr, i, i+1, delay)
13+
visualizeIteration(arr, i, i+1, displayType, delay)
1414
arr[i], arr[i+1] = arr[i+1], arr[i]
15-
visualizeIteration(arr, i, i+1, delay)
15+
visualizeIteration(arr, i, i+1, displayType, delay)
1616
}
1717
}
1818
right--
1919

2020
for i := right; i > left; i-- {
21-
visualizeIteration(arr, i-1, i, delay)
21+
visualizeIteration(arr, i-1, i, displayType, delay)
2222
if arr[i-1] > arr[i] {
23-
visualizeIteration(arr, i-1, i, delay)
23+
visualizeIteration(arr, i-1, i, displayType, delay)
2424
arr[i], arr[i-1] = arr[i-1], arr[i]
25-
visualizeIteration(arr, i-1, i, delay)
25+
visualizeIteration(arr, i-1, i, displayType, delay)
2626
}
2727
}
2828
left++

comb_sort.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package main
22

33
import "time"
44

5-
func combSortVisualizer(arr []int, delay time.Duration) {
5+
func combSortVisualizer(arr []int, displayType string, delay time.Duration) {
66
n := len(arr)
77
gap := n
88
swapped := true
@@ -12,11 +12,11 @@ func combSortVisualizer(arr []int, delay time.Duration) {
1212
swapped = false
1313

1414
for i := 0; i < n-gap; i++ {
15-
visualizeIteration(arr, i, i+gap, delay)
15+
visualizeIteration(arr, i, i+gap, displayType, delay)
1616
if arr[i] > arr[i+gap] {
17-
visualizeIteration(arr, i, i+gap, delay)
17+
visualizeIteration(arr, i, i+gap, displayType, delay)
1818
arr[i], arr[i+gap] = arr[i+gap], arr[i]
19-
visualizeIteration(arr, i, i+gap, delay)
19+
visualizeIteration(arr, i, i+gap, displayType, delay)
2020
swapped = true
2121
}
2222
}

gnome_sort.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ package main
22

33
import "time"
44

5-
func gnomeSortVisualizer(arr []int, delay time.Duration) {
5+
func gnomeSortVisualizer(arr []int, displayType string, delay time.Duration) {
66
i := 1
77

88
for i < len(arr) {
99
if i == 0 || arr[i] >= arr[i-1] {
10-
visualizeIteration(arr, i-1, i, delay)
10+
visualizeIteration(arr, i-1, i, displayType, delay)
1111
i++
1212
} else {
13-
visualizeIteration(arr, i-1, i, delay)
13+
visualizeIteration(arr, i-1, i, displayType, delay)
1414
arr[i], arr[i-1] = arr[i-1], arr[i]
15-
visualizeIteration(arr, i-1, i, delay)
15+
visualizeIteration(arr, i-1, i, displayType, delay)
1616
i--
1717
if i == 0 {
1818
i = 1

go.mod

+10
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,19 @@ module github.com/go-nerds/cli-algorithms-visualizer
33
go 1.20
44

55
require (
6+
atomicgo.dev/cursor v0.1.3 // indirect
7+
atomicgo.dev/keyboard v0.2.9 // indirect
8+
atomicgo.dev/schedule v0.0.2 // indirect
69
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
10+
github.com/containerd/console v1.0.3 // indirect
711
github.com/gookit/color v1.5.3 // indirect
12+
github.com/lithammer/fuzzysearch v1.1.8 // indirect
813
github.com/manifoldco/promptui v0.9.0 // indirect
14+
github.com/mattn/go-runewidth v0.0.14 // indirect
15+
github.com/pterm/pterm v0.12.63 // indirect
16+
github.com/rivo/uniseg v0.4.4 // indirect
917
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
1018
golang.org/x/sys v0.10.0 // indirect
19+
golang.org/x/term v0.10.0 // indirect
20+
golang.org/x/text v0.11.0 // indirect
1121
)

go.sum

+97
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,110 @@
1+
atomicgo.dev/cursor v0.1.3 h1:w8GcylMdZRyFzvDiGm3wy3fhZYYT7BwaqNjUFHxo0NU=
2+
atomicgo.dev/cursor v0.1.3/go.mod h1:Lr4ZJB3U7DfPPOkbH7/6TOtJ4vFGHlgj1nc+n900IpU=
3+
atomicgo.dev/keyboard v0.2.9 h1:tOsIid3nlPLZ3lwgG8KZMp/SFmr7P0ssEN5JUsm78K8=
4+
atomicgo.dev/keyboard v0.2.9/go.mod h1:BC4w9g00XkxH/f1HXhW2sXmJFOCWbKn9xrOunSFtExQ=
5+
atomicgo.dev/schedule v0.0.2 h1:2e/4KY6t3wokja01Cyty6qgkQM8MotJzjtqCH70oX2Q=
6+
atomicgo.dev/schedule v0.0.2/go.mod h1:xeUa3oAkiuHYh8bKiQBRojqAMq3PXXbJujjb0hw8pEU=
7+
github.com/MarvinJWendt/testza v0.1.0/go.mod h1:7AxNvlfeHP7Z/hDQ5JtE3OKYT3XFUeLCDE2DQninSqs=
8+
github.com/MarvinJWendt/testza v0.2.1/go.mod h1:God7bhG8n6uQxwdScay+gjm9/LnO4D3kkcZX4hv9Rp8=
9+
github.com/MarvinJWendt/testza v0.2.8/go.mod h1:nwIcjmr0Zz+Rcwfh3/4UhBp7ePKVhuBExvZqnKYWlII=
10+
github.com/MarvinJWendt/testza v0.2.10/go.mod h1:pd+VWsoGUiFtq+hRKSU1Bktnn+DMCSrDrXDpX2bG66k=
11+
github.com/MarvinJWendt/testza v0.2.12/go.mod h1:JOIegYyV7rX+7VZ9r77L/eH6CfJHHzXjB69adAhzZkI=
12+
github.com/MarvinJWendt/testza v0.3.0/go.mod h1:eFcL4I0idjtIx8P9C6KkAuLgATNKpX4/2oUqKc6bF2c=
13+
github.com/MarvinJWendt/testza v0.4.2/go.mod h1:mSdhXiKH8sg/gQehJ63bINcCKp7RtYewEjXsvsVUPbE=
14+
github.com/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk=
115
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
216
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
317
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
418
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
19+
github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=
20+
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
21+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
22+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
23+
github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ=
24+
github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo=
525
github.com/gookit/color v1.5.3 h1:twfIhZs4QLCtimkP7MOxlF3A0U/5cDPseRT9M/+2SCE=
626
github.com/gookit/color v1.5.3/go.mod h1:NUzwzeehUfl7GIb36pqId+UGmRfQcU/WiiyTTeNjHtE=
27+
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
28+
github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
29+
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
30+
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
31+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
32+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
33+
github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4=
34+
github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4=
735
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
836
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
37+
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
38+
github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
39+
github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
40+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
41+
github.com/pterm/pterm v0.12.27/go.mod h1:PhQ89w4i95rhgE+xedAoqous6K9X+r6aSOI2eFF7DZI=
42+
github.com/pterm/pterm v0.12.29/go.mod h1:WI3qxgvoQFFGKGjGnJR849gU0TsEOvKn5Q8LlY1U7lg=
43+
github.com/pterm/pterm v0.12.30/go.mod h1:MOqLIyMOgmTDz9yorcYbcw+HsgoZo3BQfg2wtl3HEFE=
44+
github.com/pterm/pterm v0.12.31/go.mod h1:32ZAWZVXD7ZfG0s8qqHXePte42kdz8ECtRyEejaWgXU=
45+
github.com/pterm/pterm v0.12.33/go.mod h1:x+h2uL+n7CP/rel9+bImHD5lF3nM9vJj80k9ybiiTTE=
46+
github.com/pterm/pterm v0.12.36/go.mod h1:NjiL09hFhT/vWjQHSj1athJpx6H8cjpHXNAK5bUw8T8=
47+
github.com/pterm/pterm v0.12.40/go.mod h1:ffwPLwlbXxP+rxT0GsgDTzS3y3rmpAO1NMjUkGTYf8s=
48+
github.com/pterm/pterm v0.12.63 h1:fHlrpFiI9qLtEU0TWDWMU+tAt4qKJ/s157BEAPtGm8w=
49+
github.com/pterm/pterm v0.12.63/go.mod h1:Bq1eoUJ6BhUzzXG8WxA4l7T3s7d3Ogwg7v9VXlsVat0=
50+
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
51+
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
52+
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
53+
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
54+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
55+
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
56+
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
57+
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
58+
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
959
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
1060
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
61+
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
62+
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
63+
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
64+
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
65+
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
66+
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
67+
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
68+
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
69+
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
70+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
71+
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
72+
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1173
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
74+
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
75+
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
76+
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
77+
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
78+
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
79+
golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
80+
golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
81+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
82+
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
83+
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1284
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
1385
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
86+
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
87+
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
88+
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
89+
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
90+
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
91+
golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c=
92+
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
93+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
94+
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
95+
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
96+
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
97+
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
98+
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
99+
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
100+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
101+
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
102+
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
103+
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
104+
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
105+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
106+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
107+
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
108+
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
109+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
110+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

insertion_sort.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import (
44
"time"
55
)
66

7-
func insertionSortVisualizer(arr []int, delay time.Duration) {
7+
func insertionSortVisualizer(arr []int, displayType string, delay time.Duration) {
88
for i := 1; i < len(arr); i++ {
99
j := i
10-
visualizeIteration(arr, j-1, j, delay)
10+
visualizeIteration(arr, j-1, j, displayType, delay)
1111
for j > 0 && arr[j] < arr[j-1] {
12-
visualizeIteration(arr, j-1, j, delay)
12+
visualizeIteration(arr, j-1, j, displayType, delay)
1313
arr[j], arr[j-1] = arr[j-1], arr[j]
14-
visualizeIteration(arr, j-1, j, delay)
14+
visualizeIteration(arr, j-1, j, displayType, delay)
1515
j--
1616
}
1717
}

main.go

+23-9
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type options struct {
2626
func main() {
2727

2828
clearConsole()
29+
handleInterrupt()
2930

3031
arr := generateRandomArray(10)
3132
fmt.Println("Initial array:", arr)
@@ -86,6 +87,19 @@ func main() {
8687
return
8788
}
8889

90+
clearConsole()
91+
92+
displayPrompt := promptui.Select{
93+
Label: "Select Type of displaying",
94+
Items: []string{"Array", "Graph"},
95+
}
96+
97+
_, displayType, err := displayPrompt.Run()
98+
if err != nil {
99+
fmt.Printf("Prompt failed %v\n", err)
100+
return
101+
}
102+
89103
switch action {
90104
case "Description":
91105
printAlgorithmDescription(algorithms[i].Uuid)
@@ -117,29 +131,29 @@ func main() {
117131

118132
clearConsole()
119133

120-
runAlgorithm(algorithms[i].Uuid, arr, delay)
134+
runAlgorithm(algorithms[i].Uuid, arr, displayType, delay)
121135
default:
122136
fmt.Println("Invalid choice")
123137
return
124138
}
125139
}
126140

127-
func runAlgorithm(algorithm int, arr []int, delay time.Duration) {
141+
func runAlgorithm(algorithm int, arr []int, displayType string, delay time.Duration) {
128142
switch algorithm {
129143
case BubbleSort:
130-
bubbleSortVisualizer(arr, delay)
144+
bubbleSortVisualizer(arr, displayType, delay)
131145
case SelectionSort:
132-
selectionSortVisualizer(arr, delay)
146+
selectionSortVisualizer(arr, displayType, delay)
133147
case InsertionSort:
134-
insertionSortVisualizer(arr, delay)
148+
insertionSortVisualizer(arr, displayType, delay)
135149
case GnomeSort:
136-
gnomeSortVisualizer(arr, delay)
150+
gnomeSortVisualizer(arr, displayType, delay)
137151
case CocktailShakerSort:
138-
cocktailShakerSortVisualizer(arr, delay)
152+
cocktailShakerSortVisualizer(arr, displayType, delay)
139153
case CombSort:
140-
combSortVisualizer(arr, delay)
154+
combSortVisualizer(arr, displayType, delay)
141155
case OddEvenSort:
142-
oddEvenSortVisualizer(arr, delay)
156+
oddEvenSortVisualizer(arr, displayType, delay)
143157
default:
144158
fmt.Println("Invalid selection")
145159
}

odd_even_sort.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,28 @@ package main
22

33
import "time"
44

5-
func oddEvenSortVisualizer(arr []int, delay time.Duration) {
5+
func oddEvenSortVisualizer(arr []int, displayType string, delay time.Duration) {
66
n := len(arr)
77
sorted := false
88

99
for !sorted {
1010
sorted = true
1111
for i := 1; i <= n-2; i += 2 {
12-
visualizeIteration(arr, i, i+1, delay)
12+
visualizeIteration(arr, i, i+1, displayType, delay)
1313
if arr[i] > arr[i+1] {
14-
visualizeIteration(arr, i, i+1, delay)
14+
visualizeIteration(arr, i, i+1, displayType, delay)
1515
arr[i], arr[i+1] = arr[i+1], arr[i]
16-
visualizeIteration(arr, i, i+1, delay)
16+
visualizeIteration(arr, i, i+1, displayType, delay)
1717
sorted = false
1818
}
1919
}
2020

2121
for i := 0; i <= n-2; i += 2 {
22-
visualizeIteration(arr, i, i+1, delay)
22+
visualizeIteration(arr, i, i+1, displayType, delay)
2323
if arr[i] > arr[i+1] {
24-
visualizeIteration(arr, i, i+1, delay)
24+
visualizeIteration(arr, i, i+1, displayType, delay)
2525
arr[i], arr[i+1] = arr[i+1], arr[i]
26-
visualizeIteration(arr, i, i+1, delay)
26+
visualizeIteration(arr, i, i+1, displayType, delay)
2727
sorted = false
2828
}
2929
}

selection_sort.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ import (
44
"time"
55
)
66

7-
func selectionSortVisualizer(arr []int, delay time.Duration) {
7+
func selectionSortVisualizer(arr []int, displayType string, delay time.Duration) {
88
for i := 0; i < len(arr); i++ {
99
min := i
1010
for j := i + 1; j < len(arr); j++ {
11-
visualizeIteration(arr, i, j, delay)
11+
visualizeIteration(arr, i, j, displayType, delay)
1212
if arr[j] < arr[min] {
13-
visualizeIteration(arr, i, j, delay)
13+
visualizeIteration(arr, i, j, displayType, delay)
1414
min = j
1515
}
1616
}
1717
arr[i], arr[min] = arr[min], arr[i]
18-
visualizeIteration(arr, i, min, delay)
18+
visualizeIteration(arr, i, min, displayType, delay)
1919
}
2020
}

0 commit comments

Comments
 (0)