Skip to content
This repository was archived by the owner on Aug 22, 2025. It is now read-only.

Commit 566db28

Browse files
author
Holger Lösken
committed
Add task 5 in go
1 parent 620ccd7 commit 566db28

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

src/go/t5/s1.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package main
2+
3+
func Kcomplement(k int, numbers []int) int {
4+
pairs := 0
5+
occurrencesNumbers := make(map[int]int)
6+
7+
for _, number := range numbers {
8+
if _, ok := occurrencesNumbers[number]; ok {
9+
occurrencesNumbers[number]++
10+
} else {
11+
occurrencesNumbers[number] = 1
12+
}
13+
}
14+
15+
for number, occurrence := range occurrencesNumbers {
16+
result := k - number
17+
if _, ok := occurrencesNumbers[number]; ok {
18+
pairs += occurrence * occurrencesNumbers[result]
19+
}
20+
}
21+
22+
return pairs
23+
}

src/go/t5/s1_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
)
7+
8+
func TestKcomplement(t *testing.T) {
9+
type Input struct {
10+
k int
11+
numbers []int
12+
}
13+
14+
type test struct {
15+
input Input
16+
want int
17+
}
18+
19+
tests := []test {
20+
{
21+
input: Input {
22+
k: 6,
23+
numbers: []int { 1, 8, -3, 0, 1, 3, -2, 4, 5 },
24+
},
25+
want: 7,
26+
},
27+
}
28+
29+
for _, tc := range tests {
30+
got := Kcomplement(tc.input.k, tc.input.numbers)
31+
if !reflect.DeepEqual(tc.want, got) {
32+
t.Fatalf("input: %v, expected: %v, got: %v", tc.input, tc.want, got)
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)