De tegelvloer in de lobby is bedoeld als een levende kunsttentoonstelling. Elke dag worden de tegels omgedraaid volgens deze regels:
Met tegels direct ernaast bedoelen we hierbij de zes tegels die rechtstreeks aan de tegel in kwestie grenzen.
Deze regels worden gelijktijdig op elke tegel toegepast. Anders gezegd, er wordt eerst bepaald welke tegels er moeten omgedraaid worden, en daarna worden ze allemaal tegelijk omgedraaid.
Voor het vorige voorbeeld zijn dit het aantal tegels die met hun zwarte kant naar boven liggen nadat een aantal dagen zijn verstreken:
Dag 1: 15
Dag 2: 12
Dag 3: 25
Dag 4: 14
Dag 5: 23
Dag 6: 28
Dag 7: 41
Dag 8: 37
Dag 9: 49
Dag 10: 37
Dag 20: 132
Dag 30: 259
Dag 40: 406
Dag 50: 566
Dag 60: 788
Dag 70: 1106
Dag 80: 1373
Dag 90: 1844
Dag 100: 2208
Nadat deze procedure in totaal 100 keer uitgevoerd is, zouden er dus 2208
tegels met hun zwarte kant naar boven liggen.
Hoeveel zwarte tegels zijn er na \(n\) dagen? Hiervoor ga je als volgt te werk:
blackTiles
waaraan twee argumenten moeten doorgegeven worden: i) de padnaam (String
) van een tekstbestand met de lijst van tegels die op de eerste dag moeten omgedraaid worden en ii) een getal \(n \in \mathbb{N}\). De functie moet teruggeven hoeveel (Number
) zwarte tegels er zijn na \(n\) dagen.In deze interactieve sessie gaan we ervan uit dat het tekstbestand tiles.txt
1 zich in de huidige directory bevindt.
> blackTiles("tiles.txt", 0)
10
> blackTiles("tiles.txt", 1)
15
> blackTiles("tiles.txt", 2)
12
> blackTiles("tiles.txt", 3)
25
> blackTiles("tiles.txt", 4)
14
> blackTiles("tiles.txt", 5)
23
> blackTiles("tiles.txt", 6)
28
> blackTiles("tiles.txt", 7)
41
> blackTiles("tiles.txt", 8)
37
> blackTiles("tiles.txt", 9)
49
> blackTiles("tiles.txt", 10)
37
> blackTiles("tiles.txt", 20)
132
> blackTiles("tiles.txt", 30)
259
> blackTiles("tiles.txt", 40)
406
> blackTiles("tiles.txt", 50)
566
> blackTiles("tiles.txt", 60)
788
> blackTiles("tiles.txt", 70)
1106
> blackTiles("tiles.txt", 80)
1373
> blackTiles("tiles.txt", 90)
1844
> blackTiles("tiles.txt", 100)
2208
Marcel B (@mrclbschff2) animeerde zijn oplossing voor deze opgave.