day 14
							parent
							
								
									3d524f518e
								
							
						
					
					
						commit
						0eb76944c1
					
				| @ -0,0 +1,102 @@ | |||||||
|  | CKKOHNSBPCPCHVNKHFFK | ||||||
|  | 
 | ||||||
|  | KO -> C | ||||||
|  | SO -> S | ||||||
|  | BF -> V | ||||||
|  | VN -> B | ||||||
|  | OV -> K | ||||||
|  | VH -> O | ||||||
|  | KV -> N | ||||||
|  | KB -> F | ||||||
|  | NB -> C | ||||||
|  | HS -> K | ||||||
|  | PF -> B | ||||||
|  | HB -> N | ||||||
|  | OC -> H | ||||||
|  | FS -> F | ||||||
|  | VV -> S | ||||||
|  | KF -> C | ||||||
|  | FN -> F | ||||||
|  | KP -> S | ||||||
|  | HO -> N | ||||||
|  | NH -> K | ||||||
|  | OO -> S | ||||||
|  | FB -> C | ||||||
|  | BP -> F | ||||||
|  | CH -> N | ||||||
|  | SN -> O | ||||||
|  | KN -> B | ||||||
|  | CV -> O | ||||||
|  | CC -> B | ||||||
|  | VB -> C | ||||||
|  | PH -> V | ||||||
|  | CO -> K | ||||||
|  | KS -> K | ||||||
|  | BK -> N | ||||||
|  | FH -> S | ||||||
|  | PV -> H | ||||||
|  | CB -> P | ||||||
|  | FO -> F | ||||||
|  | BB -> K | ||||||
|  | OB -> C | ||||||
|  | HH -> F | ||||||
|  | ON -> O | ||||||
|  | FK -> B | ||||||
|  | NF -> F | ||||||
|  | SV -> F | ||||||
|  | CP -> H | ||||||
|  | SS -> B | ||||||
|  | OP -> H | ||||||
|  | NS -> O | ||||||
|  | HK -> N | ||||||
|  | BC -> P | ||||||
|  | NV -> V | ||||||
|  | VS -> F | ||||||
|  | PC -> V | ||||||
|  | CS -> F | ||||||
|  | NP -> V | ||||||
|  | PS -> F | ||||||
|  | VC -> F | ||||||
|  | KK -> S | ||||||
|  | PO -> P | ||||||
|  | HF -> H | ||||||
|  | KC -> P | ||||||
|  | SF -> N | ||||||
|  | BV -> N | ||||||
|  | FF -> V | ||||||
|  | FV -> V | ||||||
|  | BO -> N | ||||||
|  | OS -> C | ||||||
|  | OF -> H | ||||||
|  | CN -> S | ||||||
|  | NO -> O | ||||||
|  | NC -> B | ||||||
|  | VK -> C | ||||||
|  | HN -> B | ||||||
|  | PK -> N | ||||||
|  | SK -> S | ||||||
|  | HV -> F | ||||||
|  | BH -> B | ||||||
|  | OK -> S | ||||||
|  | VO -> B | ||||||
|  | BS -> H | ||||||
|  | PP -> N | ||||||
|  | SC -> K | ||||||
|  | BN -> P | ||||||
|  | FC -> S | ||||||
|  | SB -> B | ||||||
|  | SH -> H | ||||||
|  | NN -> V | ||||||
|  | NK -> N | ||||||
|  | VF -> H | ||||||
|  | CF -> F | ||||||
|  | PB -> C | ||||||
|  | SP -> P | ||||||
|  | KH -> C | ||||||
|  | VP -> N | ||||||
|  | CK -> H | ||||||
|  | HP -> P | ||||||
|  | FP -> B | ||||||
|  | HC -> O | ||||||
|  | PN -> F | ||||||
|  | OH -> H | ||||||
| @ -0,0 +1,79 @@ | |||||||
|  | package main | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"bufio" | ||||||
|  | 	"fmt" | ||||||
|  | 	"log" | ||||||
|  | 	"os" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | func main() { | ||||||
|  | 	file, err := os.Open("input.txt") | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  | 	defer file.Close() | ||||||
|  | 
 | ||||||
|  | 	scanner := bufio.NewScanner(file) | ||||||
|  | 	scanner.Split(bufio.ScanLines) | ||||||
|  | 
 | ||||||
|  | 	insertions := make(map[string]string) | ||||||
|  | 	pairs := make(map[string]uint64) | ||||||
|  | 
 | ||||||
|  | 	var i int | ||||||
|  | 	var template string | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if line == "" { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		if i == 0 { | ||||||
|  | 			template = line | ||||||
|  | 			for j := 0; j < len(template)-1; j++ { | ||||||
|  | 				pairs[string(template[j])+string(template[j+1])]++ | ||||||
|  | 			} | ||||||
|  | 		} else { | ||||||
|  | 			var one, two, three rune | ||||||
|  | 			fmt.Sscanf(line, "%c%c -> %c", &one, &two, &three) | ||||||
|  | 			insertions[string(one)+string(two)] = string(three) | ||||||
|  | 		} | ||||||
|  | 		i++ | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var newPairs map[string]uint64 | ||||||
|  | 
 | ||||||
|  | 	for j := 0; j < 40; j++ { | ||||||
|  | 		newPairs = make(map[string]uint64) | ||||||
|  | 		for pair, count := range pairs { | ||||||
|  | 			firstNewPair := string(pair[0]) + insertions[pair] | ||||||
|  | 			secondNewPair := insertions[pair] + string(pair[1]) | ||||||
|  | 			newPairs[firstNewPair] += uint64(count) | ||||||
|  | 			newPairs[secondNewPair] += uint64(count) | ||||||
|  | 		} | ||||||
|  | 		pairs = newPairs | ||||||
|  | 		if j == 9 { | ||||||
|  | 			fmt.Println(count(&pairs)) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	fmt.Println(count(&pairs)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func count(pairs *map[string]uint64) uint64 { | ||||||
|  | 	counts := make(map[string]uint64) | ||||||
|  | 	for pair, count := range *pairs { | ||||||
|  | 		counts[string(pair[1])] += uint64(count) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var maxCount, minCount uint64 = 0, 0xffffffffffffffff | ||||||
|  | 
 | ||||||
|  | 	for _, total := range counts { | ||||||
|  | 		if total > maxCount { | ||||||
|  | 			maxCount = total | ||||||
|  | 		} | ||||||
|  | 		if total < minCount { | ||||||
|  | 			minCount = total | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return maxCount - minCount | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue