1
0
Fork 0
advent-of-code/day1/day1.erl

45 lines
6.5 KiB
Erlang

-module(day1).
-export([start/0]).
split_string_into_list_of_integers(Input)
-> io:fwrite("~s ", [Input]),
[ Z || Z <- lists:map(fun(X) -> {Y,_} = string:to_integer(X), Y end, re:split(Input, "")), is_integer(Z) ].
sum_sequential(Numbers)
-> Tail = lists:last(Numbers),
io:fwrite("~B~n", [sum_sequential_list(0, Tail, Numbers)]).
sum_sequential_list(Count, LastDigit, [Head|Tail])
when LastDigit == Head -> sum_sequential_list(Count + LastDigit, Head, Tail);
sum_sequential_list(Count, _, [Head|Tail])
-> sum_sequential_list(Count, Head, Tail);
sum_sequential_list(Count, _, [])
-> Count.
sum_offset(List)
-> ListLength = lists:flatlength(List),
io:fwrite("~B~n", [sum_offset_list(0, 1, (ListLength div 2) + 1, ListLength, List)]).
sum_offset_list(Count, _LeftIndex, RightIndex, ListLength, _List)
when RightIndex > ListLength -> Count;
sum_offset_list(Count, LeftIndex, RightIndex, ListLength, List)
-> LeftElement = lists:nth(LeftIndex, List),
RightElement = lists:nth(RightIndex, List),
if
LeftElement == RightElement -> sum_offset_list(Count + LeftElement + RightElement, LeftIndex + 1, RightIndex + 1, ListLength, List);
true -> sum_offset_list(Count, LeftIndex + 1, RightIndex + 1, ListLength, List)
end.
start()
-> sum_sequential(split_string_into_list_of_integers("1111")),
sum_sequential(split_string_into_list_of_integers("1234")),
sum_sequential(split_string_into_list_of_integers("1122")),
sum_sequential(split_string_into_list_of_integers("91212129")),
sum_sequential(split_string_into_list_of_integers("823936645345581272695677318513459491834641129844393742672553544439126314399846773234845535593355348931499496184839582118817689171948635864427852215325421433717458975771369522138766248225963242168658975326354785415252974294317138511141826226866364555761117178764543435899886711426319675443679829181257496966219435831621565519667989898725836639626681645821714861443141893427672384716732765884844772433374798185955741311116365899659833634237938878181367317218635539667357364295754744829595842962773524584225427969467467611641591834876769829719248136613147351298534885563144114336211961674392912181735773851634298227454157885241769156811787611897349965331474217223461176896643242975397227859696554492996937235423272549348349528559432214521551656971136859972232854126262349381254424597348874447736545722261957871275935756764184378994167427983811716675476257858556464755677478725146588747147857375293675711575747132471727933773512571368467386151966568598964631331428869762151853634362356935751298121849281442128796517663482391226174256395515166361514442624944181255952124524815268864131969151433888721213595267927325759562132732586252438456569556992685896517565257787464673718221817783929691626876446423134331749327322367571432532857235214364221471769481667118117729326429556357572421333798517168997863151927281418238491791975399357393494751913155219862399959646993428921878798119215675548847845477994836744929918954159722827194721564121532315459611433157384994543332773796862165243183378464731546787498174844781781139571984272235872866886275879944921329959736315296733981313643956576956851762149275521949177991988236529475373595217665112434727744235789852852765675189342753695377219374791548554786671473733124951946779531847479755363363288448281622183736545494372344785112312749694167483996738384351293899149136857728545977442763489799693492319549773328626918874718387697878235744154491677922317518952687439655962477734559232755624943644966227973617788182213621899579391324399386146423427262874437992579573858589183571854577861459758534348533553925167947139351819511798829977371215856637215221838924612644785498936263849489519896548811254628976642391428413984281758771868781714266261781359762798")),
sum_offset(split_string_into_list_of_integers("1212")),
sum_offset(split_string_into_list_of_integers("1221")),
sum_offset(split_string_into_list_of_integers("123425")),
sum_offset(split_string_into_list_of_integers("123123")),
sum_offset(split_string_into_list_of_integers("12131415")),
sum_offset(split_string_into_list_of_integers("823936645345581272695677318513459491834641129844393742672553544439126314399846773234845535593355348931499496184839582118817689171948635864427852215325421433717458975771369522138766248225963242168658975326354785415252974294317138511141826226866364555761117178764543435899886711426319675443679829181257496966219435831621565519667989898725836639626681645821714861443141893427672384716732765884844772433374798185955741311116365899659833634237938878181367317218635539667357364295754744829595842962773524584225427969467467611641591834876769829719248136613147351298534885563144114336211961674392912181735773851634298227454157885241769156811787611897349965331474217223461176896643242975397227859696554492996937235423272549348349528559432214521551656971136859972232854126262349381254424597348874447736545722261957871275935756764184378994167427983811716675476257858556464755677478725146588747147857375293675711575747132471727933773512571368467386151966568598964631331428869762151853634362356935751298121849281442128796517663482391226174256395515166361514442624944181255952124524815268864131969151433888721213595267927325759562132732586252438456569556992685896517565257787464673718221817783929691626876446423134331749327322367571432532857235214364221471769481667118117729326429556357572421333798517168997863151927281418238491791975399357393494751913155219862399959646993428921878798119215675548847845477994836744929918954159722827194721564121532315459611433157384994543332773796862165243183378464731546787498174844781781139571984272235872866886275879944921329959736315296733981313643956576956851762149275521949177991988236529475373595217665112434727744235789852852765675189342753695377219374791548554786671473733124951946779531847479755363363288448281622183736545494372344785112312749694167483996738384351293899149136857728545977442763489799693492319549773328626918874718387697878235744154491677922317518952687439655962477734559232755624943644966227973617788182213621899579391324399386146423427262874437992579573858589183571854577861459758534348533553925167947139351819511798829977371215856637215221838924612644785498936263849489519896548811254628976642391428413984281758771868781714266261781359762798")).