Citat:
Vill du lära dig en användbar sak inom programmering? Antag att du har en funktion som kan kolla sekvensen av 1or i en lista, och inget annat. Du har skrivit din funktion färdigt, och den gör det den ska. Sen vill du kunna använda den till att kolla andra tal. Går det att göra?Ja okej, det visste jag inte. Har testat och lagt till positionen för slutläget i sekvensen.
Jag kommer nu fram till längsta sekvensen, dess start-slut position och vilket nummer det gäller.
Jag vill ha samma information för alla siffror (0-9).
Min första tanke är att implementera for k = 0:9 någonstans?
Är det möjligt att ha for-loop inuti en annan for-loop?
Jag kommer nu fram till längsta sekvensen, dess start-slut position och vilket nummer det gäller.
Jag vill ha samma information för alla siffror (0-9).
Min första tanke är att implementera for k = 0:9 någonstans?
Är det möjligt att ha for-loop inuti en annan for-loop?
I MATLAB så visar det sig vara enkelt. Om du har en lista med tal, x, så kan du köra x == 3 så kommer du få tillbaka en lista som har en 0a på de platser som x inte har en 3a, och en 1a på de platser x har en 3a. Ett kort exempel:
>> x = randi(3,1,10)
x =
3 2 1 3 3 3 2 3 3 2
>> treor = x == 3
treor =
1 0 0 1 1 1 0 1 1 0
x =
3 2 1 3 3 3 2 3 3 2
>> treor = x == 3
treor =
1 0 0 1 1 1 0 1 1 0
Det man kan ta ut av det här är att det lönar sig att skriva kod som går att återanvända; hur man gör det är något som kommer med erfarenhet. Från det här perspektivet blir det även ett exempel på "divide and conquer." Det kanske ser ut som att du har 10 olika problem om du ska kolla sekvenser av siffrorna [0..9], men här går det alltså att definiera ett basfall och sen "dela upp" dina till synes olika problem till flera instanser av samma bas-problem, vilket gör dom enkla att "erövra" med en enda kodsnutt. Det är inte riktigt så man brukar beskriva divide and conquer, men det är nära nog.
Just för den här uppgiften blir det inte sån stor kodskillnad att använda det här konceptet, men det blir kanske enklare att fundera på problemet på det här viset, samt kod som är återanvändbar är en bra vana att ha. Kan du slänga ihop något som klarar de här bitarna? Ditt egna förslag är nog enklare i det här fallet, så om du vill ha snabba resultat är det nog det som gäller. :)