Presentation laddar. Vänta.

Presentation laddar. Vänta.

TILLÄMPAD DATALOGI (TILDA) Övning 3 www.nada.kth.se/~mhj/tilda.

Liknande presentationer


En presentation över ämnet: "TILLÄMPAD DATALOGI (TILDA) Övning 3 www.nada.kth.se/~mhj/tilda."— Presentationens avskrift:

1 TILLÄMPAD DATALOGI (TILDA) Övning 3

2 Problemträd Bredden först Djupet först

3 class RekursionPalindrom { public static void main(String [] args) { String n1 = ”david”; String n2 = ”anna”; System.out.println(ärPalindrom(n1)); System.out.println(ärPalindrom(n2)); } public static boolean ärPalindrom(String s) { int len = s.length(); // basfall 1 if (len <= 1) { return true; } // basfall 2 else if (s.charAt(0) != s.charAt(len-1)) { return false; } // rekursion else { String s2 = s.substring(1, len-1); return ärPalindrom(s2); } }}

4

5

6

7

8

9 Problemträd

10 Problem: Erhåll talet (100) på kortast sätt med hjälp av talet fyra (4) och de tre räknesätten addition (+), subtraktion (-) och multiplikation (*). Exempel: 4 * * = 100 Problemträd:  4  4  4  4  4  4  4  4  4  4  4 

11 Problem: En teknolog som glömt sin tresiffriga portkod tryckte sej igenom alla tusen kombinationer så här: Det kräver 3000 tryckningar. Man kan dock börja med 000 och sedan klara sig med 999 tryckningar om man har en supersmart sekvens där varje tresiffrigt tal förekommer någonstans. Hur ser sekvensen ut? Problemträd:

12 Sökning i problemträd Bredden först

13 Djupet först Sökning i problemträd

14 Hitta lösning på minimalt avstånd Bredden först

15 Hitta lösning på minimalt avstånd Djupet först

16 Hitta en lösning då lösningarna finns på långt avstånd Bredden först

17 Hitta en lösning då lösningarna finns på långt avstånd Djupet först

18 Bredden först görs oftast med en kö Kö

19 Djupet först görs oftast med rekursion eller stack

20 Problem: Erhåll talet (100) på kortast sätt med hjälp av talet fyra (4) och de tre räknesätten addition (+), subtraktion (-) och multiplikation (*). Exempel: 4 * * =  4  4  4  4  4  4  4  4  4  4  4  Kö

21 Problem: En teknolog som glömt sin tresiffriga portkod tryckte sej igenom alla tusen kombinationer så här: Det kräver 3000 tryckningar. Man kan dock börja med 000 och sedan klara sig med 999 tryckningar om man har en supersmart sekvens där varje tresiffrigt tal förekommer någonstans. Hur ser sekvensen ut?

22

23 class BreddenForstFindNr { p s v main(String [] args){ FindNr fn=new FindNr(4,100); fn.find(); } class FindNr { int nr, goal; Queue q; public FindNr(int nr, int g) { this.nr = nr; goal = g; q = new Queue(); } public void find() { q.put(new Node(nr, ””, null)); while (! q.isEmpty() ) { makeSons( q.get() ); } public void makeSons(Node n) { if (n.sum == goal) { writeChain(n); } q.put(new Node(n.sum-nr, ”-”, n)); q.put(new Node(n.sum+nr, ”+”, n)); q.put(new Node(n.sum*nr, ”*”, n)); } fn nr 4 q head null tail sum 4 oper ”” father null sum 0 oper - father sum 8 oper + father sum 16 oper * father sum -4 oper - father info null next info null next info null next info null next info null next n goal 100

24 Finn fem fel

25 class FinnFemFel { public static void main(String [] args) { Mio mio = new Mio(); System.out.println("Vad vill du att programmet skriver ut?"); String text = mio.getWord(); System.out.println("Hur många gånger?"); int antal = mio.getWord(); skriv(antal, text); } public static double skriv(String s, int antal) { for (int i = 1; i < antal; i++) { System.out.print(text + ” ”); } Vad vill du att programmet skriver ut? Hej Hur många gånger? 5 Hej Hej Hej Hej Hej


Ladda ner ppt "TILLÄMPAD DATALOGI (TILDA) Övning 3 www.nada.kth.se/~mhj/tilda."

Liknande presentationer


Google-annonser