Lösningen går ut på att hitta sekvenser av adaptrar med 1 jolt skillnad. För varje sådan sekvens räknar man ut hur många variationer som finns för den sekvensen, och multiplicerar detta med totalsumman.
De steg som ökar med 3 måste tas med i den ordningen de står. De kan bara arrangeras på ett sätt och kan ignoreras i uträkningen (eftersom beräkningen skulle bli att multiplicera totalsumman med 1). I min lösning används de stegen för att markera slutet på en sekvens med 1 jolt-steg.
Loopen går igenom alla adaptrar i listan och stegar upp en räknare när skillnaden mot föregående adapter är 1 jolt.
När ett steg inte är 1 jolt (det är alltid 1 eller 3 jolt) har vi nått slutet på en sekvens och kan beräkna antalet möjliga variationer för den. Efter uträkningen återställs räknaren och börjar räkna på nästa sekvens.
Om det ser ut så här i listan: 10, 13, 14, 15, 18
Då är 13, 14, 15 en sekvens av 1 jolt steg.
sekvenser med 1 eller 2 adaptrar kan bara arrangeras på ett sätt och kan ignoreras.
Om det är 3 adaptrar i sekvensen kan de arrangeras på två sätt.
10, 13, 14, 15, 18
10, 13, 15, 18
4 adaptrar kan arrangeras på 4 olika sätt så här:
10, 13, 14, 15, 16, 19
10, 13, 14, 16, 19
10, 13, 15, 16, 19
10, 13, 16, 19
Och 5 adaptrar kan arrangeras på 7 olika sätt.
Jag hade ingen sekvens med fler än 5 adaptrar i min input, så jag har inte lagt till någon kod för det.