Piotr Czajkowski 3 月之前
父節點
當前提交
957e37b756
共有 1 個文件被更改,包括 52 次插入1 次删除
  1. 52 1
      23/code.go

+ 52 - 1
23/code.go

@@ -72,6 +72,56 @@ func part1(computers map[string][]string) int {
 	return len(unique)
 }
 
+func contains(nodes []string, connections map[string]bool) bool {
+	if len(connections) == 0 {
+		return true
+	}
+
+	for key, _ := range connections {
+		var isThere bool
+		for i := range nodes {
+			if nodes[i] == key {
+				isThere = true
+				break
+			}
+		}
+
+		if !isThere {
+			return false
+		}
+	}
+
+	return true
+}
+
+func connected(key string, computers map[string][]string, connections map[string]bool) {
+	if !contains(computers[key], connections) {
+		return
+	}
+
+	connections[key] = true
+	for _, value := range computers[key] {
+		if connections[value] {
+			continue
+		}
+
+		connected(value, computers, connections)
+	}
+}
+
+func part2(computers map[string][]string) int {
+	var allConnections []map[string]bool
+	for key, _ := range computers {
+		connections := make(map[string]bool)
+		connected(key, computers, connections)
+
+		allConnections = append(allConnections, connections)
+	}
+
+	fmt.Println(allConnections, len(allConnections))
+	return 0
+}
+
 func main() {
 	if len(os.Args) < 2 {
 		log.Fatal("You need to specify a file!")
@@ -84,5 +134,6 @@ func main() {
 	}
 
 	computers := readInput(file)
-	fmt.Println(part1(computers))
+	fmt.Println("Part1:", part1(computers))
+	fmt.Println("Part2:", part2(computers))
 }