Vi havde en code challenge på en workshop. Det handlede i bund og grund om at vi skulle prøve at forstå programmeringslogik, men helt uden at kode. Vi fik forskellige opgaver, hvor der var kommandoer, man kunne bruge for at udføre opgaven.

 

Var syg dagen da workshoppen blev afholdt og har derfor ikke billeder med

Level 1

For at flytte boksene fra inbox til outbox ville jeg bruge løsningen:

Inbox 

Outbox 

Inbox 

Outbox 

Inbox 

Outbox

Forklaring: For hver box der kommer skal man bruge Inbox, for at samle den op fra Inbox og derefter Outbox for at sætte den på Outbox igen, det gør man 3 gange fordi der er 3 kasser.

 

Level 2

Her får vi en ny kommando, Jump. Med den kan man springe tilbage i sin kode og køre det igen. Så på samme måde, vi før fik kasserne over med at skrive koden for hver kasse, så kan det gøre det selv nu. Her vil jeg bruge løsningen:

 

→ Inbox

    Outbox 

 ↑ Jump

 

Level 3

Her har vi fået en ny kommando, der hedder CopyFrom. Med den kan man tage en kasse fra en specifik lokation og derefter håndtere den. For at flytte de specifikke kasser som skal flyttes vil jeg bruge løsningen:

 

CopyFrom 3 

Outbox 

CopyFrom 5 

Outbox 

CopyFrom 2 

Outbox

 

Level 4

Nu har vi fået kommandoen CopyTo, den kan bruges til at gemme en kasse på bordet mens man henter den næste kasse. Derfor kan man sende dem til Outbox i omvendt rækkefølge med denne løsning:

 

→ Inbox 

     CopyTo 0

     Inbox

     Outbox

     CopyFrom 0

     Outbox 

↑   Jump

 

Level 5

Nu kan vi bruge kommandoen Add. Vi skal bruge den til at ligge hver sæt sammen og sende videre til outbox. Det gør jeg med løsningen:

→ Inbox
CopyTo 0
Inbox
Add 0
Outbox
↑ Jump

Forklaring: Jeg bruger CopyTo til at gemme den første værdi derefter kan jeg bruge Add til at ligge det sammen med den næste værdi

Level 6

Nu får vi muligheden at bruge kommandoen JumpIfZero. Med den kan man sige hvis næste boks er 0, så kan man springe videre. Det er brugbart til at springe dem over som man skal i denne opgave. Det kan man gøre med denne løsning: 

 

→ Inbox 

     JumpIfZero ↓

     Outbox 

↑   Jump

 

Level 7

Nu skal vi i stedet for at sende alle andre kasser end 0 videre, skal vi kun sende 0 videre. Det kan man gøre med samme kommando. Fordi man med JumpIfZero kan springe i koden, så kan man hvis den viser 0 springe til en outbox og sende den videre. Hvis den er andet end 0 bliver den bare sprunget over

 

→ Inbox 

     JumpIfZero → (hop til Outbox) 

↑   Jump

→ Outbox 

↑   Jump

 

Level 8

Her skal vi tage to værdier og trække dem fra hinanden

 

 

→ Inbox 

     CopyTo 0

     Inbox 

     CopyTo 1 

     Sub 0

     Outbox 

     CopyFrom 0 

     Sub 1

     Outbox 

↑   Jump

 

Forklaring: Jeg startede med at hente den første værdi og gemme den på plads 0. Derefter hentede jeg den anden værdi og gemte den på plads 1. Ved hjælp af Sub kunne jeg først udregne B-A og sende resultatet til outbox. Efter det hentede jeg den første værdi igen og udregnede A-B

Level 9

Jeg startede med at hente den første værdi og gemme den på plads 0. Derefter hentede jeg den anden værdi og gemte den på plads 1. Ved hjælp af Sub kunne jeg først udregne B-A og sende resultatet til outbox. Efter det hentede jeg den første værdi igen og udregnede A-B

 

Level 9. Her skulle man undersøge, om to værdier fra inbox var ens. Selvom JumpIfNegative blev introduceret i level 9, valgte jeg ikke at bruge kommandoen i min løsning. Jeg brugte i stedet Sub og JumpIfZero til at undersøge om forskellen mellem de to værdier var 0. Hvis resultatet var 0, betød det at værdierne var ens, og værdien blev sendt til outbox.

 

→ Inbox 

     CopyTo 0 

     Inbox 

     Sub 0

     JumpIfZero → (hop til Outbox) 

↑   Jump

→ Outbox 

↑   Jump

 

Level 10

Denne opgave havde jeg svært ved og kunne ikke løse

Refleksion

Gennem opgaverne lærte jeg gradvist mere om, hvordan programmering fungerer gennem logik, betingelser og håndtering af data. I de første levels handlede det mest om at flytte værdier mellem inbox og outbox, men senere blev det nødvendigt at gemme værdier midlertidigt og bruge matematiske operationer som Add og Sub. Jeg lærte også hvordan kommandoer som JumpIfZero kan bruges til at styre programmets flow ud fra bestemte betingelser.

Jeg oplevede især at de sidste levels blev markant sværere, fordi de krævede mere logisk tænkning og planlægning. Level 10 havde jeg svært ved at løse, fordi jeg havde problemer med at forstå hvordan programmet skulle undersøge fortegn på værdierne. Selvom jeg ikke løste alle opgaver fuldt ud, fik jeg en bedre forståelse for hvordan programmer tager beslutninger og arbejder trin for trin med data.