De laatste stap om de XMAS-codering te kraken is afhankelijk van het ongeldig getal dat je zojuist hebt gevonden. Je moet nu in de lijst een reeks van minstens twee opeenvolgende getallen vinden, waarvan de som gelijk is aan het getal uit de eerste stap.
Laat ons opnieuw hetzelfde voorbeeld nemen als hiervoor:
35
20
15
25
47
40
62
55
65
95
102
117
150
182
127
219
299
277
309
576
De som van alle getallen van 15
tot en met 40
in deze lijst geeft het ongeldig getal uit de eerste stap, 127
. (Uiteraard kan de reeks van opeenvolgende getallen de eigenlijke lijst veel langer zijn.)
Om de zwakke plek van de versleuteling te vinden, moet je het kleinste en het grootste getal in deze reeks van opeenvolgende getallen bij elkaar optellen. In dit voordeel zijn dit 15
en 47
, die samengeteld 62
geven.
Wat is de zwakke plek van de versleuteling in een gegeven XMAS-versleutelde lijst van getallen? Hiervoor ga je als volgt te werk:
findWeakness
waaraan twee argumenten moeten doorgegeven worden: i) de padnaam (String
) van een tekstbestand met een lijst van getallen (één getal per regel) en ii) de lengte \(m\) (Int
) van de preambule. De functie moet de zwakke plek (Int
) van de versleuteling in de gegeven lijst teruggeven.In deze interactieve sessie gaan we ervan uit dat het tekstbestand numbers.txt
1 zich in de huidige directory bevindt.
> findWeakness "numbers.txt" 5
62