Zodra er mensen arriveren, besef je dat je fout zat. Mensen geven niet om aangrenzende stoelen — ze geven om de eerste stoel die ze kunnen zien in elk van de acht richtingen!
Bekijk nu in plaats van alleen de acht direct aangrenzende posities, de eerste stoel in elk van deze acht richtingen. De lege stoel hieronder zou bijvoorbeeld acht bezette stoelen zien:
.......#.
...#.....
.#.......
.........
..#L....#
....#....
.........
#........
...#.....
De meest linkse lege stoel hieronder zou slechts één lege stoel zien, maar kan geen van de bezette stoelen zien:
.............
.L.L.#.#.#.#.
.............
De lege stoel hieronder zou geen bezette stoelen zien:
.##.##.
#.#.#.#
##...##
...L...
##...##
#.#.#.#
.##.##.
Mensen lijken ook iets toleranter te zijn dan je had verwacht: er zijn nu vijf of meer bezette stoelen nodig voordat een bezette stoel leeg wordt (in plaats van vier of meer volgens de vorige regels). De andere regels zijn nog steeds van toepassing: lege stoelen die geen bezette stoelen zien, worden bezet, stoelen die aan geen enkele regel voldoen, veranderen niet en grond verandert nooit.
Gegeven dezelfde beginopstelling als in de vorige opgave, zorgen deze nieuwe regels ervoor dat de wachtruimte als volgt gevuld raakt:
L.LL.LL.LL
LLLLLLL.LL
L.L.L..L..
LLLL.LL.LL
L.LL.LL.LL
L.LLLLL.LL
..L.L.....
LLLLLLLLLL
L.LLLLLL.L
L.LLLLL.LL
#.##.##.##
#######.##
#.#.#..#..
####.##.##
#.##.##.##
#.#####.##
..#.#.....
##########
#.######.#
#.#####.##
#.LL.LL.L#
#LLLLLL.LL
L.L.L..L..
LLLL.LL.LL
L.LL.LL.LL
L.LLLLL.LL
..L.L.....
LLLLLLLLL#
#.LLLLLL.L
#.LLLLL.L#
#.L#.##.L#
#L#####.LL
L.#.#..#..
##L#.##.##
#.##.#L.##
#.#####.#L
..#.#.....
LLL####LL#
#.L#####.L
#.L####.L#
#.L#.L#.L#
#LLLLLL.LL
L.L.L..#..
##LL.LL.L#
L.LL.LL.L#
#.LLLLL.LL
..L.L.....
LLLLLLLLL#
#.LLLLL#.L
#.L#LL#.L#
#.L#.L#.L#
#LLLLLL.LL
L.L.L..#..
##L#.#L.L#
L.L#.#L.L#
#.L####.LL
..#.#.....
LLL###LLL#
#.LLLLL#.L
#.L#LL#.L#
#.L#.L#.L#
#LLLLLL.LL
L.L.L..#..
##L#.#L.L#
L.L#.LL.L#
#.LLLL#.LL
..#.L.....
LLL###LLL#
#.LLLLL#.L
#.L#LL#.L#
Op dit punt stoppen de mensen opnieuw met zich te verzetten en stabiliseert de wachtruimte zich. Zodra dit gebeurt, tel je 26
bezette stoelen.
Gegeven deze nieuwe methode om te gaan zitten en de gewijzigde regel voor bezette stoelen die weer leeg raken, hoeveel stoelen zijn er dan bezet zodra de toestand zich stabiliseert? Hiervoor ga je als volgt te werk:
occupiedSeats
waaraan de padnaam (String
) van een tekstbestand met een plattegrond van de beginopstelling van de stoelen moet doorgegeven worden. De functie moet teruggeven hoeveel (Int
) stoelen er bezet zijn op het moment dat geen enkele stoel nog van toestand verandert.In deze interactieve sessie gaan we ervan uit dat het tekstbestand layout.txt
1 zich in de huidige directory bevindt.
> occupiedSeats("layout.txt")
26