Nekromanti Programmeringsspel; Sortering!

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,183
Location
Rissne
Jag gillar att låta elever göra analoga saker när de ska lära sig programmering. Jag vill att de ska fatta att syntax och kod egentligen inte är den svåra delen; att det viktigaste är problemlösning. Tidigare har de t.ex. fått skriva ner reglerna för en lek såpass detaljerat att en robot eller utomjording skulle kunna följa och förstå.

Nu på fredag tänkte jag ha en workshop om sortering. Jag hatar sortering; det är nästan det tråkigaste jag vet inom programmering, men det står i kursplanen. I praktiken brukar jag mest kolla vilken algoritm som borde funka bäst och sedan plocka nån annans implementation.

TL;DR: Jag ska ha en workshop om sortering med mina programmeringselever.

Jag tänkte göra det här i form av ett spel. Dela in klassen i grupper om 3-4 styckna per grupp (semirandom; blanda duktiga och mindre duktiga) och ge varje grupp en serie osorterade tal och en serie operationer. Varje operation har en kostnad.

Uppgiften är givetvis att med minsta möjliga antal operationer få fram en lista med sorterade tal. Kravet är också att instruktionerna ska kunna systematiseras så att de funkar för andra talserier.

Helst vill jag göra något väldigt konkret; typ ha korktavlor där siffrorna sitter fast på små pluppar eller häftstift eller nåt. Vi får se.

Men, jag tänker mig typ följande operationer:

- Jämföra två häftstifts tal (större än/mindre än/lika med)
- Plocka upp ett häftstift och lägga det åt sidan
- Skapa en ny, tom, lista
- Kolla längden på en lista
- Sätta in ett häftstift någonstans i en lista
- Komma ihåg ett tal (t.ex. vilket stift man är på eller så)
- Göra en matematisk operation (+,-,*,/ etc)
- (Gå till ett annat häftstift i listan)

Grejen är att jag inte är så superbra på sorteringsalgoritmer själv.

- Finns det några sorteringsalgoritmer som inte kan modelleras med ovanstående?
- Bör någon av ovanstående "kosta mer" vad gäller poäng? Dvs, är det nån av de ovanstående som bör vara "dyr" i tid, såpass dyr att det påverkar spelet? Eller kan alla kosta 1p?
 

Tony.Meijer

Ärketeknomantiker
Joined
14 Sep 2009
Messages
1,887
Location
Uppsala
Nej, alla algoritmer kan modeleras utifrån de regler du har gett (faktiskt utifrån ett subset av dem, man behöver bara plus, minus och jämförelser för att "simulera" en processor om man ska vara helt strikt, alla andra regler kan byggas upp utifrån dem).

Om du vill vara "korrekt" och försöker modellera en normal processor så kostar en jämförelse 4 cykler, en addition och subtraktion 6 cykler, en multiplikation 12 cykler och en division 18 cykler (detta är taget från state of the art pentium processorer under 2008, så det kan vara lite förlegat och vissa processorer har lite andra kostnader).

Med det sagt så skulle jag inte ha gjort det så, utan jag skulle ha använt en Turing-maskin. Tänk dig en lång tape, ungefär som en sån där klassisk filmrulle med frames, varje frame har en instruktion, denna instruktion genomförs och sedan vandrar man vidare till nästa frame. Instruktionerna kan vara följande: plus, minus, hoppa till frame X, switcha två frames... osv. osv. Du kan använda dina instruktioner om du vill men filmrulle-ideen är galet tydlig.
 

Krille

Super Moderator
Joined
7 Feb 2000
Messages
29,540
Location
Mölndal, Sverige
Lätt sidospår: en gång för urlänge sedan så byggde jag ett spel där man med kort programmerade en robot med uppgiften att skjuta ihjäl en annan robot. Varje kort var en instruktion och kunde kombineras genom iterationer och villkor till små program. Om jag kommer ihåg det så ska jag se om jag kan hitta det ikväll efter spelmötet eller så.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,183
Location
Rissne
Krille said:
Lätt sidospår: en gång för urlänge sedan så byggde jag ett spel där man med kort programmerade en robot med uppgiften att skjuta ihjäl en annan robot. Varje kort var en instruktion och kunde kombineras genom iterationer och villkor till små program. Om jag kommer ihåg det så ska jag se om jag kan hitta det ikväll efter spelmötet eller så.
Det vore väldigt coolt.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,183
Location
Rissne
Nu blev det inga häftstift, utan laminerade pappbitar med siffror på. Typ såhär:

LÄNK

Så; nu har jag fyra listor med åtta slumpade tal (alla får samma slumplista). Jag har dessutom extra listor som eleverna ska kunna använda för de algoritmer som har en sådan komponent.

Här är reglerna. Jag valde i slutänden att låta alla operationer utom "upprepa/gå till en tidigare operation" kosta 1, för enkelhetens skull.
 
Top