• Keine Ergebnisse gefunden

Problem2(8Points) Solution Problem1(6Points) Solution PythonForFineProgrammers

N/A
N/A
Protected

Academic year: 2021

Aktie "Problem2(8Points) Solution Problem1(6Points) Solution PythonForFineProgrammers"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Technische Universität München Fakultät für Informatik

Lehrstuhl für Effiziente Algorithmen Sandeep Sadanandan

Sommer Semester 2009 Solution Sheet 1 April 22, 2009

Python For Fine Programmers

Problem 1 (6 Points)

Tower of Hanoi: Write a program to solve the problem of tower of Hanoi. The disks could be represented as numbers where a larger number represents are larger disc;

and the needles could be three positions in a LIST.

Solution

1 2

3 def movedisc ( s , d ) :

4 d . append ( s . pop ( ) )

5

6 def myprint ( ) :

7 p r i n t msrc , mdst , mtmp

8

9 def toh ( s r c , dst , tmp , n ) :

10 i f n == 1 :

11 movedisc ( s r c , d s t )

12 r e t u r n

13 toh ( s r c , tmp , dst , n−1)

14 movedisc ( s r c , d s t )

15 toh ( tmp , dst , s r c , n−1)

16 17

18 msrc = [ i∗’-’ f o r i in range ( 1 , 4 ) ]

19 mdst = [ ]

20 mtmp = [ ]

21

22 toh ( msrc , mdst , mtmp, l e n ( msrc ) )

Problem 2 (8 Points)

Implement Bubblesort and Binary Search (One could read the numbers into a List and then do the sorting)

Solution

1 2

3 def b u b b l e s o r t ( a r r ) :

4 f o r i in range ( l e n ( a r r )−1 , 0 , −1):

5 f o r j in range ( i ) :

6 i f a r r [ j ] > a r r [ j + 1 ] :

(2)

7 a r r [ j ] , a r r [ j +1] = a r r [ j + 1 ] , a r r [ j ]

8

9 def b i n s e a r c h ( e l e , a r r ) :

10 low , high = 0 , l e n ( a r r )−1

11

12 while low < high :

13 mid = ( low + high ) / 2

14 i f e l e < a r r [ mid ] :

15 high = mid − 1

16 e l i f e l e > a r r [ mid ] :

17 low = mid + 1

18 e l s e:

19 r e t u r n mid

20 r e t u r n −1

21 22 23

24 import random

25 myarray = [ random . r a n d i n t ( 1 0 , 1 0 0 0 ) f o r i in range ( 3 0 ) ]

26 p r i n t myarray

27 b u b b l e s o r t ( myarray )

28 p r i n t myarray

29 p r i n t b i n s e a r c h ( 4 9 , myarray )

30 p r i n t b i n s e a r c h ( myarray [ 1 4 ] , myarray )

Problem 3 (8 Points)

Number to Word Conversion Write two python functions, which converts a given in- teger to its word representation. The two functions differ as follows

1. The given number is written to the input each digit by digit. An input of “456”

should print “four five six” to the screen.

2. The given number’s value, in words, has to be printed to the screen. The input

“456” should give an output “four hundred and fifty six”. The input size may be limited to ten thousand.

Solution

1

2 numworddict = { 0 :"zero", 1 :"one", 2 :"two", 3 :"three", 4 :"four",

3 5 :"five", 6 :"six", 7 :"seven", 8 :"eight", 9 :"nine"}

4

5 numworddict100 = { 0 : "", 2 : "twenty", 3 : "thirty", 4 : "forty", 5 :

6 "fifty", 6 : "sixty", 7 : "seventy", 8 : "eighty", 9 :

7 "ninenty"}

8

9 numworddict1020 = { 10 : "ten", 11 : "eleven", 12 : "twelve", 13 :

10 "thirteen", 14 : "fourteen", 15 : "fifteen", 16 :

11 "sixteen", 17 : "seventeen", 18 : "eighteen", 19 :

12 "nineteen"}

2

(3)

13 14

15 def numtoword( i n t e ) :

16 i f i n t e < 1 0 :

17 p r i n t numworddict [ i n t e ] ,

18 r e t u r n

19 numtoword( i n t e / 1 0 )

20 p r i n t numworddict [ i n t e %10] ,

21 22

23 def numtoword_str ( s t r ) :

24 f o r i in s t r :

25 p r i n t numworddict [ ord ( i ) − ord (’0’) ] ,

26 27

28 def p r i n t t h i s ( n , s t r ) :

29 i f n :

30 r e t u r n numworddict [ n ] + s t r

31 r e t u r n ’’

32 33

34 def writeinwords (num ) :

35 i f num > 9 9 9 9 :

36 p r i n t "Not yet done"

37 r e t u r n

38

39 p r i n t i t = ’’

40

41 p r i n t i t += p r i n t t h i s (num/1000 , " thousand ")

42 num %= 1000

43

44 p r i n t i t += p r i n t t h i s (num/100 , " hundred ")

45 num %= 100

46

47 i f p r i n t i t :

48 p r i n t i t += ’and ’

49

50 i f num > 9 and num < 2 0 :

51 p r i n t i t += numworddict1020 [num]

52 e l s e:

53 p r i n t i t += numworddict100 [num/10] + p r i n t t h i s (num%10, ’’)

54

55 p r i n t p r i n t i t

56 57 58

59 numtoword( 1 5 8 6 2 4 8 5 6 2 8 5 )

60 p r i n t "\n"

61 numtoword_str (’158624856285’)

62 p r i n t "\n"

3

(4)

63 writeinwords ( 1 2 3 4 )

64 writeinwords ( 4 )

65 writeinwords ( 2 3 4 )

66 writeinwords ( 1 2 0 4 )

67 writeinwords ( 1 2 1 4 )

68 writeinwords ( 1 2 1 0 )

Problem 4 (4 Points)

Product of elements in an ARRAY. Write a program for the following.

There is a List A[n] of n integers. You have to create another List Output such that Output[i]will be equal to the product of all the elements ofAexceptA[i].

Using a division operator is not permitted.

Solution

1 def array wit hp ro d uct s (A ) :

2 op = [ 1 f o r i in range ( l e n (A ) ) ]

3 lp = rp = 1

4

5 f o r i in range ( l e n (A ) ) :

6 j = l e n (A) − 1 − i

7 op [ i ] ∗= lp

8 op [ j ] ∗= rp

9 lp ∗= A[ i ]

10 rp ∗= A[ j ]

11

12 r e t u r n op

13 14

15 a r r a y = [ 1 1 , 2 3 , 4 , 9 , 1 ]

16 p r i n t a r r a y

17 p r i n t array wit hp ro d uct s ( a r r a y )

4

Referenzen

ÄHNLICHE DOKUMENTE

1 Pierre de Maret is also Member of the Board of the European University Association and President of the Scientific Council of the Royal Central Africa Museum.. of a

Although nonparametric continuous norming delivers values that are at least as plausible as the ones gained with other methods like, for example, Box–Cox transformations,

the 95% confidence interval of z emp , which means that the number of deviating test results was reduced to about one third. The presented data strongly suggest that in our

[r]

• Fehlt ein break -Statement, wird mit der Statement-Folge der nächsten Alternative fortgefahren :-).. 239.. • default beschreibt den Fall, bei dem keiner der

Users of the PACE TR-48 Analog Computer will find the High Speed Repetitive Operation Group a· valuable aid in the solution of a variety of computing

Also: Man bringt die n-1 obersten Scheiben vom Ziel- auf Also: Man bringt die n-1 obersten Scheiben vom Ziel- auf den Hilfsturm, dann legt man die unterste Scheibe auf den

Der zentrale Hoan-Kiem-Distrikt weist abermals eine überragende Stellung innerhalb des Stadtgefüges auf: Jeder fünfte (21,7 %) von allen im privaten Dienstleis- tungssektor Tätigen