News feed
Log in to your course web
You are not logged in KTH, so we cannot customize the content.
Do you have questions regarding this course?
If you are registered on a current course round, please refer to the Canvas course room. You find the right course room under "Courses" in the personal menu.
If you are not registered, see Course PM for DD1320 or contact your student office or study counsellor.
In the News feed, you find updates for pages, schedule and posts from teachers (when aimed also at earlier registered students).
Jag skulle också vilja ha svara på denna fråga. Måste man ha redovisat labb C innan man blir tilldelad labb A?
Ja, det fattas ett labbtillfälle för A-redovisning.
Hej! Blir lite förvirrad, det står "labben ska göras enskilt", men sedan att båda gruppmedlemmarnas namn ska skrivas i dokumentet. Vad är det som gäller - ska labben lösas i par, och redovisas enskilt, eller helt enskilt?
Du har rätt. Det är förvirrande. Jag ändrar.
När får vi reda på vilken uppgift vi blivit tilldelade och när är sista labbtillfället? Ska vi utgå från att det är den tredje maj?
Sista tillfället för A-labben blir individuellt bokningsbar och inte 3:e maj.
Tack för svaret!
Då ni väljer att inte lägga examinationen på det avsedda datum som är schemalagt av KTH före kursstart är det nog bra om det finns åtminstone ett par olika datum att välja på vid bokning av A-labben. Vi har mycket att göra i andra kurser också!
Tack på förhand!
Ja, ett par olika datum.
Förstår inte, när tilldelas problemet?
Det är nu en vecka sedan kursen avslutades enligt schemaläggningen - ingen A-uppgift har delats ut. Vi kanske bara ska säga att C är högsta möjliga betyg på labbdelen?
De har skickats ut.
Skickas ut vart? KTH mailen?, Har inte fått något. har redovisat och fått godkänt på labb c men inget resultat är inrapporterat i rapp. Borde jag vara orolig?
Det är utskickat till de som fått labb C inrapporterat. Om det är något problem med rapporteringen ta kontakt direkt med mig.
När är deadline för labb A?
Hej! När är deadline för redovisning av A-labben?
På måndag. Jag sätter upp en dropinlista utöver de bokade passen. Jag är kvar till 13 och är det någon som inte fått redovisa innan 13 så kommer jag överens med dem där och då.
Teacher Alexander Baltatzis edited 11 May 2016
A-komplettering av tentauppgift¶
Teacher Alexander Baltatzis edited 11 May 2016
A-komplettering av tentauppgiftRedovisning/hjälp av betyg A labb.
Visst gäller denna labb även för komplettering av c-uppgift på tentan? Ska man då boka in sig under a-labb ändå under bokningslistorna?
Jag har ändrat så att man kan välja att komplettera tal7/tal8 när man bokar.
Teacher Alexander Baltatzis edited 11 May 2016
Övrigtkomplettering av tentauppgift 9-10
komplettering av tentauppgift 9-10¶
Teacher Alexander Baltatzis edited 11 May 2016
komplettering av tenta E-uppgift 9-10er
komplettering av tentauppgift 9-10er betyg E
Scheduling staff edited 13 May 2016
Q31, Q33
Teacher Alexander Baltatzis edited 11 May 2016
A-kompettering av tentauppgift¶
Teacher Alexander Baltatzis edited 11 May 2016
Övrigtkomplettering av tentauppgift 9-10
Teacher Alexander Baltatzis edited 11 May 2016
A-komplettering av tentauppgift 9-10
Teacher Alexander Baltatzis edited 11 May 2016
Redovisning av betyg A labb¶
Teacher Alexander Baltatzis edited 11 May 2016
Redovisning av betyg A labb samt restredovisningar.¶
I bokningen står det att det är redovisning av särskilda skäl för uppgift 7-8, men i mailet så skrev du att även den 20 och 23:e gällde för redovisningar. Är det ändrat så bara 13:e är redovisning för C-kompletteringen?
det jag skrev i mail gäller, jag tar bort särskilt skäl
Teacher Alexander Baltatzis edited 11 May 2016
Övrigtkomplettering av tentauppgift 9-10
komplettering av tentauppgift 9-10¶
Ska man anmäla sig eller någonting innan eller kommer man bara dit? Finns det mer information om kompletteringen?
Skulle vara jättebra om ni kunde specificera mer vad kompletteringen innebär. Är det ett prov? ska man ha med sig något? ska man plugga något innan?
När sker komplettering av C-uppgift??
Hej! Om man glömt att anmäla sig till tentamen, finns det någon reservlista man kan skriva upp sig på? Om inte, kan man komma till tentaskrivningen och få skriva ändå om någon inte dyker upp?
Ta kontakt med service@csc.kkth.se
Epost-kompletteringsbrev är försenade. Jag skickar först instruktioner för komplettering av E-uppgifter.
Hej!
När vi når en "(" gör vi ett rekursivt anrop till readFormel igen. Men när vi når en ")" vet vi inte hur vi ska få anropet att återvända till "rätt nivå" så att säga.
Vi skrev en weight som räknar ut massan på molekyler utan parenteser, men den anropar bara sig själv och inte andra funktioner, så det är inte lika lätt att "gå vilse".
Hur borde man tänka för att kunna "gå tillbaka"?
Tack!
Hej! Vi har problem med importen av tkinter i molgrafik. PyCharm ger oss felmeddelandet "No module named tkinter". Den känner av att vi har Python 3 och försöker importera tkinter med litet t, men vi får som sagt ett "ImportError". Något förslag på vad vi kan ta oss till?
Är det på er egen dator?
Vad händer om ni bara startar python-prompten och importerar:
> python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>>
När ska labb C redovisas? "Denna uppgift kan bara redovisas fram till och med 18 januari 2016"
- Vad är det egentligen man ska lämna in på kurswebbsidan? Är det pythonkod? Är det en skriftlig rapport?
- Får man ha med sig ett dokument med sina jämförelse till redovisningstillfället?
Det här skulle jag också vilja ha förtydligat.
Ska laborationen alltså göras i par men redovisas separat?
Man kan göra c-uppgiften i par. Skriva rapporten tillsammans men redovisa muntligt var för sig.
Lägg upp både kod och rapport på git i förväg.
Måste man boka c-uppgiften på något speciellt sätteller är det bara att boka som en vanlig labb?
Jag lägger upp bokningstillfälle för C och A separat. De blir på utspridda tillfällen. Jag tänker även lägga upp en fiktiv intressebokning för att få reda på hur många som avser göra C/A uppgifter.
"för ett givet problem"
Finns detta problem upplagt någonstans? Eller kommer vi att tilldelas det? Hur och när i så fall?
Hur och när kommer vi att tilldelas uppgiften för A-labben?
Vänligen,
Hej!
Vi är många som undrar över ovanstående fråga, skulle vara jättebra att få svar så att vi snarast kan påbörja arbetet.
För att vara tydlig är det följande vi undrar över:
- Det står att vi ska jämföra algoritmer och strukturer för ett givet problem. Kommer detta problem att tilldelas oss eller är det ett problem vi ska hitta på själva?
- I peken för labb A står det att: Din uppgift är att lösa ett problem som tilldelas dig. När och hur kommer detta att tilldelas oss?
Det är av stor vikt för oss att få tillgång till uppgiften så snart som möjligt då vi har fullt upp i andra kurser och inte har utrymme att göra det här i sista minuten på grund av problemens förväntade omfattning och övrig arbetsbelastning.
Hoppas att vi har uttryckt våra frågor klart, om inte så får ni gärna be oss att förtydliga eller kontakta mig på philipcl@kth.se.
Vänligen,
Philip m.fl.
Hej!
Vi undrar lite hur ni menar att vi ska göra jämförelsen. Ska man leta upp informationen, eller göra egna jämförelser mellan sina valda komprimeringar (dvs köra kod på olika testfall)? Får man bara använda resurser från listan ovan, eller kan man leta upp eget?
Hej!
Är det meningen att vi, förutom pythonkoden, också ska skriva en rapport och lämna in? Jag hittar ingen info om denna rapport någon annanstans än i kommentarsfältet här. Vad ska det i så fall stå i rapporten?
Jag undrar också om det är okej att ta kod från andra ställen än de som det länkas till här?
@Frida
Skriv en kort rapport som redovisar dina resultat. Storleksordningen en eller två A4-sidor beroende på eventuella figurer och tabeller. Du behöver inte implementera algoritmerna själv utan kan använda dig av färdiga implementationer/bibliotek. Använder man ett bibliotek så kan man skriva testkod för testkörningar med olika indata.
@Isabelle Ja, leta upp information själva. Ja, egna testkörningar. Ja, du kan leta upp egna resurser.
@Philip c-uppgiften tilldelas inte. A-uppgift delas ut efter C-uppgiften och redovisas efter 3:e maj på individuellt bokningsbara tider.
Vad gäller rörande komplettering? Får vi information om det i samband med att tentorna rättats färdigt, eller förväntas vi kontakta dig för att komplettera frågor redan innan?
Jag kommer att generera kompletteringsuppgifter.
Var och när får vi information om dessa uppgifter?
Jag skickar epost.
Hej!
Kattis kuggar mitt program vid testfall 3. Skulle man kunna få lite feedback på vad det är som den inte gillar? Id:et är 1059494.
En formel som borde godkännas blir inte godkänd av ditt program. Testa ditt program med många molekyler. Använd google för att hitta molekyler att testa med.
Okej Alexander, jag tror jag hittat problemet (om det inte finns flera). Formler som (NH4)H2AsO4, H2C(CH)CN, Li(AlSi2O6), CH3(CH2)16COOH osv säger mitt program är fel trots att de är verkliga molekyler. Deras "fel" är att de saknar siffror efter sina parenteser, något som jag trodde var ett måste givet att vi har "(<mol>) <num>" i BNF-Syntaxen, samt att den givna C(OH4)C ger felet "Saknad siffra vid radslutet C". Har jag missuppfattat detta med siffror efter parenteser?
Sen så antar jag att vi inte behöver ta hänsyn till andra korrekta formler som t.ex. joner (NO2-)...
Jag lyckades lösa det! Till alla andra så ska den inte klara (NH4)H2AsO4, H2C(CH)CN och Li(AlSi2O6), men CH3(CH2)16COOH ska den klara.
En syntaxregel kan innehålla ett epsilon ε som betyder att det matchar inget tecken.
ε | A | B
matchar A eller B eller tomma strängen.
Hej!
När vi testar vår kod på kattis misslyckas den på test 3 för oss också, men när vi testar själva fungerar dem ovannämnda formlerna och våra tester som de ska. Vad kan vi ha gjort för fel?
Vi har ID: 1075263.
Det går inte att hjälpa dig om du inte registrerar dig i kattis (tryck på jag är student och läser denna kurs länken på tildav16). Hur många egna testfall har ni konstruerat?
Oj, hade missat den länken helt, men nu är jag registrerad på kursen på kattis.
10st egna testfall har vi utöver de man fick från uppgiften. Vi lyckades hitta problem i vår kod med våra egna testfall men när koden nu klarar alla testen så vet vi inte vad som är felet.
Har du ett inskickningsid?
Vi lyckades till slut lösa det efter en hel del svett och tårar, tack ändå!
Tips om ni har problem med Kattis trots att ni har löst uppgiften: Man behöver göra en .strip("\n") på alla rader i inputen för att formlerna ska tas in korrekt!
I allmänhet är .strip() är bättre än .strip(\n) eftersom det tar bort fler tecken, t.ex. både radmatning och retur.
Vi har samma problem med testfall 3. kl 14:37:06
ID: 1079699
mail: petraol@kth.se
Vi fastnade på att vi stavade "parantes" och inte "parentes"! Kolla det om ni har problem :)
@Linnea Programmet ser ut att bedöma molekylerna i testfallet rätt (godkända blir godkända och felaktiga underkända). Det ser att vara detaljer i utskrifterna som skiljer. Ni skriver t.ex. ut:
Saknad siffra vid radslutet )
Den sista parentesen ska inte skrivas ut.
Hallå Alexander!
Vi är lite förvirrade över benämningen på molekylernas olika delar!
readformel() - Det här förstår vi, formel syftar på hela strängen som är indata, vare sig den är kort som Au eller lång som Si(C3(COOH)2)4(H2O)7
readmol() - Här är vi förvirrade, vad definierar en mol i det här fallet? Är det allt som står inom två parenteser, till exempel "H2O" i Fe(H2O)?
readgroup() - Men om mol är det som står i en parentes, vad är då en group?
readatom() - Detta är lättare att tolka. Vi tänker på det som vad som helst som börjar med en stor bokstav, till exempel Sn, Pb, H eller N. Eller kan en atom ha siffror på slutet också, eller är det en group?
<group> ::= <atom> |<atom><num> | (<mol>) <num>
En grupp är antingen en atom, eller flera atomer, eller så är det en molekyl som står i parentes.
<mol> ::= <group> | <group><mol>
En molekyl är antingen en grupp eller rekursivt en grupp och en molekyl
Jag vet inte om följande hjälper men om vi tar ert exempel Fe(H2O) och stannar på vad som är grupper i något steg så får vi Fe(H2O) -> mol -> grupp(mol) molekylen i parentes -> grupp(grupp mol) -> grupp (grupp grupp)
Tjena Alex!
Vi håller på att knyta ihop säcken med labb 9 här nu, ditt senaste svar hjälpte verkligen till att klara upp vissa saker vi var konfunderade av.
Vår första fråga gäller Kattis! Vilka filer ska vi ladda upp? Vi har en testfil som innehåller vårt unittest, en fil som innehåller vår klass för en länkad lista och till sist vår main.py som innehåller alla funktioner för denna labb. Ska alla tre laddas upp... eller???
Vår andra fråga gäller testfilen. Som det ser ut nu har vi skrivit varje test som
" self.assertEqual(readFormel("Nacl"), "Saknad stor bokstav vid radslutet cl")"
Men eftersom vi raisar ett fel när syntaxen inte stämmer, så får vi inte ut någon sträng av funktionsanropet readFormel("Nacl") som går att jämföra med önskat felmeddelande. Vi tror att det är problemet i alla fall, grejen är att vi inte riktigt vet. Så vilket kommando i Unittest skulle du rekommendera för denna labb?
Aha, genom en snilleblixt kom vi på att assertRaises() finns. Men felet blir det samma som tidigare, nämligen Grammatikfel raisas och hela testet avbryts istället för att Grammatikfel fångas som väntat och testet fortskrider....
Hej,
Får fel i testfall 3. Väldigt osäker på vad som inte fungerar. Vi har gjort egna tester som matchar och dessa ger full pott.
ID 1090379
mail: dui@kth.se
Hej!
Våra egna tester funkar felfritt och vi har brottats med Kattis jättelänge. Vi har flera gånger rättat till buggar av olika slag, men på sistone har vi inte hittat några och ändå funkar det inte. Eftersom hon inte ger någon detaljerad kritik blir det omöjligt att noggrannt buggtesta vårt program.
ID: 1098353
mail: aweinz@kth.se
Jag kan inte hjälpa dig om du inte registrerar dig på kursen även på kattis.
Gjort!
Vi kom förbi problemet med "Wrong answer" i första testet, men nu har vi "RuntimeError" i tredje. Här är vår senaste körning: 1098666
Hej!
Har gort klart labb 9 alla mina egna tester ger godkänt men får "Run Time Error" på Kattis.
ID: 1102759
rutaa@kth.se
@Ruth
Tala om för Kattis att du följer kursomgången tildav16 så kan vi lärare se din inskickning.
Hej igen!
Jag hittade problemet så nu godkänner Kattis lösningen. Tack ändå :)
@Clarissa
Det verkar vara testfall 1 (i labblydelsen) som Kattis klagar på. Skriv in testfallen från labblydelsen i en fil och provkör dom först innan du skickar in till Kattis!
Hejsan,
sitter också fast med testfall 3. Vi har ett 50-tal testfall som alla ger korrekt resultat och börjar därför tröttna något, en liten hint om vart vi ska kolla vore varmt uppskattat.
id: 1107863
email: adamlew@kth.se
tid: 16:45:55
@Svante @Adam
Om det finns flera fel på raden så ska det första felet skrivas ut.
Tack så mycket!
Hej!
Jag får wrong answer på testfall 4, vet inte vad det är som blir fel?
ID: 1108732
11:08:35
camahl@kth.se
@Camilla:
Har du med alla atomer?
Nu fungerar det, tack snälla!
Får wrong anwer, vad blir fel?
ID: 1108969
@Carl:
Titta på problembeskrivningen. När du provkör ditt program ska testdata i Sample Input 1 ge utmatningen som du ser i Sample Input 2.
Har kört Kattis en massa gånger nu, en gång kom vi till steg 3 men annars fastnar vi alltid i steg 1. Alla exempel på uppgiftsbeskrivningen fungerar utan problem, och likaså ger alla de konstiga formler våra klasskamrater föreslagit det resultat vi väntar oss.
ID 1109733
Börjar bli trött på att stångas med en korkad robot som inte ger någon vettig felrapport! Hjälp tack!
Testa att programmet hanterar symboler som: "+", "-" och så vidare, det var något som gav mig fel ett tag (tror jag åtminstone).
@Marcus:
Provkör gärna programmet innan ni skickar in till Kattis, så är det lättare för er att se vad som är fel.
Enligt problembeskrivningen ska indata "Na" ge utskriften "Formeln är syntaktiskt korrekt", inte "Felaktig gruppstart vid radslutet".
@Linda
Detta är svaren vårt program producerar när vi matar in testdatan som finns i uppgiftsbeskrivningen (ingen av dem har något mellanslag på slutet):
Formeln är syntaktiskt korrekt
Formeln är syntaktiskt korrekt
Formeln är syntaktiskt korrekt
Formeln är syntaktiskt korrekt
Okänd atom vid radslutet 4)5
Saknad siffra vid radslutet C
Saknad högerparentes vid radslutet
Felaktig gruppstart vid radslutet )Fe
För litet tal vid radslutet
För litet tal vid radslutet C
För litet tal vid radslutet 2C
Saknad stor bokstav vid radslutet cl
Saknad stor bokstav vid radslutet a
Felaktig gruppstart vid radslutet )3
Felaktig gruppstart vid radslutet )
Felaktig gruppstart vid radslutet 2
Förutom detta har vi buggkollat programmet i två veckors tid, för att det inte ska krascha oavsett vilken bisarr indata den får.
Men om Kattis sätter programmet i vrångstrupen och får helt andra utdata än vad vi får när vi kör programmet i IDLE, trots att indatan är den samma, då har jag verkligen ingen aning längre om vilka ändringar vi borde göra för att hon ska acceptera programmet.
@Marcus
Jag laddade ner det program du länkade till och provkörde, då fick jag Felaktig gruppstart vid radslutet för Na osv. Men det kanske var en gammal version du råkade skicka?
Jag kollar på den nya!
Kattis har helt rätt - ert program kraschar om kön tar slut...
@Linda
Hej!
jag har också problem med att kattis inte vill acceptera min submission. jag får att det ser fel svar. tror du att man kan få lite hjälp med vad kattis ej uppskattar. min sumbission har kod 1111333.
tack för hjälpen!
@Ludvig
Tyvärr - du har inte anslutit dig till kursomgången tildav16 i Kattis så jag kan inte följa länken.
@Linda
Hej! jag har nu registrerat till kursen, och ifall du inte kan se de gamla testen så körde jag igen; här är koden 1111455.
tack på förhand
@Ludvig
Nu syns den!
Kolla vad syntaxregeln för <num> egentligen säger. Vilka tal ska godkännas?
@Linda
För det första: tack så mycket för dina snabba svar. För det andra: jag förstår inte riktigt.
Din kommentar "Kattis har helt rätt - ert program kraschar om kön tar slut..." förbryllar mig. Det är nämligen så att vårt program slutade krascha för att kön tog slut i version två. Oavsett om du laddade ner den senaste versionen (1111219) eller någon äldre, begriper jag inte hur det kan krascha när Kattis kör det.
Om programmet kraschar när kön tar slut, är det inte bara buggigt, det är oanvändbart, och om det betedde sig så när vi körde det eller när det matades med den testdata vi blivit givna, skulle vi inte ha laddat upp det.
Nu är det ju så att Kattis testdata är hemlig, och det gör det mycket svårt för oss att åtgärda problemet, även om vi tack vare dig känner till problemets natur nu. Från vår synvinkel, och baserat på den data vi fått, fungerar ju programmet faktiskt precis som det ska. Om Kattis inte avslöjar sina krav på programmet, kan vi inte eller leverera något som lever upp till dem. Om Kattis var en chef skulle det vara dags att ta avsked.
Ni har missuppfattat Kattis roll - Kattis är inte en motståndare utan ett stöd.
Chefen är den som har bett er att skriva programmet. Hen förväntar sig att ni själva hittar på egna testfall och att ni ser till att programmet fungerar enligt specifikationen innan det skickas till kunden.
Kattis är mer som den erfarna kollegan som kastar en blick på programmet och säger att ni bör testa lite till innan ni lämnar programmet till chefen. Ni är förstås mycket tacksamma för att kollegan tar sig tid.
@Linda
Jag inser att vi har helt olika uppfattningar om Kattis. I din erfarenhet är hon en pålitlig kollega som du lärt känna under en lång lång tid. Jag har tyvärr upplevt en helt annan sida. Vi måste börja om på nytt om det här samtalet ska bli meningsfullt.
Vi är överens om att Kattis ändå har vissa brister – den främsta är att hon inte kan tänka. Vi är också överens om att hon har många kvalitéer: hon är snabbare, noggrannare och rättvisare än någon asse.
Den respekt och och tillit assarna känner för hennes förmågor märks väldigt tydligt på hur snabbt de råder oss att kolla med henne ytterligare en gång, så fort vi ställer frågor om labben. Detta är ett bevis på fördelarna ett artöverskridande samarbete mellan människor och robotar kommer medföra i framtiden, men också ett tecken på vilken sida som kommer fylla den tjänande rollen i samhället.
Men nu är det ju faktiskt ändå så att Kattis inte kan tänka, och det begränsar allvarligt hennes kommunikation. Och nu är det så, att jag inte förstår vad hon menar, samtidigt som specen enligt alla tecken vi har att gå efter är uppfylld. Trots hennes välvilja är hennes kritik inte till hjälp.
Då är det ju tur att det inte är Kattis som är lärare i kursen, så jag har någon annan att vända mig till när jag inte förstår hur hon fungerar eller vad hon menar. Inte sant?
@Mattias
Du kan inte öppna filer i kattis. Hårdkoda atomerna i programmet.
open("atomer.txt", "r")
@Marcus
Ditt program kraschar i peek. Du får nullpointer exception på self.first.value. Har du provat ditt program på sample data? Se till att ditt program får samma utskrift som i exemplet. Notera att # inte ska ge någon utskrift.
Hej, jag undrar om det kommer laddas upp lösningsförslag till de senaste extentorna i kursen?
I vilken sal hålls handledningen?
Brukar vara röd men handledaren går runt. Köa i queue.CSC.KTH.se
De där funktioner som det står att vi ska testa, vad är egentligen tanken att deras syfte ska vara? Förstår inte meningen med varje delinstruktion.
Ska peek() kunna gå igenom hela listan och kolla varenda nods innehåll utan att dequea någon av dem, eller ska den verkligen BARA titta på innehållet hos den nod som ligger först i listan, alltså är näst på tur?
Vad är det för syntax vi kollar efter? Det verkar som att vi i nästa labb ska kolla att atomnamn är korrekt skrivna, visst, men vilken är syntaxen vi ska rätta enligt i denna labb?
Hur ska vi ta hänsyn till ,att vissa artister har flera låtar, i en dictionary. Dictionaryn sparar bara det sista objektet till nyckeln med artistnamnet? Eller är det i senare labbar som det ska tas hänsyn till?
Jag undrar också över samma sak som Linnéa. För övrigt undrar jag hur vi ska hantera att vissa rader saknar data under "låttitel" (exempelvis TRWEQAA128EF36407B<SEP>SOVICLT12A58A7C4D0<SEP>Milton<SEP>).
När vi ska linjärsöka efter sista.artist, vilket är ett typisk "worst case", men samtidigt förekommer samma artist på plats 75 (tror jag det var), vilket resulterar i enbart 75 istället för 1000000 jämförelser, vilket nästan är "best case" och därför inte säger någonting om hur snabb en sökalgoritm är.
Jag är sjuk idag. Ska min labbpartner redovisa på bokad tid i e.m, eller kan vi redovisa tillsammans nästa vecka? Labben är inlämnad via Git.
@Linnea, det är valfritt hur ni hanterar flera låtar per artist.
@Eric Gör flera olika sökningar och redovisa.
@Erik Om du är sjuk bör du stanna hemma och inte smitta ner någon. Skriv epost till mig hemifrån idag eller imorgon så tar vi ditt ärende separat.
I vilka salar kan man få handledning?
Vad står egentligen self.root för? Den verkar inte stå för hela trädets rot, utan ändras varje gång vi stoppar in ett värde. Hur fungerar det egentligen?
self.root är en medlemsvariabel (attribut). Det borde stå för hela trädets rot men om du sätter om det med t.ex. self.root = None så pekar det inte på någonting. I exempelkoden ovan sätts det till som returneras av putta. Vad denna funktion returnerar beror på din egen implementation och jag kan inte svara på hur putta fungerar. Det finns hjälptid imorgon efter föresläsningen.
Hmmm... okej. Men om vi lägger till två antal element i trädet, så att det får ett djup på 2, hur vet jag då att den börjar söka i roten om jag lägger till ett tredje värde, eller vill hitta ett värde som ligger i trädet? Alltså, hur vet jag att den utgår från hela trädets rot och inte bara ett delträd med sin rot i det senaste värdet vi lade till? Kan man återställa värdet på root på något sätt?
Ok, fick hjälp av en okänd hjälte, så nu är det löst.
Är det meningen att class Bintree inte ska ändras? Ska man använda den som den skrivits i uppgiften helt och hållet, eller är det meningen att man ska lägga till kod som behövs?
"förklara idén bakom att ha put som anropar putta, etc"
På vilket sätt är det bättre än att ha snarlika (rekursiva) metoder i Node-klassen?
@Albin
"Skriv en klass för binära sökträd
Nu ska du implementera ett binärt sökträd som en klass..."
Du ska implementera klassen - skriva kod. Du ska inte ändra i gränssnittet för klassen, t.ex. ska följande kod gå att köra.
svenska = Bintree() # Skapa ett trädobjekt
svenska.put("gurka") # Sortera in "gurka" i trädet
- - -
if "gurka" in svenska: # Kolla om "gurka" finns i trädet
- - -
svenska.write() # Skriver alla ord i bokstavsordning
Internt får du lägga till vad du vill. Du får även utöka gränssnittet med lämplig metod som du kan motivera. T.ex. finns det inte någon metod remove("gurka") vilket man skulle kunna tycka vore bra. Det är lite klurigt att skriva en remove-metod, du måste stanna på noden ovanför det du vill ta bort. En annan metod som saknas är put(key, value) vilket får binärträdet att fungera som en dictionary.
@Jakob. Det som skiljer metoderna åt är antalet parametrar. Du behöver två parametrar för den rekursiva algoritmen (varför det är så ska du förklara på redovisning). Sett ur den synvinkeln är put, som bara har en parameter överflödig, du klarar dig med den andra (putta). Å andra sidan så är det ett dåligt gränssnitt mot användaren av bintree-klassen att tvingas anropa med en extra pekare. Utåt sett vill man bara stoppa in ett värde i trädet och bryr sig inte så mycket om dess interna detaljer.
Pythons dictionary skulle man kunna implementera som ett binärträd under ytan. Det skulle vara otympligt att tvingas skicka med en pekare varje gång man vill stoppa in ett värde.
Jämför
d["Eva"] = 35
d["Eva", dict.root] = 35
@Alexander. Ja visst är Bintree's put-metod användarvänlig men tekniskt sett överflödig när man har en separat funktion putta. Men min fråga är varför man har en separat funktion putta istället för att lägga den funktionaliteten i en metod Node.put. Bintree's put kan anropa rootNode.put som anropar left.put eller right.put vid rekursion, osv.
Samma gäller finns och skriv, finns det någon anledning att inte lägga den funktionaliteten som metoder i Node-klassen? Bintree.write -> rootNode.write osv.
Om jag stoppar in tio nycklar? Hur många instanser av Node-klassen får du med din lösning?
Tio. Det funkar som det ska. Skrev en annan lösning enligt den specifika instruktionen att ha med putta, skriv och finns, båda ger samma resultat. Men jag tycker att den tidigare är mer elegant och undrar om jag missar något skäl till att det är sämre.
Svårt att uttala sig om utan att se koden, och jag vill inte att du postar kod publikt. Det går att posta så att enbart lärare/assistenter ser. Annars kanske vi hinner ses imorgon så kan jag förklara.
Hej, jag och min labbkompis har haft förhinder att redovisa på tisdag kvällar, förra veckan och de kommande två tillfällena. Finns det möjlighet att vi kan redovisa vid något annat tillfälle? Kanske efter någon föreläsning, på handledningarna eller går det att vi redovisar dem i klump senare. Vi gör självklart klart labbarna i tid, det är bara förra veckans redovisningstillfälle och kommande två veckor som vi inte kan närvara båda två samtidigt.
Finns det något krav på vad metoderna ska göra, förutom __str__ metoden?
Scheduling staff edited 21 January 2016
L51, L52, Q31, Q33, Q34
Hejsan!
Är det någon som är utan labbpartner som har lust att köra tillsammans?
//Catrin
Jag!
Vet ni vilka förändringar som gjorts till upplaga två (den senaste upplagan) från den första, i kursboken av Miller & Ranum? Hittar ingenting online.
Mvh Jakob
När/hur får man reda på vilket problem som man har blivit tilldelad? Tack på förhand!