allt.cl Page 1 of 17 Date: torsdag 7 december 2006
|
|
- Hugo Abrahamsson
- för 8 år sedan
- Visningar:
Transkript
1 allt.cl Page 1 of 17 Slumpspelaren Väljer slumpvis en flytt ur möjliga flyttar. (defun skapa-slump-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'slump-gör-flytt namn bricktyp)) (defun slump-gör-flytt (spelplan spelare möjliga) "spelplan x spelare x flyttar -> flytt" (nth-flytt (random (antal-flyttar möjliga)) möjliga)) AI-spelaren (defun skapa-ai-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'ai-gör-flytt namn bricktyp)) Låt AI:t (dvs algoritmen giv-bästa-flytt nedanför) ge en flytt. Standarddjup är 3. (defun ai-gör-flytt (spelplan spelare möjliga) "spelplan x spelare -> flytt" (giv-bästa-flytt spelplan (bricktyp spelare) 3)) (defun möjliga-spelplaner (spelplan flyttar bricka) "spelplan x flyttar x bricka -> lisp-lista av spelplan" (mapflyttar flyttar (lambda (flytt) (kopierad-spelplan-med-flytt spelplan bricka flytt)))) Värdera spelplan Möjligheter: 1. Andelen av ens egna brickor/motspelarens brickor. OK! 2. Ta hänsyn till att hörn/kanter är mer värda. OK! 3. Ta hänsyn till vem som har vunnit. Om det är bricka, bra, annars argh.ok! 4. Mer? (defun värdera-specifik-spelplan (spelplan bricka) "spelplan x bricka -> lisp-bråktal" (let* ((mina-brickor (räkna-brickor spelplan bricka)) (fiende-brickor (räkna-brickor spelplan (annan-bricka bricka))) (mina-kanter (antal-kantbrickor spelplan bricka)) (fiende-kanter (antal-kantbrickor spelplan (annan-bricka bricka))) (mina-hörn (antal-hörnbrickor spelplan bricka)) (fiende-hörn (antal-hörnbrickor spelplan (annan-bricka bricka)))) (+ (/ mina-brickor (+ fiende-brickor mina-brickor)) (if (har-någon-vunnit? spelplan) (if (samma-bricka? (vem-leder? spelplan) bricka) ) 0) (if (= (+ fiende-kanter mina-kanter) 0) 0 (* 80 (/ mina-kanter (+ fiende-kanter mina-kanter)))) (if (= (+ fiende-hörn mina-hörn) 0) 0 (* 200 (/ mina-hörn (+ fiende-hörn mina-hörn)))) ))) Värderar spelplan(er) i ett visst djup (räknare) returnerar ett värde för hur bra en viss spelplan är ur hänsyn som tas ovan. (defun värdera-spelplan (spelplan bricka räknare)
2 allt.cl Page 2 of 17 (let ((kan-inte-bricka-a (kan-inte-bricka-lägga? spelplan bricka)) (kan-inte-bricka-b (kan-inte-bricka-lägga? spelplan (annan-bricka bricka)))) (cond ((or (<= räknare 0) (har-någon-vunnit? spelplan) (and kan-inte-bricka-a kan-inte-bricka-b)) (värdera-specifik-spelplan spelplan bricka)) (kan-inte-bricka-b (värdera-spelplan (kopierad-spelplan-med-flytt spelplan bricka (giv-bästa-flytt spelplan bricka (1- räknare))) bricka (1- räknare))) (t (värdera-spelplan (kopierad-spelplan-med-flytt spelplan bricka (giv-bästa-flytt spelplan (annan-bricka bricka) (1- räknare))) (annan-bricka bricka) (1- räknare)))))) Värdera en lista av spelplaner. (defun värdera-massor (spelplaner bricka räknare) (mapcar (lambda (plan) (värdera-spelplan plan bricka räknare)) spelplaner)) Ingång för att utvärde en spelplan. räknare-argumentet bestämmer hur djupt funktionen ska gå när den utvärderar möjliga spelplaner. (defun giv-bästa-flytt (spelplan bricka räknare) (let* ((möjliga (möjliga-flyttar spelplan bricka)) (spelplaner (möjliga-spelplaner spelplan möjliga bricka)) (värderingar (värdera-massor spelplaner bricka räknare))) (format t "värderingar: ~A, räknare: ~A~%" värderingar räknare) ; (format t "FICK DENNA SPELPLAN: ~%") ; (skriv-spelplan spelplan (skapa-flyttar)) ; (format t "GICK IGENOM DESSA SPELPLANER: ~%") ; (mapc (lambda (plan) (skriv-spelplan plan (skapa-flyttar))) spelplaner) (nth (position (reduce #'max värderingar) värderingar) möjliga))) (defun skapa-bricka (namn) "symbol -> bricka" (typkontroll namn #'symbolp) (packa-ihop 'bricka namn)) (defun bricka? (objekt) "lisp-objekt -> sanningsvärde" (eq (typ objekt) 'bricka)) (defun bricka-typ (bricka) "bricka -> symbol" (typkontroll bricka #'bricka?) (packa-upp bricka)) (defun samma-bricka? (b1 b2) "bricka x bricka -> sanningsvärde" (if (eq (bricka-typ b1) (bricka-typ b2)) t nil))
3 allt.cl Page 3 of 17 (defun annan-bricka (bricka) "bricka -> bricka" (typkontroll bricka #'bricka?) (if (bricka-vit? bricka) (skapa-bricka 'svart) (skapa-bricka 'vit))) (defun bricka-svart? (bricka) "bricka -> sanningsvärde" (typkontroll bricka #'bricka?) (eq (bricka-typ bricka) 'svart)) (defun bricka-vit? (bricka) "bricka -> sanningsvärde" (typkontroll bricka #'bricka?) (eq (bricka-typ bricka) 'vit)) (defun ingen-bricka? (bricka) (null bricka)) Samma-bricka? med rutiner för att kontrollera ifall någon bricka inte är en bricka (t ex från en tom plats på spelplanen.) (defun säker-samma-bricka? (bricka1 bricka2) "bricka x bricka -> sanningsvärde" (if (or (ingen-bricka? bricka1) (ingen-bricka? bricka2)) nil (samma-bricka? bricka1 bricka2))) Standardfunktioner för typerna flytt och flyttar. (defun skapa-flytt (punkt) "punkt -> flytt" (typkontroll punkt #'punkt?) (packa-ihop 'flytt punkt)) (defun flytt? (objekt) "Lisp-objekt -> sanningsvärde" (eq (typ objekt) 'flytt)) (defun punkt (flytt) "flytt -> punkt" (typkontroll flytt #'flytt?) (packa-upp flytt)) (defun skapa-flyttar () "-> flyttar" (list)) (defun antal-flyttar (flyttar) "flyttar -> lisp-heltal" (length flyttar)) (defun lägg-ihop-flyttar (&rest flyttarlist) "flyttar x... x flyttar -> flyttar" (apply #'append flyttarlist)) (defun samma-flytt? (fl1 fl2) "flytt x flytt -> sanningsvärde" (samma-punkt? (punkt fl1) (punkt fl2))) (defun mapflyttar (flyttar fn) "flyttar x funktionsreferens -> flyttar" (mapcar fn flyttar)) (defun nth-flytt (nr flyttar) "flyttar -> flytt" (nth nr flyttar)) (defun filtrera-bort-flytt (flyttar flytt) "flyttar x flytt -> flyttar" (remove-if (lambda (e) (equal e flytt)) flyttar))
4 allt.cl Page 4 of 17 (defun lägg-till-flytt (flyttar flytt) "flyttar x flytt -> flyttar" (cons flytt flyttar)) (defun första-flytt (flyttar) "flyttar -> flytt" (first flyttar)) (defun resten-flyttar (flyttar) "flyttar -> flyttar" (rest flyttar)) (defun tom-flyttar? (flyttar) "flyttar -> sanningsvärde" (endp flyttar)) Kollar ifall en flyttar innehåller en viss flytt. (defun flyttar-innehåller? (flyttar flytt) "flyttar x flytt -> sanningsvärde" (member-if (lambda (e) (equal e flytt)) flyttar)) En funktion som rensar ut alla dubletter ur en flyttar. (defun unika-flyttar (lista) "flyttar -> flyttar" (if (endp (rest lista)) lista (reduce (lambda (x y) (if (listp (first x)) (if (find-if (lambda (e) (samma-flytt? e y)) x) x (cons y x)) (if (samma-flytt? x y) (list x) (list x y)))) lista))) (setf alfabet " ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ") Flyttindex är en kvasityp som egentligen bara är ett heltal. (defun flyttindex-från-beteckning (beteckning flyttar) "lisp-sträng x flyttar -> lisp-heltal" (if (equal beteckning "") (random (antal-flyttar flyttar)) (search (format nil "~a" beteckning) alfabet))) På stora planer kan mängder möjliga flyttar bli för lång (för vårt alfabet) den här funktionen begränsar antalet till längden av alfabetet. (defun begränsa-flyttar (flyttar) "flyttar -> flyttar" (if (> (length flyttar) (length alfabet)) (subseq flyttar 0 (length alfabet)) flyttar)) (defun fråga-efter-spelplan () "-> spelplan" (skapa-spelplan-med-brickor (fråga-efter-nummer "Brädets bredd") (fråga-efter-nummer "Brädets höjd"))) (defun fråga-efter-spelare (antal bricktyp) "Lisp-nummer x bricktyp -> spelarlista" (let ((nybricktyp (if (bricka-vit? bricktyp) (skapa-bricka 'svart) (skapa-bricka 'vit)))) (if (= antal 0) (skapa-spelarlista) (lägg-till-spelare (fråga-efter-spelare (- antal 1) nybricktyp) (funcall (fråga-efter-spelartyp (börja-spelar-input nybricktyp)) (fråga-efter-spelarnamn nybricktyp) bricktyp)))))
5 allt.cl Page 5 of 17 (defun fråga-efter-spelarnamn (bricktyp) "bricka -> lisp-sträng" (fråga-efter-sträng "Spelarnamn")) (defun fråga-efter-spelartyp (x) "-> funktion" (let ((funktion (skapnings-funktion-från-spelartypssträng (fråga-efter-sträng "Spelartyp")))) (if funktion funktion (progn (format t "Felaktig spelartyp. Måste vara m[änniska], d[ator] eller s[lump].~%") (fråga-efter-spelartyp x))))) (defun skapnings-funktion-från-spelartypssträng (sträng) "lisp-sträng -> funktionsreferens" (case (char sträng 0) (#\m #'skapa-mänsklig-spelare) (#\d #'skapa-ai-spelare) (#\s #'skapa-slump-spelare))) Deklamera vinnaren. (defun presentera-vinnare (vinnarbricka) "bricka ->" (if (eq vinnarbricka 'oavgjort) (format t "Det blev oavgjort!~%") (format t "~a vann. Grattis!~%" (färgnamn-från-bricka vinnarbricka))))... (defun börja-spelar-input (bricktyp) "bricka ->" (sätt-färger-för-bricka bricktyp) (format t "Spelare ~a:~%" (färgnamn-från-bricka bricktyp)) (återställ-färger)) Skriver ut det kosmetiska för en rad. (defun skriv-radhuvud (storlek) "Lisp-heltal ->" (sätt-standardfärger) (dotimes (i storlek) (format t "+---")) (format t "+") (återställ-färger) (terpri)) Skriv ut en bricka. (defun skriv-bricka (bricka) "bricka ->" (skriv-vertikal-kant) (if bricka (progn (sätt-bakgrund (färg-från-bricka bricka)) (sätt-förgrund (färg-från-bricka bricka))) (sätt-standardfärger)) (skriv-tecken (if (ingen-bricka? bricka) " " (if (bricka-svart? bricka) "X" "O"))) (återställ-färger)) (defun skriv-vertikal-kant () "->" (sätt-standardfärger) (princ " ") (återställ-färger)) (defun skriv-tecken (whatever) "Lisp-objekt ->" (format t " ~a " whatever)) Skriv ut en hel spelplan med de möjliga flyttarna integrerad.
6 allt.cl Page 6 of 17 (defun skriv-spelplan (spelplan möjliga-flyttar) "spelplan x flyttar ->" (setf flytträknare 0) (dotimes (rad (rader spelplan)) (skriv-radhuvud (kolumner spelplan)) (dotimes (kolumn (kolumner spelplan)) (if (flyttar-innehåller? möjliga-flyttar (skapa-flytt (skapa-punkt kolumn rad))) (progn (skriv-vertikal-kant) (sätt-standardfärger) (let ((pos (position-if (lambda (e) (samma-flytt? e (skapa-flytt (skapa-punkt kolumn rad)))) möjliga-flyttar))) (skriv-tecken (char alfabet pos))) (återställ-färger) (setf flytträknare (+ flytträknare 1))) (skriv-bricka (hämta-plats spelplan kolumn rad)) )) (skriv-vertikal-kant) (terpri)) (skriv-radhuvud (kolumner spelplan))) FRÅGOR (defun fråga-efter-sträng (fråga) "Lisp-sträng -> Lisp-sträng" (format t "~a: " fråga) (read-line t)) (defun fråga-efter-nummer (fråga) "Lisp-sträng -> Lisp-heltal" (format t "~a: " fråga) (let ((värde (read t))) (if (numberp värde) värde (progn (format t "Felaktigt tal! Försök igen.~%") (fråga-efter-nummer fråga))))) FÄRG Färg i terminalen enligt ANSI terminal codes-standarden. Ifall använd-färg är satt kommer dessa funktioner köras, annars avbryter de. (defun sätt-bakgrund (färg) "symbol ->" (if (not använd-färg) (return-from sätt-bakgrund)) (format t "~A[~Am" (code-char 27) (cond ((eq färg 'svart) 40) ((eq färg 'röd) 41) ((eq färg 'grön) 42) ((eq färg 'gul) 43) ((eq färg 'blå) 44) ((eq färg 'magenta) 45) ((eq färg 'cyan) 46) ((eq färg 'vit) 47)))) (defun sätt-förgrund (färg) "symbol ->" (if (not använd-färg) (return-from sätt-förgrund)) (format t "~A[~Am" (code-char 27) (cond ((eq färg 'svart) 30)
7 allt.cl Page 7 of 17 ((eq färg 'röd) 31) ((eq färg 'grön) 32) ((eq färg 'gul) 33) ((eq färg 'blå) 34) ((eq färg 'magenta) 35) ((eq färg 'cyan) 36) ((eq färg 'vit) 37)))) Ställ tillbaka terminalen till standardläget. (defun återställ-färger () "->" (if (not använd-färg) (return-from återställ-färger)) (format t "~A[0m" (code-char 27))) (defun färg-från-bricka (bricka) "bricka -> symbol" (if (bricka-svart? bricka) 'svart 'vit)) (defun färgnamn-från-bricka (bricka) "bricka -> symbol" (if (bricka-svart? bricka) "Svart" "Vit")) (defun textfärg-från-bricka (bricka) "bricka -> symbol" (if (bricka-svart? bricka) 'vit 'svart)) (defun sätt-färger-för-bricka (bricka) "bricka ->" (sätt-bakgrund (färg-från-bricka bricka)) (sätt-förgrund (textfärg-från-bricka bricka))) (defun sätt-standardförgrund () "->" (sätt-förgrund 'svart)) (defun sätt-standardbakgrund () "->" (sätt-bakgrund 'grön)) (defun sätt-standardfärger () "->" (sätt-standardförgrund) (sätt-standardbakgrund)) Grundläggande funktioner för typ- och felhantering. (defun packa-ihop (typ objekt) "abstrakt typ x Lisp-objekt -> abstrakt objekt" (cons typ objekt)) (defun packa-upp (objekt) "abstrakt objekt -> Lisp-objekt" (if (consp objekt) (cdr objekt))) (defun typ (objekt) "abstrakt objekt -> almanackstyp" (if (consp objekt) (car objekt))) (defun typkontroll (värde predikat) (if (not (funcall predikat värde)) (error "~&Värdet ~a är av fel typ, predikat är ~a." värde predikat) t)) Snabbladda alla filer. (defun skapa-mänsklig-spelare (namn bricktyp) "Lisp-sträng x bricka -> spelare" (skapa-spelare #'mänskligt-drag namn bricktyp))
8 allt.cl Page 8 of 17 Ber skrivbords/terminal-spelaren om ett drag. (defun mänskligt-drag (spelplan spelare möjliga-flyttar) (let ((index (flyttindex-från-beteckning (string-upcase (kör-eventuell-debug (fråga-efter-sträng "Välj ett drag") spelplan)) möjliga-flyttar))) (if (and index (< index (antal-flyttar möjliga-flyttar))) (nth-flytt index möjliga-flyttar) (progn (format t "Felaktig flytt! Försök igen.~%") (mänskligt-drag spelplan spelare möjliga-flyttar))))) Othello Huvudfunktionen Ifall argumentet inte-färg sätts till t kommer den inte rita spelplanen i färger. (defun othello (&optional inte-färg) "sanningsvärde ->" (setf använd-färg (not inte-färg)) (format t "Othello!~%") (presentera-vinnare (spel-loop (skapa-spelarloop (fråga-efter-spelare 2(fråga-efter-nummer "Antal spelare") (skapa-bricka 'vit))) (fråga-efter-spelplan))) (values)) (defun spel-loop (spelarlista spelplan) "spelarlista x spelplan -> spelare" (let* ((spelare (första-spelare spelarlista)) (möjliga (möjliga-flyttar spelplan (bricktyp spelare)))) (skriv-spelplan spelplan möjliga) (format t "~a: ~a - ~a: ~a~%~%" (färgnamn-från-bricka (skapa-bricka 'svart)) (räkna-brickor spelplan (skapa-bricka 'svart)) (färgnamn-från-bricka (skapa-bricka 'vit)) (räkna-brickor spelplan (skapa-bricka 'vit))) (sätt-bakgrund (färg-från-bricka (bricktyp spelare))) (sätt-förgrund (textfärg-från-bricka (bricktyp spelare))) (if (tom-flyttar? möjliga) (progn (format t "~a kan inte lägga och passar!" (spelarnamn spelare)) (återställ-färger) (terpri)) (progn (format t "Det är ~a tur." (spelare-genetiv-namn spelare)) (återställ-färger) (terpri) (gör-flytt spelare spelplan möjliga))) (if (or (har-någon-vunnit? spelplan) (and (tom-flyttar? möjliga) (tom-flyttar? (möjliga-flyttar spelplan (annan-bricka (bricktyp spelare)))))) (vem-leder? spelplan) (spel-loop (resten-spelare spelarlista) spelplan)))) (defun skapa-punkt (x y) "Lisp-heltal x Lisp-heltal -> punkt" (typkontroll x #'numberp) (typkontroll y #'numberp) (packa-ihop 'punkt (list x y))) (defun punkt? (objekt) "Lisp-objekt -> sanningsvã rde" (eq (typ objekt) 'punkt))
9 allt.cl Page 9 of 17 Funktionerna x och y skall inte användas. (defun x (punkt) (kolumn punkt)) (defun kolumn (punkt) "punkt -> Lisp-heltal" (typkontroll punkt #'punkt?) (first (packa-upp punkt))) (defun y (punkt) (rad punkt)) (defun rad (punkt) "punkt -> Lisp-heltal" (typkontroll punkt #'punkt?) (second (packa-upp punkt))) Testa ifall två punkter är samma. (defun samma-punkt? (punkt1 punkt2) "punkt x punkt -> sanningsvärde" (and (= (kolumn punkt1) (kolumn punkt2)) (= (rad punkt1) (rad punkt2)))) (defun riktning? (objekt) (find objekt (möjliga-riktningar))) (defun möjliga-riktningar () '(över-vänster över över-höger vänster höger under-vänster under under-höger)) Kringfunktioner till typen spelare Validator (defun spelare? (objekt) "Lisp-objekt -> sanningsvärde" (eq 'spelare (typ objekt))) Selector (defun gör-flytt-funktion (spelare) "spelare -> Lisp-funktionsref" (typkontroll spelare #'spelare?) (first (packa-upp spelare))) (defun spelarnamn (spelare) "spelare -> sträng" (typkontroll spelare #'spelare?) (second (packa-upp spelare))) (defun bricktyp (spelare) "spelare -> bricka" (typkontroll spelare #'spelare?) (third (packa-upp spelare))) (defun spelare-genetiv-namn (spelare) "spelare -> Lisp-sträng" (if (or (eq (char (spelarnamn spelare) (- (length (spelarnamn spelare)) 1)) #\S) (eq (char (spelarnamn spelare) (- (length (spelarnamn spelare)) 1)) #\s)) (spelarnamn spelare) (concatenate 'string (spelarnamn spelare) "s"))) Creator (defun skapa-spelare (fref namn bricktyp) "Lisp-funktionsreferens x sträng x bricka -> spelare" (typkontroll fref #'functionp) (typkontroll namn #'stringp) (typkontroll bricktyp #'bricka?) (packa-ihop 'spelare (list fref namn bricktyp))) Hjälpfunktioner Tar en spelare och plockar ut flytt-funktionen och gör sedan
10 allt.cl Page 10 of 17 en flytt på en spelplan. (defun gör-flytt (spelare plan möjliga) "spelare x spelplan -> spelplan" (lägg-flytt plan (funcall (gör-flytt-funktion spelare) plan spelare möjliga) (bricktyp spelare))) En typ som är till för spelloopen. Kan innehålla ett godtyckligt antal spelare. (defun skapa-spelarlista () "-> spelarlista" (packa-ihop 'spelarlista ())) (defun spelarlista? (objekt) "Lisp-objekt -> sanningsvärde" (eq (typ objekt) 'spelarlista)) (defun lägg-till-spelare (spelarlista spelare) "spelarlista x spelare -> spelarlista" (typkontroll spelarlista 'spelarlista?) (packa-ihop 'spelarlista (append (packa-upp spelarlista) (list spelare)))) (defun första-spelare (spelarlista) "spelarlista -> spelare" (first (packa-upp spelarlista))) (defun resten-spelare (spelarlista) "spelarlista -> spelarlista" (packa-ihop 'spelarlista (rest (packa-upp spelarlista)))) Koppla sista elementet i spelarlistan till det första och få en "oändlig" lista. (defun skapa-spelarloop (spelarlista) "spelarlista -> spelarlista" (packa-ihop 'spelarlista (setf (rest (last (packa-upp spelarlista))) (packa-upp spelarlista)))) Validator (defun spelplan? (objekt) "Lisp-objekt -> sanningsvärde" (eq 'spelplan (typ objekt))) (defun tom-plats? (spelplan kolumn rad) (if (null (hämta-plats spelplan kolumn rad)) t nil)) Selector (defun kolumner (spelplan) "spelplan -> heltal" (first (array-dimensions (matris spelplan)))) (defun rader (spelplan) "spelplan -> heltal" (second (array-dimensions (matris spelplan)))) (defun ändra-plats (spelplan kolumn rad värde) "spelplan x heltal x heltal x bricktyp ->" (setf (aref (matris spelplan) kolumn rad) värde) spelplan) (defun hämta-plats (spelplan kolumn rad) "spelplan x heltal x heltal -> bricka" (aref (matris spelplan) kolumn rad)) (defun hämta-plats-punkt (spelplan punkt) "spelplan x punkt -> bricka" (aref (matris spelplan) (kolumn punkt) (rad punkt)))
11 allt.cl Page 11 of 17 hämta-plats med rutiner för att kolla att man inte läser utanför spelplanen, i så fall returnerar den symbolen UTANFÖR. (defun säker-hämta-plats (spelplan punkt) "spelplan x punkt -> bricka" (typkontroll punkt #'punkt?) (let ((kolumn (kolumn punkt)) (rad (rad punkt))) (if (or (> (1+ kolumn) (kolumner spelplan)) (> (1+ rad) (rader spelplan)) (< kolumn 0) (< rad 0)) 'utanför (hämta-plats spelplan kolumn rad)))) (defun utanför? (obj) "lisp-objekt -> sanningsvärde" (equal obj 'utanför)) (defun matris (spelplan) "spelplan -> Lisp-array" (packa-upp spelplan)) Creator (defun skapa-spelplan (kolumner rader) "heltal x heltal -> spelplan" (typkontroll kolumner #'numberp) (typkontroll rader #'numberp) (packa-ihop 'spelplan (make-array (list kolumner rader)))) (defun skapa-spelplan-med-brickor (kolumner rader) (let* ((spelplan (skapa-spelplan kolumner rader)) (basx (floor (1- (/ (kolumner spelplan) 2)))) (basy (floor (1- (/ (rader spelplan) 2))))) (ändra-plats spelplan basx basy (skapa-bricka 'svart)) (ändra-plats spelplan (1+ basx) basy (skapa-bricka 'vit)) (ändra-plats spelplan basx (1+ basy) (skapa-bricka 'vit)) (ändra-plats spelplan (1+ basx) (1+ basy) (skapa-bricka 'svart)) spelplan)) Algoritmer (defun kan-inte-bricka-lägga? (spelplan bricka) (tom-flyttar? (möjliga-flyttar spelplan bricka))) (defun är-spelplan-full? (spelplan) "spelplan -> sanningsvärde" (dotimes (y (rader spelplan)) (dotimes (x (kolumner spelplan)) (if (tom-plats? spelplan x y) (return-from är-spelplan-full? nil)))) t) Finns en viss bricka på spelplanen? (defun finns-bricka? (spelplan bricka) "spelplan x bricka -> sanningsvärde" (dotimes (y (rader spelplan)) (dotimes (x (kolumner spelplan)) (let ((pbricka (hämta-plats spelplan x y))) (if (and (not (tom-plats? spelplan x y)) (samma-bricka? bricka pbricka)) (return-from finns-bricka? t))))) nil) Utvärderar om någon har vunnit eller ej. (defun har-någon-vunnit? (spelplan) "spelplan -> sanningsvärde" (if (är-spelplan-full? spelplan) t (not (and
12 allt.cl Page 12 of 17 (finns-bricka? spelplan (skapa-bricka 'svart)) (finns-bricka? spelplan (skapa-bricka 'vit)))))) (defun räkna-brickor (spelplan bricka) "spelplan x bricka -> lisp-heltal" (let ((tal 0)) (dotimes (y (rader spelplan)) (dotimes (x (kolumner spelplan)) (let ((pbricka (hämta-plats spelplan x y))) (if (and (not (tom-plats? spelplan x y)) (samma-bricka? bricka pbricka)) (setf tal (1+ tal)))))) tal)) Ger tillbaka vilken bricka som leder på en spelplan. (defun vem-leder? (spelplan) "spelplan -> bricka" (let ((vita-brickor (räkna-brickor spelplan (skapa-bricka 'vit))) (svarta-brickor (räkna-brickor spelplan (skapa-bricka 'svart)))) (if (= vita-brickor svarta-brickor) 'oavgjort (if (> vita-brickor svarta-brickor) (skapa-bricka 'vit) (skapa-bricka 'svart))))) (defun punkter-av-bricktyp (spelplan bricktyp) "spelplan x bricka -> lisp-lista av punkt" (let ((punkter (list))) (dotimes (y (rader spelplan)) (dotimes (x (kolumner spelplan)) (let ((pbricka (hämta-plats spelplan x y))) (if (and (not (tom-plats? spelplan x y)) (samma-bricka? pbricka bricktyp)) (setq punkter (cons (skapa-punkt x y) punkter)))))) punkter)) Returnerar en flyttar med motspelare som ligger bredvid punkt som är en bricka. (defun motspelare-bredvid (spelplan bricka punkt) "spelplan x bricka x punkt -> flyttar" (let* ((p-över-vänster (punkt-i-riktning punkt 'över-vänster)) (över-vänster (säker-hämta-plats spelplan p-över-vänster)) (p-över (punkt-i-riktning punkt 'över)) (över (säker-hämta-plats spelplan p-över)) (p-över-höger (punkt-i-riktning punkt 'över-höger)) (över-höger (säker-hämta-plats spelplan p-över-höger)) (p-vänster (punkt-i-riktning punkt 'vänster)) (vänster (säker-hämta-plats spelplan p-vänster)) (p-höger (punkt-i-riktning punkt 'höger)) (höger (säker-hämta-plats spelplan p-höger)) (p-under-vänster (punkt-i-riktning punkt 'under-vänster)) (under-vänster (säker-hämta-plats spelplan p-under-vänster)) (p-under (punkt-i-riktning punkt 'under)) (under (säker-hämta-plats spelplan p-under)) (p-under-höger (punkt-i-riktning punkt 'under-höger)) (under-höger (säker-hämta-plats spelplan p-under-höger))) (lägg-ihop-flyttar (if (and över-vänster (not (utanför? över-vänster)) (not (samma-bricka? bricka över-vänster))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-över-vänster)) (skapa-flyttar)) (if (and över (not (utanför? över)) (not (samma-bricka? bricka över))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-över)) (skapa-flyttar)) (if (and över-höger (not (utanför? över-höger)) (not (samma-bricka? bricka över-höger))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-över-höger)) (skapa-flyttar)) (if (and vänster
13 allt.cl Page 13 of 17 (not (utanför? vänster)) (not (samma-bricka? bricka vänster))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-vänster)) (skapa-flyttar)) (if (and höger (not (utanför? höger)) (not (samma-bricka? bricka höger))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-höger)) (skapa-flyttar)) (if (and under-vänster (not (utanför? under-vänster)) (not (samma-bricka? bricka under-vänster))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-under-vänster)) (skapa-flyttar)) (if (and under (not (utanför? under)) (not (samma-bricka? bricka under))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-under)) (skapa-flyttar)) (if (and under-höger (not (utanför? under-höger)) (not (samma-bricka? bricka under-höger))) (lägg-till-flytt (skapa-flyttar) (skapa-flytt p-under-höger)) (skapa-flyttar))))) Vilken punkt ligger RIKTNING från PUNKT? (defun punkt-i-riktning (punkt riktning) "punkt x riktning -> punkt" (typkontroll punkt #'punkt?) (typkontroll riktning #'riktning?) (let* ((kolumn (kolumn punkt)) (rad (rad punkt)) (över-vänster (skapa-punkt (1- kolumn) (1- rad))) (över (skapa-punkt kolumn (1- rad))) (över-höger (skapa-punkt (1+ kolumn) (1- rad))) (vänster (skapa-punkt (1- kolumn) rad)) (höger (skapa-punkt (1+ kolumn) rad)) (under-vänster (skapa-punkt (1- kolumn) (1+ rad))) (under (skapa-punkt kolumn (1+ rad))) (under-höger (skapa-punkt (1+ kolumn) (1+ rad)))) (case riktning (över-vänster över-vänster) (över över) (över-höger över-höger) (vänster vänster) (höger höger) (under-vänster under-vänster) (under under) (under-höger under-höger)))) Vart får man flytta? Villkor: 1. Måste vara bredvid en bricka av motståndarens färg. Som bredvid gills vertikalt, horisontalt och diagonalt. 2. Om så måste det finnas en bricka av ens egen färg efter motståndarens bricka(or). (defun möjlig-flytt? (spelplan flytt bricktyp) "spelplan x flytt x bricka -> sanningsvärde" (let ((punkt (punkt flytt))) (and (null (hämta-plats-punkt spelplan punkt)) (not (tom-flyttar? (motspelare-bredvid spelplan bricktyp punkt))) (finns-bricka-i-någon-riktning? spelplan bricktyp punkt)))) Punkten är ens egen bricka på planen. Bricktyp är ens egen bricktyp. (defun flyttar-runt-punkt (spelplan punkt bricktyp) "spelplan x punkt x bricka -> flyttar" (finns-tom-i-någon-riktning? spelplan bricktyp punkt)) Leta möjliga flyttar som en viss bricka kan lägga på en spelplan. Använder två algoritmer för att vara så effektiv som möjligt. (defun möjliga-flyttar (spelplan bricktyp)
14 allt.cl Page 14 of 17 (let* ((vita (räkna-brickor spelplan (skapa-bricka 'vit))) (svarta (räkna-brickor spelplan (skapa-bricka 'svart))) (kvot (/ (+ vita svarta) (* (kolumner spelplan) (rader spelplan))))) (begränsa-flyttar (unika-flyttar (if (> kvot 0.65) (tom-möjliga-flyttar spelplan bricktyp) (början-möjliga-flyttar spelplan bricktyp)))))) En algoritm för att leta möjliga flyttar som är bäst i början, när inte så många brickor lagts ut. (defun början-möjliga-flyttar (spelplan bricktyp) "spelplan x bricka -> flyttar" (setq flyttar (skapa-flyttar)) (let ((punkter (punkter-av-bricktyp spelplan bricktyp))) (dotimes (i (length punkter)) (let ((möjliga-flyttar (flyttar-runt-punkt spelplan (nth i punkter) bricktyp))) (if (not (tom-flyttar? möjliga-flyttar)) (setq flyttar (lägg-ihop-flyttar flyttar möjliga-flyttar)))))) flyttar) En algoritm för att leta möjliga flyttar som är bäst när det finns få tomma rutor. (defun tom-möjlig-flytt? (spelplan flytt bricktyp) "spelplan x flytt x bricka -> sanningsvärde" (let ((punkt (punkt flytt))) (and (null (hämta-plats-punkt spelplan punkt)) (not (tom-flyttar? (motspelare-bredvid spelplan bricktyp punkt))) (finns-bricka-i-någon-riktning? spelplan bricktyp punkt)))) (defun tom-möjliga-flyttar (spelplan bricktyp) "spelplan -> flyttar" (setq flyttar (skapa-flyttar)) (dotimes (rad (rader spelplan)) (dotimes (kolumn (kolumner spelplan)) (let ((flytt (skapa-flytt (skapa-punkt kolumn rad)))) (if (tom-möjlig-flytt? spelplan flytt bricktyp) (setq flyttar (lägg-till-flytt flyttar flytt)))))) flyttar) AI-relaterat (defun kopiera-spelplan (spelplan) "spelplan -> spelplan" (let* ((array (packa-upp spelplan)) (dims (array-dimensions array))) (packa-ihop 'spelplan (adjust-array (make-array dims :displaced-to array) dims)))) Kopiera en spelplan och lägg en flytt på den. (defun kopierad-spelplan-med-flytt (spelplan bricktyp flytt) "spelplan x bricka x flytt -> spelplan" (lägg-flytt (kopiera-spelplan spelplan) flytt bricktyp)) Utläggning Funktionen finns-bricka-i-riktning kollar om det finns en egen bricka i en viss riktning, med minst en annan bricktyp och inget tomrum mellan. (defun finns-bricka-i-riktning-intern (spelplan bricktyp punkt riktning skippa räknare) "spelplan x bricka x punkt x riktningssymbol x sanningsvärde -> punkt eller nil"
15 allt.cl Page 15 of 17 (let ((bricka (säker-hämta-plats spelplan punkt))) (cond ((and (not skippa) (null bricka)) nil) ((and (utanför? bricka) (not skippa)) nil) ((and (not skippa) (samma-bricka? bricka bricktyp)) (if (> räknare 1) punkt nil)) (t (finns-bricka-i-riktning-intern spelplan bricktyp (punkt-i-riktning punkt riktning) riktning nil (1+ räknare)))))) Finns en viss bricka i en viss riktning? (defun finns-bricka-i-riktning (spelplan bricktyp punkt riktning) (finns-bricka-i-riktning-intern spelplan bricktyp punkt riktning t 0)) (defun finns-bricka-i-någon-riktning-intern (spelplan bricktyp punkt riktningar) (if (endp riktningar) nil (let* ((riktning (first riktningar)) (destpunkt (finns-bricka-i-riktning spelplan bricktyp punkt riktning))) (if destpunkt t (finns-bricka-i-någon-riktning-intern spelplan bricktyp punkt (rest riktningar)))))) (defun finns-bricka-i-någon-riktning? (spelplan bricktyp punkt) (fbinr-intern spelplan bricktyp punkt (möjliga-riktningar))) (defun finns-tom-i-riktning-intern (spelplan bricktyp punkt riktning räknare) "spelplan x bricka x punkt x riktningssymbol x sanningsvärde -> punkt eller nil" (typkontroll spelplan #'spelplan?) (typkontroll bricktyp #'bricka?) (typkontroll punkt #'punkt?) (typkontroll riktning #'riktning?) (let ((bricka (säker-hämta-plats spelplan punkt))) (cond ((utanför? bricka) nil) ((and (> räknare 0) bricka (samma-bricka? bricka bricktyp)) nil) ((and (> räknare 1) (null bricka)) punkt) ((null bricka) nil) (t (finns-tom-i-riktning-intern spelplan bricktyp (punkt-i-riktning punkt riktning) riktning (1+ räknare)))))) Finns det en tom bricka i en viss riktning svarar denna på. (defun finns-tom-i-riktning (spelplan bricktyp punkt riktning) "spelplan x bricka x punkt x riktning -> punkt eller sanningsvärde (nil)" (finns-tom-i-riktning-intern spelplan bricktyp punkt riktning 0)) (defun finns-tom-i-någon-riktning-intern (spelplan bricktyp punkt riktningar) "spelplan x bricka x punkt x lisp-lista av riktning -> sanningsvärde" (if (endp riktningar) (skapa-flyttar) (let* ((riktning (first riktningar)) (destpunkt (finns-tom-i-riktning spelplan bricktyp punkt riktning))) (if destpunkt (lägg-till-flytt (finns-tom-i-någon-riktning-intern spelplan bricktyp punkt (rest riktningar)) (skapa-flytt destpunkt)) (finns-tom-i-någon-riktning-intern spelplan bricktyp punkt (rest riktningar)))))) Bricktypen är ens egen bricktyp och punkten
16 allt.cl Page 16 of 17 är ens egen punkt. Returnerar flyttar. (defun finns-tom-i-någon-riktning? (spelplan bricktyp punkt) "spelplan x bricka x punkt -> flyttar" (finns-tom-i-någon-riktning-intern spelplan bricktyp punkt (möjliga-riktningar))) Lägg-flytt tar en flytt (punkt) och lägger brickor mellan den och alla andra lämpliga. (defun lägg-flytt-intern (spelplan flytt bricktyp riktningar) "spelplan x flytt x bricka x riktning -> spelplan" (if (endp riktningar) nil (let* ((riktning (first riktningar)) (destpunkt (finns-bricka-i-riktning spelplan bricktyp (punkt flytt) riktning))) (if destpunkt (lägg-mellan spelplan bricktyp (punkt flytt) destpunkt) nil) (lägg-flytt-intern spelplan flytt bricktyp (rest riktningar)))) spelplan) (defun lägg-flytt (spelplan flytt bricktyp) (lägg-flytt-intern spelplan flytt bricktyp (möjliga-riktningar))) ; Funktionen ett-i-rätt-riktning returnerar to-from, fast mellan -1 och 1. (defun ett-i-rätt-riktning (from to) (/ (- to from) (if (= (- to from) 0) 1 (abs (- to from))))) Lägger brickor av färg bricktyp mellan två punkter. (defun lägg-mellan (spelplan bricktyp punkt1 punkt2) (let* ( (k1 (kolumn punkt1)) (k2 (kolumn punkt2)) (r1 (rad punkt1)) (r2 (rad punkt2)) (nästap (skapa-punkt (+ k1 (ett-i-rätt-riktning k1 k2)) (+ r1 (ett-i-rätt-riktning r1 r2))))) (progn (ändra-plats spelplan k1 r1 bricktyp) (if (samma-punkt? punkt1 punkt2) t (lägg-mellan spelplan bricktyp nästap punkt2))))) Fus... eh, debug. (defun byt-brickor (spelplan) (dotimes (kolumn (kolumner spelplan)) (dotimes (rad (rader spelplan)) (let ((bricka (hämta-plats spelplan kolumn rad))) (if bricka (ändra-plats spelplan kolumn rad (annan-bricka (hämta-plats spelplan kolumn rad)))))))) (defun kör-eventuell-debug (sträng spelplan) (if (equal sträng "kazul!") (byt-brickor spelplan)) sträng) Räknar antal kantbrickor resp. hörnbrickor som en bricka har på en spelplan: (defun antal-kantbrickor (spelplan bricktyp) "spelplan x bricka -> lisp-heltal" (let ((antal 0)) (dotimes (kolumn (- (kolumner spelplan) 2)) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan (1+ kolumn) 1)) (setf antal (1+ antal)))
17 allt.cl Page 17 of 17 (if (säker-samma-bricka? bricktyp (hämta-plats spelplan (1+ kolumn) (1- (rader spelplan)))) (setf antal (1+ antal)))) (dotimes (rad (- (rader spelplan) 2)) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan 1 (1+ rad))) (setf antal (1+ antal))) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan (1- (kolumner spelplan)) (1+ rad))) (setf antal (1+ antal)))) antal)) (defun antal-hörnbrickor (spelplan bricktyp) "spelplan x bricka -> lisp-heltal" (let ((antal 0)) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan 0 0)) (setf antal (1+ antal))) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan 0 (1- (rader spelplan)))) (setf antal (1+ antal))) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan (1- (kolumner spelplan)) 0)) (setf antal (1+ antal))) (if (säker-samma-bricka? bricktyp (hämta-plats spelplan (1- (kolumner spelplan)) (1- (rader spelplan)))) (setf antal (1+ antal))) antal)) # (setf standard '(SPELPLAN. #2A((NIL NIL NIL NIL NIL NIL NIL NIL) (NIL NIL NIL NIL NIL NIL NIL NIL) (NIL NIL NIL NIL NIL NIL NIL NIL) (NIL NIL NIL (BRICKA. SVART) (BRICKA. VIT) NIL NIL NIL) (NIL NIL NIL (BRICKA. VIT) (BRICKA. SVART) NIL NIL NIL) (NIL NIL NIL NIL NIL NIL NIL NIL) (NIL NIL NIL NIL NIL NIL NIL NIL) (NIL NIL NIL NIL NIL NIL NIL NIL)))) (setf vit (skapa-bricka 'vit)) (setf svart (skapa-bricka 'svart)) (setf test1 '(SPELPLAN. #2A((NIL NIL NIL) (NIL (bricka. svart) NIL) (NIL (BRICKA. svart) (BRICKA. vit))))) (setf test2 '(SPELPLAN. #2A((NIL NIL NIL) (NIL (bricka. svart) NIL) (NIL (bricka. vit) (bricka. svart)) (NIL NIL NIL)))) (setf test3 '(SPELPLAN. #2A((NIL NIL NIL NIL NIL) (NIL (bricka. svart) (bricka. vit) NIL NIL) (NIL NIL NIL NIL NIL) (NIL NIL (bricka. svart) NIL NIL) (NIL NIL (bricka. vit) NIL NIL)))) (skriv-spelplan test3 (skapa-flyttar)) # (proclaim '(optimize (speed 3) (safety 1) (space 0) (debug 0)))
Uppgift 6A - Frekvenstabell
Uppgift 6A - Frekvenstabell (defstruct par element antal) (defun unika-element (lista) (reduce #'(lambda (x y) (if (listp x) (if (find y x) x (cons y x)) (if (eq x y) x (list x y)))) lista)) (defun sortera-tabell
Läs merProjektdokumentation för Othello
Projektdokumentation för Gustav Fransson Nyvell gusfr229@student.liu.se Tomas Franzén tomfr819@student.liu.se 1. Inledning Vi har gjort ett -spel som går ut på att man turas om att lägga brickor på en
Läs merUppgift 4A - Definition av enkla funktioner
Uppgift 4A - Definition av enkla funktioner (defun start-klockslag (tidsperiod) "tidsperiod -> klockslag" (typkontroll tidsperiod #'tidsperiod?) (first (packa-upp tidsperiod))) (defun slut-klockslag (tidsperiod)
Läs merDagens föreläsning Programmering i Lisp Fö 5
Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer
Läs merTentamen i. TDDC67 Funktionell programmering och Lisp
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering
Läs merImperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur
Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)
Läs merDagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011
Läs merDagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Läs merTvå fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)
Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa
Läs mern Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?
Tidigare TDDC74 Programming: Abstraktion och modellering Föreläsning 4 Symboler, Par, Listor Representation av par, Grafisk notation för par Representation av listor mha par Typiska listhanteringsprocedurer
Läs merRekursiva algoritmer sortering sökning mönstermatchning
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell
Läs merTDDC74 Lab 02 Listor, sammansatta strukturer
TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel
732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public
Läs merIdag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29
Idag: Par och listor DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och listor Hur hanterar man icke-numeriska problem? DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och
Läs merIdag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.
Idag: Par och listor Symboler Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? Hur konstruerar man sammansatta datastrukturer? Bra om du har läst följande avsnitt i AS: Pair
Läs merTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15
TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd
Läs merTDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Datum:
TDDC74 Programmering: Abstraktion och modellering Dugga 2, Tid: kl 08-10, Skriv tydligt så att inte dina lösningar missförstås. Använd väl valda namn på parametrar och indentera din kod. Även om det i
Läs merDatalogi, grundkurs 1
Datalogi, grundkurs 1 Fiktiv Tentamen Lösningsförslag och kommentarer 1. Lösningsförslaget nedan förutsätter ingenting om filens innehåll och är alltså mer generell än nödvändigt: alfa= ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2012-01-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 10 januari
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-08-17 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Onsdag 17 augusti
Läs merDagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk
1 Dagens föreläsning Programmering i Lisp Fö 7 Kopplingen funktionella programmering och diskret matematik. Jämför vad ni hittills gjort i denna kurs och i den diskreta matematiken, med referenser in i
Läs merTDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 2018-06-07, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
Läs merLösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:
Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03-12 Lösningsförslag Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03- 12 Läs alla frågorna först och bestäm dig för den ordning som passar dig
Läs merGenetisk programmering i Othello
LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1
Läs merTDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 3
1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 3 Torsdag 4 mars 2010 kl 8-10 Namn: Personnummer:
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merTDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel
TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.
Läs merFyra i rad Javaprojekt inom TDDC32
Fyra i rad Javaprojekt inom TDDC32 Analys och design-dokument Version 2.0 Datum 2008-05-19 Dokumentnummer 20080303 Sammanfattning Detta är analys och design-dokumentet för programmet Fyra i rad. Fyra i
Läs merAbstrakta datatyper. Dagens föreläsning. Abstract data types (ADT)
1 2 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,
Läs merDagens föreläsning. TDDC67 Funktionell programmering och Lisp Fö 8 och 9
1 Dagens föreläsning TDDC67 Funktionell programmering och Lisp Fö 8 och 9 Dataabstraktion - Abstrakta datatyper - datatypbeskrivning - datatyplikhet - sammansättningar av datatyper med sekvens, tupel,
Läs merDatalogi, grundkurs 1. Lösningsförslag till tentamen
Datalogi, grundkurs 1 Lösningsförslag till tentamen 10 december 2008 1. a. Man testar med typiska värden, gränsvärden och värden utanför specificerad indatavärdemängd. Helst med alla permutationer av
Läs merTDDC74 Programmering: Abstraktion och modellering Datortenta , kl 08-12
TDDC74 Programmering: Abstraktion och modellering Datortenta - 2019-05-27, kl 08-12 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
Läs merSymbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)
Symbolisk data (1 2 3 4) (a b c d) (jacek johan david) ((jacek "jacek@cs.lth.se") (johan "johang@cs.lth.se") (david "dat99dpe@ludat.lth.se")) ((anna 13) (per 11) (klas 9) (eva 4)) (+ (* 23 4) (/ y x))
Läs merKort Sammanfattning av Schack MAS
Kort Sammanfattning av Schack MAS Krister Ljung kljung@kth.se 6th April 2003 1 Bamse 1.1 Agenter 1.1.1 Bamse Bestämmer vilket drag som skall skickas till spelplanen. Har även nio öppningar att spela dom
Läs merDatalogi, grundkurs 1. Lösningsförslag till tentamen
Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 Dagens föreläsning En konstruktion i Common Lisp som möjliggör att man kan skapa ny Lisp-kod, som i sin tur beräknas. - makrobegreppet - makrofunktioner - special form - makrodefintion - backquote
Läs merTDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015
TDDC74 Programmering: Abstraktion och modellering Dugga 2, kl 8 10, 5 mars 2015 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
Läs merTDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16
TDDC74 Programmering: Abstraktion och modellering Dugga 2, 207-04-06, kl 4-6 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-01-11 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 11 januari
Läs merTDDC74 - Lektionsmaterial C
TDDC74 - Lektionsmaterial C Lektioner innehåller uppgifter av varierande slag. En del är mer diskussionsartade, andra mer experimentella. Ni behöver inte lämna in eller visa upp lösningarna på dessa för
Läs merTentamen i Grundläggande Programvaruutveckling, TDA548
Tentamen i Grundläggande Programvaruutveckling, Joachim von Hacht/Magnus Myreen Datum: 2017-08-14 Tid: 14.00-18.00 Hjälpmedel: Lexikon Engelskt-Valfritt språk. Betygsgränser: U: -23 3: 24-37 4: 38-47 5
Läs merTDDC74 Programmering: Abstraktion och modellering. Provkod TEN1, Tid: kl 14-18, , Kåra
Tentamen Provkod TEN1, Tid: kl 14-18, 2013-06- 07, Kåra Läs alla frågorna först och bestäm dig för den ordning som passar dig bäst. Även om det i uppgi;en står a< du skall skriva en procedur/funk?on, så
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-06-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Fredag 10 juni
Läs merProgrammering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Läs merTDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 215, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merSökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning och sortering - definitioner Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man
Läs merFöreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...
Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures
Läs merQuicksort. Koffman & Wolfgang kapitel 8, avsnitt 9
Quicksort Koffman & Wolfgang kapitel 8, avsnitt 9 1 Quicksort Quicksort väljer ett spcifikt värde (kallat pivot), och delar upp resten av fältet i två delar: alla element som är pivot läggs i vänstra delen
Läs merSökning och sortering
Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste
Läs merUtförliga regler för TRAX
Utförliga regler för TRAX Innehållsförteckning Vad är TRAX? Sid 2 Grundregler för TRAX Sid 3 Vad är en tvingad yta? Sid 4 Vad är en vinnande ögla? Sid 6 Vad är en vinnande linje? Sid 7 Grundläggande strategiska
Läs merFöreläsning 9 Exempel
Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi
Läs merHI1024 Programmering, grundkurs TEN2 2014-03-13
HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Läs merFunktionell programmering DD1361
Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Torsdag 19 feb 2009 8-10 Namn: Personnummer:
Läs merTentamen TEN1 HI1029 2014-05-22
Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs merSignalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.
Strömmar (streams) De sista dagarna objekt med tillstånd modellerades som beräkningsobjekt med tillstånd. Isådana modeller är tiden modelerad (implicit) som en sekvens av tillstånd. För att kunna modellera
Läs merSagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO
Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO SCHACK Schack matt När en av motståndarens pjäser hotar kungen säger man att den står i schack. Schack matt - I schack vinner den som först
Läs merDatalogi, grundkurs 1
Datalogi, grundkurs 1 Tentamen 10 december 2008 konverterad till Python Hjälpmedel: Kommer att finnas i skrivsalarna, bl.a. Revised 6 Report on the Algorithmic Language Scheme och två olika s.k. Cheat
Läs merKomma igång med Allegro Common Lisp
Funktionell programmering med Lisp 9 Första gången Komma igång med Allegro Common Lisp Det Lisp-system som vi i kommer att använda för laborationerna heter Allegro Common Lisp. Det är en kommersiell programvara
Läs merPROGRAMMERING-JAVA TENTAMINA
PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift
Läs merTDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19
TDDC74 Programmering: Abstraktion och modellering Dugga 2, 2017-04-06, kl 17-19 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i
Läs merTDDC74 Programmering: Abstraktion och modellering Datortenta
TDDC74 Programmering: Abstraktion och modellering Datortenta - 2017-08-26 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.
Läs merTDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18
TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merTDDC74 Lab 04 Muterbara strukturer, omgivningar
TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden
Läs merArrayer (fält)
Arrayer (fält) 1 Vad kommer vi att ta upp om arrayer? Deklarera och initiera arrayen Lägga till i arrayen Ta ut på indexposition Ta reda på arrayens längd Sortera arrayen Söka igenom arrayen Loopa igenom
Läs merSökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning i oordnad lista Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data
Läs merTentamen, EDA501/EDAA20 Programmering M MD W BK L
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 40 poäng.
Läs merInstitutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på
DAT 060 Laboration 2 I Malmös kasino Institutionen för datavetenskap 17 juni 2002 Per tänkte dryga ut sitt magra studielån genom att jobba som labbassistent på sommarkursen. Tyvärr fanns det redan tillräckligt
Läs merNågra saker till och lite om snabbare sortering
Några saker till och lite om snabbare sortering Generellt om avbrott Generera avbrott Snabb sortering principer Snabb sortering i Scheme och Python QuickSort (dela städat slå ihop) Mergesort (dela slå
Läs merBörja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1).
Laboration 3 Grafiska figurer I den här laborationen skall du konstruera ett schemeprogram som kan rita rektanglar, punkter, cirklar, linjer och bilder som består utav en eller flera av nyss nämnda figurer.
Läs merÄndringsbar (mutable compound) data. TDDC74 Programmering: abstraktion och modellering. Sätta - samman listor kopiering. Hitta sista cons-cellen
TDDC74 Programmering: abstraktion och modellering Ändringsbar (mutable comound) data Att göra strukturförändringar i listor Ändra car- och cdr-ekare SICP 3 (del ) Föreläsning 8 Anders Haraldsson (set-car!
Läs merFöreläsningsanteckningar F6
Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en
Läs merString [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning
Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet
Läs merPROGRAMMERING-Java Omtentamina
PROGRAMMERING-Java Omtentamina Nicolina Månsson 2007-08 13 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 41 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. -
Läs merDatalogi, grundkurs 1
Datalogi, grundkurs 1 Tentamen 9 dec 2014 Tillåtna hjälpmedel: Revised 6 Report on the Algorithmic Language Scheme och Tre olika s.k. Cheat Sheets för Scheme Sex olika s.k. Cheat Sheets för Python Tänk
Läs merInstitutionen för datavetenskap
Institutionen för datavetenskap Department of Computer and Information Science Examensarbete Implementation och utökning av en typhärledningsalgoritm för Common Lisp av Simon Ståhlberg LIU-IDA/LITH-EX-G--10/018--SE
Läs merDatastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer
Föreläsning 1-12 Innehåll Vektorer Registrering (räkna element av olika slag) Sökning Matriser Klasserna String och StringBuilder Repetition inför delmålskontroll 2 Undervisningsmoment: föreläsning 1-12
Läs merVisual Basic, en snabbgenomgång
Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika
Läs merHandbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll
Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................
Läs merSpråket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.
DAT 060: Introduktion till (funktions)programmering. Jacek Malec m. fl. www.cs.lth.se/home/jacek Malec/dat060 Idag: 1. Kursens innehåll 2. Kursens organisation 3. Programmeringsspråket Scheme 4. Introduktion
Läs merSista delen av kursen
Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning
Läs merProgramspråkslingvistik. Sista delen av kursen. Ett programspråk
Sista delen av kursen Programspråkslingvistik handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk
Läs merProgrammeringsuppgift Game of Life
CTH/GU STUDIO TMV06a - 0/0 Matematiska vetenskaper Programmeringsuppgift Game of Life Analys och Linär Algebra, del A, K/Kf/Bt Inledning En cellulär automat är en dynamisk metod som beskriver hur komplicerade
Läs merKravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer
Kravspecifikation Fyra i rad Javaprojekt inom TDDC32 Version 2.0 Datum 2008-05-19 Dokumentnummer 20080215 Sammanfattning Detta är en kravspecifikation över det klassiska spelet Fyra-i-rad programmerat
Läs merTENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET
UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt
Läs merDatalogi, grundkurs 1 Övningsuppgifter i Scheme. Serafim Dahl, Carina Edlund, m.fl.
Datalogi, grundkurs 1 Övningsuppgifter i Scheme Serafim Dahl, Carina Edlund, m.fl. Hösten 2004 Datalogi, grundkurs 1, hösten 2002 1 1. Vad blir det för resultat vid beräkningen av följande Scheme-uttryck.
Läs merUppgift 1 ( Betyg 3 uppgift )
Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 + / \ + + + + \ / + Exempel 3: Mata in storlek
Läs merPROGRAMMERING-Java TENTAMINA
PROGRAMMERING-Java TENTAMINA Nicolina Månsson 2010-03-17 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. - För
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs merProgrammering för språkteknologer II, HT2011. Rum
Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Idag - Hashtabeller - Flerdimensionella arrayer (2D) 2 Repetition -
Läs merTDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merAnteckningar propp SMT2
Anteckningar propp SMT2 Lars Åström 11 december 2015 Under proppen ska följande gås igenom: Induktion - dominoeffekten Falluppdelning Extremprincipen Invarians Andra knep som används Induktion Vi använder
Läs mer729G04 Programmering och diskret matematik. Föreläsning 7
729G04 Programmering och diskret matematik Föreläsning 7 Föreläsningsöversikt Information Interaktion via text Läsa från fil Skriva till fil Spara och läsa abstrakta datatyper från fil Information Felaktigt
Läs merKungar och Skatter. 2. Ta sedan de fyra essen och blanda dem och lägg sedan slumpvis ut ett ess uppvänt i varje hörn (se fig 2).
Introduktion Spelare: 2-4 Speltid:15min Svårighet:Lätt att lära, svårt att bemästra Komponenter: 52 kort + 1 Joker Kungar och Skatter I Kungar och Skatter spelar varje spelare en kung som beger sig ut
Läs merDagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik.
1 Dagens föreläsning Modeller för programmeringsspråk - Olika modeller programspråk Interpretator - kompilator - Olika typer av språk Statiska och dynamiska programspråk - Syntax - semantik. Grammatik
Läs mer