Piet Hein en John Nash bedachten onafhankelijk van elkaar het strategisch bordspel Hex dat tegelijkertijd super eenvoudig maar ook zeer tactisch is.

hex
Bij het bordspel Hex moeten twee spelers om de beurt een steen van hun eigen kleur op het spelbord leggen, om zo hun twee tegenoverliggende zijden van het spelbord met elkaar te proberen verbinden via een ononderbroken keten.

Het spel wordt gespeeld met twee spelers die elk twee tegenoverliggende zijden van het spelbord toegewezen krijgen die ze met elkaar moeten proberen verbinden met een ononderbroken keten van stenen in hun eigen kleur (wit of zwart). Ze doen dit door om de beurt een steen van hun kleur op het spelbord te leggen. Gelijkspel is niet mogelijk en het is ook bewezen dat de speler die als eerste aan de beurt komt altijd een winnende strategie heeft (als de tweede speler zo'n strategie had, dan zou de eerste speler die altijd kunnen "stelen" als hij in de voorgaande beurt aan zet kwam). Maar om het spel te kunnen winnen is het nodig dat je behoedzaam en vernuftig nadenkt.

Opgave

Tegenwoordig kan je heel wat strategische bordspelen zoals Hex ook online spelen, waarbij je ofwel een mens of een computer als tegenstander tegenover je krijgt (probeer dat hier maar eens uit voor Hex1). Ondertussen is de industrie voor mobiele games miljarden dollars waard, en besteden bedrijven enorme hoeveelheden geld aan de ontwikkeling en marketing ervan.

Het tekstbestand strategy.csv2 bevat een dataset van mobiele games waarbij strategisch denken een belangrijke rol speelt. Onder dit deel van het aanbod aan games vallen bekende titels zoals Clash of Clans3, Plants vs Zombies4 en Pokemon Go5. De eerste regel van het bestand bevat een hoofding. Elke volgende regel bevat gegevens over één mobiele game, bestaande uit zeven velden die telkens van elkaar gescheiden worden door een komma (,): i) naam (Name), ii) gemiddelde gebruikersbeoordeling (Average User Rating; getal tussen 1 en 5, afgerond tot dichtsbijzijnde .5), iii) kostprijs (Price; in US dollar), iv) naam van ontwikkelaar (Developer), v) grootte van de app (Size; in bytes), vi) genres waartoe game behoort (Genres), en vii) datum waarop game werd uitgebracht (Original Release Date). Het veld met genres (Genres) bevat één of meer namen van genres die ook met komma's van elkaar gescheiden worden. De overige velden bevatten zelf geen komma's.

Gevraagd wordt om — gebruikmakend van de teksteditors vi of vim — een reeks commando's op te stellen die achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat elk van deze commando's bestaat uit zo weinig mogelijk tekens. De commando's mogen geen programmeerbare filters (bv. awk) gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. De opdrachten mogen de eerste regel (hoofding) niet wijzigen, tenzij dit expliciet anders vermeld staat. Ter controle kan je gebruikmaken van de meegeleverde bestanden strategy.i.csv (ZIP6), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.

  1. Het is wat verwarrend dat zowel de velden onderling als de genres binnen het gelijknamige veld (Genres) door komma's (,) van elkaar gescheiden worden. Los dit op door de velden van elkaar te scheiden met puntkomma's (;) in plaats van komma's (,). De genres moeten wel nog steeds met komma's van elkaar gescheiden blijven. Je mag ervan uitgaan dat naast het veld met genres (Genres), geen enkel ander veld nog komma's bevat. Zo moet

    Name,Average User Rating,Price,Developer,Size,Genres,Original Release Date
    Sudoku,4,2.99,Mighty Mighty Good Games,15853568,Games,Strategy,Puzzle,11/07/2008
    Reversi,3.5,1.99,Kiss The Machine,12328960,Games,Strategy,Board,11/07/2008
    Morocco,3,0,Bayou Games,674816,Games,Board,Strategy,11/07/2008
    Sudoku (Free),3.5,0,Mighty Mighty Good Games,21552128,Games,Strategy,Puzzle,23/07/2008
    Senet Deluxe,3.5,2.99,RoGame Software,34689024,Games,Strategy,Board,Education,18/07/2008
    Sudoku - Classic number puzzle,3,0,OutOfTheBit Ltd,48672768,Games,Entertainment,Strategy,Puzzle,30/07/2008
    Gravitation,2.5,0,Robert Farnum,6328320,Games,Entertainment,Puzzle,Strategy,30/07/2008
    Colony,2.5,0.99,Chris Haynes,64333824,Games,Strategy,Board,3/08/2008

    bijvoorbeeld omgezet worden naar (strategy.1.csv7)

    Name;Average User Rating;Price;Developer;Size;Genres;Original Release Date
    Sudoku;4;2.99;Mighty Mighty Good Games;15853568;Games,Strategy,Puzzle;11/07/2008
    Reversi;3.5;1.99;Kiss The Machine;12328960;Games,Strategy,Board;11/07/2008
    Morocco;3;0;Bayou Games;674816;Games,Board,Strategy;11/07/2008
    Sudoku (Free);3.5;0;Mighty Mighty Good Games;21552128;Games,Strategy,Puzzle;23/07/2008
    Senet Deluxe;3.5;2.99;RoGame Software;34689024;Games,Strategy,Board,Education;18/07/2008
    Sudoku - Classic number puzzle;3;0;OutOfTheBit Ltd;48672768;Games,Entertainment,Strategy,Puzzle;30/07/2008
    Gravitation;2.5;0;Robert Farnum;6328320;Games,Entertainment,Puzzle,Strategy;30/07/2008
    Colony;2.5;0.99;Chris Haynes;64333824;Games,Strategy,Board;3/08/2008
  2. We zijn we enkel geïnteresseerd in gratis mobiele apps. Verwijder alle apps die geld kosten (met andere woorden: hou enkel apps over die $0 kosten). We krijgen dan (strategy.2.csv8)

    Name;Average User Rating;Price;Developer;Size;Genres;Original Release Date
    Morocco;3;0;Bayou Games;674816;Games,Board,Strategy;11/07/2008
    Sudoku (Free);3.5;0;Mighty Mighty Good Games;21552128;Games,Strategy,Puzzle;23/07/2008
    Sudoku - Classic number puzzle;3;0;OutOfTheBit Ltd;48672768;Games,Entertainment,Strategy,Puzzle;30/07/2008
    Gravitation;2.5;0;Robert Farnum;6328320;Games,Entertainment,Puzzle,Strategy;30/07/2008
    Carte;2.5;0;Jean-Francois Pautex;2657280;Games,Strategy,Board,Entertainment;3/08/2008
    Barrels O' Fun;2.5;0;BesqWare;1466515;Games,Casual,Strategy;1/08/2008
    Quaddraxx;;0;H2F Informationssysteme GmbH;3089867;Games,Entertainment,Strategy,Puzzle;11/08/2008
    Lumen Lite;3.5;0;Bridger Maxwell;7086403;Games,Puzzle,Strategy;18/08/2008
  3. Vervang de gemiddelde gebruikersbeoordeling (Average User Rating) door een label dat de apps opdeelt in drie afzonderlijke groepen op basis van hun beoordeling. Een beoordeling groter dan 2.5 krijgt het label Positive. Een beoordeling kleiner dan 2.5 krijgt het label Negative. Een beoordeling van exact 2.5 krijgt het label Neutral. Hernoem het veld ook naar Rating. We krijgen dan (strategy.3.csv9)

    Name;Rating;Price;Developer;Size;Genres;Original Release Date
    Morocco;Positive;0;Bayou Games;674816;Games,Board,Strategy;11/07/2008
    Sudoku (Free);Positive;0;Mighty Mighty Good Games;21552128;Games,Strategy,Puzzle;23/07/2008
    Sudoku - Classic number puzzle;Positive;0;OutOfTheBit Ltd;48672768;Games,Entertainment,Strategy,Puzzle;30/07/2008
    Gravitation;Neutral;0;Robert Farnum;6328320;Games,Entertainment,Puzzle,Strategy;30/07/2008
    Carte;Neutral;0;Jean-Francois Pautex;2657280;Games,Strategy,Board,Entertainment;3/08/2008
    Barrels O' Fun;Neutral;0;BesqWare;1466515;Games,Casual,Strategy;1/08/2008
    Quaddraxx;;0;H2F Informationssysteme GmbH;3089867;Games,Entertainment,Strategy,Puzzle;11/08/2008
    Crystal Mine;Negative;0;Modular Dreams Inc;2818386;Games,Casual,Strategy;3/05/2009
  4. De grootte van de apps interesseert ons niet, dus verwijder dit veld (Size). We willen de naam van de ontwikkelaar graag ook net na de naam van de app zelf zien, dus verplaats dit veld (Developer) zodat het op de tweede plaats komt. Ook de hoofding moet conform deze wijzigingen aan de velden aangepast worden. We krijgen dan (strategy.4.csv10)

    Name;Developer;Rating;Price;Genres;Original Release Date
    Morocco;Bayou Games;Positive;0;Games,Board,Strategy;11/07/2008
    Sudoku (Free);Mighty Mighty Good Games;Positive;0;Games,Strategy,Puzzle;23/07/2008
    Sudoku - Classic number puzzle;OutOfTheBit Ltd;Positive;0;Games,Entertainment,Strategy,Puzzle;30/07/2008
    Gravitation;Robert Farnum;Neutral;0;Games,Entertainment,Puzzle,Strategy;30/07/2008
    Carte;Jean-Francois Pautex;Neutral;0;Games,Strategy,Board,Entertainment;3/08/2008
    Barrels O' Fun;BesqWare;Neutral;0;Games,Casual,Strategy;1/08/2008
    Quaddraxx;H2F Informationssysteme GmbH;;0;Games,Entertainment,Strategy,Puzzle;11/08/2008
    Lumen Lite;Bridger Maxwell;Positive;0;Games,Puzzle,Strategy;18/08/2008
  5. Voeg achteraan een nieuw veld Approved toe (ook in de hoofding). Dit veld bevat yes als de app een Positive beoordeling heeft (Rating), behoort tot de genres Puzzle en Games (Genres) en werd uitgebracht tussen 2010 en 2016 (Original Release Date; grenzen inbegrepen). Als een app niet aan deze voorwaarden voldoet, dan bevat dit veld no. We krijgen dan (strategy.5.csv11)

    Name;Developer;Rating;Price;Genres;Original Release Date;Approved
    Morocco;Bayou Games;Positive;0;Games,Board,Strategy;11/07/2008;no
    Sudoku (Free);Mighty Mighty Good Games;Positive;0;Games,Strategy,Puzzle;23/07/2008;no
    Sudoku - Classic number puzzle;OutOfTheBit Ltd;Positive;0;Games,Entertainment,Strategy,Puzzle;30/07/2008;no
    Gravitation;Robert Farnum;Neutral;0;Games,Entertainment,Puzzle,Strategy;30/07/2008;no
    Carte;Jean-Francois Pautex;Neutral;0;Games,Strategy,Board,Entertainment;3/08/2008;no
    Barrels O' Fun;BesqWare;Neutral;0;Games,Casual,Strategy;1/08/2008;no
    Quaddraxx;H2F Informationssysteme GmbH;;0;Games,Entertainment,Strategy,Puzzle;11/08/2008;no
    Bad Apples;Metaversal Studios;Positive;0;Games,Puzzle,Strategy;18/01/2010;yes