mirror of
https://github.com/plasmaofthedawn/2023adventofcode.git
synced 2024-10-18 14:06:25 -05:00
Compare commits
No commits in common. "d17fcb67c5f9857866f7ac685ac139d1dde1d9c2" and "9470da2adb7e8834d0084133d6823a08d5c1bddc" have entirely different histories.
d17fcb67c5
...
9470da2adb
21
Makefile
21
Makefile
@ -78,26 +78,5 @@ day8part2:
|
|||||||
@echo
|
@echo
|
||||||
./build/day8part2
|
./build/day8part2
|
||||||
|
|
||||||
day9part1:
|
|
||||||
fpc src/day9/part1.pas -obuild/day9part1 -g
|
|
||||||
@echo
|
|
||||||
./build/day9part1
|
|
||||||
|
|
||||||
day9part2:
|
|
||||||
fpc src/day9/part2.pas -obuild/day9part2
|
|
||||||
@echo
|
|
||||||
./build/day9part2
|
|
||||||
|
|
||||||
day10part1:
|
|
||||||
fpc src/day10/part1.pas -obuild/day10part1
|
|
||||||
@echo
|
|
||||||
./build/day10part1
|
|
||||||
|
|
||||||
day10part2:
|
|
||||||
fpc src/day10/part2.pas -obuild/day10part2
|
|
||||||
@echo
|
|
||||||
./build/day10part2
|
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm build/*
|
rm build/*
|
@ -1,140 +0,0 @@
|
|||||||
F|--L7J.L7|7|-LF7-7--7F7--7F7J--F7J.7F|J7.F7|.-FJF|J.F7F--LFF.7.F7JFL-JFJ7F|.FL77-F7-J.F7-F7L-FF-F-L7F-|7.FL7-7F|7F7.F-F|-77FJ7FF-J777.|FFFL
|
|
||||||
FJJ7FJ.F.-7-|77|JFJJL|7|F7-FJ7JLL|||L-L7-FJJ|7.|J-.J..LJ.--F|7F-FJ7|LJJF7L7J.|-7.FL|.L--7-L|JFL-F|7L|7-|F7F|7.LJ.F7.|L7L-J|-|-LFF-LLJ|LL7|7J
|
|
||||||
F|.FL|.LJ-L.||FL-|-FJ|JJ7-7|.J.F7--F-|-|FJ-|-|7.|.7|F7.|-L-LJFL--77.F-|J|F-7F--JLJ7|..LLJ.LLJL7JLJ7-F-F7|FJL-77.FJJFL-|F|7F-F7F7JF-77||JLJLJ
|
|
||||||
||FJ|LF-7F|F|LJFFL-|F|7|JF-J7LJF7.|L-J.F|J7||FJ.LJL-|J.|.F-7F7J.F-|7F-J7L7-77L||L7F7FF7-|JLF-.7-F|-7LLJ7F-.LFJ77L|.|.|L|.L--|JFF7F7L|L|||.LF
|
|
||||||
L-L-|..J-J|7.|J-||LFF--7-J.|7|.FJ-L7.LFJ|LF7.||.|.F---FF77|F||7-7J|7|LF-L.|FJLF|L||LJFL.|LF-L|L-JFFJ.FLJ-JFJ|L---|-7-F-|7LF-J-JF-JF-.||LJ.|.
|
|
||||||
J..||FJJFLL--JF7|J.LF7.|JLFJLL7||.JJ7F--J-|L-|FLLF77|-F|L77F||7-|.|FF7J|JF7J|FJ7-FL7.|.FJFFJ7|7J-LF7-F77LF|L7J7LF77L-J.L--7JJ.FL7JF--7-L|7L7
|
|
||||||
L|--FFJ7F|JJJF-|J.F7.FF7-F77LFF-F-L7F7777L|.L.F77|L7F-7L7|7FJL7F77LF||77F-LF7-FL77-LF77.|7.L|LFF-FJ|F7JJFF.FL-J.LJ|7JFFFLF...FJ.JL77--JFF|.J
|
|
||||||
F7-F-.|-77JF-F|||7.LF-J-.F|777.FJF.FJ|7-J-J7..F7FJFJL7|FJL7|F7LJL7F-JL7F7..7|FF---7L|L7F7-F-|-F7FL7|||7-J|FF|.J-F-JFJFFJL--77JLFJFJ77.-7.-.L
|
|
||||||
J--F7.7.||F||.7-7||.L7JF-FJL-JFF-|7L7L7.L|JF-F|LJFJ.F||L-7|LJ|F--JL7F-J||F7.7-L--7L-JFJ||F7FFFJL7FJLJ|7JL-7-F7.-FJFL7F--7.FL-.F|F|||LJF|7LF|
|
|
||||||
|JLL77.FLJJLL-JLLL77|LFL7F7LLLJ..||.|FJ7-F7LF|L-7|F7FJ|F7|L7-|L7F7FJL7FJ|||F7F--7L--7L7|LJL7FJF-JL-7FJ777L||||7|F-7|L7JLF7FFLLF-7LFJ|LJL|L--
|
|
||||||
-7F-.7-F||.FFJ7..L77J.F7F7..LLJF77LFJL77|LJ7-F7FJ|||L7|||L7|FJFJ||L7FJL7|||||L-7|F7.|FJL7F-JL7|-F7F|L-7F7F7FJL-7|FJJLF.LL7-LF-F-7L--7F|.LJ.J
|
|
||||||
LF-7|JFJ|J-F|7FF77L||--|L|7..|.FLJFL7FJJFF.F7||L7LJL7|||L7||L7L7|L7|L--JLJ||L7||||L7|L-7|L--7|L7|L7|F-J||||L7F-J||7.F|7-FL.LJ-|7J|LJL777..-7
|
|
||||||
||.J---|JJF7-L-|7--F-7F|.|JL.|7J|L7FJL-7-JFJLJL-JF7FJ|LJFJ|L7|FJL7||F---7FJL7L7|||FJ|F-J|F--J|FJL7|||F7|||L7||F7|L77--|.--7F|-|J-L.7-LJ7F--|
|
|
||||||
LLFJF77FJ.-JJ..L|JL.L77-LJ.LJL|FL.FL-7FJLFJF---7FJLJFJF-JJL7||L7J|||L--7LJ||L7|||||FJL--JL7F7||F7||||||||L7||||||FJ-F7|F|L|77LLJ-|FF-LJL|J7|
|
|
||||||
F-|F-7-J.-|J|.|.|..F-||7L-FJ|FF|7F---JL-7L-JF--JL7F7|FJF---JLJFJFJLJF--JF-7F7|||||LJF-7F--J|||||||||LJ||L7|||||||L---77F|JF-7-FJ.FJ.7.J|LJF.
|
|
||||||
7FJ7F|..-.|F77|F|7.L-FF-7.|-|F--7L----7FJF-7L-7F7LJ||||L-----7L7L7F-JF7FL7|||||||L7FJ.LJF-7||||||||L-7|L7||||||LJF7F-JF77.||77|JFLJ.L.LFJ7LF
|
|
||||||
|77|-F-7L7.|.LF-J-.F-7J.F777FL-7|F7|F7|L7L7L7LLJL-7||L7F-7LF7L7L7|L--JL7||||LJ||L7|L-7F7|FJ|||LJ|||F-JL7|||LJLJF-JLJF7||F7-LFFJF|J-F|-7||JFL
|
|
||||||
|-L.F|.L7F-J7JJLJL-|.|-F|L7F77FJ|||FJ|L7L7L7|F7F-7||L7||FJFJL7|FJ|F---7L7||L-7|L7LJF-J||||F|||F7LJ|L--7|||L7F7FJFF7-||||||F--7--LJF|--LF--LJ
|
|
||||||
L7|-FJ--77JFL--.7-L|-7-F|FJF-7L7|||L7L7|FJFJLJ|L7|||FJLJL7L-7||L-JL--7|FJ|L7FJ|L|F7|F-J||L-J|LJ|F-JF7FJ|||FJ|LJF7||FJLJ||||F-J..LF|.|L7JF|F.
|
|
||||||
|FF-LJJFJ|7J.LLF7JL|-|FJ|L7L7L7|||L7L7||L7L-7FJFJLJ|L7F--JF-J||F-----JLJFL7|L7|FJ|LJL-7||F--JF7||F7||L7LJLJFJF-JLJLJF-7LJLJL7F-7FL|F7-7LF-|7
|
|
||||||
7LL7|.777LJFL7|||7F7--J.L7L-JFJ||L7L-J|L7|JFJL7L--7L7||.F7L-7|||F7FF--7F--J|FJ|L7L-7F7|LJ|F7L|||||LJ|FJF-7FJL|F---7FJFJF7F-7|JFFL-7-|J|FJ7F7
|
|
||||||
-7LFFJL|7J7J|-F|L-JL7|.FLL--7L-J|FJF--J|||FJF-JF7JL7LJ|FJ|F-JLJ||L-JF-JL--7|L7|F|F-J|||F7LJL7|||LJF-JL-JFJL7FJL7F7LJ|L7||L7LJF-F.|J.L7LJ||.|
|
|
||||||
LF-7J.FLJ7J-FJLL7F--J7FF7JF7L--7|L7|7F7FJ|L7|F7|L7LL7FJ|FJL-7F7LJF7FJ|F7.FJL-J|FJL77||LJL-7FJ|||F-JF7F77L-7||F7||L7F7JLJL-JJ.---77.-|-|FL-L7
|
|
||||||
FLJ|JFJJ||7.L7F-JL-7LF-JL-J|F7|||-|L7|||FJFJ|||L7L7FJL-J|F7-||L-7|LJF7|L7L---7LJF-JFJL7F7J|L7||||F7||||F7FJLJ|LJ|FJ|L-7F7F7777|L|7J|JLJFJ..F
|
|
||||||
77JL.J7FLFLLJLL---7L7L7F--7|||FJ|FJFJ||||JL7LJL7|FJL-7F7|||FJL-7|L7F|||FJF--7L-7|F7|F-J||FJFJ|||||||LJLJ|L-7FJF7||L|F-J|LJL-7-F|.|-J7F---F-|
|
|
||||||
L7|7LJL7|F.L7|L-F-JFJ7||F-JLJLJFJL7L-J||L7|L--7||L7F7LJ|LJ||F-7|L-JFJLJL7L7FJF-J||LJ|F7||L7|-||||||L---7L7FJL7||||FJ|F7|F---JLF.LJJJ|FL|7|J|
|
|
||||||
-77JF-JLL7-JL7|.L-7L-7LJL-----7|F7L--7||FJF---JLJFJ|L7-L7FJ|L7||F7FJF-7FJFJL7L-7LJF7||||L7||FJ|||||-F7FJFJL7FJ|||||FJ|||L--7|..L|7---7LL-F.7
|
|
||||||
FF|.-77-F-7FL|7-F-JF7L77-F7-F7||||F7FJLJL7|F--7F7L7L7|F7|L-JFJLJ||L-JFJ|FJF7L7FJF7|LJ||L7||LJFJ|LJ|FJLJFJ7FJL-JLJLJL-JLJF-7L-7..|LJ|FL-J-|7L
|
|
||||||
FJJ-L|-F|J7L.F--JF7|L7L7FJL-JLJLJ|||L--7FJLJF7||L-JJ|||||F-7L-7FJL--7L7|L-JL7||FJLJF-JL-JLJF-JLL-7|L--7L--JF------7F----J|L--J7-L.77FL.|7|-7
|
|
||||||
FJ7|FLJ||.LJ-L---JLJFJFJ|F7F7F--7LJ|FF-JL-7FJLJ|FF7FJ||LJL7|F-JL7F--JFJ|F7F7|LJL-7|L-----7FJF7F7FJ|F7FJF7F7L-7F--7LJF----7F7F7F77.7-F.FF7J-J
|
|
||||||
J7-F7-F|7.||F|J|F--7L7L7LJLJLJF7L-7L7L--7FJL--7L7||L7|L-7FJLJFF7||7F7L7||||||F--7L7F-7F-7|L7|||LJFJ||L7|LJL-7LJF-JF-JF---J||||||F77-J7F7||7.
|
|
||||||
|J-LJF|JL-L-JLLLL-7|7L7|-F7FSFJL7FJFJF7FJL---7L7LJ|FJ|F7|L7F-7|||L7|L7|||||LJ|F7L-JL7||FJ|FJ||L-7L7|L7|L7F7FJF7|F7L-7L7F7F|||LJ||L77JJFL-7FJ
|
|
||||||
L-7|.|..|LJ|L-||FFJL--J|FJ||LJF7|L7|7|LJF----J|L7FJL7||||FJ|FJ|||FJL7||||||F-J||F7F7||||FJ|F||F7L7|L7||FJ||L-J|LJL--JFJ||FJLJF7LJFJ77FL|J|J.
|
|
||||||
L-F--J7F|-J|7.-F-JF7F-7|L7|L--J||FJL7L-7|F7F7F-7||F7||||||FJ|FJ||L7FJ||||||L7FJ||||LJ||||FJFJ|||FJ|FJ||L7|L--7|F7F---J-|LJF7FJL--JL777F-JL-J
|
|
||||||
LLF-L7FJLL7JF7LL7FJLJFJL-JL--7FJLJF7|F7|||||||FJ||||||||||L7|L7|L7|L7||||||FJ|FJ||L-7|||||L|FJ||L7|L7||FJ|F--JLJ|L77F--JF7||L7F7F7F7F-7LF|7|
|
|
||||||
F7.L7L7J.77-||F7LJF7FJF7F7F7FJL--7|||||||||||||FJ||||LJ|||FJL7||FJ|FJ||||LJL7||FJ|F7|||LJ|FJL7|L7||FJ|||FJL-7F7.L7L-JF-7|LJL-J|||||LJFJ7LL7J
|
|
||||||
|77.J7L-7|FJ|||L--JLJFJLJLJ||FF7LLJ|||||||||LJ||FJ||L-7|||L-7||LJ||L7||||F-7|||L7||||LJF-J|F7||FLJ||FJ|||F--J|L-7L---JJLJJF-7L|||||F-JJL-J|7
|
|
||||||
L7---LJ-J-F-J|L-----7|F---7|L-JL---JLJLJLJ|L-7||L7|L7FJ|||F7|LJF--JFJLJLJL7LJ|L7||||L-7|F7||LJL-7FJ|L7|LJL--7|F-JF-7F77F-7L7L-JLJLJL7.|L7J-|
|
|
||||||
.7JJ7||LLLL-7L7LF7F7LJL--7LJF7F-7F-------7|F7||L7||FJ|FJ|||||F7L--7L---7F-JF7L7||LJL7FJ||||L7F-7|L-JJLJF--7FJ||F-JFJ|L7|FJFJF7F7F-7FJF--77J|
|
|
||||||
FJ.FJ7L7.L|-L7L7|||L7F7F7L7FJ||7LJJF-7F-7|LJLJL7|||L7|L-J|||||L---JF---JL-7||FJLJF--JL7||||FJ|.|L7F---7L-7LJL||L-7L-JFJ|L-JFJ||||FJL-JF-J-F.
|
|
||||||
|.FLLL.FFFJ.|L7|||L7LJLJL7||JLJF---JJ|L7|L---7FJ||L7|L7F-J|LJL--7F7L-----7|||L--7L7F-7|LJ||L7L7|FJ|F-7L--JJF7||F7|F--JF|F7FJ.LJLJL7F--J7..LL
|
|
||||||
F.7F|L7L7|F7F7||||FJF-7F7LJ|F--JF---7|FJ|F7F-JL7||FJL7|L-7L7F---J||F---7FJ|||F7FJFJ|FJL7FJ|FJFJ||LLJFJF---7|||||LJL----J||L--7F7F-JL-7F7J7-|
|
|
||||||
L-L-7L--JFJLJLJLJLJFJ|LJL-7|L---JF--JLJJLJLJF7JLJ|L-7LJF7|FJ|F7F7|||F-7LJFJ|||||7L7|L7FJ|FJ|FJFJ|F--JFJF--J|||LJF7F-----JL---J||L7F7FJ||LF-J
|
|
||||||
LFF7FJ||-L-----7F7FJF-7F7FJ|F--7JL---------7||F--JF7|F-JLJ||||||LJ|LJFJ|FJFJ|||L-7|L7|L7LJFJ|||FJL---JLL---JLJF-J|L--------7F-JL7|||L-J|-J7|
|
|
||||||
-J|FLJF7LLJF---J||L7L7LJLJFJL-7L7F7F----7F7LJ|L7F7|||L7F-7L7LJ||F-JF7L7FJFJFLJL7FJL7|L7L-7L7L7||7|F---7F-----7L-7|F--------J|F7FJ||L7F7||FL-
|
|
||||||
LJL-J7.L.FFJF---JL-JFL----JF-7L7|||L---7LJL-7|FJ|LJ||L|L7L7L-7||L7FJ|FJ|FJF77F7|L7FJL7L7FJFJFJ|L7FJF-7||F---7|F-J|L------7F7||LJJLJFLJLJ-77L
|
|
||||||
|F|J.|.|7FJFJ-F---7FF---7F7L7L-J|||F---JF7F7LJL7L-7||FJFJ7L7FJLJLLJFJ|-||L||FJLJFJL7FJFJL7L7L7|FJL7|FJ|LJF--JLJF7L7F7F7F7LJLJL--7F7F--7J-77J
|
|
||||||
||7-|LFFLL-JF-JF-7L-JF-7LJ||L--7LJ|L----JLJL--7|F7|LJL7L7F-JL-----7L7L7|L-J|L-7FJF-JL7|F7|FJFJ||F7LJL7L-7|F---7||7LJLJLJL7F7F---J||L7FJJ--J.
|
|
||||||
FL|FLF|7FLF7L--JFJF--JJL-7|F7F7L-7L-----------JLJ||F--JFJL--7F-7F-JLL7||F--JF7||LL-7FJLJLJL7L7||||F--JF7LJ|F--J|L7F7JF7F7LJLJF7F7|L7|L7|-77.
|
|
||||||
7-LJ-JJF7||L---7L-JF-----JLJ|||F-JF-------7F7F--7LJL--7L7F--JL7|L---7|||L--7|LJL--7|L7F-7F7L-JLJ||L---JL--JL--7|FJ|L-JLJL---7||||L7LJFJ77L77
|
|
||||||
F7-L-7.|L7L---7L7F-JF7F7F7F7LJLJF7|F------J|||F-JF7F-7|FJL-7F7||F-7FJ||L7F7|L-7F7FJ|FJL7LJL---7FJ|F7F7F7F----7LJL7L7F-------J||||7|F-JF7|FJ|
|
|
||||||
F7||L--L7L--7L|FJL--JLJLJLJL-7F7|LJL-7F7-F7|LJL-7||L7LJL-7.|||||L7|L7||FJ|LJF-J||L7||F-JF----7||FJ|LJ|||L---7L---JFJL-7F7F7F7|LJL-JL-7|L77L|
|
|
||||||
|L|FF..LL--7L-JL7F7.F-----7F-J|||F---J|L7|LJF7F7LJL7L7F-7L7LJ|||FJL7|||L7|F-JF7||FJLJL-7L7F-7|LJL7L-7||L----JF-7|FJF--J|||LJ||F--7F-7LJFJJ..
|
|
||||||
F-FJ|-|JLJJL---7LJL-JF7F-7|L--JLJL--7FJFJ|F-JLJL---JFLJLL7L-7||||F7LJ|L7||L7FJLJ||LF77FJFJL7LJF-7|7FJLJF-7F7FJFJFJFJF7L|||F-J||F7LJFJF-JJ-77
|
|
||||||
|.LL--J7F7F--77L-7F--JLJFJL----7F---J|FJFJL----------7-F7|F-JLJ|LJL-7|FJ||FJ|F--JL7|L7L-JF7L--JFJL-JF--JJLJLJFJLL7|FJL-JLJL77|LJL-7L-JF7|F77
|
|
||||||
|7.F|7-JJFL-7|F-7LJF-77FJF----7|L---7||FJF-7F7F--7F--JFJLJL-7F-JF-7FJ|L7||L-JL--7FJL7L77FJL-7F7L--7FJF-------J|F7|LJF-7F--7L-JF--7L---J|J-J|
|
|
||||||
J7FL--.|-F--J||FJF7|FJFJFJF--7||LF7FJ||L7L7|||L-7|L-7-|F7F--J|F7|FJL7L7|LJJJF7F-J|F7L7L7L--7|||FF7LJFJF7F------JLJF7|FJL-7L-7FJF7L----7|J--7
|
|
||||||
|7LLL7LJ-L--7LJL-JLJL7L7L7L-7|||FJLJFJL7|FJLJL7FJL-7L7|||L--7||LJ|F7L7|L-77-|LJF7||L7L7L---JLJL-JL-7L-JLJF7F7F--7FJ||L7F7L7FJL-JL----7LJF7--
|
|
||||||
.F-|LL.|F--7L7F7F7F-7L-JFJF7|LJLJF-7L7FJ||F7F7LJF77L7|LJL7F-JLJFFJ||FJL--J-FJF7|LJL7L-JF7F--7F--7F7L-----JLJ|L-7||.||LLJ|FJ|F7F-7F---J|L|-F7
|
|
||||||
||7FJ|-FL-7L7LJ||LJFJF-7|FJLJF-7FJ.L-JL-JLJLJ|F7|L-7LJF7-|L7FFLFJFJ|L-7JJJ7L7||L7JJL7F7|LJF7|||FJ|L7F7F7F-7JL7FJ|L7LJF7JLJJ||||L|L-7F-7LJ7JF
|
|
||||||
F7-|JLF-7FL7||FJ|F-JFJFJ|L-7FJFJ|F--7F--7F---J|LJF-JF7|L7L-JF7J|FJ-L7FJJL||LLJL-JJL|LJLJ|FJLJL7L7|FJ|||LJFJF7LJ-L7L7FJ|F7F7|||L7|F7LJFJ7|.FJ
|
|
||||||
FJ||.|L7|F7|L7L-J|F7L7L-JF7LJ7L-JL-7|L-7|L----JF7L-7|||FJ7F-J|FJ|J|FJ|J--7LFJ.|JL-FF7F7F7L7F7FJJLJL7|LJF-JFJ|LF7-L-JL7||LJ|||L7|||L-7|F--F-|
|
|
||||||
.FJ|FJ||LJLJFJF7.LJL-JF--JL--------JL--JL------JL-7LJ||L--JF7|L-J-FJFJ-7JLF|7F77J7FJLJ||L7LJLJF7-F7LJF7L-7L7L-JL7-F7FJLJF7|LJJLJ||F7LJF|.L7F
|
|
||||||
F--7J.FJF7F7L-JL77F7F7L--7F7F------7F-----------7FL-7LJF7F7|LJ-LJ.L-J|-7.FFJJ.L-.FL--7||FJLF-7||FJL--JL--JFJF7F7L7|||F--JLJF7F-7|LJL---7.LF-
|
|
||||||
J..|.L|FJLJL--7FJFJLJ||F7LJLJF-----J|F-------7F7L7F7L-7|||||J|..|.|L.7J|-J|7L7J.L|F7J|LJL--JFJ||L7F-------JFJLJL7LJ|||F-7LFJLJFJL7F----J7-FJ
|
|
||||||
F77F7.LJ.FF---JL7L-7FJFJ|F--7L--7F--JL---7F77LJL7LJL7FJ|LJLJ7L7FF-7FJ|.LJ-|-JL7.|FJL-JF--7F7L7|L7LJ-F7F-7F-JF7F7L--J|||FJFJF7FJF7LJF7JJJL7J7
|
|
||||||
F|-|.-|77FJF-7F7L--JL7|FJL-7|F7JLJF---7F7LJL---7L7F-JL7L----7-L|7.-7.-7L|||J||F7LL7F--JF7LJL7||FJF7FJLJFJL--J||L-7F-JLJL-JFJLJFJL--J||7||JF-
|
|
||||||
77LLJ-F-7L7|7LJL7F7F7LJL7JFJLJ|F7.L7F7LJL------J.LJF-7|F7F7FJJ.F-7L|FJJ.-7J.L-JFLFJ|F--J|F--JLJL-JLJF-7|.F7F7LJF7LJF7F7F7FJF--JF7F-7L7--J.F|
|
|
||||||
F7.F|FL7|-LJF7F7LJLJL--7L7L--7|||F7LJL7F------7F---JFJ||||LJ|7F7-F-|J|F7---7.L--JL-JL--7|L----------JFJL-JLJL--J|F-JLJLJLJ7|F--JLJ-L-JJ|LFLJ
|
|
||||||
|L7-F7FJL7F7|LJL-7F7F7F|FJF--JLJLJL---JL-7F7F7LJF7F7L7||LJF7F7JJFJ7L7--JJJF|J7L7FF-----J|F----7FF7F7FJF7F7F----7|L-------7FJL----77JL7F-7JJ.
|
|
||||||
L7L7||L7FJ||L-7F7LJLJL-JL7|F---7F------7J||||L--JLJL-JLJ7FJLJ|J.|-JJL7JF.FJ-.7JF-L-----7LJF7F7L-JLJLJFJLJLJF7F7|L7F7F----J|F-----JF7-L7JLLL|
|
|
||||||
LL7LJL-JL-J|F7LJL-------7|LJF7LLJF-----JFJ|LJF--7F7F7F7F7|F--J.F|7|FFJ|L7J|J7LLL7F-----JF-JLJ|F7F-7F7|F----JLJ|L7|||L-7F--JL------J|-F77L-.|
|
|
||||||
.LL7F-7F7F7LJL-----7JF7FJ|F-JL7F7L--7F7J|FJF-JF-J|||LJ||||L---7F7J7|JLF7J.L7|7-|L|F----7|.F7FJ|||-LJLJL------7|FJ|||F7LJF7F7F------J.FLL-|-|
|
|
||||||
|FFJ||||LJL7F---7F7L-JLJFJL--7|||F--J|L7||-|F-JF7|LJF-J||L7F--J|L7-JJ.F7--F77L-7JLJF---J|FJLJFJ||F-7F7F7JF7F7|LJFJ|LJ|F-J|||L7F7F---7J7.77.J
|
|
||||||
|-L7L7LJF--J|F--J|L----7|F7F7||||L-7-|FJ|L-JL-7|LJF-JF-J|FJL--7|FJ7|J-|L7F||7.LF---JF-7FJL7F7|FJ|L7LJLJL-JLJLJF7L-JF7||F-J|L7LJLJF--J--7LL|J
|
|
||||||
JLLL-JJ|L-7FJL---JF----JLJ|||||||F7L-JL-JF7F--J|F-JF7L-7||F---J|L7-J.FL7|FJ|J7JL--7FJFJ|F7LJLJL7|LL--7F--7F7F7||F7-||LJ|F7L7L7F-7L---7FF7-||
|
|
||||||
LFJJ.|F77FJ|F-----JF--7F-7LJLJLJLJL---7F7|LJF7J||F-J|LFJLJL-7F7|FJJL--FJLJFJLJFF7|LJ.L-J||F----J|F7F7LJF-J|LJLJLJL-JL-7LJL-J-||FJF---J7-7FL-
|
|
||||||
FJLF7F|L-JFJ|F-----JF7LJFJF-7F-7F7F--7|||L-7|L-JLJF7L-JF---7||LJL-77|FL-7FJF7|FJ|-F7F---J|L-----J|LJL--JF7|F----7F----JF-7F-7||L7L----7J|7FJ
|
|
||||||
L-JJF-JF--J|LJF7F7F-JL-7L7|FJ|7||LJF7||||F7LJF7F-7|L7F7L--7||L7F--JJFFFFJ|-L-LL7L7||L---7L-----7LL---7F-JLJL---7|L----7L7LJFJLJJL-7F-7|FFJ.7
|
|
||||||
FLJJL--JJF--7.||||L7F-7L-J|L7|FJ|F-JLJLJLJL7FJ|L7|L7LJ|F--JLJ||L--7F7JFJFJJ|LL-L7||L7F7|L-7F7F7L-----J|F--7F7F-JL-7F-7L-JF7L7FLF-7LJLLJJJ77F
|
|
||||||
|F--L.|F-L-7L-JLJ|FLJ|L---JFLJL-JL---7F7F7.LJJL-JL7L-7|L7F--7FJF--J||J|FJF--7J7FJ||FJ||F7.LJLJL---7F--J|F7LJLJLF7L|||L-7FJ|FJF7L7|F7L|F|LFJ|
|
|
||||||
|L77LFJL-LFJF7F-7|F--7F7FF----------7LJLJL-------7L--JL7LJF-JL7|-F7||FJL-JF-JLFL7||L7|||L7.F7F----J|LF7LJL7F---JL7LJF-7LJFLJFJL-JLJL-7F|-J.|
|
|
||||||
L-F7.J.|LLL7|||FJLJF7LJL-JF--7F7F--7|F-7F---7F---JJF7F7L--J-F7|L7|||||F7F7|.LF--J|L7||LJFJFJ|L-----JFJL---JL7F---JF7L7L-7F-7L-7F----7L77.LLJ
|
|
||||||
J|L||.-|.|.LJLJL--7|L-7F--JF-J|||F-JLJL|L--7LJF7F-7|||L-7F7|||L7LJ|||||LJLJF7L7F7L7|||F7L7L7|LF7F---JF---7F7||F7F7||FJF-J|FJF-JL---7L-JJ.L-|
|
|
||||||
FL-J||F-7.F------7|L7FJ|F--JF7|LJL----7L--7|F-J||FJ|LJF-J|L-JL7L-7||||L---7|L7LJL7|||LJL7L-JL-J|L----JFF7LJLJLJLJLJLJFJ-FJL7L7F----J|7L-7-7J
|
|
||||||
J|.L-LL-F7L---7F7LJFJ|FJ|F7FJLJF7F7F--JFF7LJL-7LJ|FJF7|F7L--7FJF7|||LJF7F-JL7L7FFJLJL--7L-----7|JF7F7F-JL------7F----J7FJF7|FJL7F---7-7|F7|J
|
|
||||||
F-JJ.||.LF7F--J||F7L7|L7||LJF--J||LJF7F7||F7F7|F-J|FJLJ||F7FJ|7|||LJF-JLJF7FJFJFJF7F---J-F----JL-JLJ|L-7F-----7||F---7FJFJ|||F-J|F--JJ7F|FJ.
|
|
||||||
JJ--L-F--J|L---J||L7|L7|LJF7L--7|L--JLJLJLJ||||L--J|F7FJ|||L7|FJ||F-JF-7FJ|L7L7L7|LJF-7F7L7F--7F---7||FJ|F---7|LJ|F--J|FJ-LJ|L--JL7F-7-F-7.|
|
|
||||||
F|J.L-L7F7L-----JL7LJFLJ.FJL-7FJL----------J|LJF7F7LJLJFJ|L7|||FJ||F-JFJL7|FJFJFJL7JL7|||LLJF7LJLF-JL7L-JL--7LJF7||F77|L7F7FJF--7FJ|FJFL7L77
|
|
||||||
---.FJJLJL7F-7F---JJF-7F7L7F7LJF-7F7F7F7F7F-JF-JLJ|F7F-J.L7|||||||||F-JF-J|L7|FJF-JF7|LJL-7FJL---JF7FJF-----JLFJLJLJL-JFJ|||FJF7||L|L7F7|FJ|
|
|
||||||
FL|--77LJJ||FJ|-F7F7L7LJ||LJL-7L7LJLJLJ||LJF7|FF77LJLJF7F7||||||FJLJL-7|F7|F||L7L-7|LJF7F7|L-7F---J|||L----7F7|F--7F7F7L-JLJL-J|LJFJFJ|LJL-7
|
|
||||||
|LL77||L|LLJL-JFJLJL-JF7|F7F--JFJF-----J|F-JLJFJL7-F7FJ||LJLJ||LJF-7F-JLJ||FJL-JF-JL-7|LJLJF7LJF7F-J|F77F-7LJLJL-7LJ|||F7F-----JF7|FJ7|F7F7|
|
|
||||||
|JF-L-J.LJFF---JF-----J|LJ|L---J-L------J|FF7.|F7|FJ||FJL---7LJF7||LJ-F7FJ|L---7|F7F7||F77FJ|F7||L-7LJL7L7|F7F7F-JF7LJ||||F-----JLJ|7FJ|LJLJ
|
|
||||||
F-7|L|FL.FFJF-7FJF--7F7L-7L-7|F7FF7F-7F-7L-JL7|||||FJ||F7|F7L7FJLJF--7||L7L7F-7|LJLJ||LJL7L7LJLJL7|L--7L-JLJLJ|L--JL-7|||LJF7F-----JFJFJJ7.J
|
|
||||||
J|LL.77..F|FJFJL7L-7LJL-7L-7|FJL-JLJ|LJFJF7F-J||LJ|L7|||L7||FJ|F77L-7LJL7L7|L7||F7F-JL7F-JFJF7F-7|F---JF-----7|F7F7F7||||F7|LJF----7L7|J-L7|
|
|
||||||
J7-JF||F7LLJJL--JF-JF7F7L--JLJF-------7|FJLJF7|L-7L7|||L7|||L7||L7F7|F--JF||FJ|||LJF--J|F7L7|||-|LJF7F7|F----JLJLJLJLJ||LJ|L77|F---JFJL77.--
|
|
||||||
LF.7-F---7|-|-F7FJF7|LJL7F-7F-JF7F----JLJF-7|||F7|FJLJL7||||-|||FJ|LJL7F7FJLJFJ|L7FL--7LJL7LJLJFJF7|LJLJL---7F7F7F7F7|LJF7L7L-JL7F7L|F-JJF|7
|
|
||||||
FFFJ||-|FJ.-F-JLJFJLJF7LLJ.||F-JLJF7F7-F7L7|||||LJL---7|||||FJLJ|L|F--J||L-7FJLL7L-7F-JF--JF--7L7|||FF7F7F--J|LJLJLJL7F7|L7L---7LJL-JL-7J-7J
|
|
||||||
|JL-|7JF|-F-L--7FJF--JL--7FJ|L----JLJL-JL-J||LJL7F-7F-J|||||L7F7L7|L7F7||F-J|F7FJF-JL-7L77FJF-J|LJLJFJLJLJF7FJF7F-7F-J|||FJF7F7L--7F-7FJJ.LJ
|
|
||||||
|.7-|LF7J.F.LF-J|7L-----7|L-JF------7F-----JL7F-J|FJL-7LJLJ|FJ|L-JL7LJLJ|L-7|||L7L-7F7L7L7|FJFF--7F7L-7F-7|||FJ||.LJF7||||FJLJL--7|L7|L7L-7|
|
|
||||||
F7LLFF|J.F||FL--JF-7F7F-J|F--JF----7||F---7F7|L--J||F7L7F-7LJFJF-7JL7F--JF-J||L7L7FJ|L7L7LJ|F7L-7|||F-J|FJ|LJL7LJF7FJLJLJLJF---7FJ|FJL7|.|7L
|
|
||||||
LJ7.7.|LF-7-F--7.L7||||F7|L---JF---JLJ|F--J|||F---JFJ|LLJFJF-J7|FJF7|||F7L-7||FJJ|L7L7|FJF-J|L7FJLJ|L--JL-JF7FJF7|||F---7F7L--7|L7|L77LJ7J|J
|
|
||||||
.7-FJF|JLF|JL7FJF7||||LJ||F---7L----7FJ|F7FJLJ|FF7-|FJF7FL7L7F7|L7|LJ|FJL7FJLJL-7L7L7||L7|F7L7|L--7|.F7.|F7|||F|||||L-7LLJ|F-7||FJL-J-|7|FJ7
|
|
||||||
7JFL7.L7|L-F-JL-JLJLJ|F7|LJF-7L-----JL7LJ|L--7L7||FJL7||F7L7LJ||FJL7FJL7FJL--7F-JJL7LJ|FJ||L7||F7FJL7|L7FJLJ|L-JLJLJF-JF-7|L7LJLJJLFL-L|J.F-
|
|
||||||
||FFF--JLFJL--------7LJLJF-JFJF7F7F7F7|F-JFF7|FJ||L7FJ|||||L7FJ||F7||F7|||F7|||F77|L7FJ|FJL7|||||L7FJL7|L--7|F7F7F-7L7FJFJL-JJF7F7F7J..--FJ7
|
|
||||||
|F--J.J-FLFJF-------JF7F7|F7L7|||LJ||||L7F-J|||FJ|FJL7||||F7|L7|||||||||L7|L7|LJL7F7||FJ|F7||||||FJL7FJ|F7FJLJ|||||L7LJFJ.F7F-JL7F7J-F7..-7L
|
|
||||||
|||J|.LF-J.FL--7F----JLJLJ|L-J|LJF7LJ||FJL7FJ||L7||LFJ|||LJ||FJ|||||||||JLJF|L-7FJ|||||J||LJLJ||||F-JL7LJ|L--7LJ|L-7|F7|F7|LJF-7LJ|J.|J7L-J7
|
|
||||||
LL--7...|F-JFF-J|F-7F-----JF-7|LFJL--J||F7|L7||FJ|L7L7|LJF7LJL7|||LJ||LJF---JF7|L7|LJ|L7|L---7||||L-7FJF-JF--JF7|F-J|||LJLJF-JFL--J..|LJL7LL
|
|
||||||
FL|-|--|JLF77L--J|FJL--7F7FJFJL7|F7F-7|LJLJ-|||L7|FJFJL--JL--7LJ|L7FJL7FJF7F7|LJ|||F-JFJ|F7F7||||L-7|L7|F7L---J||L-7||L7F--JJF---7|FF7.L7J.|
|
|
||||||
LF-FJJ-||L-JF7F7FJL----J|||LL7FJLJLJ||L7F---J||FJ|L7L7F7F-7F7|F-JFJL--JL-J|||L--7|||F7L7||||LJ|||F-J|FJLJ|F7F7FJ|F-JLJFJL----JF--JF-JL77|...
|
|
||||||
L--|L-.F7-|.|LJLJF7F--7FJ|L7JLJF7F7F-JFJL---7|||.L-JFJ||L7LJLJL7FJJF------J||F7FJLJ|||FJ||||F-J|||JFJL--7|||||L7|L---7|F7F7F-7L---JF7FJ-F--F
|
|
||||||
.L-|7L7|F-J-L---7|LJF-JL7L7|F--JLJLJF7L7F---J||L7JF-JFJL7L7F--7|L-7L7F---7FJLJ||F-7|||L7|||||F7||L7L7F7FJ||||L7|L7F-7|LJ||LJ-L7F---JLJ||||FJ
|
|
||||||
7-F--77FF-L-LF--JL-7L---JJLJL7F7F--7||FJ|F7F7|L7|FJF7L7J|FJL7FJ|F7|FJL7F-JL-7|||L7LJ||FJLJ|||||||FJJ||LJFJ|||F|L7|L7|L7FJL7F77|L77||JFJ---L7
|
|
||||||
FFLJ.LL|J7JFFL7F7F7|F---7F7F7LJ||F-J||L7||LJ||L|||FJ|FJFJL--J||LJLJL7FJL7F-7L7LJ-L--J|L--7|||||||L7FJL-7L-J|L7|FJL7||FJ|F7LJL7|FJ--7-|JLJ7-|
|
|
||||||
LJ7-7JFLL-7LFFJ||||||F-7LJLJL--J|L7FJ|FJ||F-JL7||||FJL7|F7F-7|F-7F--J|F-JL7|FJF------JF7FJLJLJLJ|FJ|F-7L--7L7|||F7||LJFJ||F7FJLJ-L-JJL--LJ7|
|
|
||||||
FF7JL-F||-7.|L7||||||L7L-----7F7L7||FJL7LJL-7FJLJ||L7FJLJ|L7|||FJL7F7|L-7FJLJFJF---7F-J|L-7|F---JL7|L7L7F7|FJ||LJ||L-7L7|LJ|L-7F7F7.L-7.|FF7
|
|
||||||
LLJ|L7.L7-F-7JLJ||LJL-JJF7F-7LJ|FJ|||F-JF7F-JL--7||FJL--7L7||LJL-7||||F-J|7F7L-JF7FJL-7L-7L7|F--7FJL-J7LJLJ|FJL7FJ|F7|FJ|F-JF7|||-L.FJF7J-L7
|
|
||||||
LJ-|-J7.LL|FJF7.LJF-7F7FJ|L7L--JL7||||F-J|L-7F-7|LJ|F7F7L7LJ|F7F7|||LJL-7L-JL7F-JLJF7FJ7FJFJLJF-JL--7F7F-7FJL7FJL7LJLJ|FJL7FJ|LJL7|L.FF7.FFJ
|
|
||||||
..FJ..L7LFJL-J|-F7|FJ||L7L-JF-7F-J||LJL-7|FFJL7|L-7||LJL7|-FJ||||||L7F7FJF7F-JL--7FJ|L-7L7L--7L7F7F-J||L7|L7FJ|F7L---7||F-JL7|F7FJ7.F-L|.F-.
|
|
||||||
F-JF-7FJ-L-7F7L-JLJ|FJL-JF-7|FJL-7LJF-7L|L-JF7|L7FJ|L-7-||FJFJ||LJL7|||L7||L-7F7FJL7|F7L7|F7FJLLJ||LFJL7|L7LJ7||L7F7FJLJL-7FJLJLJF|-F7LJFFJ|
|
|
||||||
.L77JF7JFLFJ|L7F--7|L7F--JLLJL7F-JFFJFJFJF-7||L7|L7|F7|FJ||FJFJ|LF7|LJL7|||F7|||L-7|LJ|FJLJ||JF--JL7|F-J|FJF-7LJF|||L7JF--JL77.L7LL-|JLFLL-F
|
|
||||||
F.|J|LLFJ-L-JJ||F-JL-J|7F-----JL--7L7|FJFJL|||FJ|FJ|||||FJ||FJFJFJLJF--J|||||LJ|F-JL-7LJF7JLJFJF7F7LJL--JL-JFJFF7||L7|FJF7F7L-7F7.|||F-J.FL|
|
|
||||||
L.F7FJF|J7J-||LJL7F7F7|FJF-7F7F7F-JFJLJFJLFJ|||LLJJ|||||L7LJL7L7L7F7L-7FJ||||F7||F-7FJF7||F77|FJ|||F-7F-7F-7L-7|LJL7||L7|LJL7FJ7LF7-|7L7---F
|
|
||||||
|-77.7LJLJ7.LJ.|LLJ|||||FJ.LJ||||F7L--7L-7|FJ|L---7|||||FJJF-JFJFJ|L7FJL7|LJ||||LJFJL-JLJLJ|FJ|FJ||L7LJFJL7L--JL-7FJ||FJL-7LLJJ-...LJ7.JF|F7
|
|
||||||
L-LJ-J-J.||F-.JJ|JLLJLJLJF7F-J||||L---JF7|||J|F7F-JLJLJ|L-7L7FJFJFJFJL-7|L-7|||L7|L-7F7F7F-J|FJ|FJL7L-7L-7L----7FJL7LJ|F--J-JJ.|FJJ.J-F.7L7J
|
|
||||||
L7F||.LFF|||-||FF7.F-----JLJF7|LJ|F7F7FJ|||L7LJ|L--7F-7L7FJFJ|-L-JFJF7FJ|F-J||L7L7F-J|LJ|L-7||7LJF7|F-J7FJF7F--JL7FJ|L|L-7L-|F-J77.FL7.-JFJJ
|
|
||||||
|.FL7.L-LJL-.L|FL-FL-7F-7F--J||7FJ|||||FJ|L7L-7|F--J|FJLLJ|L7|F---JFJ|||||F-JL7L7|L-7L-7L7FJLJF--JLJL--7|FJ|L--7-LJ-77L--J.L7J-FJ7-JL|--7-J|
|
|
||||||
F7-LJ-F|.|-J|J.|J|F--J|7||F7FJL7L7||||||FJFJF7||L---JL--77L7||L--7FJFJL7||L7F7L7||-FJF7L7|L7|LL7F-7F7F-J|L7L7F-JF|L--|LJ.J77L7FF-7F--JJ7||L-
|
|
||||||
L|LLJ-F|7F-FJ.|J--L7F7|FJLJ|L7FJFJ|LJ|||L7|FJ|||F--7F7F7|J|L||F--JL7L7FJLJFJ|L7|||FJFJ|FJ|FJ7J7LJ-LJ|L-7L7L7|L7-|7--|J7-77F77.-LFJ|.L7.|L77|
|
|
||||||
.7-L.FJL-JF|.|L|J.LLJ||L7F-JFJ|7L7L-7LJ|FJ|L7||||F7LJLJLJ-FJLJL7F7FJFJ|-|FJFJFJ|||L7L7LJ7|L7JL-.|7.|L7FJFL7||FJ|L-7FL-F7F-.7J|LL|7JJ7L||.L|7
|
|
||||||
||7|.|F7JF7-7JLJJ7LLLLJ-||JLL7|F-JF7||FJL7L7||||LJL7LF77|7|FF--J|||FL7L-7L-J-L7|LJFJFJ|LFJFJLF7-L7.-JLJ|LJLJLJJJFJ-LJ-|F7|-F7|F|LFJ.L7L-L.|L
|
|
||||||
F-JLLL.FFF-7|777-LF-7-LJLJJ.LLJL-7||L7L7FJFJ|||L7F7L-JL7.LJLL7F-J||7J|F7L7-||LLJF-JFJ|FLL-JJ.LJ|7L7F77LL..|F||JJ7LJJ|L-L7J7.FL-J-L.7L-7JJ7F|
|
|
||||||
|.J..LL7L|J-L||FJFL--.|.|-L-F7F--J||FJ-||-L7||L7LJL7F-7|FFFLFJ|7.LJLFJ|L-J-L-L7|L7FJLLF.|JLLF7-LL7JL-7J|7FLJ7JJ7|JL-J.L||J7-7|L|7L----J77FF|
|
|
||||||
L-J7-|LF-J-L-7J-F7F7JFJ-FFJ|F-JF7FJ||7LLJF-J|L7L7FL|L7LJ77FJL7|J-7|7L-JJ|.|L77L-.LJJ7.LLJ.FL|77||J.|FL7|F7.|JJ7|.FL7LF--JJL7|FJL-.L|-7L-7L|J
|
|
||||||
||LL.7|.7F7.7.|.|LJJFJ|--FJLL-7||L7||--LJL-7L7L7|J-|FJ7L.7.|FJ||7L-7.|JLF-7L7-JJ-||-FL7-J.7|.|FL|.FJLLJL-JFL-FFLL..|JLJLL-|-F|7|.|-LF.-.JFL.
|
|
||||||
F77LF|JF|-LJJF-7LF7.|-|-LJ7F|JLJ|FJLJJJ|7.FJFJ-||LFLJ|L.|..FL7|7J.||LJF7LLFJL||F77|F-J|F-J-7-|-7JF77JLJ-LFF.L7JFL7.FF7|L|L7|.J-L-77.LF7-7L-|
|
|
||||||
-JF7||7F7-7|.F7LJL7-F7|.F7F|J|LL|L7J|.FL--|FJ.|LJ.F-LF7F7---FJ|J|.F|JFLJ-7|JJL7-|L7JJF7J.|LJ.L|7FJ.|F7L|L||J.L-L7-L.F|7-L.L--J7L7L77J.L-JL7J
|
|
||||||
L-JL-|---.J-7|7|.F7-JF----FJL-7-|FJ|LFFF--LJ|F-|-7|J|LL||FJLL-J-FF-|JFL7L|JL7.L--JL|JF|L|-F.---|J|FJF|7L7L|FFF.LFF.F-7|||7JFF|-J7FLFJ7.F|FLJ
|
|
||||||
|-J.LLJFJ-JL|.J-7LJ-7.LFJ7L|-FJ-||.|||LJ|.L7|JLJL-F-F7LL|-7-LLL..|-J.L.|F|F--777LLF--||F|F7J7.|JL7-L7.-7L7LJ7|-FF|-7-7JFJ7---77|-7.L-FJFF7J|
|
|
||||||
77LL-J.-JJ-F--L-J-LF-F--7-.--|--LJ-FL-JJL7.7-JJ.FLJ-7-JLLL--7-|-|LLL7.--J.JJ-LF7-LLJ-L|J-LJ.LL7.LFJ.L|L-J--LL|7-7LJ-J|-7-J.|JL|JJ.7-L|JLJL.L
|
|
@ -1,9 +0,0 @@
|
|||||||
...........
|
|
||||||
.S-------7.
|
|
||||||
.|F-----7|.
|
|
||||||
.||.....||.
|
|
||||||
.||.....||.
|
|
||||||
.|L-7.F-J|.
|
|
||||||
.|..|.|..|.
|
|
||||||
.L--J.L--J.
|
|
||||||
...........
|
|
@ -1,200 +0,0 @@
|
|||||||
28 38 58 115 255 558 1167 2343 4564 8699 16328 30378 56447 105549 199601 381868 735876 1418100 2712150 5115341 9472583
|
|
||||||
24 34 56 103 191 343 593 990 1602 2520 3862 5777 8449 12101 16999 23456 31836 42558 56100 73003 93875
|
|
||||||
12 30 66 118 187 291 486 901 1807 3760 7885 16402 33536 67001 130303 246169 451478 804146 1392500 2347766 3860393
|
|
||||||
11 7 -1 -10 4 101 392 1052 2337 4631 8595 15584 28661 54781 109041 222274 453659 910327 1775963 3349730 6094694
|
|
||||||
13 26 56 110 200 360 677 1347 2785 5847 12267 25493 52275 105732 211455 420013 833076 1658291 3323777 6713131 13636877
|
|
||||||
24 36 50 68 92 124 166 220 288 372 474 596 740 908 1102 1324 1576 1860 2178 2532 2924
|
|
||||||
4 10 18 35 81 207 523 1232 2664 5299 9766 16819 27345 42607 65306 103013 177906 352348 792280 1916515 4732055
|
|
||||||
2 4 15 46 115 246 479 915 1841 4022 9326 21995 51143 115539 252570 534754 1099830 2205374 4328183 8346246 15873877
|
|
||||||
6 16 41 104 240 508 1016 1959 3670 6684 11815 20246 33632 54216 84958 129677 193206 281560 402117 563812 777344
|
|
||||||
10 24 59 127 240 410 649 969 1382 1900 2535 3299 4204 5262 6485 7885 9474 11264 13267 15495 17960
|
|
||||||
1 3 19 65 161 334 621 1072 1753 2749 4167 6139 8825 12416 17137 23250 31057 40903 53179 68325 86833
|
|
||||||
1 3 14 46 118 256 493 869 1431 2233 3336 4808 6724 9166 12223 15991 20573 26079 32626 40338 49346
|
|
||||||
5 20 54 111 200 339 551 863 1338 2203 4189 9270 22068 52271 118490 254073 515553 994838 1837662 3275301 5689494
|
|
||||||
11 19 37 74 152 315 630 1176 2019 3189 4728 6991 11599 23863 58350 151043 385257 945993 2232085 5082986 11226568
|
|
||||||
-6 -5 -1 6 16 29 45 64 86 111 139 170 204 241 281 324 370 419 471 526 584
|
|
||||||
19 44 79 123 175 234 299 369 443 520 599 679 759 838 915 989 1059 1124 1183 1235 1279
|
|
||||||
20 26 41 76 144 261 459 824 1572 3189 6707 14297 30581 65483 140200 299218 633600 1324592 2722729 5487182 10824554
|
|
||||||
2 13 49 134 316 686 1400 2714 5060 9211 16601 29879 53781 96407 171038 298877 513930 873445 1482345 2550372 4520094
|
|
||||||
7 22 55 116 218 381 645 1090 1862 3209 5540 9533 16335 27918 47680 81409 138761 235440 396309 659706 1083288
|
|
||||||
23 34 43 54 73 105 151 202 234 223 220 555 2284 8074 23894 62315 149406 340397 757350 1681105 3771572
|
|
||||||
-2 9 31 72 157 346 769 1701 3724 8065 17266 36441 75513 153008 302220 580858 1085650 1973817 3493849 6028622 10154597
|
|
||||||
17 35 83 175 326 554 878 1305 1800 2233 2292 1349 -1702 -8485 -20570 -37084 -47977 -18173 145725 659887 1980386
|
|
||||||
6 19 49 119 273 598 1257 2530 4856 8858 15310 24963 38082 53479 66865 68818 44405 -18660 -94790 -14282 809438
|
|
||||||
17 21 22 20 15 7 -4 -18 -35 -55 -78 -104 -133 -165 -200 -238 -279 -323 -370 -420 -473
|
|
||||||
8 23 59 139 312 672 1383 2710 5056 9005 15371 25253 40096 61758 92583 135480 194008 272467 375995 510671 683624
|
|
||||||
9 16 34 63 103 154 216 289 373 468 574 691 819 958 1108 1269 1441 1624 1818 2023 2239
|
|
||||||
8 19 59 140 275 481 794 1315 2308 4381 8817 18206 37692 77458 157694 318613 640892 1287715 2591041 5226414 10560561
|
|
||||||
8 21 37 57 82 107 117 88 -4 -163 -339 -377 54 1555 5117 12270 25264 47285 82709 137397 219034
|
|
||||||
22 34 44 52 58 62 64 64 62 58 52 44 34 22 8 -8 -26 -46 -68 -92 -118
|
|
||||||
28 57 114 220 416 779 1446 2651 4785 8494 14832 25483 43057 71450 116238 185052 287858 437047 647230 934638 1316054
|
|
||||||
16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96
|
|
||||||
28 39 48 62 97 180 347 630 1022 1413 1518 905 -557 -1064 7553 50137 189888 570667 1494764 3559032 7883557
|
|
||||||
5 0 3 30 106 262 542 1035 1947 3728 7269 14184 27192 50614 91000 157901 264801 430224 679031 1043922 1567158
|
|
||||||
4 21 55 119 239 461 864 1591 2913 5356 9967 18894 36631 72557 145803 294037 588486 1158435 2229571 4181885 7634411
|
|
||||||
8 11 15 33 81 182 384 805 1728 3777 8206 17321 35023 67400 123199 213865 352632 551879 817609 1139457 1474069
|
|
||||||
6 15 30 69 162 358 754 1560 3223 6658 13679 27799 55705 109973 214073 411584 783020 1476065 2758724 5110417 9373988
|
|
||||||
18 26 37 54 84 138 231 382 614 954 1433 2086 2952 4074 5499 7278 9466 12122 15309 19094 23548
|
|
||||||
3 -2 -7 -12 -17 -22 -27 -32 -37 -42 -47 -52 -57 -62 -67 -72 -77 -82 -87 -92 -97
|
|
||||||
16 32 61 121 242 466 847 1451 2356 3652 5441 7837 10966 14966 19987 26191 33752 42856 53701 66497 81466
|
|
||||||
13 35 79 160 302 554 1015 1865 3399 6061 10475 17470 28096 43628 65555 95551 135425 187047 252247 332684 429682
|
|
||||||
13 6 -9 -20 11 156 538 1364 2981 5967 11279 20495 36207 62647 106658 179157 297277 487420 789503 1262734 1993315
|
|
||||||
14 11 18 51 141 348 790 1714 3660 7803 16602 34939 71995 144184 279550 524126 950858 1671811 2854498 4743307 7687145
|
|
||||||
2 7 22 56 123 242 437 737 1176 1793 2632 3742 5177 6996 9263 12047 15422 19467 24266 29908 36487
|
|
||||||
19 34 68 128 220 349 519 733 993 1300 1654 2054 2498 2983 3505 4059 4639 5238 5848 6460 7064
|
|
||||||
21 48 85 132 195 292 468 836 1684 3739 8772 20876 48964 111327 243473 510946 1029407 1994954 3728471 6738732 11810049
|
|
||||||
11 27 55 108 210 394 696 1143 1733 2405 2997 3190 2436 -132 -5810 -16455 -34641 -63841 -108637 -174960 -270362
|
|
||||||
12 12 12 25 90 292 791 1869 4012 8064 15537 29266 54829 103647 199701 393835 793523 1623291 3344337 6885726 14081159
|
|
||||||
5 13 31 72 164 358 736 1410 2499 4070 6039 8076 9700 11088 15835 38309 120943 371965 1044017 2693426 6497234
|
|
||||||
-1 -4 4 46 162 411 867 1607 2698 4206 6273 9338 14615 24985 46510 90835 178809 345728 648682 1176574 2063472
|
|
||||||
8 16 23 40 92 216 455 847 1408 2108 2839 3374 3316 2036 -1401 -8323 -20552 -40520 -71401 -117260 -183220
|
|
||||||
27 54 93 143 215 340 581 1059 2009 3892 7603 14833 28665 54510 101519 184641 327535 566586 956321 1576571 2541779
|
|
||||||
18 25 37 63 114 201 333 515 746 1017 1309 1591 1818 1929 1845 1467 674 -679 -2763 -5777 -9950
|
|
||||||
11 23 58 131 266 508 956 1834 3618 7240 14408 28142 53779 101035 188408 352630 668776 1292502 2547568 5104551 10339633
|
|
||||||
20 30 55 112 230 464 919 1792 3444 6514 12092 22012 39486 70717 129039 244932 488666 1018738 2181538 4711697 10130222
|
|
||||||
8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 113 120 127 134 141 148
|
|
||||||
8 17 18 5 -32 -110 -256 -510 -928 -1585 -2578 -4029 -6088 -8936 -12788 -17896 -24552 -33091 -43894 -57391 -74064
|
|
||||||
0 6 28 73 155 304 573 1043 1826 3066 4938 7645 11413 16484 23107 31527 41972 54638 69672 87153 107071
|
|
||||||
8 14 26 39 49 61 112 320 974 2687 6657 15139 32341 66134 131237 254984 487637 921079 1723959 3210704 5981290
|
|
||||||
-3 6 32 88 209 468 1005 2092 4276 8669 17497 35106 69812 137381 267702 517614 995199 1904592 3626038 6854228 12829699
|
|
||||||
16 14 18 32 52 64 53 40 180 979 3722 11247 29252 68383 147421 297965 571096 1046604 1845466 3146378 5207268
|
|
||||||
0 19 60 146 330 708 1432 2721 4864 8205 13096 19800 28322 38142 47820 54439 52848 34663 -13020 -109250 -281238
|
|
||||||
19 37 70 119 185 269 372 495 639 805 994 1207 1445 1709 2000 2319 2667 3045 3454 3895 4369
|
|
||||||
8 18 30 51 92 174 350 764 1787 4310 10347 24225 54843 119816 252855 516572 1024178 1975442 3715028 6825207 12270294
|
|
||||||
9 31 64 108 163 229 306 394 493 603 724 856 999 1153 1318 1494 1681 1879 2088 2308 2539
|
|
||||||
27 36 46 65 110 223 504 1178 2725 6116 13214 27417 54640 104755 193632 345950 598975 1007532 1650430 2638633 4125506
|
|
||||||
-3 -9 -19 -25 -9 63 252 660 1449 2882 5441 10155 19412 38768 80661 171586 365345 766697 1572457 3141343 6110353
|
|
||||||
9 13 16 19 30 81 256 730 1819 4041 8188 15409 27304 46029 74412 116080 175597 258613 372024 524143 724882
|
|
||||||
8 17 26 35 44 53 62 71 80 89 98 107 116 125 134 143 152 161 170 179 188
|
|
||||||
13 29 69 150 300 564 1014 1770 3055 5340 9688 18482 36824 75023 152753 305660 595433 1124631 2057879 3651414 6293380
|
|
||||||
19 39 64 101 169 299 534 929 1551 2479 3804 5629 8069 11251 15314 20409 26699 34359 43576 54549 67489
|
|
||||||
26 48 79 119 168 226 293 369 454 548 651 763 884 1014 1153 1301 1458 1624 1799 1983 2176
|
|
||||||
16 28 45 62 80 120 240 563 1330 3003 6482 13603 28310 59352 126262 272164 590489 1279633 2753130 5858989 12311553
|
|
||||||
16 27 38 49 60 71 82 93 104 115 126 137 148 159 170 181 192 203 214 225 236
|
|
||||||
16 26 52 107 212 412 806 1601 3204 6384 12578 24502 47411 91748 178785 352718 706597 1437520 2962583 6158201 12843931
|
|
||||||
15 23 44 100 234 527 1138 2396 4995 10379 21457 43857 88008 172421 328611 608145 1092295 1904695 3227218 5318970 8537806
|
|
||||||
19 35 67 125 219 359 555 817 1155 1579 2099 2725 3467 4335 5339 6489 7795 9267 10915 12749 14779
|
|
||||||
14 9 -2 -25 -60 -96 -107 -38 250 1146 3714 10678 28555 72047 172745 395881 871826 1854119 3824278 7677249 15042442
|
|
||||||
0 14 48 119 263 559 1175 2446 5004 10002 19512 37235 69743 128583 233715 418934 740144 1287614 2203656 3707527 6129775
|
|
||||||
-6 -13 -11 9 54 127 233 409 798 1797 4331 10342 23629 51210 105348 206191 384454 682459 1149765 1826027 2697892
|
|
||||||
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6
|
|
||||||
9 15 23 41 93 228 528 1127 2265 4422 8622 17094 34685 71869 151157 320706 682873 1452897 3076233 6455943 13379245
|
|
||||||
26 38 54 85 154 309 648 1354 2736 5284 9786 17637 31605 57512 107535 206117 399770 772302 1467138 2718337 4891512
|
|
||||||
7 2 -4 -11 -19 -28 -38 -49 -61 -74 -88 -103 -119 -136 -154 -173 -193 -214 -236 -259 -283
|
|
||||||
17 40 72 120 202 355 665 1340 2867 6327 14000 30508 64985 135242 275772 552897 1092529 2128842 4085140 7700052 14210216
|
|
||||||
-3 -4 -7 -12 -19 -28 -39 -52 -67 -84 -103 -124 -147 -172 -199 -228 -259 -292 -327 -364 -403
|
|
||||||
9 21 38 62 99 161 268 450 749 1221 1938 2990 4487 6561 9368 13090 17937 24149 31998 41790 53867
|
|
||||||
2 9 39 99 204 393 760 1519 3132 6545 13600 27720 54996 105835 197349 356668 625334 1064865 1763453 2843561 4469892
|
|
||||||
20 33 49 75 125 228 457 1004 2337 5480 12453 26893 54846 105671 192927 335020 555266 880875 1340177 1957191 2742379
|
|
||||||
18 21 16 6 5 57 270 860 2190 4774 9202 15936 24945 35235 44593 50493 54394 73951 171296 510662 1464845
|
|
||||||
10 11 18 38 71 100 71 -142 -790 -2316 -5409 -10945 -19511 -29701 -33227 -2480 138638 579164 1757487 4641596 11293649
|
|
||||||
25 33 43 67 138 323 742 1611 3346 6797 13731 27756 55976 111792 219447 421300 789851 1449309 2618271 4700169 8479106
|
|
||||||
27 42 62 88 120 169 286 615 1492 3635 8492 18826 39628 79522 153115 285551 522357 951296 1749478 3279940 6279276
|
|
||||||
-1 11 47 125 280 574 1106 2022 3525 5885 9449 14651 22022 32200 45940 64124 87771 118047 156275 203945 262724
|
|
||||||
13 21 51 115 225 393 631 951 1365 1885 2523 3291 4201 5265 6495 7903 9501 11301 13315 15555 18033
|
|
||||||
20 35 53 83 140 245 425 713 1148 1775 2645 3815 5348 7313 9785 12845 16580 21083 26453 32795 40220
|
|
||||||
10 26 63 132 248 429 694 1074 1663 2751 5098 10427 22235 47044 96239 188667 354200 638496 1109225 1864062 3040786
|
|
||||||
6 -1 -9 -15 -17 -13 13 141 635 2188 6391 16606 39556 88146 186315 377108 735668 1389501 2549183 4553679 7935653
|
|
||||||
9 15 43 117 265 514 885 1388 2017 2745 3519 4255 4833 5092 4825 3774 1625 -1997 -7533 -15495 -26471
|
|
||||||
7 22 41 65 106 207 489 1245 3117 7431 16845 36609 76972 157632 315649 618971 1188707 2234572 4109585 7392185 13006510
|
|
||||||
10 9 5 -1 3 51 224 700 1840 4321 9327 18809 35825 64971 112914 189038 306214 481705 738217 1105107 1619759
|
|
||||||
12 16 30 69 148 282 486 775 1164 1668 2302 3081 4020 5134 6438 7947 9676 11640 13854 16333 19092
|
|
||||||
1 0 10 42 98 172 270 462 979 2368 5718 12970 27324 53756 99658 175614 296325 481696 758098 1159818 1730710
|
|
||||||
8 19 38 73 142 283 562 1079 1973 3430 5708 9217 14739 23954 40566 72513 136014 262573 510546 983505 1858428
|
|
||||||
9 24 57 114 205 359 643 1184 2197 4026 7209 12582 21441 35785 58667 94684 150641 236428 366153 559578 843909
|
|
||||||
8 14 22 32 44 58 74 92 112 134 158 184 212 242 274 308 344 382 422 464 508
|
|
||||||
24 34 44 54 64 74 84 94 104 114 124 134 144 154 164 174 184 194 204 214 224
|
|
||||||
16 30 63 126 233 405 686 1187 2184 4316 8979 19130 40965 87415 185254 389023 807192 1649322 3307839 6494862 12463897
|
|
||||||
-7 -7 1 32 121 335 787 1666 3321 6479 12739 25563 52073 106047 212569 414805 783321 1428197 2513885 4276266 7040633
|
|
||||||
-2 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58
|
|
||||||
13 27 38 41 36 48 177 688 2156 5707 13455 29337 60698 121182 235783 449463 842011 1554867 2842648 5177133 9461476
|
|
||||||
15 42 93 182 326 549 884 1374 2086 3178 5119 9300 19562 45721 111199 268798 632393 1439844 3177921 6832092 14389654
|
|
||||||
7 28 73 151 265 408 559 679 707 556 109 -785 -2315 -4712 -8253 -13265 -20129 -29284 -41231 -56537 -75839
|
|
||||||
8 5 13 42 97 177 284 446 766 1532 3473 8340 20149 47680 109278 241921 518597 1082840 2220086 4508651 9140126
|
|
||||||
17 27 40 71 149 317 632 1165 2001 3239 4992 7387 10565 14681 19904 26417 34417 44115 55736 69519 85717
|
|
||||||
24 37 47 65 117 257 594 1347 2963 6367 13474 28217 58615 120994 248715 510261 1046343 2144574 4386122 8926186 18016274
|
|
||||||
11 16 36 80 158 277 445 706 1254 2711 6703 16929 40991 93338 199774 404089 777493 1431666 2536382 4342822 7213860
|
|
||||||
0 -2 8 48 141 321 657 1303 2580 5096 9915 18799 34571 61685 107144 181982 303624 499562 812938 1310810 2096097
|
|
||||||
4 15 39 91 211 473 995 1967 3741 7078 13740 27774 58093 123376 261026 543285 1106377 2204300 4310572 8314176 15899538
|
|
||||||
-7 6 36 87 163 272 446 788 1568 3411 7651 16966 36460 75419 150039 287505 531891 952452 1654990 2797097 4608209
|
|
||||||
13 29 56 95 152 244 405 692 1191 2023 3350 5381 8378 12662 18619 26706 37457 51489 69508 92315 120812
|
|
||||||
15 27 59 125 237 417 722 1283 2361 4428 8300 15415 28528 53504 103742 210470 445527 969865 2133765 4678765 10135083
|
|
||||||
20 31 57 122 274 596 1223 2377 4439 8101 14695 26909 50338 96812 191434 387177 794467 1639641 3377468 6902112 13932807
|
|
||||||
10 37 91 200 416 820 1528 2716 4696 8091 14175 25464 46666 86122 157896 284700 501870 862641 1445003 2360456 3765020
|
|
||||||
6 24 54 95 153 251 440 812 1516 2778 4926 8421 13895 22197 34448 52106 77042 111628 158838 222363 306741
|
|
||||||
9 24 49 84 125 162 193 281 693 2172 6405 16762 39393 84782 169869 320863 576881 994560 1653801 2664816 4176661
|
|
||||||
3 10 23 57 149 386 945 2142 4499 8866 16685 30566 55492 101260 187366 352765 675303 1309938 2562335 5026719 9836291
|
|
||||||
15 29 55 109 226 481 1024 2134 4299 8344 15672 28779 52397 95981 178896 340733 660899 1294259 2533505 4914517 9388784
|
|
||||||
14 33 78 166 331 644 1248 2423 4711 9165 17861 34963 68917 136884 273538 548338 1099300 2198986 4383250 8701159 17195603
|
|
||||||
7 5 5 7 11 17 25 35 47 61 77 95 115 137 161 187 215 245 277 311 347
|
|
||||||
0 2 9 21 38 60 87 119 156 198 245 297 354 416 483 555 632 714 801 893 990
|
|
||||||
8 11 29 79 200 478 1087 2365 4957 10076 19965 38689 73433 136495 248086 439830 758518 1269449 2059289 3241351 4974534
|
|
||||||
9 26 71 154 282 459 686 961 1279 1632 2009 2396 2776 3129 3432 3659 3781 3766 3579 3182 2534
|
|
||||||
-8 -9 -1 23 70 147 261 419 628 895 1227 1631 2114 2683 3345 4107 4976 5959 7063 8295 9662
|
|
||||||
14 38 88 183 349 621 1047 1694 2656 4064 6098 9001 13095 18799 26649 37320 51650 70666 95612 127979 169537
|
|
||||||
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61
|
|
||||||
10 17 33 71 156 319 593 1016 1655 2681 4550 8393 16823 35591 76964 166498 356232 749489 1545759 3118955 6149158
|
|
||||||
-2 5 20 55 147 378 896 1945 3924 7507 13868 25067 44665 78648 136752 234293 394618 652305 1057252 1679807 2617103
|
|
||||||
-2 -3 -3 12 76 250 640 1443 3044 6202 12405 24581 48599 96524 193673 393656 809674 1677915 3482413 7194006 14714566
|
|
||||||
-5 -2 2 11 40 131 388 1045 2594 6015 13162 27362 54272 103007 187497 327953 552225 896728 1406510 2133961 3135644
|
|
||||||
-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21
|
|
||||||
6 23 51 90 140 201 273 356 450 555 671 798 936 1085 1245 1416 1598 1791 1995 2210 2436
|
|
||||||
22 44 78 135 237 421 758 1410 2772 5783 12540 27421 59046 123639 250801 493519 945638 1772306 3262446 5917591 10599023
|
|
||||||
24 37 60 106 197 375 727 1435 2867 5730 11311 21837 40990 74618 131688 225532 375442 608675 962934 1489396 2256363
|
|
||||||
12 20 49 112 222 392 635 964 1392 1932 2597 3400 4354 5472 6767 8252 9940 11844 13977 16352 18982
|
|
||||||
2 7 24 61 126 227 372 569 826 1151 1552 2037 2614 3291 4076 4977 6002 7159 8456 9901 11502
|
|
||||||
12 11 22 60 158 379 821 1618 2953 5122 8728 15159 27666 53731 110255 234858 510014 1112985 2415218 5172306 10872818
|
|
||||||
17 24 49 120 294 677 1456 2952 5715 10719 19792 36560 68444 130715 254454 501802 994701 1968430 3870295 7539464 14530122
|
|
||||||
25 40 65 122 253 535 1117 2293 4630 9184 17861 34010 63355 115342 204806 353380 588983 939636 1414390 1959381 2372399
|
|
||||||
25 52 90 138 195 260 332 410 493 580 670 762 855 948 1040 1130 1217 1300 1378 1450 1515
|
|
||||||
0 2 24 87 221 468 885 1547 2550 4014 6086 8943 12795 17888 24507 32979 43676 57018 73476 93575 117897
|
|
||||||
19 32 61 117 214 369 603 947 1457 2242 3509 5629 9228 15307 25395 41739 67535 107204 166717 253973 379234
|
|
||||||
23 32 38 44 60 103 197 373 669 1130 1808 2762 4058 5769 7975 10763 14227 18468 23594 29720 36968
|
|
||||||
4 11 19 35 76 180 439 1069 2539 5797 12662 26510 53500 104832 201057 380617 717363 1357502 2598934 5062820 10063437
|
|
||||||
10 19 23 14 -24 -121 -314 -610 -897 -761 888 6598 22021 59353 144459 331532 733040 1580211 3343069 6963206 14293206
|
|
||||||
3 17 48 105 201 354 600 1028 1847 3495 6800 13203 25053 45984 81384 138966 229451 367373 572016 868493 1288977
|
|
||||||
-4 -3 10 49 132 289 583 1147 2252 4449 8873 17855 36050 72341 142802 274973 513588 927669 1618516 2727541 4442064
|
|
||||||
19 39 74 133 236 422 765 1415 2696 5313 10758 22099 45557 93732 192181 392487 797276 1606233 3197558 6267150 12058959
|
|
||||||
-7 -10 -13 -16 -19 -22 -25 -28 -31 -34 -37 -40 -43 -46 -49 -52 -55 -58 -61 -64 -67
|
|
||||||
21 44 74 122 221 432 849 1603 2865 4848 7808 12044 17897 25748 36015 49149 65629 85956 110646 140222 175205
|
|
||||||
18 26 39 66 116 198 321 494 726 1026 1403 1866 2424 3086 3861 4758 5786 6954 8271 9746 11388
|
|
||||||
21 40 78 164 356 766 1605 3259 6420 12322 23187 43106 79841 148586 279840 535679 1042583 2055644 4079972 8092520 15934162
|
|
||||||
20 37 62 95 136 185 242 307 380 461 550 647 752 865 986 1115 1252 1397 1550 1711 1880
|
|
||||||
0 2 15 48 121 283 642 1407 2942 5832 10961 19602 33519 55081 87388 134409 201132 293726 419715 588164 809877
|
|
||||||
8 13 15 13 15 42 131 338 755 1592 3455 8105 20256 51423 127543 303162 686530 1482119 3060047 6065853 11589253
|
|
||||||
12 30 59 93 125 157 214 361 722 1498 2987 5640 10262 18599 34737 67942 137708 281702 566759 1101727 2048287
|
|
||||||
-3 10 49 127 264 492 863 1464 2440 4028 6633 11078 19417 37246 79490 183510 436575 1030078 2361565 5219525 11107638
|
|
||||||
16 33 54 90 174 378 846 1849 3867 7702 14625 26559 46299 77769 126315 199032 305122 456279 667096 955488 1343124
|
|
||||||
19 43 88 176 343 647 1194 2198 4111 7897 15598 31482 64323 131829 269087 544536 1090317 2160903 4249054 8320480 16296305
|
|
||||||
22 41 67 112 212 447 969 2039 4084 7808 14445 26357 48398 90840 175255 345646 688410 1366499 2675535 5132758 9613680
|
|
||||||
12 25 47 89 162 277 445 677 984 1377 1867 2465 3182 4029 5017 6157 7460 8937 10599 12457 14522
|
|
||||||
5 0 -7 -1 49 197 534 1225 2596 5304 10634 21018 41034 79540 154415 302881 602927 1215420 2462671 4968277 9895903
|
|
||||||
-9 -14 -15 1 65 237 627 1430 2974 5775 10594 18507 31038 50464 80459 127293 201992 324897 538038 942790 1811370
|
|
||||||
2 4 0 -10 -11 41 233 709 1684 3458 6430 11112 18143 28303 42527 61919 87766 121552 164972 219946 288633
|
|
||||||
7 26 67 150 317 656 1342 2714 5434 10819 21508 42739 84695 166680 324376 622208 1174037 2177180 3967333 7105608 12513901
|
|
||||||
12 22 38 64 119 247 532 1123 2276 4424 8309 15295 28210 53572 107038 225653 493336 1090494 2385292 5093646 10548309
|
|
||||||
14 12 10 19 59 159 357 700 1244 2054 3204 4777 6865 9569 12999 17274 22522 28880 36494 45519 56119
|
|
||||||
2 14 43 115 280 632 1341 2710 5286 10076 18959 35465 66244 123814 231609 433008 806986 1494370 2740499 4962479 8852304
|
|
||||||
16 36 82 165 307 556 1007 1841 3405 6374 12066 23034 44170 84820 163047 314653 612780 1210538 2432293 4964944 10250289
|
|
||||||
10 8 10 20 58 188 557 1451 3382 7223 14402 27147 48738 83665 137509 216252 324578 462546 619794 766166 837338
|
|
||||||
9 22 46 85 154 288 571 1200 2601 5616 11777 23672 45407 83249 146871 252546 431725 752582 1369644 2629419 5280540
|
|
||||||
16 20 35 87 210 449 878 1653 3133 6129 12402 25663 53593 111897 232285 477770 971150 1946550 3840269 7447123 14183748
|
|
||||||
22 44 94 197 405 821 1643 3250 6376 12465 24392 47913 94545 187207 371116 734593 1448530 2841203 5540681 10747619 20760527
|
|
||||||
4 15 42 101 226 487 1024 2115 4318 8768 17778 36006 72647 145461 288069 563007 1084756 2059673 3853830 7105719 12909204
|
|
||||||
15 23 48 115 271 611 1319 2724 5371 10107 18182 31365 52075 83527 129893 196478 289911 418351 591708 821879 1122999
|
|
||||||
7 6 17 48 107 202 341 532 783 1102 1497 1976 2547 3218 3997 4892 5911 7062 8353 9792 11387
|
|
||||||
-4 3 25 70 153 309 619 1270 2682 5750 12268 25628 51937 101824 193553 358902 655155 1190487 2177891 4048307 7684230
|
|
||||||
-2 4 19 40 65 112 264 766 2210 5847 14057 30979 63235 120551 215877 364424 581237 878545 1269600 1800115 2661524
|
|
||||||
18 30 45 58 64 58 35 -10 -82 -186 -327 -510 -740 -1022 -1361 -1762 -2230 -2770 -3387 -4086 -4872
|
|
||||||
8 20 59 143 292 523 844 1247 1700 2138 2453 2483 2000 697 -1826 -6077 -12688 -22432 -36241 -55225 -80692
|
|
||||||
11 12 8 -7 -28 -26 65 361 1041 2360 4662 8393 14114 22514 34423 50825 72871 101892 139412 187161 247088
|
|
||||||
6 6 19 54 113 189 264 307 272 96 -303 -1028 -2205 -3985 -6546 -10095 -14870 -21142 -29217 -39438 -52187
|
|
||||||
26 40 63 112 222 455 906 1708 3036 5116 8278 13187 21602 38439 76677 167925 383519 874229 1941697 4162964 8603981
|
|
||||||
12 19 31 58 110 209 412 843 1741 3551 7128 14215 28539 58216 120779 253209 531098 1103839 2256973 4519124 8840092
|
|
||||||
14 28 47 71 102 153 266 539 1162 2462 4957 9419 16946 29043 47712 75551 115862 172768 251339 357727 499310
|
|
||||||
19 22 38 89 208 457 958 1941 3833 7447 14380 27796 53861 104226 200137 378978 704206 1279303 2264473 3888958 6437241
|
|
||||||
20 38 83 177 353 665 1204 2120 3650 6152 10145 16355 25767 39683 59786 88210 127616 181274 253151 348005 471485
|
|
||||||
18 33 52 75 103 147 258 596 1573 4137 10313 24197 53757 114135 233848 466630 914030 1767831 3387708 6439669 12137157
|
|
||||||
16 32 61 98 136 164 171 173 281 836 2678 7743 20501 51456 125378 299753 704238 1621680 3648963 8007452 17127734
|
|
||||||
0 9 25 62 141 293 566 1037 1844 3286 6097 12096 25583 56164 124287 271914 582905 1221701 2506400 5046590 10003946
|
|
||||||
-4 12 56 141 280 486 772 1151 1636 2240 2976 3857 4896 6106 7500 9091 10892 12916 15176 17685 20456
|
|
@ -1,3 +0,0 @@
|
|||||||
0 3 6 9 12 15
|
|
||||||
1 3 6 10 15 21
|
|
||||||
10 13 16 21 30 45
|
|
@ -1,136 +0,0 @@
|
|||||||
program day10part1;
|
|
||||||
uses sysutils;
|
|
||||||
|
|
||||||
type
|
|
||||||
direction = (Left, Up, Right, Down, NA);
|
|
||||||
|
|
||||||
|
|
||||||
function step_path(var curr: array of int32; last_direction: direction; c: char): direction;
|
|
||||||
begin
|
|
||||||
|
|
||||||
// step_path := curr;
|
|
||||||
|
|
||||||
step_path := NA;
|
|
||||||
|
|
||||||
case last_direction of
|
|
||||||
Left:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'-': step_path := Left;
|
|
||||||
'L': step_path := Up;
|
|
||||||
'F': step_path := Down;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Up:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'|': step_path := Up;
|
|
||||||
'7': step_path := Left;
|
|
||||||
'F': step_path := Right;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Right:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'-': step_path := Right;
|
|
||||||
'7': step_path := Down;
|
|
||||||
'J': step_path := Up;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Down:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'|': step_path := Down;
|
|
||||||
'J': step_path := Left;
|
|
||||||
'L': step_path := Right;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
case step_path of
|
|
||||||
Up: curr[0] := curr[0] - 1;
|
|
||||||
Down: curr[0] := curr[0] + 1;
|
|
||||||
Left: curr[1] := curr[1] - 1;
|
|
||||||
Right: curr[1] := curr[1] + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (last_direction = NA) then
|
|
||||||
writeln('bruh');
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
file_: text;
|
|
||||||
|
|
||||||
map: array[1..1000] of string;
|
|
||||||
str: string;
|
|
||||||
|
|
||||||
count: int32;
|
|
||||||
|
|
||||||
steps: int32;
|
|
||||||
step: char;
|
|
||||||
|
|
||||||
s_loc, loc: array[0..1] of int32;
|
|
||||||
ld: direction;
|
|
||||||
|
|
||||||
i: int32;
|
|
||||||
|
|
||||||
{ node, left, right }
|
|
||||||
nodes: array[0..1000, 0..2] of string;
|
|
||||||
|
|
||||||
begin
|
|
||||||
{ open inp.txt for reading }
|
|
||||||
assign(file_, 'resources/day10.txt');
|
|
||||||
reset(file_);
|
|
||||||
|
|
||||||
count := 1;
|
|
||||||
while not EOF(file_) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
readln(file_, map[count]);
|
|
||||||
|
|
||||||
i := pos('S', map[count]);
|
|
||||||
|
|
||||||
if i <> 0 then
|
|
||||||
begin
|
|
||||||
s_loc[0] := count;
|
|
||||||
s_loc[1] := i;
|
|
||||||
end;
|
|
||||||
|
|
||||||
count := count + 1;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
loc := s_loc;
|
|
||||||
count := 0;
|
|
||||||
|
|
||||||
{ get possible initial directions }
|
|
||||||
if (map[s_loc[0], s_loc[1] - 1] = '-') or (map[s_loc[0], s_loc[1] - 1] = 'F') or (map[s_loc[0], s_loc[1] - 1] = 'L') then
|
|
||||||
begin
|
|
||||||
loc[1] := loc[1] - 1;
|
|
||||||
ld := Left;
|
|
||||||
end
|
|
||||||
else if (map[s_loc[0] - 1, s_loc[1]] = '|') or (map[s_loc[0] - 1, s_loc[1]] = '7') or (map[s_loc[0] - 1, s_loc[1]] = 'F') then
|
|
||||||
begin
|
|
||||||
loc[0] := loc[0] - 1;
|
|
||||||
ld := Up;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
{ if it's neither up nor left, then both right and down must be valid. }
|
|
||||||
{ pick right arbitrarily }
|
|
||||||
ld := Right;
|
|
||||||
loc[1] := loc[1] + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
while (loc[0] <> s_loc[0]) or (loc[1] <> s_loc[1]) do
|
|
||||||
begin
|
|
||||||
count := count + 1;
|
|
||||||
ld := step_path(loc, ld, map[loc[0], loc[1]]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
count := count + 1;
|
|
||||||
writeln(count div 2);
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,276 +0,0 @@
|
|||||||
program day10part1;
|
|
||||||
uses sysutils;
|
|
||||||
|
|
||||||
type
|
|
||||||
direction = (Left, Up, Right, Down, NA);
|
|
||||||
blocktype = (Empty, Pipe, Red, Blue);
|
|
||||||
|
|
||||||
var
|
|
||||||
blocks: array[1..1000, 1..1000] of blocktype;
|
|
||||||
|
|
||||||
|
|
||||||
procedure replace_if_not_pipe(y: int32; x: int32; new_type: blocktype);
|
|
||||||
begin
|
|
||||||
if blocks[y, x] <> Pipe then
|
|
||||||
blocks[y, x] := new_type
|
|
||||||
end;
|
|
||||||
|
|
||||||
function step_path(var curr: array of int32; last_direction: direction; c: char): direction;
|
|
||||||
begin
|
|
||||||
|
|
||||||
// step_path := curr;
|
|
||||||
|
|
||||||
step_path := NA;
|
|
||||||
|
|
||||||
{ mark lefthand side as blue, righthand side as red }
|
|
||||||
case last_direction of
|
|
||||||
Left:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0] - 1, curr[1], Red);
|
|
||||||
replace_if_not_pipe(curr[0] + 1, curr[1], Blue);
|
|
||||||
end;
|
|
||||||
Right:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0] - 1, curr[1], Blue);
|
|
||||||
replace_if_not_pipe(curr[0] + 1, curr[1], Red);
|
|
||||||
end;
|
|
||||||
Down:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] - 1, Red);
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] + 1, Blue);
|
|
||||||
end;
|
|
||||||
Up:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] - 1, Blue);
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] + 1, Red);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
case last_direction of
|
|
||||||
Left:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'-': step_path := Left;
|
|
||||||
'L': step_path := Up;
|
|
||||||
'F': step_path := Down;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Up:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'|': step_path := Up;
|
|
||||||
'7': step_path := Left;
|
|
||||||
'F': step_path := Right;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Right:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'-': step_path := Right;
|
|
||||||
'7': step_path := Down;
|
|
||||||
'J': step_path := Up;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Down:
|
|
||||||
begin
|
|
||||||
case c of
|
|
||||||
'|': step_path := Down;
|
|
||||||
'J': step_path := Left;
|
|
||||||
'L': step_path := Right;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ mark lefthand side as blue, righthand side as red }
|
|
||||||
case step_path of
|
|
||||||
Left:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0] - 1, curr[1], Red);
|
|
||||||
replace_if_not_pipe(curr[0] + 1, curr[1], Blue);
|
|
||||||
end;
|
|
||||||
Right:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0] - 1, curr[1], Blue);
|
|
||||||
replace_if_not_pipe(curr[0] + 1, curr[1], Red);
|
|
||||||
end;
|
|
||||||
Down:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] - 1, Red);
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] + 1, Blue);
|
|
||||||
end;
|
|
||||||
Up:
|
|
||||||
begin
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] - 1, Blue);
|
|
||||||
replace_if_not_pipe(curr[0], curr[1] + 1, Red);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ move to the next pipe }
|
|
||||||
case step_path of
|
|
||||||
Up: curr[0] := curr[0] - 1;
|
|
||||||
Down: curr[0] := curr[0] + 1;
|
|
||||||
Left: curr[1] := curr[1] - 1;
|
|
||||||
Right: curr[1] := curr[1] + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (last_direction = NA) then
|
|
||||||
writeln('bruh');
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
file_: text;
|
|
||||||
|
|
||||||
map: array[1..1000] of string;
|
|
||||||
str: string;
|
|
||||||
|
|
||||||
count: int32;
|
|
||||||
|
|
||||||
width: int32;
|
|
||||||
|
|
||||||
steps: int32;
|
|
||||||
step: char;
|
|
||||||
|
|
||||||
s_loc, loc: array[0..1] of int32;
|
|
||||||
ld: direction;
|
|
||||||
|
|
||||||
i, j: int32;
|
|
||||||
|
|
||||||
{ node, left, right }
|
|
||||||
nodes: array[0..1000, 0..2] of string;
|
|
||||||
|
|
||||||
current: blocktype;
|
|
||||||
invalid: blocktype;
|
|
||||||
|
|
||||||
red_count, blue_count: int32;
|
|
||||||
|
|
||||||
begin
|
|
||||||
{ open inp.txt for reading }
|
|
||||||
assign(file_, 'resources/day10.txt');
|
|
||||||
reset(file_);
|
|
||||||
|
|
||||||
count := 1;
|
|
||||||
while not EOF(file_) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
readln(file_, map[count]);
|
|
||||||
|
|
||||||
i := pos('S', map[count]);
|
|
||||||
|
|
||||||
if i <> 0 then
|
|
||||||
begin
|
|
||||||
s_loc[0] := count;
|
|
||||||
s_loc[1] := i;
|
|
||||||
end;
|
|
||||||
|
|
||||||
count := count + 1;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
width := length(map[1]);
|
|
||||||
|
|
||||||
loc := s_loc;
|
|
||||||
|
|
||||||
{ get possible initial directions }
|
|
||||||
if (map[s_loc[0], s_loc[1] - 1] = '-') or (map[s_loc[0], s_loc[1] - 1] = 'F') or (map[s_loc[0], s_loc[1] - 1] = 'L') then
|
|
||||||
begin
|
|
||||||
loc[1] := loc[1] - 1;
|
|
||||||
ld := Left;
|
|
||||||
end
|
|
||||||
else if (map[s_loc[0] - 1, s_loc[1]] = '|') or (map[s_loc[0] - 1, s_loc[1]] = '7') or (map[s_loc[0] - 1, s_loc[1]] = 'F') then
|
|
||||||
begin
|
|
||||||
loc[0] := loc[0] - 1;
|
|
||||||
ld := Up;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
{ if it's neither up nor left, then both right and down must be valid. }
|
|
||||||
{ pick right arbitrarily }
|
|
||||||
ld := Right;
|
|
||||||
loc[1] := loc[1] + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// shitty memset
|
|
||||||
for i := 1 to count do
|
|
||||||
begin
|
|
||||||
for j := 1 to width do
|
|
||||||
begin
|
|
||||||
blocks[i, j] := Empty;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
blocks[s_loc[0], s_loc[1]] := Pipe;
|
|
||||||
|
|
||||||
|
|
||||||
{ mark array of pipes, and set some red and blue squares }
|
|
||||||
while (loc[0] <> s_loc[0]) or (loc[1] <> s_loc[1]) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
{ mark pipe }
|
|
||||||
blocks[loc[0], loc[1]] := Pipe;
|
|
||||||
|
|
||||||
ld := step_path(loc, ld, map[loc[0], loc[1]]);
|
|
||||||
end;
|
|
||||||
{ step one additional time }
|
|
||||||
ld := step_path(loc, ld, map[loc[0], loc[1]]);
|
|
||||||
|
|
||||||
{ fill in the map and count}
|
|
||||||
{ techincally filling in the map is uneccessary but it looks cool }
|
|
||||||
|
|
||||||
red_count := 0;
|
|
||||||
blue_count := 0;
|
|
||||||
|
|
||||||
for i := 1 to count - 1 do
|
|
||||||
begin
|
|
||||||
current := Empty;
|
|
||||||
for j := 1 to width do
|
|
||||||
begin
|
|
||||||
case blocks[i, j] of
|
|
||||||
Empty:
|
|
||||||
begin
|
|
||||||
blocks[i, j] := current;
|
|
||||||
case current of
|
|
||||||
Red: red_count := red_count + 1;
|
|
||||||
Blue: blue_count := blue_count + 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
// Pipe you do nothing
|
|
||||||
Red:
|
|
||||||
begin
|
|
||||||
current := Red;
|
|
||||||
red_count := red_count + 1;
|
|
||||||
end;
|
|
||||||
Blue:
|
|
||||||
begin
|
|
||||||
current := Blue;
|
|
||||||
blue_count := blue_count + 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ if we're holding onto this at the end, then this is the color outside of the square}
|
|
||||||
if current <> Empty then
|
|
||||||
invalid := current
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ print out the map }
|
|
||||||
for i := 1 to count - 1 do
|
|
||||||
begin
|
|
||||||
for j := 1 to width do
|
|
||||||
begin
|
|
||||||
case blocks[i, j] of
|
|
||||||
Empty: write(' ');
|
|
||||||
Pipe: write('█');
|
|
||||||
Red: write('▒');
|
|
||||||
Blue: write('░');
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
writeln();
|
|
||||||
end;
|
|
||||||
|
|
||||||
writeln(invalid, ' is bad color.');
|
|
||||||
writeln('Red count is ', red_count);
|
|
||||||
writeln('Blue count is ', blue_count);
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -1,515 +0,0 @@
|
|||||||
const
|
|
||||||
UINT32MAX: uint64 = $00000000FFFFFFFF;
|
|
||||||
type
|
|
||||||
int512 = record
|
|
||||||
{ 16 32 bit values in 64 bit ints }
|
|
||||||
values: array[0..15] of int64;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
operator := (n: int64) b: int512;
|
|
||||||
begin
|
|
||||||
if n >= 0 then
|
|
||||||
fillqword(b.values, 16, 0)
|
|
||||||
else
|
|
||||||
fillqword(b.values, 16, UINT32MAX);
|
|
||||||
b.values[0] := n and UINT32MAX;
|
|
||||||
b.values[1] := n shr 32;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure print512(n: int512; printall: boolean = false);
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
started: boolean;
|
|
||||||
begin
|
|
||||||
|
|
||||||
started := printall;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
if (n.values[15 - i] <> 0) or started or (i = 15) then
|
|
||||||
begin
|
|
||||||
write(hexstr(n.values[15 - i], 8));
|
|
||||||
if (i <> 15) then
|
|
||||||
write(' ');
|
|
||||||
started := true;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure print512f(n: int512; printall: boolean = false);
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
started: boolean;
|
|
||||||
begin
|
|
||||||
|
|
||||||
started := printall;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
if (n.values[15 - i] <> 0) or started or (i = 15) then
|
|
||||||
begin
|
|
||||||
write(hexstr(n.values[15 - i], 16));
|
|
||||||
if (i <> 15) then
|
|
||||||
write(' ');
|
|
||||||
started := true;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function isneg(n: int512): boolean;
|
|
||||||
begin
|
|
||||||
isneg := (n.values[15] and (1 shl 31)) <> 0
|
|
||||||
end;
|
|
||||||
|
|
||||||
function bigshiftleft(n: int512; b: int32): int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
bigshiftleft := 0;
|
|
||||||
|
|
||||||
for i := 0 to 15 - b do
|
|
||||||
begin
|
|
||||||
bigshiftleft.values[i + b] := n.values[i];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function bigshiftright(n: int512; b: int32): int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
bigshiftright := 0;
|
|
||||||
|
|
||||||
for i := 0 to 15 - b do
|
|
||||||
begin
|
|
||||||
bigshiftright.values[i] := n.values[i + b];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
operator shl (a: int512; b: int32) o: int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
a := bigshiftleft(a, (b and (not 31)) shr 5);
|
|
||||||
|
|
||||||
{ handle first seperately }
|
|
||||||
o.values[0] := (a.values[0] shl (b and 31)) and UINT32MAX;
|
|
||||||
for i := 1 to 15 do
|
|
||||||
begin
|
|
||||||
o.values[i] := (((a.values[i - 1] shl (b and 31)) shr 32) or // leftover from behind cell
|
|
||||||
((a.values[i] shl (b and 31)))) and UINT32MAX; // from this cell
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator shr (a: int512; b: int32) o: int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
a := bigshiftright(a, (b and (not 31)) shr 5);
|
|
||||||
|
|
||||||
{
|
|
||||||
00001234 00005678 00001234
|
|
||||||
12340000 56780000 12340000
|
|
||||||
00000012 00003456 00007812
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := 0 to 14 do
|
|
||||||
begin
|
|
||||||
o.values[i] := (((a.values[i + 1] shl (32 - (b and 31))) and UINT32MAX) or // from previous cell
|
|
||||||
(a.values[i] shr (b and 31))) // from this cell
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ handle last seperately }
|
|
||||||
o.values[15] := a.values[15] shr (b and 31);
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator + (a, b: int512) out_: int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
t: int64;
|
|
||||||
carry: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
carry := 0;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
t := a.values[i] + b.values[i] + carry;
|
|
||||||
carry := 0;
|
|
||||||
|
|
||||||
if t > UINT32MAX then
|
|
||||||
begin
|
|
||||||
carry := t shr 32;
|
|
||||||
t := t and UINT32MAX;
|
|
||||||
end;
|
|
||||||
|
|
||||||
out_.values[i] := t;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator - (a: int512) out_: int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
a.values[i] := a.values[i] xor UINT32MAX;
|
|
||||||
end;
|
|
||||||
|
|
||||||
out_ := a + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator - (a, b: int512) out_: int512;
|
|
||||||
begin
|
|
||||||
out_ := a + (- b);
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator > (a, b: int512) out_: boolean;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
out_ := false;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
|
|
||||||
if (a.values[15 - i] > b.values[15 - i]) then
|
|
||||||
begin
|
|
||||||
out_ := true;
|
|
||||||
break;
|
|
||||||
end
|
|
||||||
else if (a.values[15 - i] = b.values[15 - i]) then
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
break
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator < (a, b: int512) out_: boolean;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
out_ := false;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
|
|
||||||
if (a.values[15 - i] < b.values[15 - i]) then
|
|
||||||
begin
|
|
||||||
out_ := true;
|
|
||||||
break;
|
|
||||||
end
|
|
||||||
else if (a.values[15 - i] = b.values[15 - i]) then
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
break
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator >= (a, b: int512) out_: boolean;
|
|
||||||
begin
|
|
||||||
out_ := not (a < b);
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator <= (a, b: int512) out_: boolean;
|
|
||||||
begin
|
|
||||||
out_ := not (a > b);
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator = (a, b: int512) out_: boolean;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
out_ := true;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
if (a.values[15 - i] = b.values[15 - i]) then
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
out_ := false;
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator <> (a, b: int512) out_: boolean;
|
|
||||||
begin
|
|
||||||
out_ := not (a = b);
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator * (a, b: int512) out_: int512;
|
|
||||||
var
|
|
||||||
|
|
||||||
i, j: int32;
|
|
||||||
t: uint64;
|
|
||||||
carry: int512;
|
|
||||||
neg: boolean;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
neg := false;
|
|
||||||
if isneg(a) then
|
|
||||||
begin
|
|
||||||
neg := not neg;
|
|
||||||
a := -a;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if isneg(b) then
|
|
||||||
begin
|
|
||||||
neg := not neg;
|
|
||||||
b := -b;
|
|
||||||
end;
|
|
||||||
|
|
||||||
carry := 0;
|
|
||||||
out_ := 0;
|
|
||||||
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
for j := 0 to 15 do
|
|
||||||
begin
|
|
||||||
if (i + j > 15) then
|
|
||||||
continue;
|
|
||||||
|
|
||||||
t := a.values[i] * b.values[j];
|
|
||||||
|
|
||||||
if t > UINT32MAX then
|
|
||||||
begin
|
|
||||||
carry.values[i + j + 1] := carry.values[i + j + 1] + (t shr 32);
|
|
||||||
t := t and UINT32MAX;
|
|
||||||
end;
|
|
||||||
|
|
||||||
out_.values[i + j] := out_.values[i + j] + t;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
out_ := carry + out_;
|
|
||||||
|
|
||||||
if neg then
|
|
||||||
out_ := -out_;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
operator mod (a, b: int512) out_: int512;
|
|
||||||
var
|
|
||||||
|
|
||||||
i: int32;
|
|
||||||
normalize_factor: int32;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
{ normalize divisor }
|
|
||||||
|
|
||||||
{ big normalize }
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
if b.values[15 - i] <> 0 then
|
|
||||||
begin
|
|
||||||
normalize_factor := i * 32;
|
|
||||||
b := bigshiftleft(b, i);
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
{ small normalize }
|
|
||||||
for i := 0 to 31 do
|
|
||||||
begin
|
|
||||||
if (b.values[15] and (1 shl (31 - i))) <> 0 then
|
|
||||||
begin
|
|
||||||
normalize_factor := normalize_factor + i;
|
|
||||||
b := b shl i;
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{subtract}
|
|
||||||
|
|
||||||
for i := 0 to (normalize_factor) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
if a >= b then
|
|
||||||
begin
|
|
||||||
//print512f(a);
|
|
||||||
//write('a ');
|
|
||||||
//print512f(b);
|
|
||||||
//write('b ');
|
|
||||||
//writeln();
|
|
||||||
a := a - b;
|
|
||||||
// only necessary for true division
|
|
||||||
// out_ := out_ + 1;
|
|
||||||
// out_ := out_ shl 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
b := b shr 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
out_ := a;
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator div (a, b: int512) out_: int512;
|
|
||||||
var
|
|
||||||
|
|
||||||
i: int32;
|
|
||||||
normalize_factor: int32;
|
|
||||||
neg: boolean;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
neg := false;
|
|
||||||
if isneg(a) then
|
|
||||||
begin
|
|
||||||
neg := not neg;
|
|
||||||
a := -a;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if isneg(b) then
|
|
||||||
begin
|
|
||||||
neg := not neg;
|
|
||||||
b := -b;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ normalize divisor }
|
|
||||||
|
|
||||||
{ big normalize }
|
|
||||||
for i := 0 to 15 do
|
|
||||||
begin
|
|
||||||
if b.values[15 - i] <> 0 then
|
|
||||||
begin
|
|
||||||
normalize_factor := i * 32;
|
|
||||||
b := bigshiftleft(b, i);
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ small normalize }
|
|
||||||
for i := 0 to 31 do
|
|
||||||
begin
|
|
||||||
if (b.values[15] and (1 shl (31 - i))) <> 0 then
|
|
||||||
begin
|
|
||||||
normalize_factor := normalize_factor + i;
|
|
||||||
b := b shl i;
|
|
||||||
break;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{subtract}
|
|
||||||
|
|
||||||
out_ := 0;
|
|
||||||
|
|
||||||
for i := 0 to (normalize_factor) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
out_ := out_ shl 1;
|
|
||||||
|
|
||||||
if a >= b then
|
|
||||||
begin
|
|
||||||
|
|
||||||
{print512f(a);
|
|
||||||
write('a ');
|
|
||||||
print512f(b);
|
|
||||||
write('b ');
|
|
||||||
print512f(out_);
|
|
||||||
write('o ');
|
|
||||||
print512f(out_ shl 1);
|
|
||||||
writeln('o ');}
|
|
||||||
|
|
||||||
a := a - b;
|
|
||||||
|
|
||||||
out_ := out_ + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
b := b shr 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if neg then
|
|
||||||
out_ := -out_;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure print512d(n: int512);
|
|
||||||
var
|
|
||||||
c: array[0..1000] of char;
|
|
||||||
count: int32;
|
|
||||||
q: int32;
|
|
||||||
begin
|
|
||||||
|
|
||||||
if isneg(n) then
|
|
||||||
begin
|
|
||||||
write('-');
|
|
||||||
n := -n;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if n = 0 then
|
|
||||||
write('0')
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
count := 0;
|
|
||||||
while n <> 0 do
|
|
||||||
begin
|
|
||||||
c[count] := chr(byte((n mod 10).values[0]) + 48);
|
|
||||||
n := n div 10;
|
|
||||||
count := count + 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
for q := 1 to count do
|
|
||||||
begin
|
|
||||||
write(c[count - q]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function abs(n: int512): int512;
|
|
||||||
begin
|
|
||||||
abs := n;
|
|
||||||
if isneg(n) then
|
|
||||||
abs := -n;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function power(n: int512; m: int32): int512;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
power := 1;
|
|
||||||
for i := 1 to m do
|
|
||||||
begin
|
|
||||||
power := power * n;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// testing
|
|
||||||
{
|
|
||||||
|
|
||||||
var
|
|
||||||
a, b, c: int512;
|
|
||||||
begin
|
|
||||||
b := $1111;
|
|
||||||
a := $FFFFFFFFFFFFFFFF;
|
|
||||||
c := $3000000000000003;
|
|
||||||
|
|
||||||
a := a shl 72 + 1;
|
|
||||||
|
|
||||||
print512(a);
|
|
||||||
writeln();
|
|
||||||
print512(b);
|
|
||||||
writeln();
|
|
||||||
print512(a div b);
|
|
||||||
// 0f000f00 0f000f00 00000000 00000000
|
|
||||||
end.
|
|
||||||
|
|
||||||
}
|
|
@ -1,120 +0,0 @@
|
|||||||
program day9part1;
|
|
||||||
{$INCLUDE 'polynomial.pas'}
|
|
||||||
|
|
||||||
function lagrange(x, y: array of int64; l: int64 = 0): polynomial;
|
|
||||||
var
|
|
||||||
|
|
||||||
new: polynomial;
|
|
||||||
idx: int64;
|
|
||||||
i: int64;
|
|
||||||
|
|
||||||
begin
|
|
||||||
lagrange := constant(c_fraction(0, 1));
|
|
||||||
|
|
||||||
if l = 0 then
|
|
||||||
begin
|
|
||||||
case length(x) > length(y) of
|
|
||||||
true: l := length(y);
|
|
||||||
false: l := length(x);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
for idx := 0 to l - 1 do
|
|
||||||
begin
|
|
||||||
|
|
||||||
new := constant(c_fraction((y[idx]), 1));
|
|
||||||
|
|
||||||
for i := 0 to l - 1 do
|
|
||||||
begin
|
|
||||||
if i = idx then
|
|
||||||
continue;
|
|
||||||
|
|
||||||
new := new * binomial(c_fraction(1, 1), c_fraction(- x[i], 1));
|
|
||||||
|
|
||||||
new := new * constant(c_fraction(1, (x[idx] - x[i])));
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
lagrange := lagrange + new;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
var
|
|
||||||
|
|
||||||
{ couldn't have done that with a for loop }
|
|
||||||
x: array[0..100] of int64 = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
|
||||||
y: array[0..100] of int64;
|
|
||||||
|
|
||||||
file_: text;
|
|
||||||
str: string;
|
|
||||||
negative, number: int64;
|
|
||||||
|
|
||||||
c: char;
|
|
||||||
|
|
||||||
count, b: int64;
|
|
||||||
|
|
||||||
sum: fraction;
|
|
||||||
p: polynomial;
|
|
||||||
f: fraction;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
assign(file_, 'resources/day9.txt');
|
|
||||||
reset(file_);
|
|
||||||
|
|
||||||
sum := c_fraction(0, 1);
|
|
||||||
|
|
||||||
while not EOF(file_) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
readln(file_, str);
|
|
||||||
count := 0;
|
|
||||||
number := 0;
|
|
||||||
negative := 1;
|
|
||||||
|
|
||||||
for c in str do
|
|
||||||
begin
|
|
||||||
if c = '-' then
|
|
||||||
negative := -1
|
|
||||||
else if (('0' <= c) and (c <= '9')) then
|
|
||||||
begin
|
|
||||||
//add number to number
|
|
||||||
val(c, b);
|
|
||||||
number := number * 10 + b;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
y[count] := number * negative;
|
|
||||||
count := count + 1;
|
|
||||||
number := 0;
|
|
||||||
negative := 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
y[count] := number * negative;
|
|
||||||
|
|
||||||
p := simplify_poly(lagrange(x, y, count + 1));
|
|
||||||
|
|
||||||
print_polynomial(p);
|
|
||||||
write(' at ');
|
|
||||||
write(count + 1);
|
|
||||||
write(' is ');
|
|
||||||
|
|
||||||
f := simplify(eval_polynomial(p, count + 1));
|
|
||||||
|
|
||||||
print_fraction(f);
|
|
||||||
|
|
||||||
sum := sum + f;
|
|
||||||
|
|
||||||
writeln();
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
write('The final sum is: ');
|
|
||||||
|
|
||||||
print_fraction(sum);
|
|
||||||
|
|
||||||
end.
|
|
@ -1,120 +0,0 @@
|
|||||||
program day9part1;
|
|
||||||
{$INCLUDE 'polynomial.pas'}
|
|
||||||
|
|
||||||
function lagrange(x, y: array of int64; l: int64 = 0): polynomial;
|
|
||||||
var
|
|
||||||
|
|
||||||
new: polynomial;
|
|
||||||
idx: int64;
|
|
||||||
i: int64;
|
|
||||||
|
|
||||||
begin
|
|
||||||
lagrange := constant(c_fraction(0, 1));
|
|
||||||
|
|
||||||
if l = 0 then
|
|
||||||
begin
|
|
||||||
case length(x) > length(y) of
|
|
||||||
true: l := length(y);
|
|
||||||
false: l := length(x);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
for idx := 0 to l - 1 do
|
|
||||||
begin
|
|
||||||
|
|
||||||
new := constant(c_fraction((y[idx]), 1));
|
|
||||||
|
|
||||||
for i := 0 to l - 1 do
|
|
||||||
begin
|
|
||||||
if i = idx then
|
|
||||||
continue;
|
|
||||||
|
|
||||||
new := new * binomial(c_fraction(1, 1), c_fraction(- x[i], 1));
|
|
||||||
|
|
||||||
new := new * constant(c_fraction(1, (x[idx] - x[i])));
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
lagrange := lagrange + new;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
var
|
|
||||||
|
|
||||||
{ couldn't have done that with a for loop }
|
|
||||||
x: array[0..100] of int64 = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100);
|
|
||||||
y: array[0..100] of int64;
|
|
||||||
|
|
||||||
file_: text;
|
|
||||||
str: string;
|
|
||||||
negative, number: int64;
|
|
||||||
|
|
||||||
c: char;
|
|
||||||
|
|
||||||
count, b: int64;
|
|
||||||
|
|
||||||
sum: fraction;
|
|
||||||
p: polynomial;
|
|
||||||
f: fraction;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
assign(file_, 'resources/day9.txt');
|
|
||||||
reset(file_);
|
|
||||||
|
|
||||||
sum := c_fraction(0, 1);
|
|
||||||
|
|
||||||
while not EOF(file_) do
|
|
||||||
begin
|
|
||||||
|
|
||||||
readln(file_, str);
|
|
||||||
count := 0;
|
|
||||||
number := 0;
|
|
||||||
negative := 1;
|
|
||||||
|
|
||||||
for c in str do
|
|
||||||
begin
|
|
||||||
if c = '-' then
|
|
||||||
negative := -1
|
|
||||||
else if (('0' <= c) and (c <= '9')) then
|
|
||||||
begin
|
|
||||||
//add number to number
|
|
||||||
val(c, b);
|
|
||||||
number := number * 10 + b;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
y[count] := number * negative;
|
|
||||||
count := count + 1;
|
|
||||||
number := 0;
|
|
||||||
negative := 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
y[count] := number * negative;
|
|
||||||
|
|
||||||
p := simplify_poly(lagrange(x, y, count + 1));
|
|
||||||
|
|
||||||
print_polynomial(p);
|
|
||||||
write(' at ');
|
|
||||||
write(-1);
|
|
||||||
write(' is ');
|
|
||||||
|
|
||||||
f := simplify(eval_polynomial(p, -1));
|
|
||||||
|
|
||||||
print_fraction(f);
|
|
||||||
|
|
||||||
sum := sum + f;
|
|
||||||
|
|
||||||
writeln();
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
write('The final sum is: ');
|
|
||||||
|
|
||||||
print_fraction(sum);
|
|
||||||
|
|
||||||
end.
|
|
@ -1,291 +0,0 @@
|
|||||||
{$mode objfpc}
|
|
||||||
|
|
||||||
uses sysutils, math;
|
|
||||||
|
|
||||||
{$include bigint.pas}
|
|
||||||
|
|
||||||
const
|
|
||||||
MAX_POLYNOMIAL_LENGTH = 100;
|
|
||||||
EPSILON: double = 0;
|
|
||||||
type
|
|
||||||
fraction = record
|
|
||||||
numerator: int512;
|
|
||||||
denominator: int512;
|
|
||||||
end;
|
|
||||||
polynomial = record
|
|
||||||
degree: int64;
|
|
||||||
{ coefficients will be stored in reverse. ofc}
|
|
||||||
coefficients: array[0..MAX_POLYNOMIAL_LENGTH] of fraction;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure print_fraction(a: fraction);
|
|
||||||
begin
|
|
||||||
if a.denominator <> 1 then
|
|
||||||
begin
|
|
||||||
print512d(a.numerator);
|
|
||||||
write('/');
|
|
||||||
print512d(a.denominator);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print512d(a.numerator);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function c_fraction(num: int512; den: int512): fraction;
|
|
||||||
begin
|
|
||||||
if den = 0 then
|
|
||||||
writeln('holy hell what are you doing');
|
|
||||||
|
|
||||||
c_fraction.numerator := num;
|
|
||||||
c_fraction.denominator := den;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
operator := (f: int64) out_ : fraction;
|
|
||||||
begin
|
|
||||||
out_ := c_fraction(f, 1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function gcd(a, b: int512): int512;
|
|
||||||
var
|
|
||||||
r: int512;
|
|
||||||
begin
|
|
||||||
|
|
||||||
while true do
|
|
||||||
begin
|
|
||||||
|
|
||||||
r := a mod b;
|
|
||||||
|
|
||||||
if r = 0 then
|
|
||||||
break;
|
|
||||||
|
|
||||||
a := b;
|
|
||||||
b := r;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
gcd := b;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function simplify(f: fraction): fraction;
|
|
||||||
var
|
|
||||||
b: int512;
|
|
||||||
neg: boolean;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
neg := false;
|
|
||||||
if isneg(f.numerator) then
|
|
||||||
begin
|
|
||||||
neg := not neg;
|
|
||||||
f.numerator := -f.numerator;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if isneg(f.denominator) then
|
|
||||||
begin
|
|
||||||
neg := not neg;
|
|
||||||
f.denominator := -f.denominator;
|
|
||||||
end;
|
|
||||||
|
|
||||||
b := gcd(f.numerator, f.denominator);
|
|
||||||
|
|
||||||
if b <> 0 then
|
|
||||||
simplify := c_fraction(f.numerator div b, f.denominator div b)
|
|
||||||
else
|
|
||||||
simplify := f;
|
|
||||||
|
|
||||||
if neg then
|
|
||||||
simplify.numerator := -simplify.numerator;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ add fractions }
|
|
||||||
operator + (a, b: fraction) out_: fraction;
|
|
||||||
//var
|
|
||||||
// g: int512;
|
|
||||||
begin
|
|
||||||
|
|
||||||
// print_fraction(a);
|
|
||||||
// write(' ');
|
|
||||||
// print_fraction(b);
|
|
||||||
// write(' ');
|
|
||||||
|
|
||||||
// g := gcd(a.denominator, b.denominator);
|
|
||||||
|
|
||||||
out_.denominator := a.denominator * b.denominator;
|
|
||||||
out_.numerator := a.denominator * b.numerator + b.denominator * a.numerator;
|
|
||||||
|
|
||||||
// print_fraction(out_);
|
|
||||||
// write(' ');
|
|
||||||
if abs(out_.numerator) > $7FFFFFFFFFFFFFFF then
|
|
||||||
out_ := simplify(out_);
|
|
||||||
// print_fraction(out_);
|
|
||||||
// writeln('ya');
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ mult fractions }
|
|
||||||
operator * (a, b: fraction) out_: fraction;
|
|
||||||
begin
|
|
||||||
out_.denominator := a.denominator * b.denominator;
|
|
||||||
out_.numerator := a.numerator * b.numerator;
|
|
||||||
|
|
||||||
//if out_.numerator > (1 shl 60) then
|
|
||||||
// out_ := simplify(out_);
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure fill_array_1(var a: array of fraction; l: int64 = MAX_POLYNOMIAL_LENGTH);
|
|
||||||
var
|
|
||||||
i: int64;
|
|
||||||
begin
|
|
||||||
|
|
||||||
for i := 0 to l do
|
|
||||||
a[i] := c_fraction(0, 1);
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ add polynomials }
|
|
||||||
operator + (a, b: polynomial) add_polynomial: polynomial;
|
|
||||||
var
|
|
||||||
|
|
||||||
new_degree: int64;
|
|
||||||
max_degree: int64;
|
|
||||||
i: int64;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
case a.degree > b.degree of
|
|
||||||
true: max_degree := a.degree;
|
|
||||||
false: max_degree := b.degree;
|
|
||||||
end;
|
|
||||||
|
|
||||||
fill_array_1(add_polynomial.coefficients);
|
|
||||||
|
|
||||||
for i := 0 to max_degree do
|
|
||||||
begin
|
|
||||||
add_polynomial.coefficients[i] := a.coefficients[i] + b.coefficients[i];
|
|
||||||
|
|
||||||
if add_polynomial.coefficients[i].numerator <> 0 then
|
|
||||||
new_degree := i
|
|
||||||
end;
|
|
||||||
|
|
||||||
add_polynomial.degree := new_degree;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ mult polynomials }
|
|
||||||
operator * (a, b: polynomial) out_: polynomial;
|
|
||||||
var
|
|
||||||
|
|
||||||
i, j: int64;
|
|
||||||
new_degree: int32;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
out_.degree := a.degree + b.degree;
|
|
||||||
|
|
||||||
fill_array_1(out_.coefficients);
|
|
||||||
|
|
||||||
for i := 0 to a.degree do
|
|
||||||
begin
|
|
||||||
for j := 0 to b.degree do
|
|
||||||
begin
|
|
||||||
|
|
||||||
out_.coefficients[i + j] := out_.coefficients[i + j] + a.coefficients[i] * b.coefficients[j];
|
|
||||||
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
for i := 0 to out_.degree do
|
|
||||||
begin
|
|
||||||
|
|
||||||
if out_.coefficients[i].numerator <> 0 then
|
|
||||||
new_degree := i
|
|
||||||
end;
|
|
||||||
|
|
||||||
out_.degree := new_degree;
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
function constant(c: fraction): polynomial;
|
|
||||||
begin
|
|
||||||
fill_array_1(constant.coefficients);
|
|
||||||
constant.coefficients[0] := c;
|
|
||||||
constant.degree := 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function binomial(m, b: fraction): polynomial;
|
|
||||||
begin
|
|
||||||
fill_array_1(binomial.coefficients);
|
|
||||||
binomial.coefficients[0] := b;
|
|
||||||
binomial.coefficients[1] := m;
|
|
||||||
binomial.degree := 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
function eval_polynomial(a: polynomial; b: int512): fraction;
|
|
||||||
var
|
|
||||||
i: int64;
|
|
||||||
begin
|
|
||||||
|
|
||||||
eval_polynomial := c_fraction(0, 1);
|
|
||||||
|
|
||||||
for i := 0 to a.degree do
|
|
||||||
begin
|
|
||||||
eval_polynomial := eval_polynomial + a.coefficients[i] * c_fraction(power(b, i), 1);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure print_polynomial(a: polynomial);
|
|
||||||
var
|
|
||||||
|
|
||||||
i: int64;
|
|
||||||
|
|
||||||
begin
|
|
||||||
|
|
||||||
for i := 0 to a.degree do
|
|
||||||
begin
|
|
||||||
if (a.coefficients[a.degree - i].numerator <> 0) or (a.degree = 0) then
|
|
||||||
begin
|
|
||||||
if i <> 0 then
|
|
||||||
begin
|
|
||||||
if isneg(a.coefficients[a.degree - i].numerator) then
|
|
||||||
begin
|
|
||||||
a.coefficients[a.degree - i].numerator := -a.coefficients[a.degree - i].numerator;
|
|
||||||
write(' - ');
|
|
||||||
end
|
|
||||||
else
|
|
||||||
write(' + ');
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ yeah. need an equality for fraction. }
|
|
||||||
if (a.coefficients[a.degree - i].numerator <> 1) and (a.coefficients[a.degree - i].denominator <> 1) or (i = a.degree) then
|
|
||||||
print_fraction(a.coefficients[a.degree - i]);
|
|
||||||
|
|
||||||
if i = a.degree - 1 then
|
|
||||||
write('x')
|
|
||||||
else if i < a.degree - 1 then
|
|
||||||
begin
|
|
||||||
write('x^');
|
|
||||||
write(a.degree - i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
write(' (');
|
|
||||||
write(a.degree);
|
|
||||||
write(')');
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
function simplify_poly(a: polynomial): polynomial;
|
|
||||||
var
|
|
||||||
i: int32;
|
|
||||||
begin
|
|
||||||
for i := 0 to a.degree do
|
|
||||||
begin
|
|
||||||
simplify_poly.coefficients[i] := simplify(a.coefficients[i]);
|
|
||||||
end;
|
|
||||||
simplify_poly.degree := a.degree;
|
|
||||||
end;
|
|
Loading…
Reference in New Issue
Block a user