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  }