Echt pro is het niet, maar een andere topic waar programming in voorkomt kon ik niet vinden.
Tijdens Kerst met de familie wordt er altijd een Kerstpuzzel gemaakt, dit jaar dus van de AIVD (deze). Hierin staat een puzzel over treinen en gewichten, opgave 7. Veel gepuzzel en gereken, maar uiteindelijk waren er teveel combinaties om uit het hoofd te doen en het leuk te houden.
Eenmaal thuis bedacht ik me om er een scriptje voor te schrijven. Uiteindelijk is het een redelijk simpel script geworden (let wel, ik heb extreem weinig ervaring met programmeren, alleen MATLAB voor mijn studie).
Het werkt... sort of. Het script test simpelweg alle combinaties. Dus eerst (in dit geval begin je bij letter 3, C dus) CCC, CCD, CCE, CCF, enz, daarna CDC, CDD, CDE, CDF etc... Komt dit overeen met het aangegeven gewicht, sla de combinatie op en ga verder. De laatste regel converteert cijfers naar letters.
Ik kan er wagons met een specifiek aantal blokken mee oplossen. Als het aantal blokken verandert, moet ik for-loops gaan toevoegen of verwijderen. Natuurlijk kan ik hier wel de puzzel met oplossen, maar het liefst komt er één elegant script uit
Wat er dus moet gebeuren is dat het aantal for-loops wordt aangepast aan het aantal blokken wat op de wagon ligt. Heeft iemand een idee hoe dit moet/kan? Het hoeft niet per se in MATLAB taal te worden uitgelegd, een concept is genoeg, dan kan ik het wel in het scriptje stoppen.
Tijdens Kerst met de familie wordt er altijd een Kerstpuzzel gemaakt, dit jaar dus van de AIVD (deze). Hierin staat een puzzel over treinen en gewichten, opgave 7. Veel gepuzzel en gereken, maar uiteindelijk waren er teveel combinaties om uit het hoofd te doen en het leuk te houden.
Eenmaal thuis bedacht ik me om er een scriptje voor te schrijven. Uiteindelijk is het een redelijk simpel script geworden (let wel, ik heb extreem weinig ervaring met programmeren, alleen MATLAB voor mijn studie).
Matlab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| num = input(' numerator = '); den = input('denominator = '); blocks = input(' #blocks = '); M = zeros(100,blocks); c = 0; for i = blocks:26 for ii = blocks:26 for iii = blocks:26 S = 1/i+1/ii+1/iii; if S == num/den; c = c + 1; M(c,1) = i; M(c,2) = ii; M(c,3) = iii; end end end end char('A' + M(1:c,1:blocks) - 1) |
Het werkt... sort of. Het script test simpelweg alle combinaties. Dus eerst (in dit geval begin je bij letter 3, C dus) CCC, CCD, CCE, CCF, enz, daarna CDC, CDD, CDE, CDF etc... Komt dit overeen met het aangegeven gewicht, sla de combinatie op en ga verder. De laatste regel converteert cijfers naar letters.
Ik kan er wagons met een specifiek aantal blokken mee oplossen. Als het aantal blokken verandert, moet ik for-loops gaan toevoegen of verwijderen. Natuurlijk kan ik hier wel de puzzel met oplossen, maar het liefst komt er één elegant script uit
Optimist: The glass is half full; Pessimist: The glass is half empty; Physicist: The glass is full of liquid and air.