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
: 8
cdfbe
: 5
gcdfa
: 2
fbcad
: 3
dab
: 7
cefabd
: 9
cdfgeb
: 6
eafb
: 4
cagedb
: 0
ab
: 1
Op basis daarvan kunnen de vier cijfers van de uitgangswaarde als volgt gedecodeerd worden:
cdfeb
: 5
fcadb
: 3
cdfeb
: 5
cdbaf
: 3
De 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
: 8394
fcgedb cgb dgebacf gc
: 9781
cg cg fdcagb cbg
: 1197
efabcd cedba gadfec cb
: 9361
gecf egdcabf bgf bfgea
: 4873
gebdcfa ecba ca fadegcb
: 8418
cefg dcbef fcge gbcadfe
: 4548
ed bcgafe cdgba cbgef
: 1625
gbdfcae bgc cg cgb
: 8717
fgae cfgab fg bagce
: 4315
Als 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 (String
) 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 (String
) 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.txt
1 en displays02.txt
2 zich in de huidige directory bevinden.
> search("displays01.txt")
61229
> search("displays02.txt")
1070188