Je vlot bereikt het tropisch eiland. De kleine krab bleek een uitstekende navigator te zijn. Je begeeft je naar het resort.

Als je de lobby binnenkomt, ontdek je een klein probleem: de vloer wordt gerenoveerd. Je kunt de incheckbalie pas bereiken als ze klaar zijn met het leggen van de nieuwe tegelvloer.

Alle tegels zijn regelmatige zeshoekig. Ze moeten gerangschikt worden in een zeshoekig rooster1 met een zeer specifiek kleurpatroon. Je hebt geen zin om te wachten en biedt aan om te helpen het patroon te achterhalen.

De tegels zijn allemaal wit aan de ene kant en zwart aan de andere kant. In het begin liggen ze allemaal met de witte kant naar boven. De lobby is groot genoeg om elk patroon te vormen dat kan ontstaan.

Iemand van de renovatieploeg geeft je een lijst met de tegels die moeten omgedraaid worden (de invoer van deze opgave). Elke regel in de lijst beschrijft één enkele tegel die moet omgedraaid worden door een reeks stappen te geven vanaf een referentietegel in het middel van de lobby. (De beschrijving op elke regel begint bij dezelfde referentietegel.)

Omdat de tegels zeshoekig zijn, heeft elke tegel zes buren: oost, zuidoost, zuidwest, west, noordwest en noordoost. Deze aanwijzingen worden in je lijst respectievelijk gegeven als e, se, sw, w, nw en ne. Een tegel wordt geïdentificeerd door een reeks van deze richtingen zonder scheidingstekens. Zo identificeert esenee bijvoorbeeld de tegel waarop je terechtkomt als je begint bij de referentietegel en dan een tegel naar het oosten, een tegel naar het zuidoosten, een tegel naar het noordoosten en een tegel naar het oosten opschuift.

Elke keer dat een tegel geïdentificeerd wordt, wordt hij omgedraaid van wit naar zwart of van zwart naar wit. Tegels kunnen meerdere keren omgedraaid worden. Een beschrijving zoals esew draait bijvoorbeeld een tegel om die rechtstreeks grenst aan de referentietegel, en een beschrijving zoals nwwswee draait de referentietegel zelf om.

Dit is een groter voorbeeld:

sesenwnenenewseeswwswswwnenewsewsw
neeenesenwnwwswnenewnwwsewnenwseswesw
seswneswswsenwwnwse
nwnwneseeswswnenewneswwnewseswneseene
swweswneswnenwsewnwneneseenw
eesenwseswswnenwswnwnwsewwnwsene
sewnenenenesenwsewnenwwwse
wenwwweseeeweswwwnwwe
wsweesenenewnwwnwsenewsenwwsesesenwne
neeswseenwwswnwswswnw
nenwswwsewswnenenewsenwsenwnesesenew
enewnwewneswsewnwswenweswnenwsenwsw
sweneswneswneneenwnewenewwneswswnese
swwesenesewenwneswnwwneseswwne
enesenwswwswneneswsenwnewswseenwsese
wnwnesenesenenwwnenwsewesewsesesew
nenewswnwewswnenesenwnesewesw
eneswnwswnwsenenwnwnwwseeswneewsenese
neswnwewnwnwseenwseesewsenwsweewe
wseweeenwnesenwwwswnew

In dit voorbeeld worden er 10 tegels elk één keer omgedraaid (naar zwart) en 5 andere tegels worden elk twee keer omgedraaid (eerst naar zwart en daarna terug naar wit). Nadat deze instructies gevolgd zijn, zijn er in totaal 10 tegels zwart.

Opgave

Overloop de lijst van de renovatieploeg en bepaal welke tegels er moeten omgedraaid worden. Hoeveel tegels liggen er met de zwarte kant naar boven nadat alle instructies opgevolgd zijn? Hiervoor ga je als volgt te werk:

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat het tekstbestand tiles.txt2 zich in de huidige directory bevindt.

> blackTiles("tiles.txt")
10