Selaa lähdekoodia

Adding Solution for 1128

Vinicius Teshima 2 viikkoa sitten
vanhempi
sitoutus
744893064f
1 muutettua tiedostoa jossa 64 lisäystä ja 0 poistoa
  1. 64 0
      Go/1128.go

+ 64 - 0
Go/1128.go

@@ -0,0 +1,64 @@
+package main
+
+import (
+	"fmt"
+	"os"
+)
+
+func numEquivDominoPairs(dominoes [][]int) int {
+	var ret int = 0
+
+	var out_size int = len(dominoes)
+
+	var seen map[string][]int = make(map[string][]int)
+	var ok bool
+
+	var i int = 0
+	for i = 0; i < out_size; i += 1 {
+		var a, b rune = rune(dominoes[i][0]), rune(dominoes[i][1])
+
+		var key string = string([]rune{a, b})
+
+		var idxs []int
+		idxs, ok = seen[key]
+		if ok { seen[key] = append(idxs, i); continue }
+
+		var inv_key string = string([]rune{b, a})
+		idxs, ok = seen[inv_key]
+		if ok { seen[inv_key] = append(idxs, i); continue }
+
+		seen[key] = []int{ i }
+	}
+
+	permuts_num := func (list []int) int {
+		var ret int = 0
+
+		var list_size int = len(list)
+		var i int = 0
+		for ; i < list_size; i += 1 {
+			var j int = i+1
+			for ; j < list_size; j += 1 { ret += 1 }
+		}
+
+		return ret
+	}
+
+	for _, v := range seen { ret += permuts_num(v) }
+
+	return ret
+}
+
+func main() {
+	r := func(dominoes [][]int, exp int) {
+		fmt.Printf(
+			"numEquivDominoPairs(%v) = %v | exp: %v\n", dominoes,
+			numEquivDominoPairs(dominoes), exp,
+		)
+	}
+
+	r([][]int{{1, 2}, {2, 1}, {3, 4}, {5, 6}}, 1)
+	r([][]int{{1, 2}, {1, 2}, {1, 1}, {1, 2}, {2, 2}}, 3)
+	r([][]int{{2, 1}, {1, 2}, {1, 2}, {1, 2}, {2, 1}, {1, 1}, {1, 2}, {2, 2}}, 15)
+
+	os.Exit(0)
+}