Skip to content

Instantly share code, notes, and snippets.

@turnerd18
Created December 4, 2021 18:43
Show Gist options
  • Save turnerd18/a9af82d24d2c2ed35897698789673d7b to your computer and use it in GitHub Desktop.
Save turnerd18/a9af82d24d2c2ed35897698789673d7b to your computer and use it in GitHub Desktop.
https://pl.kotl.in/UacGP9iw3
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
val numbers = arrayOf(13,79,74,35,76,12,43,71,87,72,23,91,31,67,58,61,96,16,81,92,41,6,32,86,77,42,0,55,68,14,53,26,25,11,45,94,75,1,93,83,52,7,4,22,34,64,69,88,65,66,39,97,27,29,78,5,49,82,54,46,51,28,98,36,48,15,2,50,38,24,89,59,8,3,18,47,10,90,21,80,73,33,85,62,19,37,57,95,60,20,99,17,63,56,84,44,40,70,9,30)
val boards = arrayOf(
arrayOf(
arrayOf(14, 86, 50, 89, 49),
arrayOf(10, 85, 33, 46, 87),
arrayOf(82, 91, 54, 13, 90),
arrayOf(63, 88, 75, 99, 79),
arrayOf(74, 31, 4, 0, 71),
),
arrayOf(
arrayOf(56, 3, 70, 2, 22),
arrayOf(44, 63, 10, 95, 8),
arrayOf(92, 62, 83, 4, 93),
arrayOf(74, 80, 5, 11, 68),
arrayOf(24, 50, 42, 65, 72),
),
arrayOf(
arrayOf(42, 21, 72, 26, 7),
arrayOf(4, 78, 1, 49, 50),
arrayOf(93, 43, 38, 71, 68),
arrayOf(62, 52, 40, 61, 82),
arrayOf(31, 28, 16, 96, 18),
),
arrayOf(
arrayOf(46, 77, 11, 86, 64),
arrayOf(4, 14, 61, 94, 30),
arrayOf(76, 21, 7, 2, 92),
arrayOf(55, 1, 66, 45, 23),
arrayOf(65, 51, 67, 26, 29),
),
arrayOf(
arrayOf(1, 89, 70, 73, 81),
arrayOf(75, 40, 93, 15, 60),
arrayOf(11, 58, 37, 42, 26),
arrayOf(62, 36, 20, 87, 47),
arrayOf(54, 35, 6, 23, 10),
),
arrayOf(
arrayOf(2, 13, 21, 69, 71),
arrayOf(98, 59, 82, 7, 32),
arrayOf(67, 90, 62, 51, 19),
arrayOf(84, 6, 23, 3, 17),
arrayOf(24, 10, 25, 0, 47),
),
arrayOf(
arrayOf(28, 10, 26, 86, 65),
arrayOf(33, 18, 21, 6, 99),
arrayOf(40, 61, 30, 58, 34),
arrayOf(29, 37, 78, 4, 83),
arrayOf(87, 53, 44, 22, 32),
),
arrayOf(
arrayOf(19, 35, 93, 78, 26),
arrayOf(87, 99, 15, 75, 56),
arrayOf(70, 22, 33, 27, 24),
arrayOf(58, 53, 83, 48, 8),
arrayOf(62, 66, 18, 89, 25),
),
arrayOf(
arrayOf(30, 25, 67, 77, 47),
arrayOf(99, 0, 44, 40, 23),
arrayOf(31, 19, 52, 55, 7),
arrayOf(65, 22, 12, 27, 71),
arrayOf(82, 62, 54, 78, 18),
),
arrayOf(
arrayOf(17, 19, 56, 93, 15),
arrayOf(62, 30, 64, 68, 21),
arrayOf(32, 84, 43, 81, 51),
arrayOf(61, 83, 52, 65, 58),
arrayOf(90, 87, 31, 67, 10),
),
arrayOf(
arrayOf(95, 76, 21, 10, 1),
arrayOf(81, 30, 64, 51, 44),
arrayOf(77, 31, 32, 94, 90),
arrayOf(58, 48, 11, 43, 37),
arrayOf(12, 19, 82, 85, 80),
),
arrayOf(
arrayOf(79, 91, 84, 44, 35),
arrayOf(80, 6, 64, 0, 20),
arrayOf(7, 36, 33, 17, 51),
arrayOf(71, 19, 24, 26, 2),
arrayOf(75, 37, 25, 59, 11),
),
arrayOf(
arrayOf(48, 91, 17, 38, 16),
arrayOf(54, 46, 53, 33, 28),
arrayOf(20, 6, 68, 96, 45),
arrayOf(70, 75, 35, 65, 59),
arrayOf(0, 39, 13, 23, 4),
),
arrayOf(
arrayOf(41, 83, 90, 95, 17),
arrayOf(67, 4, 23, 62, 93),
arrayOf(31, 1, 51, 21, 16),
arrayOf(34, 14, 92, 66, 89),
arrayOf(0, 78, 58, 80, 96),
),
arrayOf(
arrayOf(67, 2, 42, 36, 32),
arrayOf(1, 62, 37, 65, 79),
arrayOf(66, 80, 19, 75, 0),
arrayOf(17, 86, 94, 49, 54),
arrayOf(40, 59, 16, 14, 30),
),
arrayOf(
arrayOf(33, 70, 65, 6, 20),
arrayOf(44, 22, 55, 81, 15),
arrayOf(54, 2, 13, 5, 1),
arrayOf(93, 40, 97, 67, 78),
arrayOf(30, 75, 96, 41, 7),
),
arrayOf(
arrayOf(40, 96, 24, 19, 32),
arrayOf(88, 58, 65, 34, 52),
arrayOf(38, 49, 50, 5, 35),
arrayOf(4, 13, 2, 22, 26),
arrayOf(46, 55, 18, 89, 33),
),
arrayOf(
arrayOf(64, 17, 54, 59, 16),
arrayOf(22, 97, 91, 83, 87),
arrayOf(0, 3, 85, 92, 43),
arrayOf(99, 31, 19, 73, 4),
arrayOf(8, 41, 68, 48, 75),
),
arrayOf(
arrayOf(37, 45, 16, 50, 57),
arrayOf(31, 14, 32, 77, 60),
arrayOf(90, 63, 3, 40, 8),
arrayOf(96, 6, 56, 95, 2),
arrayOf(80, 69, 61, 52, 24),
),
arrayOf(
arrayOf(84, 50, 31, 7, 40),
arrayOf(32, 58, 47, 51, 70),
arrayOf(59, 76, 44, 83, 72),
arrayOf(87, 52, 77, 10, 81),
arrayOf(57, 1, 12, 37, 73),
),
arrayOf(
arrayOf(14, 74, 7, 98, 95),
arrayOf(78, 47, 1, 22, 96),
arrayOf(45, 80, 92, 37, 21),
arrayOf(15, 10, 33, 73, 63),
arrayOf(29, 34, 51, 27, 31),
),
arrayOf(
arrayOf(76, 21, 26, 20, 22),
arrayOf(89, 58, 37, 91, 38),
arrayOf(59, 9, 74, 24, 96),
arrayOf(80, 69, 30, 7, 0),
arrayOf(70, 87, 16, 78, 49),
),
arrayOf(
arrayOf(69, 79, 75, 99, 65),
arrayOf(20, 48, 61, 29, 67),
arrayOf(31, 86, 90, 72, 57),
arrayOf(62, 83, 94, 74, 1),
arrayOf(34, 13, 55, 56, 36),
),
arrayOf(
arrayOf(54, 52, 66, 15, 29),
arrayOf(7, 16, 94, 62, 92),
arrayOf(50, 80, 6, 24, 58),
arrayOf(96, 13, 93, 1, 0),
arrayOf(65, 3, 12, 44, 76),
),
arrayOf(
arrayOf(45, 43, 51, 92, 86),
arrayOf(60, 70, 3, 23, 69),
arrayOf(63, 78, 30, 66, 48),
arrayOf(17, 74, 81, 75, 37),
arrayOf(79, 53, 25, 28, 15),
),
arrayOf(
arrayOf(69, 60, 98, 68, 37),
arrayOf(18, 39, 36, 48, 75),
arrayOf(50, 3, 52, 11, 87),
arrayOf(57, 46, 63, 80, 41),
arrayOf(89, 12, 94, 84, 25),
),
arrayOf(
arrayOf(79, 11, 64, 51, 67),
arrayOf(17, 47, 98, 57, 5),
arrayOf(16, 70, 49, 0, 83),
arrayOf(32, 56, 84, 73, 86),
arrayOf(74, 59, 35, 15, 6),
),
arrayOf(
arrayOf(6, 94, 81, 28, 82),
arrayOf(53, 58, 43, 46, 51),
arrayOf(17, 20, 18, 96, 41),
arrayOf(66, 22, 27, 12, 44),
arrayOf(93, 40, 78, 26, 54),
),
arrayOf(
arrayOf(28, 88, 94, 9, 16),
arrayOf(14, 66, 2, 98, 82),
arrayOf(23, 69, 44, 75, 10),
arrayOf(38, 34, 18, 51, 1),
arrayOf(68, 52, 29, 0, 39),
),
arrayOf(
arrayOf(11, 45, 80, 94, 89),
arrayOf(24, 44, 96, 71, 58),
arrayOf(97, 2, 46, 92, 12),
arrayOf(47, 19, 99, 55, 7),
arrayOf(64, 62, 72, 23, 61),
),
arrayOf(
arrayOf(99, 92, 94, 38, 98),
arrayOf(10, 97, 40, 57, 30),
arrayOf(67, 77, 7, 64, 23),
arrayOf(88, 80, 58, 78, 59),
arrayOf(42, 69, 68, 16, 60),
),
arrayOf(
arrayOf(68, 74, 52, 73, 18),
arrayOf(62, 57, 49, 91, 19),
arrayOf(21, 48, 51, 22, 70),
arrayOf(45, 29, 53, 75, 8),
arrayOf(42, 17, 20, 47, 31),
),
arrayOf(
arrayOf(76, 29, 88, 23, 65),
arrayOf(80, 2, 90, 75, 48),
arrayOf(93, 55, 10, 50, 81),
arrayOf(74, 54, 6, 89, 18),
arrayOf(27, 26, 84, 11, 78),
),
arrayOf(
arrayOf(69, 39, 34, 79, 12),
arrayOf(72, 96, 80, 68, 44),
arrayOf(27, 57, 99, 61, 64),
arrayOf(81, 63, 6, 25, 95),
arrayOf(8, 32, 15, 74, 35),
),
arrayOf(
arrayOf(40, 38, 2, 63, 21),
arrayOf(28, 57, 90, 19, 49),
arrayOf(68, 75, 11, 24, 44),
arrayOf(45, 50, 15, 27, 9),
arrayOf(31, 30, 52, 33, 36),
),
arrayOf(
arrayOf(4, 55, 11, 83, 95),
arrayOf(35, 0, 30, 25, 45),
arrayOf(73, 31, 94, 22, 28),
arrayOf(91, 19, 50, 54, 47),
arrayOf(14, 90, 71, 98, 23),
),
arrayOf(
arrayOf(31, 55, 45, 78, 67),
arrayOf(1, 24, 51, 25, 80),
arrayOf(85, 96, 46, 87, 64),
arrayOf(37, 93, 22, 59, 90),
arrayOf(69, 70, 50, 17, 53),
),
arrayOf(
arrayOf(20, 66, 46, 83, 91),
arrayOf(28, 57, 99, 63, 1),
arrayOf(17, 59, 54, 47, 55),
arrayOf(50, 10, 41, 53, 34),
arrayOf(3, 39, 97, 9, 38),
),
arrayOf(
arrayOf(58, 29, 70, 23, 95),
arrayOf(96, 67, 84, 59, 45),
arrayOf(35, 64, 63, 77, 52),
arrayOf(31, 14, 33, 12, 78),
arrayOf(17, 36, 98, 0, 71),
),
arrayOf(
arrayOf(83, 68, 7, 9, 75),
arrayOf(13, 39, 5, 99, 73),
arrayOf(82, 60, 14, 8, 63),
arrayOf(49, 86, 67, 56, 91),
arrayOf(62, 52, 36, 1, 29),
),
arrayOf(
arrayOf(24, 65, 75, 31, 63),
arrayOf(48, 72, 14, 70, 0),
arrayOf(85, 30, 42, 33, 87),
arrayOf(26, 8, 29, 4, 96),
arrayOf(93, 60, 74, 9, 50),
),
arrayOf(
arrayOf(16, 98, 31, 91, 43),
arrayOf(90, 76, 97, 18, 70),
arrayOf(67, 2, 45, 41, 58),
arrayOf(7, 8, 26, 62, 61),
arrayOf(72, 21, 63, 69, 17),
),
arrayOf(
arrayOf(15, 28, 96, 16, 24),
arrayOf(45, 41, 62, 89, 67),
arrayOf(57, 4, 80, 23, 3),
arrayOf(29, 51, 99, 94, 68),
arrayOf(56, 37, 81, 54, 63),
),
arrayOf(
arrayOf(61, 81, 6, 46, 77),
arrayOf(28, 43, 63, 10, 41),
arrayOf(76, 12, 82, 23, 13),
arrayOf(32, 47, 94, 96, 92),
arrayOf(7, 29, 69, 22, 64),
),
arrayOf(
arrayOf(68, 64, 51, 69, 96),
arrayOf(76, 18, 88, 43, 55),
arrayOf(8, 91, 73, 83, 54),
arrayOf(0, 35, 94, 20, 97),
arrayOf(50, 29, 82, 71, 75),
),
arrayOf(
arrayOf(28, 56, 92, 79, 36),
arrayOf(18, 85, 35, 25, 26),
arrayOf(51, 54, 53, 21, 59),
arrayOf(64, 19, 17, 14, 30),
arrayOf(9, 84, 5, 93, 46),
),
arrayOf(
arrayOf(58, 3, 5, 76, 57),
arrayOf(55, 64, 79, 16, 97),
arrayOf(14, 59, 93, 24, 60),
arrayOf(84, 49, 44, 69, 15),
arrayOf(87, 42, 43, 25, 18),
),
arrayOf(
arrayOf(5, 90, 79, 46, 80),
arrayOf(41, 56, 93, 15, 50),
arrayOf(53, 25, 95, 39, 0),
arrayOf(77, 89, 40, 17, 92),
arrayOf(9, 73, 85, 28, 42),
),
arrayOf(
arrayOf(20, 85, 78, 73, 74),
arrayOf(59, 12, 82, 24, 52),
arrayOf(55, 33, 11, 28, 60),
arrayOf(15, 25, 61, 16, 45),
arrayOf(3, 14, 39, 95, 92),
),
arrayOf(
arrayOf(82, 94, 47, 30, 79),
arrayOf(38, 87, 15, 31, 45),
arrayOf(69, 63, 98, 72, 1),
arrayOf(77, 39, 96, 81, 92),
arrayOf(16, 71, 80, 86, 2),
),
arrayOf(
arrayOf(38, 60, 28, 94, 24),
arrayOf(40, 46, 67, 22, 34),
arrayOf(39, 70, 71, 3, 96),
arrayOf(27, 54, 41, 69, 18),
arrayOf(23, 62, 1, 61, 84),
),
arrayOf(
arrayOf(74, 85, 15, 44, 11),
arrayOf(39, 92, 43, 79, 1),
arrayOf(82, 8, 26, 9, 57),
arrayOf(20, 93, 18, 97, 31),
arrayOf(67, 81, 17, 21, 13),
),
arrayOf(
arrayOf(54, 63, 83, 89, 51),
arrayOf(0, 8, 15, 25, 59),
arrayOf(95, 74, 18, 28, 98),
arrayOf(50, 3, 34, 23, 77),
arrayOf(4, 24, 61, 90, 88),
),
arrayOf(
arrayOf(11, 64, 61, 28, 27),
arrayOf(5, 35, 74, 75, 47),
arrayOf(69, 84, 17, 62, 9),
arrayOf(40, 21, 32, 73, 67),
arrayOf(92, 36, 12, 51, 26),
),
arrayOf(
arrayOf(35, 50, 7, 26, 36),
arrayOf(43, 56, 42, 41, 48),
arrayOf(59, 54, 91, 55, 33),
arrayOf(37, 13, 19, 20, 88),
arrayOf(22, 21, 51, 4, 69),
),
arrayOf(
arrayOf(93, 48, 8, 94, 6),
arrayOf(14, 34, 13, 10, 32),
arrayOf(64, 90, 92, 23, 15),
arrayOf(63, 95, 85, 28, 87),
arrayOf(38, 5, 91, 75, 24),
),
arrayOf(
arrayOf(94, 68, 32, 85, 10),
arrayOf(75, 33, 0, 52, 37),
arrayOf(82, 8, 24, 58, 93),
arrayOf(49, 73, 63, 44, 61),
arrayOf(71, 50, 16, 88, 72),
),
arrayOf(
arrayOf(93, 71, 54, 20, 51),
arrayOf(39, 92, 75, 79, 66),
arrayOf(6, 58, 52, 22, 63),
arrayOf(74, 53, 99, 16, 61),
arrayOf(29, 96, 11, 83, 24),
),
arrayOf(
arrayOf(32, 26, 10, 77, 16),
arrayOf(31, 92, 58, 44, 79),
arrayOf(17, 2, 72, 29, 8),
arrayOf(93, 38, 9, 15, 3),
arrayOf(50, 89, 61, 88, 81),
),
arrayOf(
arrayOf(95, 65, 70, 27, 79),
arrayOf(4, 19, 30, 86, 72),
arrayOf(80, 61, 68, 74, 49),
arrayOf(7, 5, 77, 14, 53),
arrayOf(98, 44, 51, 43, 93),
),
arrayOf(
arrayOf(59, 70, 44, 52, 14),
arrayOf(31, 82, 9, 55, 13),
arrayOf(15, 63, 99, 26, 61),
arrayOf(34, 48, 23, 56, 41),
arrayOf(97, 79, 28, 29, 93),
),
arrayOf(
arrayOf(26, 86, 35, 66, 67),
arrayOf(25, 39, 48, 45, 69),
arrayOf(44, 93, 13, 17, 81),
arrayOf(70, 89, 54, 62, 68),
arrayOf(41, 36, 90, 83, 12),
),
arrayOf(
arrayOf(92, 59, 53, 11, 83),
arrayOf(43, 70, 30, 8, 66),
arrayOf(46, 6, 31, 56, 90),
arrayOf(62, 20, 65, 94, 34),
arrayOf(67, 96, 47, 71, 17),
),
arrayOf(
arrayOf(34, 85, 72, 51, 46),
arrayOf(21, 6, 44, 64, 27),
arrayOf(79, 86, 29, 33, 35),
arrayOf(7, 87, 47, 94, 84),
arrayOf(62, 90, 58, 80, 73),
),
arrayOf(
arrayOf(7, 73, 50, 0, 35),
arrayOf(77, 6, 33, 89, 94),
arrayOf(71, 52, 95, 53, 8),
arrayOf(22, 9, 46, 49, 75),
arrayOf(45, 56, 96, 87, 67),
),
arrayOf(
arrayOf(85, 64, 44, 39, 57),
arrayOf(90, 30, 15, 35, 54),
arrayOf(78, 89, 55, 99, 12),
arrayOf(80, 96, 20, 50, 45),
arrayOf(56, 10, 71, 59, 17),
),
arrayOf(
arrayOf(66, 87, 77, 71, 45),
arrayOf(79, 65, 80, 11, 88),
arrayOf(74, 99, 30, 89, 73),
arrayOf(58, 78, 64, 85, 20),
arrayOf(10, 41, 1, 44, 49),
),
arrayOf(
arrayOf(38, 47, 3, 60, 27),
arrayOf(8, 10, 14, 4, 1),
arrayOf(92, 24, 46, 16, 95),
arrayOf(55, 69, 77, 7, 36),
arrayOf(15, 51, 13, 58, 76),
),
arrayOf(
arrayOf(61, 3, 71, 38, 46),
arrayOf(34, 93, 42, 90, 32),
arrayOf(99, 16, 73, 55, 6),
arrayOf(48, 23, 56, 12, 39),
arrayOf(22, 87, 51, 70, 89),
),
arrayOf(
arrayOf(8, 58, 99, 23, 56),
arrayOf(91, 62, 68, 57, 32),
arrayOf(46, 95, 21, 3, 75),
arrayOf(35, 51, 33, 7, 74),
arrayOf(26, 2, 89, 76, 48),
),
arrayOf(
arrayOf(93, 89, 88, 49, 55),
arrayOf(11, 29, 72, 27, 35),
arrayOf(45, 5, 46, 18, 65),
arrayOf(23, 32, 30, 97, 42),
arrayOf(76, 19, 22, 77, 78),
),
arrayOf(
arrayOf(17, 43, 19, 2, 42),
arrayOf(20, 26, 36, 68, 75),
arrayOf(38, 94, 37, 99, 93),
arrayOf(62, 46, 1, 45, 89),
arrayOf(59, 7, 92, 78, 22),
),
arrayOf(
arrayOf(75, 41, 53, 45, 7),
arrayOf(91, 55, 40, 31, 36),
arrayOf(29, 78, 90, 17, 57),
arrayOf(63, 20, 77, 67, 42),
arrayOf(64, 62, 11, 48, 84),
),
arrayOf(
arrayOf(26, 89, 27, 47, 91),
arrayOf(15, 9, 18, 62, 28),
arrayOf(31, 96, 42, 81, 86),
arrayOf(11, 52, 20, 93, 38),
arrayOf(83, 64, 39, 1, 60),
),
arrayOf(
arrayOf(99, 48, 86, 72, 92),
arrayOf(38, 32, 62, 18, 17),
arrayOf(93, 71, 76, 73, 64),
arrayOf(26, 36, 74, 52, 68),
arrayOf(24, 98, 34, 88, 45),
),
arrayOf(
arrayOf(18, 84, 79, 52, 42),
arrayOf(54, 10, 33, 90, 64),
arrayOf(35, 1, 78, 62, 65),
arrayOf(22, 48, 87, 72, 50),
arrayOf(56, 3, 49, 20, 63),
),
arrayOf(
arrayOf(14, 50, 79, 84, 49),
arrayOf(17, 46, 66, 80, 87),
arrayOf(97, 90, 24, 65, 73),
arrayOf(25, 30, 94, 72, 99),
arrayOf(78, 89, 81, 96, 28),
),
arrayOf(
arrayOf(7, 24, 96, 54, 86),
arrayOf(4, 56, 83, 32, 27),
arrayOf(29, 91, 73, 34, 45),
arrayOf(16, 70, 1, 39, 3),
arrayOf(94, 47, 44, 42, 87),
),
arrayOf(
arrayOf(44, 74, 52, 65, 22),
arrayOf(5, 46, 75, 27, 12),
arrayOf(25, 24, 43, 21, 42),
arrayOf(19, 80, 60, 97, 3),
arrayOf(8, 84, 9, 87, 94),
),
arrayOf(
arrayOf(62, 80, 7, 66, 82),
arrayOf(60, 79, 45, 1, 75),
arrayOf(55, 54, 85, 64, 96),
arrayOf(65, 6, 16, 27, 38),
arrayOf(77, 26, 74, 71, 91),
),
arrayOf(
arrayOf(55, 23, 59, 47, 62),
arrayOf(53, 92, 34, 96, 58),
arrayOf(38, 3, 88, 46, 60),
arrayOf(50, 56, 83, 39, 80),
arrayOf(37, 6, 93, 7, 94),
),
arrayOf(
arrayOf(56, 26, 45, 73, 16),
arrayOf(37, 30, 74, 44, 64),
arrayOf(53, 70, 29, 21, 49),
arrayOf(4, 5, 27, 92, 22),
arrayOf(36, 8, 63, 50, 69),
),
arrayOf(
arrayOf(70, 83, 15, 22, 56),
arrayOf(64, 98, 32, 39, 12),
arrayOf(82, 21, 73, 19, 14),
arrayOf(44, 61, 78, 26, 99),
arrayOf(76, 24, 81, 38, 85),
),
arrayOf(
arrayOf(56, 55, 64, 39, 19),
arrayOf(13, 70, 63, 32, 54),
arrayOf(85, 22, 14, 27, 73),
arrayOf(25, 89, 15, 44, 21),
arrayOf(29, 77, 79, 23, 10),
),
arrayOf(
arrayOf(84, 27, 63, 34, 5),
arrayOf(57, 81, 78, 90, 59),
arrayOf(35, 85, 51, 54, 48),
arrayOf(92, 4, 89, 70, 30),
arrayOf(97, 0, 7, 86, 26),
),
arrayOf(
arrayOf(4, 44, 88, 71, 6),
arrayOf(80, 23, 19, 55, 57),
arrayOf(91, 7, 18, 27, 95),
arrayOf(85, 13, 66, 8, 34),
arrayOf(63, 45, 77, 17, 84),
),
arrayOf(
arrayOf(58, 7, 56, 38, 48),
arrayOf(92, 97, 50, 80, 54),
arrayOf(5, 8, 17, 49, 23),
arrayOf(96, 82, 20, 74, 4),
arrayOf(90, 0, 59, 93, 30),
),
arrayOf(
arrayOf(44, 97, 88, 33, 11),
arrayOf(18, 69, 4, 0, 94),
arrayOf(13, 57, 24, 9, 53),
arrayOf(49, 7, 68, 15, 42),
arrayOf(25, 39, 52, 6, 98),
),
arrayOf(
arrayOf(31, 65, 59, 74, 12),
arrayOf(22, 39, 13, 2, 16),
arrayOf(44, 46, 90, 60, 93),
arrayOf(82, 9, 71, 99, 89),
arrayOf(23, 80, 35, 51, 41),
),
arrayOf(
arrayOf(47, 30, 75, 73, 22),
arrayOf(62, 87, 59, 42, 90),
arrayOf(9, 5, 41, 54, 32),
arrayOf(71, 25, 46, 24, 12),
arrayOf(53, 28, 77, 33, 76),
),
arrayOf(
arrayOf(36, 25, 2, 74, 29),
arrayOf(58, 34, 44, 94, 83),
arrayOf(16, 72, 69, 45, 28),
arrayOf(88, 0, 86, 14, 49),
arrayOf(10, 56, 24, 82, 73),
),
arrayOf(
arrayOf(27, 42, 83, 51, 61),
arrayOf(93, 77, 33, 49, 46),
arrayOf(23, 5, 41, 48, 90),
arrayOf(81, 10, 3, 16, 1),
arrayOf(84, 36, 40, 88, 54),
),
arrayOf(
arrayOf(60, 85, 7, 28, 39),
arrayOf(54, 11, 4, 18, 84),
arrayOf(63, 95, 62, 13, 82),
arrayOf(93, 33, 40, 16, 55),
arrayOf(34, 78, 29, 56, 66),
),
arrayOf(
arrayOf(51, 99, 73, 14, 69),
arrayOf(3, 65, 23, 60, 96),
arrayOf(1, 49, 78, 55, 25),
arrayOf(15, 66, 11, 42, 87),
arrayOf(48, 52, 56, 34, 38),
),
arrayOf(
arrayOf(60, 59, 65, 32, 73),
arrayOf(68, 76, 35, 75, 42),
arrayOf(72, 70, 45, 34, 38),
arrayOf(29, 84, 28, 62, 43),
arrayOf(49, 85, 31, 57, 23),
),
arrayOf(
arrayOf(42, 57, 40, 73, 32),
arrayOf(70, 79, 80, 11, 67),
arrayOf(55, 26, 87, 92, 19),
arrayOf(63, 58, 78, 29, 77),
arrayOf(17, 74, 18, 20, 60),
),
arrayOf(
arrayOf(84, 99, 72, 74, 62),
arrayOf(15, 14, 50, 57, 77),
arrayOf(48, 91, 55, 46, 82),
arrayOf(85, 27, 33, 21, 54),
arrayOf(45, 31, 43, 40, 60),
),
arrayOf(
arrayOf(73, 37, 66, 67, 19),
arrayOf(16, 79, 15, 45, 89),
arrayOf(84, 78, 69, 28, 46),
arrayOf(17, 4, 12, 95, 87),
arrayOf(49, 99, 31, 9, 36),
),
arrayOf(
arrayOf(61, 34, 98, 60, 74),
arrayOf(30, 95, 33, 46, 64),
arrayOf(73, 97, 12, 26, 7),
arrayOf(2, 58, 49, 70, 54),
arrayOf(80, 55, 94, 91, 11),
),
arrayOf(
arrayOf(27, 5, 3, 62, 49),
arrayOf(38, 88, 40, 9, 47),
arrayOf(29, 59, 94, 74, 12),
arrayOf(48, 73, 85, 97, 35),
arrayOf(28, 25, 30, 14, 83),
)
)
//val numbers = arrayOf(7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1)
//val boards = arrayOf(arrayOf(arrayOf(22, 13, 17, 11, 0), arrayOf(8, 2, 23, 4, 24), arrayOf(21, 9, 14, 16, 7), arrayOf(6, 10, 3, 18, 5), arrayOf(1, 12, 20, 15, 19)), arrayOf(arrayOf(3, 15, 0, 2, 22), arrayOf(9, 18, 13, 17, 5), arrayOf(19, 8, 7, 25, 23), arrayOf(20, 11, 10, 24, 4), arrayOf(14, 21, 16, 12, 6)), arrayOf(arrayOf(14, 21, 17, 24, 4), arrayOf(10, 16, 15, 9, 19), arrayOf(18, 8, 23, 26, 20), arrayOf(22, 11, 13, 6, 5), arrayOf(2, 0, 12, 3, 7)))
// part 1
data class Position(val row: Int, val column: Int)
val boardMappings = boards.map { board ->
(0 until 5).map { i ->
(0 until 5).map { j ->
board[i][j] to Position(i, j)
} }
.flatten()
.toMap()
}
println(boardMappings[0])
data class BoardFill(
val rows: List<MutableSet<Int>> = (0 until 5).map{ mutableSetOf<Int>() },
val columns: List<MutableSet<Int>> = (0 until 5).map{ mutableSetOf<Int>() }
)
val boardFills = boards.map { BoardFill() }
data class Bingo(val lastNumber: Int, val boardNumbers: Set<Int>, val boardFill: BoardFill)
val boardWins = mutableListOf<Int>()
fun findBingos() = sequence {
for (number in numbers) {
for (i in 0 until boardMappings.size) {
if (i in boardWins) continue
val boardMapping = boardMappings[i]
val boardFill = boardFills[i]
if (number in boardMapping) {
val position = boardMapping[number]!!
val column = boardFill.columns[position.column]
val row = boardFill.rows[position.row]
column.add(number)
row.add(number)
if ((column.size == 5 || row.size == 5) && i !in boardWins) {
boardWins.add(i)
yield(Bingo(number, boardMapping.keys, boardFill))
}
}
}
}
// throw Exception("No winner found")
}
val bingo = findBingos().first()
var unfilledNumbers = bingo.boardNumbers - (bingo.boardFill.columns + bingo.boardFill.rows).flatten().toSet()
println("Part 1: Last # ${bingo.lastNumber} | Unfilled #s $unfilledNumbers | Product ${unfilledNumbers.sum() * bingo.lastNumber}")
// part 2
val lastBingo = findBingos().last()
unfilledNumbers = lastBingo.boardNumbers - (lastBingo.boardFill.columns + lastBingo.boardFill.rows).flatten().toSet()
println("Part 2: Last # ${lastBingo.lastNumber} | Unfilled #s $unfilledNumbers | Product ${unfilledNumbers.sum() * lastBingo.lastNumber}")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment