diff --git a/day12/inp b/day12/inp index e69de29..86e9cac 100644 --- a/day12/inp +++ b/day12/inp @@ -0,0 +1,5 @@ +Sabqponm +abcryxxl +accszExk +acctuvwj +abdefghi diff --git a/day12/input b/day12/input index e69de29..d469653 100644 --- a/day12/input +++ b/day12/input @@ -0,0 +1,41 @@ +abcccaaaaaaccccccccaaaaaccccccaaaaaaccccccaaaaaaaacccaaaaaaaccaaaacccccccccccccccccccccccccaaaaaacccccccccccccccccccccccccccccaaaaaa +abcccaaaaaacccccccaaaaaaccccaaaaaaaacccccccaaaaaaaaaaaaaaaaccaaaaacccccccccccccccccccccccccaaaaaacccccccccccccccccccccccccccccaaaaaa +abccccaaaaacaaaccaaaaaaaacccaaaaaaaaacccccccaaaaaaaaaaaaaaaacaaaaaacccccccccaaacccccccccccaaaaaaaaccccccccccaaccccccccccccccccaaaaaa +abccccaaaaccaaaaaaaaaaaaacccaaaaaaaaaacccccaaaaaaaaaaaaaaaaaaacaaaacccccccccaaaacccccccccaaaaaaaaaacccccccccaaaccccccccccccccccccaaa +abcccccccccaaaaaacccaacccccccccaaacaaaccccccaacccccccaaaaaaaaacaacccccccccccaaaacccccccccaaaaaaaaaacccccccccaaaccacaaccccccccccccaaa +abcccccccccaaaaaacccaacccccccccaaacccccccccccccccccccaaaacaaaacccccccaacaaccaaaccccccccccaccaaaaacacccccccccaaaacaaaaccccccccccccaac +abccccccccccaaaaacccccccccccccccacccaaaacccccccccccccaaaacccccccccccccaaaacccccccccccaacccccaaaaccccccccjjjjaaaaaaaaaccccccccccccccc +abccccccccccaaaacccccccccccccccccccaaaaacccccccccccccaaaccccccccccccccaaaaacccccccccaaaaaacccaaccccccccjjjjjjkkaaaacccccccccaacccccc +abcccccaaccccccccccccccccccccccccccaaaaaacccccccccccccaacccccccccccccaaaaaaccccccccccaaaaaccccccccccccjjjjjjjkkkkaacccccaacaaacccccc +abccaaaacccccccccccccccccccccccccccaaaaaaccccccccccccccccccccccccccccaaaacaccccccccaaaaaaaccccaacccccjjjjoooookkkkkkkklllaaaaaaacccc +abccaaaaaacccccccccccccccccccccccccaaaaacccccccccccccccccccccccccccccccaaccccccccccaaaaaaaaccaaaaccccjjjoooooookkkkkkkllllaaaaaacccc +abcccaaaaacccccccccccccccccccccccccccaaaccccccccaaaacccccccccccccccccccccccccccccccaaaaaaaaccaaaaccccjjooooooooppkkppplllllaccaacccc +abccaaaaaccccccccccccaccccccccccccccccccccccccccaaaacccccccccccccccccccccccccccccccccaaacacccaaaacccijjooouuuuoppppppppplllccccccccc +abcccccaacccccccccccaaaaaaaaccccccccccccccccccccaaaaccccaaccccccccaaacccccccccccccaacaaccccccccccccciijoouuuuuuppppppppplllcccaccccc +abcccccccccccccccccccaaaaaaccccccccccccccccccccccaaccccaaaacccccccaaaaccccccccccaaaaaaccccccccccccciiiiootuuuuuupuuuvvpppllccccccccc +abcccccccccccccccccccaaaaaaccaaaaacccccccccccccccccccccaaaacccccccaaaaccccccccccaaaaaaccccccccccccciiinnotuuxxxuuuuvvvpppllccccccccc +abccccccccccccccacccaaaaaaaacaaaaaaacccccccccccccccccccaaaacccccccaaacccccaaaaccaaaaaccccaaccccccciiiinnnttxxxxuuyyyvvqqqllccccccccc +abcccccccccccaaaaccaaaaaaaaaaaaaaaaaaccaacccccccccccccccccccccccccccccccccaaaacccaaaaaccaaacccccciiinnnnnttxxxxxyyyyvvqqqllccccccccc +abaaaacccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccccccccaaaacccaaaaaacaaaccccciiinnnnttttxxxxxyyyyvvqqmmmccccccccc +abaaaaccccccccaaaaacccaaaaacaaaaaacaaaaaaccccccccccccccccaaccccccccccccccccaacccccccaaaaaaaaaaciiinnnnttttxxxxxyyyyvvqqqmmmccccccccc +SbaaaacccccccaaaaaccccaaaaaccaaaaaaaaaaaccccccccccccccccaaacaacccccccccccccccccccccccaaaaaaaaachhhnnntttxxxEzzzzyyvvvqqqmmmccccccccc +abaaaacccccccaacaacccccaaaaaaaacaaaaaaaaaccccccccccccccccaaaaaccccccccccccccccccccccccaaaaaaacchhhnnntttxxxxxyyyyyyvvvqqmmmdddcccccc +abaaaacccccccccccccccccccaaaaaacaaaaaaaaaacccccccccccccaaaaaaccccccccaaaccccccccccccccaaaaaaccchhhnnntttxxxxywyyyyyyvvvqqmmmdddccccc +abaacccccccccccccccccccaaaaaaacccccaaaaaaacccccccccccccaaaaaaaacccccaaaacccccccccccccaaaaaaacaahhhmmmttttxxwwyyyyyyyvvvqqmmmdddccccc +abcccccccccccccccccccccaaaaaaacaaccaaacccccccccccccccccaacaaaaacccccaaaacccccccccccccaaacaaaaaahhhmmmmtsssswwyywwwwvvvvqqqmmdddccccc +abcccccccccccccccaaaccccaaaaaaaaaacaaccaaccccccccccccccccaaacaccccccaaaacccccccccccccccccaaaaacahhhmmmmmsssswwywwwwwvvrrqqmmdddccccc +abcccccccccccccaaaaaaccccaaaaaaaaaccaaaacccccccccccccccccaacccccccccccccccccccccccaaaccccaaaaaaahhhhhmmmmssswwwwwrrrrrrrrmmmmddccccc +abcccccccccccccaaaaaaccccaaaaaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccaaaaaacccccaaaaachhhhhmmmmsswwwwrrrrrrrrrkkmdddccccc +abccccccccccccccaaaaaccccccaaaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccaaaaaaccccaaaaacccchhggmmmssswwrrrrrkkkkkkkkdddacccc +abccaaaacccccccaaaaacccccccccaaaaaacaaaaacccccccccccccccccccccccccccccccccccccccaaaaaaccccaacaaaccccggggmmsssssrrlkkkkkkkkkdddaccccc +abccaaaacccccccaaaaacccccccccaaaaaaccccaacccccccccccccccccccccccccccccccccccccccaaaaaccccccccaaccccccgggmllssssrllkkkkkkkeeeddaccccc +abccaaaacccccccaaacccccccccccaaaaaacccccccccccccccccccaacccccccccccccccccccccccaaaaaacccccccccccccccccggllllssslllkkeeeeeeeeeaaacccc +abcccaaccccccccaaacaaaccccccaaaaaaaaaaacccccccccccccaaaaaacccccccccccccccccccccaaacaaacccccaacccccccccggglllllllllfeeeeeeeeaaaaacccc +abccccccccccaaaaaaaaaaccccccccccccaccaaaccacccccccccaaaaaaccccaaccaacccaaccccccaaaaaaacccccaaccccccccccggglllllllfffeeecccaaaaaacccc +abccccccccccaaaaaaaaacccccccccccccccaaaaaaaccccccccccaaaaaccccaaaaaacccaaaaaaccaaaaaacccaaaaaaaacccccccggggllllfffffccccccaacccccccc +abcccccccccccaaaaaaacccccccccccccccccaaaaaaccaacccccaaaaaccccccaaaaacccaaaaaacaaaaaaacccaaaaaaaaccccccccgggffffffffccccccccccccccccc +abccccccccccccaaaaaaacccccccccccccaaaaaaaaacaaaaccccaaaaacaaaaaaaaaacaaaaaaacaaaaaaaaaccccaaaacccccccccccggffffffacccccccccccccccaaa +abccccccccccccaaaaaaacaaccccccccccaaaaaaaaacaaaacccccaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaacccaaaaacccccccccccaffffaaaaccccccccccccccaaa +abccccccccccccaaacaaaaaacccccccccccaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaacccaaacaaaccaaaaaacccccccccccccccccaaaccccccccccccccaaa +abccccccccccccaaccaaaaaccccccccccccccaaaaaaaccccaaaaaaaaaaaaccccaacccccaaaaaacccaaaccccccaaccaacccccccccccccccccaaacccccccccccaaaaaa +abcccccccccccccccaaaaaaaaccccccccccccaacccacccccccaaaaaaaaaaccccaacccccaaccccccccaccccccccccccccccccccccccccccccccccccccccccccaaaaaa diff --git a/day12/main.py b/day12/main.py new file mode 100644 index 0000000..709ac05 --- /dev/null +++ b/day12/main.py @@ -0,0 +1,53 @@ +import string +from collections import defaultdict +from pprint import pprint + +inputs = [x.strip() for x in open("input").readlines()] + +points = {} +graph = defaultdict(list) +start, starts, end = None, [], None +for y, line in enumerate(inputs): + for x, letter in enumerate(line): + point = complex(x, y) + if letter == "S": + value = 0 + start = point + starts.append(point) + elif letter == "a": + value = 0 + starts.append(point) + elif letter == "E": + value = 25 + end = point + else: + value = string.ascii_lowercase.index(letter) + points[point] = value + +for point in points: + for neighbor in [1 + 0j, -1 + 0j, 0 + 1j, 0 - 1j]: + if (point + neighbor) in points: + graph[point].append(point + neighbor) + + +def dijkstra(graph, source): + Q = list(graph.keys()) + dist = {v: float("inf") for v in graph} + dist[source] = 0 + + while Q: + u = min(Q, key=dist.get) + Q.remove(u) + + for v in graph[u]: + alt = dist[u] + 1 + if alt < dist[v] and points[u] - points[v] <= 1: + dist[v] = alt + + return dist + + +paths = dijkstra(graph, end) +pprint(paths) +print(paths[start]) +print(min(paths[s] for s in starts)) diff --git a/day12/solution.ts b/day12/solution.ts index 1bf3911..58f7d63 100644 --- a/day12/solution.ts +++ b/day12/solution.ts @@ -7,8 +7,116 @@ var rows = fileString.split("\n"); rows = rows.map(val => { return val.trim(); }); + rows = rows.filter(val => { return val.length > 0; }); -console.log(rows); +const grid = rows.map(val => { + return val.split(""); +}) + +var targetPos = [0,0]; +for (var i = 0; i < grid.length; i++) { + for (var j = 0; j < grid[i].length; j++) { + if (grid[i][j] == "E") { + console.log("target set", i, j); + targetPos = [i, j]; + grid[i][j] = "z"; + } + if (grid[i][j] == "S") { + grid[i][j] = "a"; + } + } +} + + +// Build Graph +var graph: {} = {}; +for (var i = 0; i < grid.length; i++) { + for (var j = 0; j < grid[i].length; j++) { + const idx = JSON.stringify([i, j]) + const height = grid[i][j].charCodeAt(0); + graph[idx] = { + "value": height, + "next": {} + }; + if (!((i - 1) < 0)) { + if ((grid[i - 1][j].charCodeAt(0) - height <= 1) && (grid[i - 1][j].charCodeAt(0) - height >= -1)) { + const nidx = JSON.stringify([i - 1, j]) + graph[idx]["next"][nidx] = 1; + } + } + if (!((i + 1) >= grid.length)) { + if ((grid[i + 1][j].charCodeAt(0) - height <= 1) && (grid[i + 1][j].charCodeAt(0) - height >= -1)) { + const nidx = JSON.stringify([i + 1, j]) + graph[idx]["next"][nidx] = 1; + } + } + if (!((j - 1) < 0)) { + if ((grid[i][j - 1].charCodeAt(0) - height <= 1) && (grid[i][j - 1].charCodeAt(0) - height >= -1)) { + const nidx = JSON.stringify([i, j - 1]) + graph[idx]["next"][nidx] = 1; + } + } + if (!((j + 1) >= grid[i].length)) { + if ((grid[i][j + 1].charCodeAt(0) - height <= 1) && (grid[i][j + 1].charCodeAt(0) - height >= -1)) { + const nidx = JSON.stringify([i, j + 1]) + graph[idx]["next"][nidx] = 1; + } + } + } +} + +function closestNode(distances: {}, visited) { + var shortest = null; + for (const node in distances) { + var curentShortest = shortest === null || distances[node] < distances[shortest]; + if (curentShortest && !visited.includes(node)) { + shortest = node; + } + } + return shortest; +} + +function findShortestPath(g:{}, startN: string, endN: string) { + var distances = {}; + distances[endN] = Infinity; + distances = Object.assign(distances, g[startN]["next"]); + + var parents = {endN: null}; + for (const neighbor in g[startN]["next"]) { + parents[neighbor] = startN; + } + + var visited = []; + var node = closestNode(distances, visited); + while (node) { + var distance = distances[node]; + var children = g[node]["next"]; + for (const child in children) { + if (child === startN) { + continue; + } else { + var newDistance = distance + children[child]; + if (!distances[child] || distances[child] > newDistance) { + distances[child] = newDistance; + parents[child] = node; + } + } + } + visited.push(node); + node = closestNode(distances, visited); + } + var shortestPath = [endN]; + var parent = parents[endN]; + while (parent) { + shortestPath.push(parent); + parent = parents[parent]; + } + shortestPath.reverse(); + return {d: distances[endN], s: shortestPath, dd: distances} +} +const res = findShortestPath(graph, JSON.stringify([0,0]), JSON.stringify(targetPos)) +console.log(res["dd"], res["d"]); + diff --git a/day13/.gitignore b/day13/.gitignore new file mode 100644 index 0000000..409c9e1 --- /dev/null +++ b/day13/.gitignore @@ -0,0 +1,86 @@ +node_modules/ +.node_modules/ +built/* +tests/cases/rwc/* +tests/cases/test262/* +tests/cases/perf/* +!tests/cases/webharness/compilerToString.js +test-args.txt +~*.docx +\#*\# +.\#* +tests/baselines/local/* +tests/baselines/local.old/* +tests/services/baselines/local/* +tests/baselines/prototyping/local/* +tests/baselines/rwc/* +tests/baselines/test262/* +tests/baselines/reference/projectOutput/* +tests/baselines/local/projectOutput/* +tests/baselines/reference/testresults.tap +tests/services/baselines/prototyping/local/* +tests/services/browser/typescriptServices.js +src/harness/*.js +src/compiler/diagnosticInformationMap.generated.ts +src/compiler/diagnosticMessages.generated.json +src/parser/diagnosticInformationMap.generated.ts +src/parser/diagnosticMessages.generated.json +rwc-report.html +*.swp +build.json +*.actual +tests/webTestServer.js +tests/webTestServer.js.map +tests/webhost/*.d.ts +tests/webhost/webtsc.js +tests/cases/**/*.js +!tests/cases/docker/*.js/ +tests/cases/**/*.js.map +*.config +scripts/eslint/built/ +scripts/debug.bat +scripts/run.bat +scripts/**/*.js +scripts/**/*.js.map +coverage/ +internal/ +**/.DS_Store +.settings +**/.vs +**/.vscode/* +!**/.vscode/tasks.json +!**/.vscode/settings.template.json +!**/.vscode/launch.template.json +!**/.vscode/extensions.json +!tests/cases/projects/projectOption/**/node_modules +!tests/cases/projects/NodeModulesSearch/**/* +!tests/baselines/reference/project/nodeModules*/**/* +.idea +yarn.lock +yarn-error.log +.parallelperf.* +tests/cases/user/*/package-lock.json +tests/cases/user/*/node_modules/ +tests/cases/user/*/**/*.js +tests/cases/user/*/**/*.js.map +tests/cases/user/*/**/*.d.ts +!tests/cases/user/zone.js/ +!tests/cases/user/bignumber.js/ +!tests/cases/user/discord.js/ +tests/baselines/reference/dt +.failed-tests +TEST-results.xml +package-lock.json +tests/cases/user/npm/npm +tests/cases/user/TypeScript-React-Starter/TypeScript-React-Starter +tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter +tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter +tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter +tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter +tests/cases/user/create-react-app/create-react-app +tests/cases/user/fp-ts/fp-ts +tests/cases/user/webpack/webpack +tests/cases/user/puppeteer/puppeteer +tests/cases/user/axios-src/axios-src +tests/cases/user/prettier/prettier +.eslintcache diff --git a/day13/d13-p1.py b/day13/d13-p1.py new file mode 100644 index 0000000..bdb37f8 --- /dev/null +++ b/day13/d13-p1.py @@ -0,0 +1,69 @@ +import json + +def test(leftside, rightside): + if isinstance(leftside, int) and isinstance(rightside, list): + leftside = [leftside] + elif isinstance(leftside, list) and isinstance(rightside, int): + rightside = [rightside] + if isinstance(leftside, int): + if leftside < rightside: + return True + elif rightside < leftside: + return False + else: + return None + else: + leftlen = len(leftside) + rightlen = len(rightside) + if leftlen <= rightlen: + minlen = leftlen + else: + minlen = rightlen + for i in range(minlen): + result = test(leftside[i], rightside[i]) + if result != None: + return result + if leftlen > minlen: + return False + elif rightlen > minlen: + return True + else: + return None + +def checkpair(pairno, pair): + if len(pair) == 2: + leftside = pair[0] + rightside = pair[1] + if test(leftside, rightside): + print(pairno, pair) + return pairno + else: + print(pairno, pair) + return 0 + else: + print(pairno, pair) + return 0 + +def process(filename): + result = 0 + + with open(filename) as infile: + filedata = infile.readlines() + + pair = [] + pairno = 1 + + for line in filedata: + line = line.rstrip() + if (line != ''): + pair.append(json.loads(line)) + else: + result += checkpair(pairno, pair) + pair = [] + pairno += 1 + result += checkpair(pairno, pair) + + return result + +result = process('input') +print(result) diff --git a/day13/day13.py b/day13/day13.py new file mode 100644 index 0000000..a6c1a27 --- /dev/null +++ b/day13/day13.py @@ -0,0 +1,50 @@ +from functools import cmp_to_key + +DEFAULT_INPUT = 'day13.txt' + +def part_1(loc: str = DEFAULT_INPUT) -> int: + with open(loc) as f: + pairs = [packets.split('\n') for packets in f.read().split('\n\n')] + for pair in pairs: + pair[0] = eval(pair[0]) + pair[1] = eval(pair[1]) + return sum(i + 1 for i, pair in enumerate(pairs) if in_order(*pair) == -1) + +def in_order(left: list, right: list) -> int: + i = 0 + while True: + if i == len(left) == len(right): + return 0 + if i == len(left): + return -1 + if i == len(right): + return 1 + left_current = left[i] + right_current = right[i] + if isinstance(left_current, int) and isinstance(right_current, int): + if left_current == right_current: + i += 1 + else: + return -1 if left_current < right_current else 1 + else: + if isinstance(left_current, int): + left_current = [left_current] + if isinstance(right_current, int): + right_current = [right_current] + correct_order = in_order(left_current, right_current) + if correct_order in (1, -1): + return correct_order + i += 1 + +def part_2(loc: str = DEFAULT_INPUT) -> int: + with open(loc) as f: + lines = [eval(line.strip()) for line in f.readlines() if line != '\n'] + lines.append([[2]]) + lines.append([[6]]) + lines.sort(key=cmp_to_key(in_order)) + return (lines.index([[2]]) + 1) * (lines.index([[6]]) + 1) + + +if __name__ == '__main__': + print('Solution for Part One:', part_1()) + print('Solution for Part Two:', part_2()) diff --git a/day13/day13.txt b/day13/day13.txt new file mode 100644 index 0000000..af73fbb --- /dev/null +++ b/day13/day13.txt @@ -0,0 +1,23 @@ +[1,1,3,1,1] +[1,1,5,1,1] + +[[1],[2,3,4]] +[[1],4] + +[9] +[[8,7,6]] + +[[4,4],4,4] +[[4,4],4,4,4] + +[7,7,7,7] +[7,7,7] + +[] +[3] + +[[[]]] +[[]] + +[1,[2,[3,[4,[5,6,7]]]],8,9] +[1,[2,[3,[4,[5,6,0]]]],8,9] diff --git a/day13/inp b/day13/inp new file mode 100644 index 0000000..af73fbb --- /dev/null +++ b/day13/inp @@ -0,0 +1,23 @@ +[1,1,3,1,1] +[1,1,5,1,1] + +[[1],[2,3,4]] +[[1],4] + +[9] +[[8,7,6]] + +[[4,4],4,4] +[[4,4],4,4,4] + +[7,7,7,7] +[7,7,7] + +[] +[3] + +[[[]]] +[[]] + +[1,[2,[3,[4,[5,6,7]]]],8,9] +[1,[2,[3,[4,[5,6,0]]]],8,9] diff --git a/day13/input b/day13/input new file mode 100644 index 0000000..0d60fbd --- /dev/null +++ b/day13/input @@ -0,0 +1,449 @@ +[[[[],[7,10,6,5],[],[8]],0,1,[[8,10]],4],[[[4,0,3,2,0]],7],[[],3,[[0,2],8,5],[],[[2,10,4,6]]],[3],[5,[1,[8,0],10,1,[4,3,9,9]],1]] +[[0,2,7],[],[10,[[0,7,3,6]]],[2,[8],3]] + +[[],[[0,8,[],[0,8,6,7,10]],4,10,[[],9,[1],4,10],3],[[7,1,0],10,[[1,10,7,8],[3,7],[3,6],5],1,0],[9],[2,9,[[0,6,3]],[[7]],2]] +[[[],0,[[4,5,10],8]],[0,5],[[[1,8,8,8],2],0,[7,9],3]] + +[[3,[[10,2,8],3,0,[2,1],7]],[[[1,9,5,5,8],1,9,[9,2,4,5]],2,1,[[],[4,3],3]],[],[7,[6,4,[7,0,5]],[],[8],1]] +[[3],[],[[4,4],[[5,4,3],10,[1,3,9],9],3,1],[6,[0,[9,0,1,1,1]]],[]] + +[[4,0],[[[5,7,10,9],[1,8,0,3],[10]],9,10,[]],[5,[[1,3],5,3,[],[4,8,0,2,5]],0]] +[[8,0,[],[[7,5,4,6,3],0,[9,4,8],0,6]],[1,3,9],[2,[[],5,8,8,8]],[[[6,5],4,[3,3],[4,0],0]]] + +[[],[2,[[3,0,5]]],[1,[7],[0,[10,3,9],10,[8,2,4,2,2],[5]],[[0,2,3,1],3,[8,6,0],2,[]]],[[[3,1,3,7,2],6,0,[3],7],[[7,2,4,10],[6,8,10,0,2]],5]] +[[],[9,[5,8,0,[3,10]],10],[6,6,9,0,[[4,8,5,2],[1,10,1,7,0]]]] + +[[7],[0,[2],3],[1,0],[[],2],[1,[[6],[4,3,10,2,5],[6,9,3,3,0],[8,5],10],[]]] +[[],[[1,[5,1,7,9,6],[],[4,7,9,10,10]],7,1,[4,4,[3],[2],9]],[8],[[[5],[5,6],6,5],[]],[9,9,6,9,10]] + +[[0,[0,9,7,4],[[10,8,8,4]]],[[[9,7,0],[9,0],5,1]],[],[9],[0,[4,4],1,[6,[3,9,6],[6,7,2,9,9],3],5]] +[[[2,[1,3,6],5,9,10]],[]] + +[[[[4,4]]],[3,[[1,5,2,9],[2,2],[8,0],[7,2]],[8,[],7,10,5],3]] +[[[1]],[],[3],[[3,[2,8,7,8],[],[9],[]]]] + +[[[8],10],[4,2,[4,[],9,8,2],[2,[2,9,6]],7],[9,2,5,5,[7,4]],[5,[[5,2,4,9,7],[6,2,4,3],[6,7,1],9],8],[[[1],6,1,[8,5,9,1]],[[6],[7,0,10,1],2,[6,9,8,2,3],[6,3]]]] +[[],[7],[9,8]] + +[[],[4,10,3,[],[[2,0,7,6],[0,1],8]]] +[[[],5],[6,0,1],[6,[[7,10,3,10]]],[],[[[8,10,3,5,6],[],[3,5,10,8]]]] + +[[[[9,3,3,1,6]],7,5,[],[[4,3]]],[9,[[10,2]],[8,[2,5,3,6],[9,6],10,10],[3,[10,6],[9]],[9,[9,9,10],4]]] +[[6,9],[[],3,4]] + +[[6,[[2,2],[],[6],9,[7]],9,[]],[[[8,8],1,10],5,4,7],[[],5],[10,8,8,[5,[1,3,5],[3,8]]]] +[[[9],[[],[9,2,0],9,[4,3,10,0,5]],5,1,10],[[[1,3,8,9],[10,3,5,4,7],[10,7,9,7],0,[8,8,2]],7,3,[10,[2,2,4,4,4]],[9,10,[]]]] + +[[7,1,7,[],0],[8,3,[],8]] +[[[[0,1],9,9,[6],[]],8,4,0,5],[10,3,7],[9,[[8]],3,7,3],[[[],[10,10,2],3,[2,7,10,5,8],[0,5]],0]] + +[[10,[]],[[7,4,7,[8,0,6]],[6,3,[6,9,10,4,6],[5,10,8]],1,[[]],2],[[2,[1,5,4,3,1]],1,[[2],[6,8,0,9],[2],[5,7,5],7],9,[[0,8,9],2]],[3,4,[9],0,3]] +[[4],[8,[3,[1,6,4,7,2],10,5],[2]]] + +[[2,[4,9,2,4,[0,4,4,1]],1,[[8,9,2]]]] +[[[],8,[[6,8,8]],[7,3,3,[7,5,9,0,7]]]] + +[[1,6],[6,7,4,[[1,3]]],[4,[6,5,[4,6,6],[6]],[],[9]],[[[8,5,1,10],0,[7,0,4],1],[[8,9,6,3],[1,4,4,8,6],4,9,5],8]] +[[],[[],[7,[0,10,8,5,10],0,[3,9,3,3,1],[6]],[[0,8],[0,2,3,5,0],7,9,3],[6,[6,4]]],[6,8],[[0,1,8,[1,9],3],[5],[2,[8,10,5,1],[6]]],[[7,0,[9,6,3,3,1],10],[[4,0,3],5,3,1,[9,7]],[[7,8,5,3],[7,10,7],6,[3,4,3,3]],[7,[4,2],[8,0,3,8,3]]]] + +[[[[6],[3]],4],[[[0,0],[10,0,3],2,2,[7,10,1]],[]],[[[5,5,10],5,[0],[7,5,0,3,8]],[]],[6,4,[1,[10,4],1],[[8,6,4,8,2],[8,10,0],[10,7,8,3,9],[0,8],[6,5,0]]]] +[[0,[9,3],1,[9],[0,2,[8,10],[3,5,7,10,1],6]],[4,5,3,[]],[7,[1],0,[[2,9,9,7,10],[5,5],9,[]],7],[]] + +[[[],[],5,[[8,6,5],7],6],[],[[],5,[],[[7,9,1,3],[4,2],[2,7,5,9],5]],[],[]] +[[3],[1,2,4,[6],2],[[6],8],[],[[[],[5]],[4,[5,0,10],[5],[8,8,4,10,9]],1,4,4]] + +[[3,7,[5,[6,9,6,9,6]],[],[0,[4,2,8,4,4]]],[5,[],9,5,5],[]] +[[7,0,3,8,[5,6,7]],[2,[0,[],1,6,6],[[5],[0],[1,4]]]] + +[[[5,5,3,2],[],[5,[1,3],[2,7,2],[10]],9,[7,[8,3],9]],[[6,5,8],7,[[2],8,2],[0,5],8]] +[[[[]],7,[[],[4],6],7,[3,[]]],[4],[[[7]]],[]] + +[[],[3,9,[[2],[0,8]],[[8,3,8,9,1],4,3],[9,4,5]],[[[7,0,10],[5,8,5,4,0]],[[1,5,7,1,0],[],7,4,6],[1],[6,[6,9,2,0,3],4,9,[10,7,1,8]]],[6,4,[[],[8],6]]] +[[],[[]],[[[2,2,10,7,10],4,[],[10,3,3,2,8]],[5],[[2,0,3,7],1,[],[3,4,3,10]]]] + +[[10,10,[[],1,0,4,[3,3,9,10]]]] +[[10,1,4,[5],6],[[0,6,[]],2,5],[7,6,[[]]],[1,9,5,[],[[6],2]]] + +[[[],[],4,[1,[5,10,2,3,4],[7,1]],[7,0,[2,2,3],7]],[[[],[1,2,6],[2,9,0],[7],[]],0],[[[],5,[2,6]]]] +[[10,4,10],[[3,[2,5,1,0],4],[6,7],7,3],[8,1,2,2],[[[3],2,[2,4,8,7,9]],[],9,0],[[[3,3],9,2,[2,1,1,7,3],8]]] + +[[],[0],[[[6],[],[6,2]],1,3,[2,7,[4,10,2,7,9]],[[1,5,9,0,10]]]] +[[[3,6,2,3,4],10,[6,[0,1,1],2,8,[6,9,0,4]],4],[[],[[2,10,6,6,0]],6,[[2,6,7,8],[6,10]]],[[[7,5,6],7,[0]],[10,6,0]]] + +[[0],[[]],[[2,[0,10],9,[]],[7],6,[]],[[4,0,2,10,[1,9,2]]]] +[[[[],[4],5,[4,9]],[8,[5]]],[10,10,2,[9,7,[8,7,3,8,3],10,1]],[4,[[6,10,5],[3,6,2],1,[7],[8]],[1],[]],[]] + +[[[2],0,[2]],[2],[[[10,5],9,4,5],3,[[2],6],[[6,7,3,8,0],2,5,8],6],[]] +[[[[6]]],[1,5,8,6],[[7,0],3],[[[6,8,7],[5],[],[8,4,5],10],2,10]] + +[[[0],10],[[[1,3,5,2],[5,4,0],9,0],[[]],[5,[4,10]]],[0],[]] +[[8,10],[0,10,[],[[1,6,3,9,1]]]] + +[[[5,[9,3,4],7,1,1],[4],[8]],[[1,10],9],[]] +[[[[2],2,[]],8,4,[10,[0,1]]],[6,4,1,9,4],[[2,6,[0,8,2,8],5],5,9,[[8]],[]],[6,3,[8,2,6]]] + +[[10,3],[5,[],3]] +[[],[[[4,1,2],4],[4],[6,2]],[[],[[7,8]],3,7,[2,[]]],[],[[9],10,[10],0]] + +[[[8,3,9],6,[],8,[[],[4,1,1]]],[]] +[[9,[[10]],[2,[4,2,5,5,9],[],2],[]]] + +[[10,10],[]] +[[[[8],8,1,[10,3],[6,3,7,5,0]],[5,[8,4,8,8,6]],0,[[]]],[],[1],[5,[6,[],5,2,[10]]],[3,10,[[6,4,0],[6],9,[3,8,9,10],[5]],[1,3,6,2],[[5,2,2,1],3,0,1]]] + +[[[[4]],[5,[3,5,9],5,4,[5,0,8]],[[1,5,2,3],[1,1],7,3,[0,2]],0,[]],[2]] +[[2],[[[5,3,2,4,10],[7,0,3,6,4],5]],[],[[[3,6],5,6],[5,[]]]] + +[[9,7],[8,1,6,3],[[8,5,[2,6,1]]],[[[1,0,2,1]],0,7],[]] +[[[10,[0,0],[],[7,5,10,1,1]],[],[9,[7,7,1,9,1],[7],[9,6,2]],10,10],[[[2,0,10,7,9],[1,7,8,2,7]],8,0,[[9,8,6,0,5]],3],[[10,7],[],[],1,[[3,6,5,8,8]]],[[5,[7,5,0]],[3,[10]],[7,6,[5,5,5]],[[10,4],5,[5]],3]] + +[[[3,[6]],0,5],[[[]],[8,[1,6],3,9],[9,[4,3,3,5],[10,0]],[6]],[0,[7,5,10,9,7]],[5,2,[[4,7],9,9]],[[9,8,6,9,[1]],1,3,8,[3]]] +[[[0,8,[0,0]],1],[5,[],5],[[9,[9]],0],[6,[[0,9,8,6]],[[4,10]]],[[[4,6],[8,7,3,3,6]],4]] + +[[[[10],4,1],3,[]]] +[[[0,4,[7,3,7,5,3],[6,9,10,3,8],[]],8,[[],5],[9]],[4,[8,[2,0,6,9,5],[4,10,7,7],3],[6,[10,6,4,10,4],[5],8,3],2],[[[],6,[10,2],[7,5,4,3]],6,[0],[]]] + +[[10,[[9,9,9,2,10],1,0,8,7],6,9],[8,[],[[],8,8,1,[]],[]]] +[[],[[0],[[],[7,9,6,0,9],3,1],[8,2,[]],[]],[6,1,[2,2,6],[6,0]]] + +[[[10,[0,7,8],[]],10,[0],5],[4,10,7,6,[]],[[9],[1,4,[5],[10,4,7,2,6],6],[7,[5,9]]],[5,1,[[6,1,7],[4],[]],7,9]] +[[],[1]] + +[[[5,6],[7,[5,10,10],[6,2,10]],7,1,[[8,9],6,[1,4,3],[8],8]],[[[8,0,9,0],4,[],5]],[1]] +[[[],[]],[8,3,[[3,4],4,3]],[[[2],[2,5,5],1,2],[9,4,[9,8,3,7,3]]]] + +[[8,4,[[3,1]],[]]] +[[0,[2,4,[],7,0],[[2,6,4],[2,3,9,1,3],[3,2,10,5],3],2],[[],[5,[3,3,8,8]],3],[[[]],9,1],[[9,[5]],[6,[9,0],[4],[]],4,4,[2,8,7]]] + +[[[5,4,8,1,[4]],6,6],[[[9],2,[8,10,3,10],[7,6,9,6],[4,4,6,6]],1,3,2],[3,0],[5,[],[[],[10]],[2,6,[2,0,5,7,9],[0]],5]] +[[[10],0],[[[],1,4,4,[]],[1,[8,3,7,0,6],1,[3,5,2,6,5]],7,[[10,7],2,[]]],[[[10,9,9,5],9],[[9,3,8,0],[],3],9,[[1]],[[8,1,4,2],8,[5,1,2]]],[7,[[7,4,6,3,6],[4,10,9],[8,5,2],[0]],[],7,9],[2,[9,0,4]]] + +[[[],2],[[[5],3,5,8],7,[5,[1]],3,5]] +[[2,[[4,1,3],0],8,[2],[4]],[3,[]],[],[[1,[0],[7,5,3,3,9],6],[4,[6,9,7],[],[7,1,9],[0,0,0]],[1,6,[2,4,10,5],1]]] + +[[8,9,[],4,7],[7,7,8,6],[[9],9],[],[9,8,[8,5,0,10,[3,2,3,9,2]],[],2]] +[[]] + +[[[9,[6,2,7,4]],[[10,7,1],8,[8]],6,[[2,9,9],1,[7,7,1,3],[0,9],7],[7,[0,10,8,7],5]]] +[[3,[[1,5],[5,8],5,[10,8,1,0,6]],1]] + +[[7],[7,[2,[],6]]] +[[[[4,4,3],8],2,2,5],[[[6,4,2,8],0,5],[6,4],[1],[9],[[6,10,0,7,8],7,[]]],[[[5,1],[8,4]]]] + +[[[[1,3,4,2],8,[7,8,9,8,1]]],[[[7],3,[],[3,2,9,1]],9,2],[6,7]] +[[4,7],[[[0,8],6,8,[3,0,7],[10,10,6,1,2]]],[[],[[7,2,5,0,10],5],2,[[2,4],[5,3,2,4,9],3,[6]],[1,[],6,[],[6,6]]]] + +[[],[[5],10]] +[[],[],[[1,5,2]]] + +[[10],[3,[[5,0,4,2,5],9,[9,5,6,3]],9,[[5,5,7],[0,9],[3],10,4]],[6,7,[9],[],[]],[[9],[[0,2,8],10,3,[9,7,8,8,1],[2,10,6]],[2,[10,3],[5,7],9,[9,10,9]],6],[0,8]] +[[0,3,6]] + +[[],[[[],8,[2,0]]],[4,10,9,1,[8,10]],[[6,9,[0,0,8],[4,2,8]],[[4],6,[2,10,6],4,[9,1]],3],[[5,6,[0,5,1]]]] +[[[[],[1,1,6]],6]] + +[] +[[5,10,[[8,10,10,3],[10,4,8,7]],5,[0,9,[0,2,3,1],[4]]],[2],[0]] + +[[[[7,8],5,[1,4,1,1,10],10],[9,[9,8,6,0],3,[1,2,3],3]],[[],6,0,2,7]] +[[[7,[6,6,6,9],[10,2,5],[4,9,5,2,2],[2]],[4,6,4],[7,[2]],[6,[7,8,7]],[]],[8,[3],[10],[[7,9],[8,4,9,8],[],8]],[[[5],8],8,10,5],[6,3,5,[[9,2,2,10,6]],[[7,0],[1,8,6,5,8]]]] + +[[9,3,[[],[0,6,4,1]],9,[[10,3,2,2],4]]] +[[[0,10,2],0]] + +[[2,4,[]],[1,1,[[],[],[3,6,5],[1,4],7]],[10],[6,8,[8,1,5,[8,4,1,6,1],[6,9]],[10,5,[0,4]],[[],[1,10,0,8,1]]]] +[[[9,10,[2],6,6],1,[[10,9]],9]] + +[[3,8,9],[[3],[],[[9,10],1,4,10],7,[2]],[8],[3,1]] +[[10,2,4,[[9],0,10,9]],[4,8,8]] + +[[],[[9,3,[1,9,9,3],6],[9,4,2,10,[5,6,1,9]],[],10]] +[[[8,9,[],[]],1,[[0,6],10,8,4],[],[[1],2,10,[6,2],[9,6]]],[8,[5]],[[[7]],2,[[3],0],9],[2],[[3,6,2,9,8],[[],2],[[],[5,7,6]],[],10]] + +[[1,1,7,6]] +[[4,3,[9,[1,7,1,9,2],[0,3,8]],[[5,2,6,9,8],[]],3],[7,4,7]] + +[[0],[6,9,9,[2,[5,6,6,7],9,3]]] +[[[8,[7,0,1,3,8],[7,2,10,3],2],8,[],5,[[8,0,9,8,3]]],[5,[[9,8,5,1,4],0,8,1,[8,1]],[[0],5],1,3],[2,1,10],[3,6,[[9,9],5,[5,10,2],8,[0]],[6,[3,2,8],9,[]]]] + +[[[9],[[7,9,5]]],[4],[[],[[8,9,0,6],1],[3,[4,0,0,5,0],1,[4,5,0,4],10],[7,[4]],[[],2,0,[8,7,4,1,6]]],[[[9,4],[2,8],[2,2,1,0]]]] +[[],[4,[8,[]]],[6,4,[[7,6,4]],10],[5,[2,[8,2,2,8]],4]] + +[[],[[[7,0,7]],[]],[7,6],[6,3,8,[[9,7,4,4]]],[]] +[[[[3]],[9,[9,8],[0,6,7,5,6]],[8,[2,10],5,[2,2,6,5,10],8],3,[3,[0],[8],0]],[6],[[8,[0,6,8],6,[3,3,10,2,0],[1,0,2]]]] + +[[5,[0,3,[],8,[5,5,8]],[4,3,[9,0],3]],[[6,3,6,6,6],2,[],5],[10,[[10,0,0],[0,9]],2],[[],3,10,[5,4,[9,5,0,1],[2,2,7,0]]]] +[[],[1,[[],5,2,6,3],[[2,8,1,8,4],7,9,9],5,[[9],9]]] + +[[[[7,8,5,3],[9,9],9,4,[7,8]],[3,9],[[2],[0,9,3,8,4],7]]] +[[2,[]],[[[0,0,7,7,4]]]] + +[[[1,1,6,[10,8],0],6,3,[[2,4,4,2],0,[7,5,1,8,4]],[]]] +[[7],[[],[2,5,[10],[0,9],[]]],[9,2,5]] + +[[10,2],[7,[0,10]],[1,[[5,10,0,4],4,7],9,[10,[3,4],6,10,5]],[[8,2],[]]] +[[1,7,[10,0,7,[1,10,8,10]]],[[[1,6,7,0,6],0,[8,2],5,[]],[9,[1,4]],[]],[[[3,0],[9,5,5],[],[6,9]]],[10],[3,3,3,[[5,8,2,1],7,[6,10,5,7]]]] + +[[10,[],[[4,4,10,0],6,4,[1,6,10]],4],[4],[[[7,9,1],[8,3,8,10],[0,7,7],4,3],[2,[6,5,9],7],7,3],[4,7,7],[]] +[[4],[],[6]] + +[[9,7,[]],[[4],[10,[],7],6,0],[[[3,6],4,1,7],1,10]] +[[[[2],[],[4,8,5,3,2]],[1,[3,0,10]],[[]],6],[],[2,[10,[9]],1,[[],[6,2,3]]],[[2,8],[4,8,[6,9,5,9,5],2],[[3,5,0,6,8],[8,10],[]],[7,5,[8,10,0,10],1],1]] + +[[4],[0,[[1,1,2,9],[5],[7,5],8],[[2,10],8,0,[9,8,5]],5,[]],[0,7,4]] +[[5,[[10,7,8]]],[3,0],[],[[[1,6,0],[5,4,5],10,[5,2,3]],[],[[3],[4],[4],[]]],[8,[[8]],[8,6],[[4,4],[1,10,3,8,4]],[[5,9],6,3,[6,10,0],[1,5,10]]]] + +[[1,1,[[10,10],[],[10,3,0],8,4],[9,[4,2,2,1,3],3,9],[[9,0,4,1,8],10]],[2]] +[[6,3,8],[],[[],3],[[5,6,[],[3,5,2],4],[3,[1,10,4],[0,2,1,8,7]]],[]] + +[[6],[8,3]] +[[9,[[4,1,0],[3,9,4,3],3,7],[9,[10,2,7,8,6],[0,8,10],[8,5,10,2]],[1,[10]]]] + +[[],[[],6,9],[0,[1,4],[[8],[9,5,4]]],[6,9,1,6,[]],[8,[[9,8],5]]] +[[[[],9,0,6,2],[7,[1,0,4,7,0],[10,10,10,5,9],9],3,6,2],[],[9,[[2,4],[2,3,8],[9,3,9]],3],[2,[7,1,3,1],9],[[[4,0],[3,0,5,0,6],2,[10]],10]] + +[[[2,8,[10]],3,4,[5,[6,2]],8],[8,2],[]] +[[[],4,3,2,[4,[10,8],8,8]],[[0]]] + +[[[5,[10,7,6,9,4]]],[],[[[10,1,7,7,7],[10,8,4],2],[2]],[7]] +[[9,[[7],9,8,8]],[10,5,7,2,3],[[],6,[[8,2,1,8,5],10,7,7],[]]] + +[[[[0,8,1,3,3]],[],4,[[5,3,4],6,9],3],[]] +[[[[6,2,4,7],2],8]] + +[[[7,8,[7,7,10,5],[1,9,4,2]]],[[[4],[4,4],[5,0,3],6],[[5],[],[2]],[[2]]],[]] +[[],[9,1,[[8,9,7],[9,3,0,9,2],6],[4,10,8,[10,2,9,10]],2],[2,8,10,[3,[9,0],6,5],[10,[1,9,3,10,8],[3,0],[5,1],5]],[]] + +[[5,10],[[8,[5,9,6,0,5],[]],[6],8],[5,0,[[1,1,1,5],[0,10,1,3,2],2,[3,10,9,8,6]],[5,5,[10],[1,7,3,2,0],9]]] +[[[],4,[[5]],[0,[4,7],[10,5,10,3,5],[2,8],[2,8,3]],1],[[1,[0]],8,6]] + +[2,3,8,10] +[2,3,8,10,8] + +[[9,1,[[2,10,10,0],7,[7,9]]],[[],[9,[0,4,0,4,0],5,4],0]] +[[8,4,[2,[]]]] + +[[2,[7,9,[4,9,10,2,0]]],[[],[4]]] +[[],[8,9,2],[],[],[]] + +[[[[5,0,10],2,9],0,[[8,9,5,3],[5,9,8,1,2],3,[10,10,9,8,2],[7]]],[3,[7,[6,8,8,5],[7],10],2,0,[[9,0],5,2,0]],[],[9,2,[],[[5,9,6,5],[6,9,4,6,10],[],[1,3,9],[5,2,5,4]]]] +[[[10,2],5,[7],9]] + +[[[[0]],9,[9,[8,5,9,7,0],[7,3,2,4,5]],2],[[]]] +[[7,7,[[2,10],[8,3]],3,8],[[[],[10,0,8,7],[2],5,[5,2,4]],[8,[],[1]],[8,10,2]],[6,2,4],[[[],[1,10,0,3],1,[10,9]],10,[8,4]]] + +[[10,9,6,[1,[9,2],4,[0,3,4,9,4],6],[[],2,[1,6,5,10],[3]]]] +[[1,1,10,4]] + +[[9,[1,1,4,6,5],[[5,2,6,6],[10,10,6],[5,1,4,0,2]],[2,9,8]],[[[5,3,4,10,8],10,[],6],5,[5],[],[[10],[8,10,7,1],[4,8]]],[],[],[[[1,3],1,1],[[10]],1]] +[[0,[[],5,1,4,[4,10,0,5,8]],4,[[],[],3,[2,5,9],9],3]] + +[[[[7],10,2,[5,10,1,10,8],[6,10,0,8,2]],[[],5,[8,5,8,3,3],8],[8,[],2,8],[],[5,[3,8,2,4],4,[],8]],[[4,4,2,2,10],[[4,6,8],[5,6,6,10],[0,1,8],[1,3,10],5],[],[3,7,[5,5,4]]],[7],[[[6,10],[5,3,8,2,6],[2,6],7],[3,3,[1,10,1,9],[0,5,1,4]],[[0,10,6],0,6,[]],[[8,9,7,1,10],6,5]],[6,[1,[],[3,6,6,1]]]] +[[[[4,4,8,8,4],10,0,8],1,4],[],[9,0,4,6]] + +[[[[8,9,3,0,0],3,[3],8],2,[0,[2,3,2,10,3]],1,[]],[3,[2,7,0],[],1,[]],[[],[],[7,8]],[[],[[],[6,1,1,2,4],9,8,[8,8,4,2,2]],0,[]]] +[[4,[[4],[0,10,6],3]],[[6,2],9,[10,9,[5,6,5],[3,0,3,0,2]]],[],[],[[],3,[3,6]]] + +[[],[3],[[],[[]],7]] +[[[[1,5,2,9],[0,4],[0,8],[9],2],2,8,5,[[8,0,0],[10,4,3,2],[0]]],[[[7,10,5,1,3]],4,4],[9,[[8],[]],7,10],[0,6,[[8,7,1,1,5],0,[5]],10,[]],[8,4]] + +[[[8,[0,6,4]],8,1,[9,6,1]]] +[[3,3,5,8,[[],2,[8]]],[9,8,[10]],[[[]],[4]]] + +[[3,8,0,[0,4,9,7],[4,9,9,[2,6]]],[2,10],[[10,3,[3,5,9,5,2],[3,2]],2,[],[],[[4,0,2,9,2],8]]] +[[[7,3,1,[7],[7,6,9,9]]],[[[5,8],8],[[6,3],[9,8,0]],[0,0],3,4]] + +[[[0,7,1,[2,4],[6,9,5,10,5]],[9],[[10,0,0]]],[[10]],[[2,[1,0,1,1,9]],7,1],[0,[[]],10,[0,2],0]] +[[[1,2]]] + +[[0,[[5,6,2],[]],10,2,[]],[0,8,[]],[[[],4,1],1,[[10,6,6]]]] +[[[],2],[[1,5,6,0],[1,1,[10,6,9],8],1]] + +[[2,7],[],[9,0,8,[],[5,[1,4,3,3,3],[5,0,2],[9,3],[]]],[[],10,8,4,10]] +[[],[[]],[5,[[],9],8,[5,[8],8,1,[7,2,0,2,2]]],[[2]],[[10,[5,6,4,2,4]],[],[1,[5,7],[3,3,1,10,7],6,[]]]] + +[[0]] +[[1,10,7,[[3,10],10]]] + +[[],[[6,[],[4,4],1],8,9],[[[]]],[]] +[[10,7,7,[8,[6,9],10,3,[5,7,0,10,10]]],[],[1,10,[[],[5,6,10],10,2,[]],10],[[[1],[2,7,5],9,[6,9,7]]],[[4,6,[],0,[]]]] + +[[],[10,2,[[7],6,[10,7,6,0,2],6],[6,[7,4,6,9,5]],10]] +[[4,[[5,5,2,5]],[]],[6,[[4,10]]],[]] + +[[],[10],[],[[[4,2,7],[5],0,9]]] +[[[[6,1,6,2,10],[],[4,4,5]]],[7,8,[],5,2],[[],1,[[0,5,6,4,8],[6,3],[4],10,[]],0,4],[1,[[8,10,0],[4,8,6,2,3]],[1,[8]]]] + +[[],[],[2]] +[[0,[[5,8,6],10,[0,7],1],3,[8,[1,3,7]]],[[],[5],[0,2],4,2],[10],[]] + +[[0,[],[[9,9],8]],[[1,[]],[]]] +[[2,10,[8,3,[4,8],[8]],[[7,8,9,4],[5,6]]]] + +[[[9],[],[[]]],[[[10,8,4,6,3]],[5,4,1,7],[],[]],[[],10,1],[4],[]] +[[[1],[[]]]] + +[[[5,10,4],[4,[0,7,7,9],[2,3,1,5,10],[0]],2,[]]] +[[],[],[[3,[0,0,0,3]],10,[[0,3],[],4]]] + +[[[[7,9,7,1,2]],5],[],[[[],[2,8,0,9],6],1]] +[[],[6,[[],8],10,[]],[[[3,9,6,3],6],[6,[],2,[3,3],3],4,[4,7,1],[0,[1,4,0,5,6],7,6]],[6,8,4,9]] + +[[2,4,[[8,9,0,6],8,[4,8,1],[10,2,9,1]]],[],[0,[10],6,[[9],[9,3,1,7,7],[2,0,3]]],[[[8,2],6,[6,9,7,4],[1,2,7],[8]],[[],4,4],[2,[5]],6]] +[[9]] + +[[],[9,0,[[1,7],8]]] +[[8],[[],[9,[],3,6,[2,2,1]],7,[[7,8,9,6,2],[5,3,5],1],8],[7]] + +[[0],[7,[4,[4,4,8,6,8],[10,10,5,9,2],[7,2,3]]],[5,[[7,7,0,2,5],[10,8],[6,1,9,0,9]],[10]],[7,4]] +[[7,1,8],[[[10],[]],[[]],[9,6],[[5,2,0,6]]],[[0,3,[3,8]],[],[[5,2,3],5,[2,6,1],8],8,6],[8,6,[[10,10,10,0,5],[]],9],[6]] + +[[[5,3,[7,1,9,6],[]]]] +[[[[1,6,5,6,10],6],[[8,1]],6,2,[]],[[9],[],2,[],1],[9,[2,[7,2,5,4,7],[6,3]],0,10],[10,[[5],7,[2,9],2,[]]]] + +[[1,[[4,4,4],[10,8,1],6],9,10],[[[4,10],[1],[0,2,6,8,8],5,9],5,7],[2,8,[[10,2,6,0,1]],[9,3]]] +[[7,4,[[0,1,2,5],1]],[],[[[],7,7]],[[[2,10,5,2],6,3,[2]],1,[],[[],7]],[[5,3,[5,0,1,1],[],[5,3,6,2]],[1,1,2,[1,5,1,4]],2,0]] + +[[9,6,7,10,6]] +[[1],[0],[1]] + +[[],[[[10,6,5,1,5],[9,9,8,6],1,10,0],[4,[0,4,4,9,6]],[[1,9,4],8,[9,1,2,5,4],[2,2,6,1],3]]] +[[6,8],[[],[[5,10,6,1],[],[0],[0],7],[10],1,2],[[[3],0]],[8,10]] + +[[],[[[7],9,[2,10,6,2],4,3],[[7],5],4,5],[[[4,5,5],3,1,[6,0,0]],[]],[10,2,[3],10]] +[[],[9,7]] + +[[3,9,9],[[[1,0,10,4,0],[0],6,8],6,1,[[7,7,2,5,2],[],10,9]],[[0,[4,3,3,3]],4,[[5,5],[8,0,10,10],6,[0],[]],[[6,0,4],[3,7,3,2]],[8,3,[3,9],3]],[[6]],[10]] +[[5,9,[[0,2],[5,7,9,6]]],[[8,[0,10,4,2,10]],6,[6],[[],[0,3,7],[10]]],[[[8,2,7,1]]]] + +[[1,8,[8,7,8,[9,1,6,9,2],9]],[2,0],[8,5],[10,1,[]]] +[[],[[],6,[[5],[5,4,8,4,7]],8]] + +[[[[7,7,7,3,2],[],3],[],7,[4,2,[0,9],9,[]]],[[4,4,4],7,[[3],[4,0,1]]],[[],[10,[0],[7,6,10],10]],[0]] +[[[[9,5,10]]],[[[3,2,6],[3,1,10],0],6],[[[4,3,5,7,9],1,[0,0,1],[2,5,8],[2]],2,3]] + +[[],[[5,[6,5,9],10],7],[[8,[4],[9,0,2,9],8,1],[6,[2],[],[6,9,3],[0,9,9]]]] +[[10,[0]],[[],[8,10,9]],[[],[[]],[],8,4],[3,7]] + +[[7,9,1,[7,10]],[3,9],[[[10,4,5],[10],[0],[2,6,1],[3,2,6,1]],[5],[7,5,[4],7,4],[7,[5,2],[2,2,8,7],[5,7,5,7,9],[1,4,0,9]]]] +[[],[[[10,9],[]],[[10,4,0,1],[9,0,6,10,3],[9,8],6],3,[],10],[6,6,[],7],[4]] + +[[9,[2,2,[7,2,10,2],5]],[[],[6,[6,2,8]],[0],2,4],[]] +[[],[3],[3,3,10,[0]]] + +[[6],[],[],[[1,[2],[]]]] +[[[6]],[]] + +[[[[10,0,8,5],[]]]] +[[[[5,8,7,7,2],[6,1,2]],[],7,[]],[],[[8,8,4,[4,7,7],8],0,10,[9,5,[]],[1]],[]] + +[[4,9,[[5,3,2],8,2]],[],[8,5,[1,[3,9,0,1],[6],[6,5],[8]],7,[[5],9]],[],[0,8]] +[[[[1,8,1,5],0,[4,3,0],[],[0,3,4,5]]]] + +[[7,8]] +[[5,[[9,5]],[9,[8,4,10],3,10],[[7,9],7,[9,4,6,6,2],3]],[],[],[[[7],[1,5,1,10,10],[4,2,0,8]],4,[],3,[3]]] + +[[1],[1,0,[],7,4],[6,[0,[2,4,0,4],2,5,[3]]],[[[],[6,7,3,10,10],[5,10,4]],1,[],1,[[],[3,10],7]],[[[3,2,3]]]] +[[8]] + +[[[],6,[9],[]]] +[[8,0,4,9,4]] + +[[1,8,[[6,2,1,1]],[[7,4,7,5,4],9],[1,[]]],[[0,[9,1],[7,1],[9,6,7,6]],0,[8,[],9],0,4],[[[4,8,10,10,1]],[[0,4,5,4,3]]]] +[[9,[6,7,[7,9,10,7,0],[7,3]],[],[7,7,0,[6,4,1]]],[],[[4,0,10,[2,8,2]],[[3,9,9]],[8,2,[4,2],7,3],[[5,4,2],[3,10],[4,6,0,0,0]],[]],[8,2,5,0,[[],4,5,0,4]],[[[1,3,9,9],[0]],5,[6,[5,1,4,8],[2,0]],6,3]] + +[[[0,[1,3,5]],8,[[4,4,0],9,5,[],[1,6]]],[4,6],[[[],7],4,3],[0,[]]] +[[9,[8,2,[7,1,2,3],4,7],[[],[],[8,8,5],9,5],2,5],[],[7,[[9],0]],[[],0,0,[[6,0,7],[10,10],[10,6,8,10,7],6],[9,4,2]]] + +[[[[3,0],[0],3],8,4],[[[5,1,1,8],[10,6,1,0],[8,1],7,2],[]],[2,[10]],[[10,7]],[6,5,8,10]] +[[10,[]],[8],[1]] + +[[4,6,[6,2,[]]],[8,[7,10,[0]],[[9,4],8,[2,4,3,4,4],[4,9]],[[10,2,9,3],[],[5,9,2,2],[],[9,6,6,10,5]]],[9,[9,2,6,10],5],[]] +[[[2,[9,0,0],[7,10,1,3],0,[9,2,7]]],[8,[0,[5]]]] + +[[8],[0,[3],4,10,[[1,7,4,7,0],[0],[7,3,5,4]]],[[7,[8,3,8,9],10],3,[[9,2],4,[]]],[[6],4,1,[3,[0,2,8],9]],[9,[[4,6],[3,8,0,3],[],10,[6,10,2,1]]]] +[[[1,0,8,1],1],[7,4,[6,[3,1,8],8,[2,1],[0,5,10]],[],9],[],[7,[[]],[[7,5,10,1],1],1],[5,0,[9,[9,10,9],2,6,9]]] + +[[[1],2],[2],[3,7,[[],3]]] +[[[]],[0,[[0,6,5,8,0],[5,8,7,2,0]],[4,6]]] + +[[],[4],[[2,5,7]],[1,[[4,9,8],4]]] +[[],[5,[[6,9,2,3,7],7,[2,1],5,[6,1]],[[3],[3,2],0],[2,[10,10,1,2],0,[5,5,6,2,5]],[[3,5,0,7],[0,8,10,1],9]],[9,10,[[1,2,3,3],[5],[],[1]],[9,5],1]] + +[[[1],7],[6,[7,[]]],[[7],[],[8,3,4,10,[1,6,1,2]],3],[8,10,[[2],0],7]] +[[[],[[1]],[7,1,8,[2,1]],4,9],[[[4,8,1,8],[4,9],8,[2,5]],[1,0],[8],4,[[],[],[9,6],9,0]],[[[8,7,8,9,2],[1,2,9,3],[2],8]]] + +[[6,[[7,5,7,6,8],[]],[5,3],1],[[9,[3,1,8],8],[],4],[[7,2,9,1],3],[]] +[[[]],[2,[],[[8,5],8,3,[9]],6],[[[],7,0,0],6,[]],[[[]],[],0,4],[[[]],0,[9,[9,0,4,4,7],[1,0,4,6,4],[4,4,8,10,9],9],[[4],[10,10],[8,7,0,5,0]]]] + +[[[2,[0],1,[3,2,10,0,4],[10,9,8]],[[7,4,8,2,10],[2,0,1]],5,7],[[[4,10,7,5,1],[]],[[5,5,6,0,1],9],8]] +[[7,3],[[[3,10],[0,2,5,4]],6,6,[[5,4,4,8,5]],[4,[0],[5],[]]],[9,2,6],[[[1,7,2,8,7],[2,6,8],4,[10,9,5,8],4]]] + +[[[7,[9]],7,2,[[1]],4],[],[[0],[[5,10,10,9,2],10,1],[0,9,[5,6,3,0],[],[1,9,10,5]]],[[3,1,[6,0],1],[[2,3,9,3],[0],6]]] +[[8,4,7,0],[7,7,[[6,9]],5,8],[[2,[],[9]],0],[0,[[],[0,0,9,0],9,[8,10,2],[10,0,5]],[7,5,[1,10,6],[],2]],[]] + +[[[]],[9,8,[]],[5,[[8,4,9],[6],[10,7,3],1,[]],9],[[],6],[2,[[1],9]]] +[[],[2,[[10],9],6,[10,1,[9],[3,1,4,2],[1,10,9,3]],[[2,6,8],5,10,3]],[[5,[],3],3],[],[3]] + +[[[],[[10],[0,1,5,2]]],[[1,[2,8,1,10,1],3,6],[0],8,4,[[8,2],[10,2,7,5,0],[2,1]]],[[6,[],4,[2,4,5],[2,4]]],[10,0],[]] +[[[6,[]],5,[[4,10,10],8,[5,0]]],[[3],[[8,4,8]],2],[[[8,4,6,2],6]],[8,10],[3,[8,8,4,[]],7,9,[6]]] + +[[10,[6,[9,1,2,0]]],[[[6,10],1,10,10,6],1,5,5,[4,[4,8,1,1],4,[9]]],[1],[1,[8,[5,3]],9,[[5,9,1,1,2],[],[9],10,[6,7]],6]] +[[[],5,[10],[8,[4,2,7,9],1,9,9],1],[10,[],0]] + +[[[[10,8,0,1,6],[0,9,10,3],1],4,[8,10,0,0]],[],[[[6,7,1,10,6],3],[2],[],4,1]] +[[],[],[6,3,[[9,1,5],[4]],[[4],8,[6,6,7,0,1]],[8,8,[3,5],[2,3,10,6]]],[],[[7,[],[4,10,4,5],2]]] + +[[3,[],2,[6],[]],[1,[1,[4,1,6,10,6],[2,2,0,7,5],1,[5,7,9,2]],[[9,8,7]]],[[[3,8],6],1],[[6,[4,1,7,7],[],6],[],[],10,1],[]] +[[[7,9,10,[4]],[0]],[6,[3],[[0,9,10],[6,9,6,2]]],[[[10,1,8,8],[2,5],[7,2]],0,[3],[5,[8,6,5,3],6]]] + +[[5],[[[7,10],0,[],[8]],2,[4,0,3,[]],6,[8]],[[[4,2]]],[[]],[[[],[2,7,1]],[4,2,[7,3,7,8]],6,0]] +[[9,9,9,[[]]]] + +[[[4],[5,1,[10,2,9],7,2],10],[1]] +[[1,[]],[],[],[5,9,[],[5,[10,10,8,8],[2,10,1],1]],[[6],7,[2],9]] + +[[4,7,4],[6,1],[9,[],[[8,2],6],[[3,5,1,4],6,[10,3],4]],[[9,[],[2,4,10,3,7],[1,3,0,7,9],7],1],[[[10],[0,5,10,2],[2,5,2,5],[5,1,2,0,3]],1,[[2,2,8]],4,[8]]] +[[0,[[],[],[9,4,1,2],7]]] + +[0,4,5,3,1] +[0,4,5,3] + +[[[8,7,8,0],2,10,[],[9,3]],[2,0]] +[[[[10],10,[8,7,8],0]],[4,5]] + +[[9,5,5],[0],[[9,6,[10],6],[10,[10,5,9]]],[5],[10,6,[],9,[[5,5],4]]] +[[[0,2,10,[7]],7,1,4],[],[2,[[7,2,4,0],2,1],[2,1]]] + +[[],[8,10,6],[3]] +[[[3],4],[10,[],[]]] + +[[2,[9,[9,7,7],[10,9,5,0]],0],[3,7]] +[[[5,3]],[[3,[],[7,4,5],7],[[5],3],[3]],[2,[5,8,4],9,[3,[0,9,5,1,1],10,[4]]],[]] + +[[],[4,0,[[4,1]],[[7,7,4],0],[[9,5,9,9,3],1,[4,7,7,9,3]]]] +[[],[10,5],[[[9,5,8,4,1],10,6,4],[[9,2,8,3,6],6,7,[8,10,6,7,8],[10,2,2]]],[[6],[2,0,0],9,[5,7]]] + +[[[],[[],[2,3,9]],5,5,5],[[1],5,[[],4],[5,[3,9,3],[6,4,1]],3],[3,[4,1]],[[],[4,[8],[7]],[[10,8,2],5]],[[[1,5,0,9,6],9,7,[]],[0,[],6],[],[[3,5,8],6]]] +[[[8,[],8,[7],3]]] + +[[1]] +[[0,[0,[7,0,9,0],7,1],[7,[2,10,4,2],3],[2,0,6,[3,5,8,0],[10,3,4,5,4]],[[8,7,6],[5,6],[7],[]]],[[],[],[]],[1,[],[[4,2,4,8],7,3,[4,4,7],9]],[10,[[8,5,6],3],9]] + +[[6],[[[4,6],[6,3,2,0,4],0],3,4,[7,[4,1],2,3,6],1],[]] +[[6,9],[8,[7],4,7,3],[9]] + +[[7,10,0],[0,8,[[4],4],[[10,2,1,10,0]],4],[[[1],5,[1],4,[6,3,5,3]],[[3,5,0,4,8],4,5,[8]],[6,3,7,[4,2,4,1],[6,8,1]],[0,1,[8,10,7,2],[6,2]],[3,[2,6,1,4]]]] +[[7],[[6,0,7],[9,9,8,[6,7,10,6]],[[5]],[[7],[4,2]],4],[[]],[4,1,4],[5,[7,4,10,[2]]]] + +[[],[9,1]] +[[[5,10,[],7,[0,7,3]],[[2,1]],5]] + +[[],[[5,9,[6,3,8]],[3,[9,10]]],[10,[5],7,5]] +[[3,[10,10,[3,4]],[[6,2,10],[3,6,0,4],8,2,2],9,3],[[6],[7,1,[3]]],[3,10,4,9],[[[1]],5,2,2],[]] + +[[2,1,3,1,[]],[[0,7,[],4],3,1,[[7]]],[2,3,1,[9,[],[2,3,0,6,6],[8,5,1,2,4],5]]] +[[9,[[0,7,10,5],6]],[],[[8,[10,6],[7],8]],[[3,[0,4,8,7],10,[2,2,2,7,4]]]] + +[[3,1,[10,[7,1,4,8,6],[1,1,3],[5,1,6,3,8]],6],[3,8,[[4,1,4,5],[1,8,1],[],[5,10,9,2,7]],3,7],[10,0,8,6]] +[[],[5,8,9,7,[6,2]],[7,[3,0,1,[]],[]]] diff --git a/day13/package.json b/day13/package.json new file mode 100644 index 0000000..29c5523 --- /dev/null +++ b/day13/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "@types/node": "^18.11.10" + } +} diff --git a/day13/solution.ts b/day13/solution.ts new file mode 100644 index 0000000..d94d6d6 --- /dev/null +++ b/day13/solution.ts @@ -0,0 +1,88 @@ +import { readFileSync } from 'fs'; +import { join } from 'path'; + +const fileString = readFileSync(join(__dirname, "input"), 'utf-8'); +var rows = fileString.split("\n\n"); + +rows = rows.map(val => { + return val.trim(); +}); +rows = rows.filter(val => { + return val.length > 0; +}); + +var inputs = rows.map(val => { + return val.split("\n").map(vval => { + return eval(vval); + }); +}); + +function compareVals(left, right, d): number { + if (right == undefined) { + return -1; + } + if (left == undefined) { + return 1; + } + const itemLTp = typeof left; + const itemRTp = typeof right; + if ((itemLTp == "number") && (itemRTp =="number")) { + console.log("- Compare ".padStart(d, "-"), left, " vs ", right) + if (left < right) { + return 1; + } + if (left > right) { + return -1; + } + return 0; + } else if ((itemLTp == "object") && (itemRTp =="object")) { + console.log("- Compare ".padStart(d, "-"), left, " vs ", right) + for (var j = 0; j < Math.max(left.length, right.length); j++) { + const ret = compareVals(left[j], right[j], d+1); + if (ret != 0) { + return ret; + } + } + return 0; + } else { + console.log("- Compare ".padStart(d, "-"), left, " vs ", right) + var nItemL = null; + var nItemR = null; + if (itemLTp == "number") { + nItemL = [left] + } else { + nItemL = left + } + if (itemRTp == "number") { + nItemR = [right] + } else { + nItemR = right + } + for (var j = 0; j < Math.max(nItemL.length, nItemR.length); j++) { + const ret = compareVals(nItemL[j], nItemR[j], d+1); + if (ret != 0) { + return ret; + } + } + } + return 0; +} + +var res = []; +for (var p = 0; p < inputs.length; p++) { + console.log("== Pair ", p, " ==") + const v = compareVals(inputs[p][0], inputs[p][1], 0); + res.push(v); +} + +console.log(res); + +var sum = 0; +for (var i = 0; i < res.length; i++) { + if (res[i] == 1) { + sum += (i + 1); + } +} + +console.log(sum); + diff --git a/day13/tsconfig.json b/day13/tsconfig.json new file mode 100644 index 0000000..80c821c --- /dev/null +++ b/day13/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "types": [ + "node" + ] + } +}