1
+ # Week 2 Assignment
2
+
3
+
4
+ def primeproduct (m ):
5
+ primelist = []
6
+ if m < 0 :
7
+ return False
8
+ else :
9
+ for i in range (2 , m + 1 ):
10
+ for p in range (2 , i ):
11
+ if (i % p ) == 0 :
12
+ break
13
+ else :
14
+ primelist .append (i )
15
+ for x in primelist :
16
+ y = m / x
17
+ if y in primelist :
18
+ return True
19
+ return False
20
+
21
+
22
+ def delchar (s , c ):
23
+ if len (c ) > 1 :
24
+ return s
25
+ else :
26
+ return s .replace (c , '' )
27
+
28
+
29
+ def shuffle (l1 , l2 ):
30
+ list_length = min (len (l1 ), len (l2 ))
31
+ new_list = []
32
+ for i in range (list_length ):
33
+ new_list .extend ([l1 [i ], l2 [i ]])
34
+ if len (l1 ) > list_length :
35
+ new_list .extend (l1 [list_length :])
36
+ if len (l2 ) > list_length :
37
+ new_list .extend (l2 [list_length :])
38
+ return new_list
39
+
40
+
41
+ #Week 3 Assisgnment
42
+
43
+
44
+ def contracting (l ):
45
+ result = 'True'
46
+ if len (l ) > 2 :
47
+ for v in range (len (l ) - 2 ):
48
+ abs_diff = abs (l [v ] - l [v + 1 ])
49
+ abs_diff_2 = abs (l [v + 1 ] - l [v + 2 ])
50
+ if abs_diff <= abs_diff_2 :
51
+ result = 'False'
52
+ break
53
+ return result
54
+
55
+
56
+ def counthv (list ):
57
+ result = [0 , 0 ] #first is hc(hill_count) and second is vc(valley_count)
58
+ if len (list ) > 2 :
59
+ for v in range (1 , len (list ) - 1 ):
60
+ if max (list [v ], list [v + 1 ], list [v - 1 ]) == list [v ]:
61
+ result [0 ] = result [0 ] + 1
62
+ elif min (list [v ], list [v + 1 ], list [v - 1 ]) == list [v ]:
63
+ result [1 ] = result [1 ] + 1
64
+ return result
65
+
66
+
67
+ def leftrotate (m ):
68
+ new_matrix = [[m [j ][i ] for j in range (len (m ))]
69
+ for i in range (len (m [0 ]) - 1 , - 1 , - 1 )]
70
+ return new_matrix
71
+
72
+
73
+ def frequency (l ):
74
+ unique_l = list (set (l ))
75
+ freq_list = [l .count (x ) for x in unique_l ]
76
+ min_freq_list = [
77
+ unique_l [x ] for x in range (len (freq_list ))
78
+ if freq_list [x ] == min (freq_list )
79
+ ]
80
+ max_freq_list = [
81
+ unique_l [x ] for x in range (len (freq_list ))
82
+ if freq_list [x ] == max (freq_list )
83
+ ]
84
+ min_freq_list .sort ()
85
+ max_freq_list .sort ()
86
+ return (min_freq_list , max_freq_list )
87
+
88
+
89
+ def onehop (list ):
90
+ new = []
91
+ for i in range (len (list )):
92
+ for j in range (len (list )):
93
+ if i != j and list [i ][1 ] == list [j ][0 ]:
94
+ q = list [i ][0 ]
95
+ w = list [j ][1 ]
96
+ if q != w :
97
+ t = (q , w )
98
+ if t not in new :
99
+ new .append (tuple (t ))
100
+ new .sort ()
101
+ return (new )
102
+
103
+
104
+ courses = []
105
+ students = {}
106
+ grades = {}
107
+ while True :
108
+ s = input ()
109
+ if s == "Courses" :
110
+ d = 1
111
+ elif s == "Students" :
112
+ d = 2
113
+ elif s == "Grades" :
114
+ d = 3
115
+ elif s == "EndOfInput" :
116
+ break
117
+
118
+ else :
119
+ s = s .split ("~" )
120
+ if d == 1 :
121
+ courses .append (s )
122
+ elif d == 2 :
123
+ students [s [0 ]] = s [1 ]
124
+ grades [s [0 ]] = []
125
+ elif d == 3 :
126
+ grades [s [- 2 ]].append (s [- 1 ])
127
+
128
+ points = {"A" : 10 , "AB" : 9 , "B" : 8 , "BC" : 7 , "C" : 6 , "CD" : 5 , "D" : 4 }
129
+
130
+ for idx in sorted (grades ):
131
+ p = [points [x ] for x in grades [idx ]]
132
+ n = len (p ) or 1
133
+ marks = str (round (sum (p ) / n , 2 )) if p else "0"
134
+ d = [idx , students [idx ], marks ]
135
+ print ("~" .join (d ))
0 commit comments