diff options
| author | Bond_009 <bond.009@outlook.com> | 2020-12-10 21:26:04 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2020-12-10 21:26:04 +0100 |
| commit | 9940ce72851363be6e45163eb82f7dfa637cf13f (patch) | |
| tree | 085fcf8af833f9f39bb91ba644db2f86038efd52 /9/part2.f90 | |
| parent | 4454a3060b525e274a1c4bfd7c3d4b9224668461 (diff) | |
Add day 9 Fortran
Diffstat (limited to '9/part2.f90')
| -rw-r--r-- | 9/part2.f90 | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/9/part2.f90 b/9/part2.f90 new file mode 100644 index 0000000..b7e65de --- /dev/null +++ b/9/part2.f90 @@ -0,0 +1,60 @@ +integer function has_sum(arg, arr) + implicit none + + integer, parameter :: arr_len = 25 + + integer (kind=8) :: arg + integer (kind=8), dimension(25) :: arr + integer :: i, j + + do i = 1, arr_len + do j = 1, arr_len + if (arr(i) + arr(j) == arg) then + has_sum = 1 + return + end if + end do + end do + + has_sum = 0 + return +end function has_sum + +program day9 + implicit none + + integer, parameter :: input_len = 1000 + + integer :: has_sum, i, j, tmp + integer (kind=8), dimension(input_len) :: input + integer (kind=8) :: search = -1, sum + + open(10, file='input', status='old') + do i = 1, input_len + read(10, *) input(i) + end do + close(10) + + do i = 26, input_len + tmp = has_sum(input(i), input(i - 25)) + if (tmp == 0) then + search = input(i) + exit + end if + end do + + do i = 1, input_len + sum = 0 + do j = i, input_len + sum = sum + input(j) + if (sum >= search) then + exit + end if + end do + if (sum == search) then + print *, minval(input(i:j)) + maxval(input(i:j)) + stop + end if + end do + +end program day9 |
