Cellofaan is een dunne, transparante film die gemaakt wordt van cellulose. Cellulosevezels van hout, katoen of hennep worden opgelost in een basische oplossing en behandeld met koolstofdisulfide om zo een oplossing te verkrijgen die viscose genoemd wordt. Deze oplossing wordt vervolgens geëxtrudeerd door een spleet in een zuurbad om de viscose terug om te zetten in cellulose.
Cellofaan werd uitgevonden door de Zwitserse chemicus Jacques E. Brandenberger. Hij deed er tien jaar over om zijn transparante films te perfectioneren alvorens er in 1912 een patent voor aan te vragen. Cellulosefilms worden sinds de jaren dertig geproduceerd. Behalve voor het verpakken van voedsel, worden ze ook gebruikt voor een aantal industriële toepassingen zoals het vervaardigen van plakband (waaronder Scotch Tape) en als semipermeabel membraan in bepaalde batterijen. De verkoop van cellofaan is de laatste jaren flink gekelderd vanwege de productie van alternatieve verpakkingsmaterialen, en doordat viscose steeds minder vervaardigd wordt omwille van het vervuilende koolstofdisulfide.
Op een vlak oppervlak — bijvoorbeeld een raam of een lichtbak waarop dokters röntgenfoto's bekijken — wordt een rechthoekig rooster aangebracht. Daarvan worden de kolommen van links naar rechts en de rijen van onder naar boven genummerd vanaf nul. Op het oppervlak kunnen rechthoekige cellofaanfilms aangebracht worden, die precies samenvallen met een aantal vlakken van het rooster. Deze transparante films zijn ofwel rood of blauw gekleurd. Indien een vlak bedekt wordt door één of meer rode films dan heeft het een rode kleur. Is een vlak bedekt met één of meer blauwe films, dan heeft het een blauwe kleur. Wanneer een vlak bedekt wordt door minstens één rode en minstens één blauwe film, dan krijgt het een paarsachtige kleur.
Voor gegeven posities van een aantal rode en blauwe films moet je bepalen hoeveel vlakken er paars kleuren. Hiervoor ga je als volgt te werk.
Schrijf een functie paars waaraan een lijst met de posities van een aantal cellofaanfilms moet doorgegeven worden. Elke film uit de lijst wordt voorgesteld door een tuple met vijf elementen. De eerste twee daarvan zijn natuurlijke getallen die het kolom- en rijnummer van het vlak in het rooster aanduiden dat bedekt wordt door de linkerbovenkant van de film. Daarna volgen nog twee natuurlijke getallen die de breedte en hoogte van de cellofaanfilm aangeven, uitgedrukt als een geheel aantal vlakken. Het laatste element is een string die de kleur van de film aangeeft: R (rood) of B (blauw). De functie moet teruggeven hoeveel vlakken van het rooster uiteindelijk paars kleuren, nadat alle films op de gegeven posities werden aangebracht.
Gebruik de functie paars om een functie cellofaan te schrijven, waaraan de locatie van een tekstbestand moet doorgegeven worden. Elke regel van dit tekstbestand bevat de omschrijving waar een cellofaanfilm op een rooster moet aangebracht worden. Het eerste karakter is een letter die de kleur (R voor rood of B voor blauw) van de film aangeeft. Daarna volgen vier natuurlijke getallen die telkens van elkaar gescheiden worden door één enkele spatie (let wel, tussen de eerste letter en het eerste getal staat geen spatie). Deze getallen geven achtereenvolgens het kolom- en rijnummer aan van het vlak in het rooster dat door de linkerbovenkant van de film bedekt wordt, en de breedte en hoogte van de film uitgedrukt als een geheel aantal vlakken. De functie moet teruggeven hoeveel vlakken van het rooster uiteindelijk paars kleuren, nadat alle films op de gegeven posities werden aangebracht.
Bij onderstaande voorbeeldsessie gaan we ervan uit dat het bestand cellofaan.txt1 zich in de huidige directory bevindt. De schikking van de cellofaanfilms op het rooster komt in beide gevallen overeen met de afbeelding die hierboven staat.
>>> paars([(0, 0, 5, 5, 'R'), (10, 0, 5, 5, 'R'), (3, 2, 9, 2, 'B')])
8
>>> cellofaan('cellofaan.txt')
8