Mattekluringar i Scratch

Att lösa mattekluringar är inte alltid så lätt och jag tänkte visa ett sätt där vi tar hjälp av Scratch för att knäcka ett problem. Det problem jag tänkte att vi skulle lösa ser ut så här:

Bo och hans två systrar är lika många år tillsammans som det är dagar i juni. Bo är dubbelt så gammal som systern Lena och tio år äldre än systern Ida. Hur gamla är Bo, Lena och Ida?

Det första jag tänkte att vi skulle börja med är att titta lite närmare på kluringen och se om vi kan skriva om den till mattespråk.

1. Det första vi gör är att ge syskonen mattenamn: Bo=X Lena=Y Ida=Z
2. Syskonen är lika många år tillsammans som det är dagar i juni: X+Y+Z=30
3. Bo är tio år äldre än Lena: X=Y+10
4. Bo är dubbelt så gammal som systern Lena: X=Z+Z

Programmering

Jag börjar med att starta ett nytt projekt.

Därefter tar vi en titt på variabler och skapar tre nya, nämligen X, Y och Z.

Vi kommer att använda Scratch-katten i det här projektet. Alla script vi bygger ligger på katten.

Räknescriptet

Vi fortsätter därefter med att bygga själva räknescriptet. Vi kommer att använda en metod som kallas "brute force", råstyrka. Metoden går ut på att man testar alla möjliga värden på variablerna och kontrollerar om dessa värden håller mot de premisser vi sätter upp.

Scriptet ska se ut så här:
Scriptet kan behöva en förklaring.

Det första scriptet gör är att sätta variablerna vi använder till noll. Detta gör vi för att vi ska kunna starta det flera gånger; Scratch kommer nämligen ihåg vilket värde en variabel har när scriptet stoppas. När vi startar vill vi att det ska börja från början och vi sätter värdet därför till noll när vi startar.

Därefter har vi några repeteraklämmor. Klämmorna ser i grund och botten ut på det här viset:
Vi repeterar en värdeökning på variabeln och sätter därefter ner värdet till noll. Att jag har fyllt i värdet 30 beror på att det är det högsta värdet jag vill testa, dvs antalet dagar i juni. I det problemet vi ska lösa nu skulle jag egentligen inte behövt testa ett högre värde än 28 men ett jämnt tiotal ser trevligt ut.

När vi sedan sätter "repetera"-klämmorna i varandra skapar vi en uppräkning där vi testar X=1, Y=1, Z=1 därefter X=1, Y=1, Z=2 och så vidare tills vi testat alla möjliga kombinationer av X, Y och Z mellan 0 och 30.

Verifieringsscriptet

Nästa script vi bygger är själva verifieringsscriptet, det vill säga det script som kontrollerar om värdena stämmer överens med de premisser vi satt upp.

Vi börjar med att titta på "operator"-bitarna. Med hjälp av dessa bitar bygger vi de premisser som gäller för kluringen.
Syskonen tillsammans är 30 år (X+Y+Z=30), Bo är tio år äldre än Lena (X=Y+10) och Bo är dubbelt så gammal som Ida (X=Z+Z).

Därefter bygger vi själva scriptet. Det ska se ut så här:
När scriptet startas ska katten, om premisserna för X,Y och Z stämmer, göra något. I det här fallet ska den säga att X=X-variabelns värde, Y=Y-variabelns värde och Z=Z-variabelns värde.

När det händer kommer det att se ungefär så här:

Ett problem du kan lösa

Om du vill prova att lösa ett eget problem kan du börja med det här:

Ida, Stefan och Rune har 25 kulor sammanlagt då plötsligt Stefan säger: Om jag får två kulor
av dig, Rune så har jag lika många som du och dubbelt så många som Ida. Hur många kulor var
har de tre barnen?