Door een klein beetje logisch nadenken, zou je nu in staat moeten zijn om de resterende cijfers te identificeren. Laten we er het eerste voorbeeld nog eens bijnemen:
acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | cdfeb fcadb cdfeb cdbaf
Na een zorgvuldige analyse houdt de afbeelding tussen signaaldraden en segmenten enkel steek in de volgende configuratie:
dddd
e a
e a
ffff
g b
g b
cccc
De unieke signaalpatronen komen dus als volgt overeen met de cijfers:
acedgfb: 8cdfbe: 5gcdfa: 2fbcad: 3dab: 7cefabd: 9cdfgeb: 6eafb: 4cagedb: 0ab: 1Op basis daarvan kunnen de vier cijfers van de uitgangswaarde als volgt gedecodeerd worden:
cdfeb: 5fcadb: 3cdfeb: 5cdbaf: 3De uitgangswaarde op deze regel is daardoor gelijk aan 5353.
Als we dezelfde procedure toepassen voor elke regel in het tweede, grotere voorbeeld dat we hiervoor gebruikt hebben, dan kunnen de uitgangswaarden daarvan als volgt gedecodeerd worden:
fdgacbe cefdb cefbgd gcbe: 8394fcgedb cgb dgebacf gc: 9781cg cg fdcagb cbg: 1197efabcd cedba gadfec cb: 9361gecf egdcabf bgf bfgea: 4873gebdcfa ecba ca fadegcb: 8418cefg dcbef fcge gbcadfe: 4548ed bcgafe cdgba cbgef: 1625gbdfcae bgc cg cgb: 8717fgae cfgab fg bagce: 4315Als we alle uitgangswaarden uit dit grotere voorbeeld bij elkaar optellen, dan bekomen we 61229.
Bepaal voor elke regel alle draad/segmentverbindingen en decodeer daarmee de viercijferige uitgangswaarden. Wat krijg je als je alle uitgangswaarden bij elkaar optelt? Bepaal dit op de volgende manier:
Schrijf een functie search waaraan de padnaam (char*) moet doorgegeven worden van een tekstbestand met je notities over de displays van de onderzeeƫr. Elke regel van het bestand bevat de volgende tokens, die door spaties van elkaar gescheiden worden: tien unieke signaalpatronen, een verticale streep (|) en een viercijferige uitgangswaarde. De functie moet de som (int) van alle uitgangswaarden teruggeven.
Write a function search that takes the pathname (char*) of a text file containing your observations of the submarine displays. Each line of the file contains the following tokens, separated by spaces: ten unique signal patterns, a vertical bar (|) and four digit output values. The function must return the sum (int) of all output values.
In deze interactieve sessie gaan we ervan uit dat de tekstbestanden displays01.txt1 en displays02.txt2 zich in de huidige directory bevinden.
> search("displays01.txt")
61229
> search("displays02.txt")
1070188