15 lines
806 B
Smalltalk
15 lines
806 B
Smalltalk
AOC part1: [ :lines | | sorted |
|
|
sorted := (lines collect: [ :it | it asSortedCollection readStream ]).
|
|
((sorted at: 1) with: (sorted at: 2)) collect:
|
|
[ :arr | ((arr at: 1) - (arr at: 2)) abs ] ];
|
|
part2: [ :lines | | counts | counts := Dictionary new.
|
|
(lines at: 2) do: [
|
|
:elt | counts at: elt
|
|
put: 1 + (counts at: elt ifAbsent: [0]) ].
|
|
(lines at: 1) collect: [ :elt | elt * (counts at: elt ifAbsent: [0]) ] ];
|
|
arg: [ | inp l r | inp := FileStream stdin toLines collect: [ :ln | ln scanf: '%d %d' ].
|
|
l := inp collect: [ :e | e at: 1 ].
|
|
r := inp collect: [ :e | e at: 2 ].
|
|
{l . r} ];
|
|
map: [ :lines :part | (part value: lines) sum ];
|
|
finish.
|