Gegeven zijn twee CSV-bestanden, met als gedaante:

Voornaam; Familienaam; Data1; Data2; ... 
Hierbij zijn de headings Data1, Data2, enz. placeholders (m.a.w. in de echte bestanden staan andere hoofdingen). De headings 'Voornaam' en 'Familienaam' komen als eerste en tweede hoofding in de twee bestanden voor.

In deze oefening construeren we een derde CSV-bestand dat de samenvoeging van beide originele bestanden is. Hierbij wordt de kolommen Voornaam en Familienaam uit het eerste bestand behouden. Ook de data uit het eerste bestand wordt overgenomen. De kolommen worden aangevuld met de gegevens uit het tweede bestand. Er komen dus kolommen bij in de tabel, en deze bevat de data uit het tweede CSV-bestand, die hoort bij de persoon. Indien een persoon uit het eerste bestand niet voorkomt in het tweede bestand, dan worden deze gegevens door ? ingevuld. Schrijf een functie merge() met als argumenten:

De bestanden die Dodona gebruikt in de testcases vind je in het gecomprimeerde bestand SamenvoegenVanTabellen.zip1.

Voorbeeld

merge('Gegevens_0_1.csv', 'Gegevens_0_2.csv', 'Gegevens_0_out.csv')
Inhoud 'Gegevens_0_1.csv'
Voornaam;Familienaam;Scheikunde;Informatica
Greet;Van de Putte;10,0;16,0
Jamie;De Jonge;19,0;19,0
Ode;Nachtegaele;5,0;20,0
Lotte;Verstraete;14,0;15,0
Nick;Paulussen;7,0;17,0
Xantippe;Jansens;16,0;9,0
Thomas;Bomans;12,0;3,0
Inhoud 'Gegevens_0_2.csv'
Voornaam;Familienaam;Geschiedenis;Nederlands;Latijn;Frans;Maatschappelijke Vorming
Nick;Paulussen;8,0;17,0;12,0;17,0;12,0
Femke;Geeraert;16,0;11,0;12,0;2,0;1,0
Lotte;Verstraete;6,0;7,0;6,0;19,0;1,0
Ulrike;Pieters;7,0;19,0;19,0;4,0;18,0
Jamie;De Jonge;0,0;15,0;15,0;12,0;5,0
Ode;Nachtegaele;16,0;2,0;12,0;14,0;20,0
Renee;Vrielinck;15,0;8,0;2,0;13,0;3,0
Thomas;Bomans;12,0;8,0;9,0;7,0;19,0
Inhoud 'Gegevens_0_out.csv'
Voornaam;Familienaam;Scheikunde;Informatica;Geschiedenis;Nederlands;Latijn;Frans;Maatschappelijke Vorming
Greet;Van de Putte;10,0;16,0;?;?;?;?;?
Jamie;De Jonge;19,0;19,0;0,0;15,0;15,0;12,0;5,0
Ode;Nachtegaele;5,0;20,0;16,0;2,0;12,0;14,0;20,0
Lotte;Verstraete;14,0;15,0;6,0;7,0;6,0;19,0;1,0
Nick;Paulussen;7,0;17,0;8,0;17,0;12,0;17,0;12,0
Xantippe;Jansens;16,0;9,0;?;?;?;?;?
Thomas;Bomans;12,0;3,0;12,0;8,0;9,0;7,0;19,0