Permalänk
Medlem

Jag kan ta och editera min post snart, med vinnaren i förra tävlingen och den nya när den kommer.

på g

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Pink Lemonade
Hanois torn lär ju vara ett ganska sönderanalyserat problem till vilket det garanterat finns optimala lösningar med källkod att finna på webben. Jag har något minne av att det går att göra väldigt kort och smidigt med funktionella programmeringsspråk.

Våran examinator i en funktionell programmerinskurs (haskell) visade en lösning på 3 rader (inklusive funktionsdeklarationen).

Visa signatur

Scud: The other day, in the park, I was wondering why frisbees look bigger and bigger as they get closer to you
Scud: And then it hit me

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gannon
Våran examinator i en funktionell programmerinskurs (haskell) visade en lösning på 3 rader (inklusive funktionsdeklarationen).

Har du källkoden? Skulle vara väldigt interesant att se.

Visa signatur

ERx -> Alltid Trött IWill KK400-RS | Athlon Xp 2000+ | 256mb ddr | 48x cdrw | Samsung dvd | Nec ND-1300A DVD+-RW | GF4Mx440 128mb | Wd 80GB + Ibm/Hitachi 120Gb | Tvkort
"Fascism är den enda ideologin som fungerar" - Koffe

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av ERx
Har du källkoden? Skulle vara väldigt interesant att se.

Jo det har jag.
Jag skickar den som PM tills det är säkert att helgens tävling inte blir i towers of hanoi.

Visa signatur

Scud: The other day, in the park, I was wondering why frisbees look bigger and bigger as they get closer to you
Scud: And then it hit me

Permalänk
Citat:

Ursprungligen inskrivet av Gannon
Våran examinator i en funktionell programmerinskurs (haskell) visade en lösning på 3 rader (inklusive funktionsdeklarationen).

Där ser man, ja. Jag kom tydligen ihåg rätt.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gannon
Jo det har jag.
Jag skickar den som PM tills det är säkert att helgens tävling inte blir i towers of hanoi.

Kan du skicka den till mig med?

Visa signatur

# 1 "Arbetshästen": P4 2.0 Ghz, Radeon 9600 128Mb, 512Mb RAM.
# 2 "Kebaben": 333Mhz, Savage4 32Mb, 64Mb RAM.
# 3 "Odöpt": Acer Aspire 5021WLMi

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Gannon
Jo det har jag.
Jag skickar den som PM tills det är säkert att helgens tävling inte blir i towers of hanoi.

Men vad fånigt. Skriv den här. Det lär knappast ha varit ett fulhack, och inte särskilt svårt att komma på. F ö spelar det väl ingen roll om folk får den via PM eller läser på forumet?

Visa signatur

:€

Permalänk
Medlem

Jaja, hur som helst kommer det inte bli tornet, så kasta upp källkoden nu!

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk
Medlem

Här kommer den.

{- hanoi (n, from, to, help) flyttar ett torn med höjden n från pinnen med nummer from till pinnen med nummer to genom att ta hjälp av pinnen med nummer help. -} hanoi :: (Int, Int, Int, Int) -> [(Int, Int)] hanoi (0,_,_,_) = [] hanoi (n, from, to, help) = hanoi (n-1, from, help, to) ++ [(from, to)] ++ hanoi (n-1, help, to, from) {- Main> hanoi (3,1,2,3) [(1,2), (1,3), (2,3), (1,2), (3,1), (3,2), (1,2)] :: [(Int,Int)] Main> hanoi (4,1,2,3) [(1,3), (1,2), (3,2), (1,3), (2,1), (2,3), (1,3), (1,2), (3,2), (3,1), (2,1), (3,2), (1,3), (1,2), (3,2)] :: [(Int,Int)] Main> -}

Visa signatur

Scud: The other day, in the park, I was wondering why frisbees look bigger and bigger as they get closer to you
Scud: And then it hit me

Permalänk
Medlem

Gannon: Ska jag vara ärlig så förstår jag lika lite av den koden som av matricks kod :P. D.v.s. inget

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk
Citat:

Ursprungligen inskrivet av Skogix
Gannon: Ska jag vara ärlig så förstår jag lika lite av den koden som av matricks kod :P. D.v.s. inget

Är du insatt i haskell, funktionell programmering och/eller rekursion då?

Permalänk
Medlem

haskell är inte mitt område :P, helt klart

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk

Har tråkigt på jobbet så jag kan lika gärna roa mig med att förklara koden.

hanoi :: (Int, Int, Int, Int) -> [(Int, Int)] hanoi (0,_,_,_) = [] hanoi (n, from, to, help) = hanoi (n-1, from, help, to) ++ [(from, to)] ++ hanoi (n-1, help, to, from)

Den första raden deklarerar att funktionen hanoi har fyra parametrar av typen int och returnerar en lista med tupler av typen int. Den första parametern anger antalet skivor och de tre övriga kan ses som index för pinnarna. Skivorna ska flyttas från den första (from) till den andra (to) med hjälp av den tredje (help).

Den andra raden beskriver basfallet, dvs om första parametern är 0 (alltså då antalet skivor som skal flyttas är noll) så returneras en tom lista oberoende av vad resten av parametrarna är.

Den tredje raden är det allmänna fallet (med n skivor som ska flyttas) och gör en konkatenering av hanoi (n-1, from, help, to), [(from, to)] och hanoi (n-1, help, to, from). Detta är i princip ett steg i den rekursiva algoritmen. För att flytta n skivor från "from" till "to" flyttar man först n-1 skivor från "from" till "help", sedan flyttar man den n:te skivan från "from" till "to" och sedan n-1 skivor från "help" till "to".

Utskriften är sedan en lista av tupler som berättar från vilken pinne man ska flytta och vart.

Permalänk
Medlem

Pinky: De var fan :P, hängde med så långt att jag fattade n, from, to. Men helt förstod jag inte, var tvungen att ta problemet själv i en textfil för att se va du menade :P.

Smart, USCH!
Hatar folk som är bättre än mig, på alla sätt

Visa signatur

Övriga Ämnen - Enbart för människor som är seriösa!

Permalänk
Medlem

Kan bara påpeka att om man vill fula sig lite kan man lägga in basfallet i den sista raden (tex med en case) i hanoi-programmet, så man får ett program på 2 rader istället, fast med en något längre andra rad..

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av vb
Kan bara påpeka att om man vill fula sig lite kan man lägga in basfallet i den sista raden (tex med en case) i hanoi-programmet, så man får ett program på 2 rader istället, fast med en något längre andra rad..

Nu när du säger det så.

hanoi :: (Int, Int, Int, Int) -> [(Int, Int)] hanoi (n, from, to, help) = if n == 0 then [] else hanoi (n-1, from, help, to) ++ [(from, to)] ++ hanoi (n-1, help, to, from)

Tufft

Visa signatur

Scud: The other day, in the park, I was wondering why frisbees look bigger and bigger as they get closer to you
Scud: And then it hit me

Permalänk
Medlem

Jag kom just på veckasproblem Det kommer inte bli sådär en såndär tväroptimerings uppgift utan snarare att hitta på en smart lösning som genererar ett bra resultat. Förmodligen kommer det mer information imorgon och jag kommer skriva ett litet framework för C/C++ med testdata. Sedan kan ni andra skriva liknande för andra språk. Denna gång kan ALLA språk vara med typ. Ny tråd kommer startas när uppgiften är klar

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Skulle vara trevligt om uppgiften kunde släppas innan 12.00

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av masv
Skulle vara trevligt om uppgiften kunde släppas innan 12.00

Innan 12:00 imorgon? Kanske.. kan bli lite jobbigt. Får se när jag vaknar. Måste rita lite skisser och sånt så folk vet vad det handlar om. Plus att jag skall sova nu

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

låter toppen, hoppas jag inte tänker cp den här gången

Visa signatur

LAN i stockholmv9
http://www.hazard.nu

Permalänk
Avstängd

Kul.. Hoppas på en tradition här.

Permalänk
Medlem

forka gärna tråden/ämnet.. annars blir det så rörigt

Visa signatur

~ When there's no more room in hell, the dead will walk the earth. ~

Permalänk
Medlem

kl 11:00 kommer ny trådskapas med problemet skrivet.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.

Permalänk
Medlem

Vars är den då... ???

Visa signatur

Man kan inte polera en bajskorv

Permalänk
Medlem

Säkert postad i fel forum...
Eller så ser vi matricks status ändras från medlem till avstängd för att han spammade en moderator om att han ville ha tråden klistrad.

Nämen, har väntat jättelänge nu... Ush. Vill ha problem! =/

Permalänk
Medlem

jaja.. var 10 minuter sen

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.