diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..797acea --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/golang-basic/latihan/test.go b/golang-basic/latihan/test.go deleted file mode 100644 index 06ab7d0..0000000 --- a/golang-basic/latihan/test.go +++ /dev/null @@ -1 +0,0 @@ -package main diff --git a/golang-basic/latihan/tugas1/01-arif.go b/golang-basic/latihan/tugas1/01-arif.go new file mode 100644 index 0000000..236f7ba --- /dev/null +++ b/golang-basic/latihan/tugas1/01-arif.go @@ -0,0 +1,22 @@ +package main + +import "fmt" + +func main() { + var kata string + + fmt.Scan(&kata) + + result := isPalindrome(kata) + + fmt.Println(result) +} + +func isPalindrome(kata string) (isPalindrome bool) { + for i := 0; i < len(kata)/2; i++ { + if kata[i] == kata[len(kata)-i-1] { + isPalindrome = true + } + } + return +} diff --git a/golang-basic/latihan/tugas1/01-arif_test.go b/golang-basic/latihan/tugas1/01-arif_test.go new file mode 100644 index 0000000..8004310 --- /dev/null +++ b/golang-basic/latihan/tugas1/01-arif_test.go @@ -0,0 +1,42 @@ +package main + +import "testing" + +func Test_isPalindrome(t *testing.T) { + type args struct { + kata string + } + tests := []struct { + name string + args args + wantIsPalindrome bool + }{ + { + name : "test", + args : args{ + "katak", + }, + wantIsPalindrome : true, + }, + { + name : "test", + args : args{ + "kata", + }, + wantIsPalindrome : false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if gotIsPalindrome := isPalindrome(tt.args.kata); gotIsPalindrome != tt.wantIsPalindrome { + t.Errorf("isPalindrome() = %v, want %v", gotIsPalindrome, tt.wantIsPalindrome) + } + }) + } +} + +func BenchmarkIsPalindrome(b *testing.B) { + for i := 0; i < b.N; i++ { + isPalindrome("katak") + } +} diff --git a/golang-basic/latihan/tugas1/go.mod b/golang-basic/latihan/tugas1/go.mod new file mode 100644 index 0000000..37bab88 --- /dev/null +++ b/golang-basic/latihan/tugas1/go.mod @@ -0,0 +1,3 @@ +module tugas1 + +go 1.17 diff --git a/golang-basic/latihan/tugas2/02-arif.go b/golang-basic/latihan/tugas2/02-arif.go new file mode 100644 index 0000000..39a8885 --- /dev/null +++ b/golang-basic/latihan/tugas2/02-arif.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + var kata string + + fmt.Scan(&kata) + + kata2 := kata[0] + + result := checkConsonant(string(kata2)) + + fmt.Print(result) +} + +func checkConsonant(ch string) string { + ch = strings.ToLower(ch) + + if ch == "a" || ch == "i" || ch == "u" || ch == "e" || ch == "o" { + return "Vokal" + } + + return "Konsonan" +} + +func checkConsonantWithPackage(input string) string { + vowels := "aeiou" + + if strings.Contains(vowels, input) { + return "Vokal" + } + + return "Konsonan" +} diff --git a/golang-basic/latihan/tugas2/02-arif_test.go b/golang-basic/latihan/tugas2/02-arif_test.go new file mode 100644 index 0000000..d21dfe3 --- /dev/null +++ b/golang-basic/latihan/tugas2/02-arif_test.go @@ -0,0 +1,151 @@ +package main + +import "testing" + +func Test_checkConsonant(t *testing.T) { + type args struct { + ch string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "Test untuk konsonan", + args: args{ + ch: "k", + }, + want: "Konsonan", + }, + { + name: "Test untuk konsonan 2", + args: args{ + ch: "p", + }, + want: "Konsonan", + }, + { + name: "Test untuk Vokal a", + args: args{ + ch: "a", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal i", + args: args{ + ch: "i", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal u", + args: args{ + ch: "u", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal e", + args: args{ + ch: "e", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal o", + args: args{ + ch: "o", + }, + want: "Vokal", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := checkConsonant(tt.args.ch); got != tt.want { + t.Errorf("checkConsonant() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_checkConsonantWithPackage(t *testing.T) { + type args struct { + input string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "Test untuk konsonan", + args: args{ + input: "k", + }, + want: "Konsonan", + }, + { + name: "Test untuk konsonan 2", + args: args{ + input: "p", + }, + want: "Konsonan", + }, + { + name: "Test untuk Vokal a", + args: args{ + input: "a", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal i", + args: args{ + input: "i", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal u", + args: args{ + input: "u", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal e", + args: args{ + input: "e", + }, + want: "Vokal", + }, + { + name: "Test untuk Vokal o", + args: args{ + input: "o", + }, + want: "Vokal", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := checkConsonantWithPackage(tt.args.input); got != tt.want { + t.Errorf("checkConsonantWithPackage() = %v, want %v", got, tt.want) + } + }) + } +} + +func BenchmarkCheckConsonant(b *testing.B) { + for i := 0; i < b.N; i++ { + checkConsonant("a") + } +} + +func BenchmarkCheckConsonantWithPackage(b *testing.B) { + for i := 0; i < b.N; i++ { + checkConsonantWithPackage("a") + } +} diff --git a/golang-basic/latihan/tugas2/go.mod b/golang-basic/latihan/tugas2/go.mod new file mode 100644 index 0000000..3cb07f8 --- /dev/null +++ b/golang-basic/latihan/tugas2/go.mod @@ -0,0 +1,3 @@ +module tugas2 + +go 1.17