github.com/cycloss/advent-of-code@v0.0.0-20221210145555-15039b95faa6/2021/day9/day9.dart (about) 1 import 'dart:convert'; 2 import 'dart:io'; 3 4 void main() async { 5 Stream<String> lines = File("day9.txt") 6 .openRead() 7 .transform(Utf8Decoder()) 8 .transform(LineSplitter()); 9 var rows = <List<int>>[]; 10 await for (var line in lines) { 11 var split = line.split(""); 12 var rowNums = <int>[]; 13 for (var raw in split) { 14 rowNums.add(int.parse(raw)); 15 } 16 rows.add(rowNums); 17 } 18 19 var riskLevel = 0; 20 21 for (var i = 0; i < rows.length; i++) { 22 var row = rows[i]; 23 for (var j = 0; j < row.length; j++) { 24 var num = row[j]; 25 var adjacents = <int>[]; 26 27 if (j > 0) { 28 var left = row[j - 1]; 29 adjacents.add(left); 30 } 31 if (j < row.length - 1) { 32 var right = row[j + 1]; 33 adjacents.add(right); 34 } 35 if (i > 0) { 36 var up = rows[i - 1][j]; 37 adjacents.add(up); 38 } 39 if (i < rows.length - 1) { 40 var down = rows[i + 1][j]; 41 adjacents.add(down); 42 } 43 44 var lowPoint = true; 45 for (var n in adjacents) { 46 if (num >= n) { 47 lowPoint = false; 48 } 49 } 50 if (lowPoint) { 51 riskLevel += 1 + num; 52 } 53 } 54 } 55 56 print("Part 1 Solution: $riskLevel"); 57 }