Skip to content

Instantly share code, notes, and snippets.

@YurkaninRyan
Created December 12, 2021 00:56
Show Gist options
  • Save YurkaninRyan/3133e6c5c0668a1f8ee84991f624afdc to your computer and use it in GitHub Desktop.
Save YurkaninRyan/3133e6c5c0668a1f8ee84991f624afdc to your computer and use it in GitHub Desktop.
const numbers = [
38,
54,
68,
93,
72,
12,
33,
8,
98,
88,
21,
91,
53,
61,
26,
36,
18,
80,
73,
47,
3,
5,
55,
92,
67,
52,
25,
40,
56,
95,
9,
62,
30,
31,
85,
65,
14,
2,
78,
75,
15,
39,
87,
27,
58,
42,
60,
32,
41,
83,
51,
77,
10,
66,
70,
4,
37,
6,
89,
23,
16,
49,
48,
63,
94,
97,
86,
64,
74,
82,
7,
0,
11,
71,
44,
43,
50,
69,
45,
81,
20,
28,
46,
79,
90,
34,
35,
96,
99,
59,
1,
76,
22,
24,
17,
57,
13,
19,
84,
29,
];
const rows = [
"57 7 8 38 31",
"17 96 5 12 18",
"58 45 81 89 4",
"73 51 93 32 10",
"74 50 26 0 24",
"",
"79 67 21 84 71",
"25 22 19 80 13",
"10 63 90 78 33",
"93 50 89 58 87",
"91 7 45 6 41",
"",
"66 85 4 91 41",
"59 69 16 0 90",
"35 13 64 61 93",
"11 20 29 67 77",
"92 75 58 3 34",
"",
"19 1 34 50 76",
"26 75 8 28 20",
"96 64 49 77 2",
"18 58 62 53 60",
"82 99 38 10 83",
"",
"89 69 97 16 48",
"32 3 83 17 33",
"82 53 15 50 94",
"52 0 86 25 81",
"42 38 84 73 76",
"",
"68 18 44 61 66",
"24 21 22 6 41",
"48 29 4 64 78",
"93 25 88 95 96",
"72 49 51 2 5",
"",
"35 41 59 23 21",
" 0 66 34 12 85",
"61 26 29 68 5",
"28 69 90 2 96",
" 1 16 32 24 44",
"",
"98 73 33 82 18",
"51 62 88 67 6",
"99 44 53 39 36",
"34 90 50 72 43",
"64 40 11 26 5",
"",
"88 8 81 57 99",
"61 16 22 50 5",
"26 84 85 7 15",
"97 27 47 18 21",
" 3 78 66 94 58",
"",
"56 40 68 20 24",
"26 98 6 76 89",
"61 63 22 99 83",
"31 5 32 54 82",
"18 23 17 46 13",
"",
"35 95 67 73 13",
"86 33 7 9 43",
"44 28 55 32 52",
"54 91 84 97 98",
"17 49 93 23 56",
"",
"22 90 61 12 13",
"87 4 46 25 88",
"70 38 53 80 11",
"75 56 96 49 32",
" 3 55 43 19 67",
"",
"40 17 70 76 61",
"82 86 37 8 28",
"60 48 24 83 53",
"57 87 44 92 63",
"10 49 88 15 55",
"",
"36 80 47 46 84",
"25 70 2 79 75",
"55 5 13 99 45",
"54 73 83 59 67",
"57 0 69 33 68",
"",
"51 52 21 44 36",
"17 30 15 42 18",
" 6 3 47 94 2",
"57 77 45 70 90",
"29 60 19 9 84",
"",
"16 12 37 6 27",
"86 87 21 70 71",
"84 0 11 67 83",
" 5 68 33 23 26",
"51 43 28 79 49",
"",
"22 5 53 12 42",
"29 81 46 13 88",
"80 65 8 62 33",
"72 67 34 21 35",
"38 77 90 52 44",
"",
"63 57 52 82 96",
"46 11 32 20 58",
"35 15 83 1 55",
"18 16 73 19 17",
"22 88 45 95 47",
"",
"43 15 7 97 88",
"96 52 84 86 49",
"80 13 21 28 29",
"16 36 98 82 41",
"32 10 62 68 24",
"",
"46 69 8 55 50",
"28 21 92 79 73",
"19 71 74 53 44",
"24 27 10 14 85",
" 2 39 58 81 72",
"",
"68 74 43 62 61",
"82 73 37 40 93",
"16 7 41 54 96",
"10 3 85 70 65",
"69 71 94 5 81",
"",
"17 53 87 80 98",
"76 41 30 25 58",
"29 14 73 74 43",
"20 91 24 70 39",
"46 48 51 9 18",
"",
"20 41 36 81 93",
"46 75 33 73 78",
"26 16 80 54 90",
"87 17 12 67 1",
"51 10 39 91 45",
"",
"76 21 31 3 69",
"27 42 97 32 87",
"26 22 4 63 38",
"46 77 67 80 43",
"37 50 59 88 96",
"",
"17 16 10 68 76",
" 2 45 94 29 40",
" 1 54 60 66 93",
" 0 13 42 39 70",
" 6 82 46 74 43",
"",
"87 95 31 22 94",
"86 30 39 56 18",
"89 74 23 11 64",
"63 48 85 20 49",
"27 15 40 83 50",
"",
"81 48 47 73 95",
"40 65 89 69 5",
"38 76 85 30 11",
"31 61 8 67 62",
"41 68 42 78 20",
"",
"46 85 96 83 20",
"94 52 7 97 31",
"29 95 99 34 62",
" 8 69 6 51 54",
"38 59 5 56 55",
"",
"18 15 10 35 96",
"44 66 58 91 9",
"12 2 45 98 80",
"22 69 37 67 79",
"46 36 23 51 75",
"",
"11 58 64 85 26",
"21 43 32 36 65",
"94 61 40 68 67",
"14 23 6 53 2",
"93 9 74 3 90",
"",
"73 82 46 37 20",
"47 75 38 45 54",
"76 34 65 44 58",
"93 89 27 13 33",
"85 67 40 42 17",
"",
"13 66 2 65 10",
"98 4 83 79 92",
"22 48 93 6 23",
"24 39 17 60 9",
"77 49 16 19 35",
"",
"96 37 88 4 32",
"80 89 59 39 63",
"67 19 35 10 40",
"91 66 47 9 79",
"45 21 86 92 30",
"",
"76 85 37 32 29",
"59 41 44 23 93",
"86 24 83 81 57",
"22 21 82 53 16",
"38 99 79 49 30",
"",
"54 29 64 65 62",
"44 59 83 75 56",
"11 13 34 12 24",
"96 39 31 95 16",
"41 38 21 25 60",
"",
"49 8 3 67 2",
"30 81 39 26 33",
"83 73 47 32 65",
"48 20 75 24 40",
"74 28 11 19 96",
"",
"87 25 49 81 7",
"99 34 35 50 86",
"18 24 68 4 78",
"59 8 71 0 41",
"92 54 64 75 46",
"",
" 2 19 73 29 10",
"55 6 43 48 22",
"64 14 62 39 97",
"99 26 68 25 12",
"98 72 45 38 40",
"",
"59 76 40 37 9",
"42 23 1 12 54",
"49 51 17 11 34",
"74 95 26 78 67",
"65 32 98 80 45",
"",
"50 86 95 29 38",
" 6 11 24 10 73",
"63 28 30 46 68",
"34 9 20 58 77",
"88 52 79 89 98",
"",
"32 20 93 39 80",
"67 98 99 4 26",
"22 89 97 13 73",
"88 11 72 31 78",
"76 95 64 43 75",
"",
"75 23 81 89 90",
"98 86 88 38 99",
"51 7 65 2 3",
"16 59 49 41 87",
"57 20 58 72 83",
"",
"21 81 24 43 12",
"55 74 2 90 5",
"13 89 59 42 3",
"47 66 38 20 62",
"61 56 72 84 41",
"",
"83 68 73 77 66",
"96 48 24 7 98",
"57 4 86 10 34",
"22 46 80 75 49",
"89 35 60 79 37",
"",
"27 50 90 37 28",
"81 74 58 39 61",
" 8 72 31 85 57",
"52 43 9 5 91",
"68 86 0 4 89",
"",
"14 41 70 67 59",
"13 94 31 69 65",
"76 19 9 79 1",
"33 20 53 91 36",
"80 50 21 37 85",
"",
"16 47 62 33 12",
"11 74 44 63 60",
" 2 23 84 80 42",
"14 58 67 81 24",
" 8 29 31 91 43",
"",
"62 86 26 57 74",
" 9 46 47 81 39",
" 4 99 59 89 3",
"20 76 51 70 84",
"95 72 43 67 61",
"",
"75 93 56 15 30",
"11 49 97 16 45",
"52 91 21 92 62",
" 0 74 85 48 63",
"28 76 59 79 60",
"",
"36 18 0 69 10",
"34 33 21 5 23",
"73 42 50 14 11",
"75 26 95 79 51",
"76 93 1 43 22",
"",
"86 64 25 9 54",
"67 79 49 1 8",
"63 47 60 4 46",
"94 97 57 38 30",
"91 87 0 68 15",
"",
"94 46 6 69 9",
"18 49 43 30 31",
"79 35 76 45 92",
"67 89 82 2 57",
"65 21 24 81 52",
"",
" 5 58 43 37 61",
"65 67 54 15 50",
"69 75 14 17 96",
"23 95 71 33 9",
"68 82 10 3 29",
"",
"56 43 88 35 82",
"44 14 64 60 23",
"33 5 96 86 47",
"70 74 27 4 1",
"51 71 95 59 11",
"",
"46 14 44 6 19",
"54 81 59 31 28",
" 7 67 73 23 86",
"25 91 57 43 92",
"65 76 80 47 77",
"",
" 3 39 70 90 23",
"64 77 33 83 22",
" 6 36 81 80 68",
"85 45 72 53 42",
" 7 19 88 13 9",
"",
"88 3 72 6 29",
"33 13 1 85 68",
"28 32 78 8 63",
"15 99 35 80 41",
"61 50 43 53 39",
"",
"22 88 19 86 54",
"78 3 70 65 85",
"18 12 21 14 17",
" 5 48 64 81 71",
"89 91 55 30 87",
"",
"35 82 37 42 25",
"44 53 12 2 73",
"18 24 0 75 51",
"34 26 54 52 86",
"56 64 31 57 80",
"",
"45 97 83 15 5",
"40 77 1 53 84",
"67 44 52 37 20",
"36 64 33 82 90",
"49 22 6 65 99",
"",
"18 69 23 78 55",
"45 4 31 54 44",
"16 97 13 81 86",
"77 87 91 53 33",
" 1 84 83 75 40",
"",
"95 46 89 7 38",
"83 32 99 44 20",
" 6 57 37 34 48",
"69 5 84 29 54",
"62 27 13 80 53",
"",
"45 92 59 71 83",
"52 75 42 46 86",
"76 33 50 80 69",
"36 89 90 3 31",
" 7 5 48 38 53",
"",
"86 80 77 18 87",
"79 93 52 17 20",
"30 68 48 12 91",
"25 98 13 9 47",
"45 73 97 15 59",
"",
"93 60 34 18 25",
"38 80 81 91 40",
"43 87 20 79 7",
"70 68 6 24 23",
"46 97 32 78 67",
"",
" 9 6 28 17 42",
" 2 86 84 90 13",
"91 58 16 37 76",
"15 3 45 51 4",
"64 99 41 59 39",
"",
"44 3 85 80 93",
" 0 43 90 40 89",
"82 91 55 79 75",
"30 5 68 50 1",
"37 24 59 62 66",
"",
"38 55 21 45 1",
"23 14 95 25 22",
"84 10 39 9 0",
"17 15 58 70 49",
"62 44 77 65 88",
"",
" 8 62 25 75 39",
"20 95 65 11 32",
" 5 92 15 86 66",
"64 34 60 7 85",
"10 76 6 53 61",
"",
"71 61 62 25 35",
"23 30 37 14 9",
"99 98 52 51 19",
"77 57 17 72 85",
"33 91 31 43 67",
"",
"76 66 39 36 44",
"49 97 93 33 52",
"13 70 21 17 32",
"71 98 80 19 60",
"73 15 99 74 9",
"",
"41 8 33 29 87",
"42 86 66 31 50",
"45 60 83 81 21",
"36 4 98 43 0",
"49 76 18 90 16",
"",
"83 53 34 39 58",
"91 68 17 62 4",
" 2 76 44 31 35",
"14 61 49 84 92",
"73 6 86 27 65",
"",
"56 70 47 60 97",
"35 89 26 99 59",
"67 23 27 74 65",
"61 62 15 18 45",
"54 93 0 9 71",
"",
"11 24 97 15 30",
"46 74 17 48 43",
"16 64 72 60 37",
"63 90 41 91 66",
"25 95 1 54 49",
"",
"87 67 27 26 38",
"63 44 65 25 81",
" 1 66 96 62 17",
"82 2 58 4 86",
"61 64 54 24 90",
"",
"72 94 69 85 43",
"38 11 93 39 13",
"86 92 12 42 75",
" 6 89 58 88 52",
"79 19 20 55 14",
"",
"77 93 58 6 52",
"27 48 29 60 71",
"87 24 25 54 49",
"53 38 90 51 80",
"57 50 18 1 13",
"",
"85 84 54 2 51",
"33 41 0 38 80",
" 5 62 1 28 96",
"17 88 64 26 90",
"78 91 56 34 74",
"",
"83 14 82 6 55",
"30 13 99 57 39",
"93 73 37 19 8",
"29 49 76 22 92",
"69 66 9 60 53",
"",
"51 78 52 72 79",
"42 55 74 88 44",
"90 75 65 87 69",
"22 35 64 36 86",
"63 41 19 59 49",
"",
"49 86 81 23 12",
"93 16 9 8 95",
"68 33 4 82 61",
"45 28 85 87 38",
"35 70 63 18 52",
"",
"63 93 38 34 61",
"75 21 86 42 25",
"52 85 99 24 36",
"41 11 79 54 47",
"44 84 65 28 89",
"",
"91 37 30 39 59",
" 7 94 90 38 40",
"72 21 75 31 61",
"68 42 34 20 8",
" 3 16 76 44 57",
"",
"32 55 36 81 42",
"21 75 68 28 65",
"46 70 29 54 64",
"66 89 96 25 43",
"79 76 41 77 71",
"",
"41 29 60 74 34",
"84 49 83 72 92",
"22 6 21 17 94",
"15 44 62 28 2",
"25 93 64 1 42",
"",
"68 76 23 62 10",
"36 87 15 12 57",
"79 46 18 83 11",
"48 81 58 52 28",
"72 40 64 55 21",
"",
"25 51 42 63 41",
" 0 72 92 23 13",
"65 1 69 33 2",
"78 27 95 61 55",
"30 54 48 3 57",
"",
"50 40 58 66 59",
"84 79 64 75 44",
"88 93 41 25 97",
"19 86 37 91 81",
"10 26 94 77 34",
"",
"76 44 11 16 60",
"19 92 91 58 50",
"97 5 46 4 52",
"87 42 65 75 15",
"12 2 54 27 86",
"",
"77 38 51 29 89",
" 7 76 54 48 44",
"88 50 2 5 53",
"12 70 26 57 74",
"31 19 18 34 47",
"",
"35 99 86 96 62",
"61 97 71 70 66",
"49 55 36 76 3",
"94 23 31 91 26",
"80 8 20 95 15",
"",
" 4 96 40 36 12",
"87 75 38 30 11",
"69 29 23 85 91",
"49 5 14 57 24",
"88 20 99 78 65",
"",
"34 65 71 79 67",
"28 1 33 47 11",
"15 86 84 83 55",
"35 10 19 63 23",
"58 66 45 77 26",
"",
"74 13 25 39 8",
"46 47 77 37 0",
"60 1 81 42 18",
" 5 51 78 30 4",
"36 12 10 32 82",
"",
"51 83 58 10 56",
"28 18 43 99 14",
" 3 57 30 49 88",
"20 68 76 73 82",
" 1 85 77 22 47",
"",
"50 12 11 97 83",
"40 10 49 81 63",
"43 15 91 3 2",
"52 20 53 89 33",
"42 94 59 78 46",
"",
"19 63 86 82 9",
"69 13 27 88 37",
"45 51 79 11 8",
" 2 29 41 84 73",
"76 24 78 96 38",
"",
"15 19 88 95 54",
"28 94 96 27 26",
" 8 82 68 6 71",
"33 9 99 62 63",
"38 83 41 14 79",
"",
"67 57 2 21 19",
"11 79 74 45 95",
"42 90 68 47 62",
"80 61 1 0 39",
"43 76 40 27 66",
];
const boards = rows.reduce((acc, curr, i) => {
if (i === 0) {
return [[curr.trim().replace(" ", " ").split(" ").map(Number)]];
}
if (curr === "") {
return [...acc, []];
}
const boardBeingGenerated = acc[acc.length - 1];
const boardsClone = [...acc];
boardsClone[acc.length - 1] = [
...boardBeingGenerated,
curr.trim().replace(" ", " ").split(" ").map(Number),
];
return boardsClone;
}, []);
function checkRowsOfBoardForMatch(numbers, board) {
return board.some((row) => row.every((number) => numbers.includes(number)));
}
function checkColumnsOfBoardForMatch(numbers, board) {
const columns = board.map((row, i, board) => [
board[0][i],
board[1][i],
board[2][i],
board[3][i],
board[4][i],
]);
return columns.some((column) =>
column.every((number) => numbers.includes(number))
);
}
function getUncalledNumbersFromBoard(numbers, board) {
return board.flatMap((row) =>
row.filter((number) => !numbers.includes(number))
);
}
console.log(
checkRowsOfBoardForMatch([43, 76, 40, 27, 66], boards[boards.length - 1])
);
console.log(
checkColumnsOfBoardForMatch([67, 11, 42, 80, 43], boards[boards.length - 1])
);
const visibleNumbers = [];
const done = [];
numbers.some((number) => {
visibleNumbers.push(number);
boards.forEach((board, i) => {
if (done.includes(i)) {
return;
}
const hasRowMatch = checkRowsOfBoardForMatch(visibleNumbers, board);
const hasColumnMatch = checkColumnsOfBoardForMatch(visibleNumbers, board);
if (hasRowMatch || hasColumnMatch) {
unusedNumbers = getUncalledNumbersFromBoard(visibleNumbers, board);
const sum = unusedNumbers.reduce((acc, curr) => {
return acc + curr;
}, 0);
console.log(sum * visibleNumbers[visibleNumbers.length -1]);
done.push(i);
console.log(board)
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment