Skip to content

Commit 533214a

Browse files
committed
week4 summary
1 parent d30cfe1 commit 533214a

File tree

2 files changed

+353655
-0
lines changed

2 files changed

+353655
-0
lines changed

week4/Summary.ipynb

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# <p style=\"text-align:right;direction:rtl;\"> תרגילים </p> "
8+
]
9+
},
10+
{
11+
"cell_type": "markdown",
12+
"metadata": {},
13+
"source": [
14+
"## <p style=\"text-align:right;direction:rtl;\"> בחירות במדינת הגמדים </p>"
15+
]
16+
},
17+
{
18+
"cell_type": "markdown",
19+
"metadata": {},
20+
"source": [
21+
"<p style=\"text-align:right;direction:rtl;\">\n",
22+
" במדינת הגמדים רעש מהומה ולכן החליטו ללכת לבחירות.<br>\n",
23+
" ועדת הבחירות המרכזית בראשות דרדסבא ערכה בחירות חשאיות והוגנות והציגה לפניכם את התוצאות בקובץ elections.txt המצורף (בתיקיית resources) על כל 353,400 בוחריה.<br>\n",
24+
" הקובץ הינו רשימה של שמות המפלגות שבהן בחרו תושבי מדינת הגמדים, כל שורה מייצגת בחירה של תושב מדינת הגמדים.<br>\n",
25+
" על מנת לשמור על טוהר המידות לא נאמר לכם במפורש מהו מספר המפלגות שהגישו את רשימותיהן לועדת הבחירות.<br>\n",
26+
" עליכם הוטלה המשימה לעבור על הקובץ תוצאות הבחירות ולדווח כמה קולות קיבלה כל מפלגה.<br>\n",
27+
" כתבו פונקציה שלא מקבלת פרמטרים ומחזירה את תוצאות הבחירות במילון ובו שם המפלגה ומספר הקולות שקיבלה.\n",
28+
"</p>"
29+
]
30+
},
31+
{
32+
"cell_type": "code",
33+
"execution_count": null,
34+
"metadata": {},
35+
"outputs": [],
36+
"source": [
37+
"# כתבו את הפונקציה שלכם כאן: get_election_results()"
38+
]
39+
},
40+
{
41+
"cell_type": "markdown",
42+
"metadata": {},
43+
"source": [
44+
"<p style=\"text-align:right;direction:rtl;\">\n",
45+
" אחוז החסימה במדינת הגמדים הוא אכזרי למדי ועומד על 10%.<br>\n",
46+
" כיון שהצביעו 353,400 גמדים - אחוז החסימה עומד על\n",
47+
" $353,400*0.1=35340$ קולות.<br>\n",
48+
" כתבו פונקציה המקבלת את מילון תוצאת הבחירות ומדפיסה אלו מפלגות עברו את אחוז החסימה ואלו לא.\n",
49+
"</p>"
50+
]
51+
},
52+
{
53+
"cell_type": "code",
54+
"execution_count": null,
55+
"metadata": {},
56+
"outputs": [],
57+
"source": []
58+
},
59+
{
60+
"cell_type": "markdown",
61+
"metadata": {},
62+
"source": [
63+
"<p style=\"text-align:right;direction:rtl;\">\n",
64+
"כעת כתבו פונקציה המקבלת את מילון תוצאות הבחירות ומחזירה את סך כמות הקולות שקיבלו רק מפלגות שעברו את אחוז החסימה.</p>"
65+
]
66+
},
67+
{
68+
"cell_type": "code",
69+
"execution_count": null,
70+
"metadata": {},
71+
"outputs": [],
72+
"source": []
73+
},
74+
{
75+
"cell_type": "markdown",
76+
"metadata": {},
77+
"source": [
78+
"<p style=\"text-align:right;direction:rtl;\">\n",
79+
" אחרי שסיימתם בדקו שקיבלתם את הערך הבא: <span style=\"direction: rtl; background: #000; text: #000\">249333</span>\n",
80+
"</p>"
81+
]
82+
},
83+
{
84+
"cell_type": "markdown",
85+
"metadata": {},
86+
"source": [
87+
"<p style=\"text-align:right;direction:rtl;\">\n",
88+
" לאחר קבלת תוצאות האמת המפלגות פועלות להקים קואליציה. קואליציה מורכבת מ-61 מנדטים לפחות.<br>\n",
89+
" מנדט שווה: $\\dfrac{votes}{120}=2077.775\\cong2078$ קולות.<br>\n",
90+
" שימו לב, הקולות בתרגיל זה הם התוצאה של הסעיף הקודם. כלומר הקולות בניכוי הקולות עבור מפלגות שלא עברו את אחוז החסימה.<br>\n",
91+
" כעת כתבו פונקציה המקבלת את מילון התוצאות ומחזירה מילון שבו שם המפלגה ממופה עם מספר המנדטים שהמפלגה קיבלה.<br>\n",
92+
" השתמשו בפונקציה <code>round</code> על תוצאת החלוקה (השתמשו ב-2078) כדי לקבל את מספר המנדטים השלם.\n",
93+
"</p>"
94+
]
95+
},
96+
{
97+
"cell_type": "code",
98+
"execution_count": null,
99+
"metadata": {},
100+
"outputs": [],
101+
"source": []
102+
},
103+
{
104+
"cell_type": "markdown",
105+
"metadata": {},
106+
"source": [
107+
"<p style=\"text-align:right;direction:rtl;\">\n",
108+
"הדפיסו את המילון שקיבלתם. ודאו שסך המנדטים מסתכם ל-120.</p>"
109+
]
110+
},
111+
{
112+
"cell_type": "markdown",
113+
"metadata": {},
114+
"source": [
115+
"<p style=\"text-align:right;direction:rtl;\">\n",
116+
"על מנת להרכיב קואליציה דרושים 61 מנדטים.<br>\n",
117+
"המפלגות MidgeLandIsUs ו-NilsIsALeader לא מוכנות לשבת יחד בקואליציה.<br>\n",
118+
"כתבו פונקציה המקבלת את המילון המכיל את תוצאות המנדטים ומדפיסה קואליציה אפשרית עבור NilsIsALeader וקואליציה אפשרית עבור MidgeLandIsUs.\n",
119+
"</p> "
120+
]
121+
},
122+
{
123+
"cell_type": "code",
124+
"execution_count": null,
125+
"metadata": {},
126+
"outputs": [],
127+
"source": []
128+
},
129+
{
130+
"cell_type": "markdown",
131+
"metadata": {},
132+
"source": [
133+
"## <p style=\"text-align:right;direction:rtl;\"> מיונים</p>"
134+
]
135+
},
136+
{
137+
"cell_type": "markdown",
138+
"metadata": {},
139+
"source": [
140+
"<p style=\"text-align:right;direction:rtl;\">\n",
141+
"מיון היא פעולה מאוד נפוצה שמבצעים על מידע. מיון המידע מקל מאוד על החיפוש ועל כך נדון בהרחבה בעתיד.<br>\n",
142+
"בסעיף זה נכיר כמה דרכים למיין, ונממש פונקציות מיון שונות.<br>\n",
143+
"אנו נעסוק כרגע במיון רשימה של מספרים. נקרא לרשימה \"ממוינת\" כאשר היא איבריה מסודרים מהקטן לגדול - הקטן באינדקס הנמוך והגדול באינדקס הגבוה.\n",
144+
"</p> "
145+
]
146+
},
147+
{
148+
"cell_type": "markdown",
149+
"metadata": {},
150+
"source": [
151+
"### <p style=\"text-align:right;direction:rtl;\"> מיון על ידי מציאת האיבר המקסימלי - Max Sort </p>"
152+
]
153+
},
154+
{
155+
"cell_type": "markdown",
156+
"metadata": {},
157+
"source": [
158+
"<p style=\"text-align:right;direction:rtl;\">מיון זה עובר על כל איברי הרשימה מספר פעמים, ובכל מעבר ממקם את האיבר הכי גדול בקצה הרשימה.<br>\n",
159+
"הנה דוגמה למעבר כזה:<br>\n",
160+
"הרשימה לפני:</p><br>\n",
161+
"<samp>[1, 6, 2, 4]</samp><br>\n",
162+
"<p style=\"text-align:right;direction:rtl;\">הרשימה אחרי:</p><br>\n",
163+
"<samp>[1, 4, 2, 6]</samp><br>\n",
164+
"<p style=\"text-align:right;direction:rtl;\">המעבר ביצע החלפה של האיבר הגדול ביותר עם האיבר האחרון.<br>\n",
165+
"כעת ניתן לראות שאם נמיין את הרשימה המסתיימת באיבר שלפני האחרון - נקבל רשימה ממוינת, ולכן המעבר הבא יהיה על האיברים עד האיבר הלפני אחרון. כך נמשיך עד שנסיים:</p><br>\n",
166+
"<p style=\"text-align:right;direction:rtl;\">הרשימה לפני:</p><br>\n",
167+
"<samp>[1, 4, 2, 6]</samp><br>\n",
168+
"<p style=\"text-align:right;direction:rtl;\">הרשימה אחרי:</p><br>\n",
169+
"<samp>[1, 2, 4, 6]</samp><br>\n",
170+
"<p style=\"text-align:right;direction:rtl;\">במעבר זה החלפנו את 2 עם 4.<br>\n",
171+
"במעברים הבאים לא תתבצע החלפה כי הרשימה ממויינת.</p>"
172+
]
173+
},
174+
{
175+
"cell_type": "markdown",
176+
"metadata": {},
177+
"source": [
178+
"#### <p style=\"text-align:right;direction:rtl;\"> מימוש פונקציה המבצעת את המעבר </p>"
179+
]
180+
},
181+
{
182+
"cell_type": "markdown",
183+
"metadata": {},
184+
"source": [
185+
"<p style=\"text-align:right;direction:rtl;\"> בסעיף זה נממש את הפונקציה המבצעת את המעבר המתואר מעלה.<br>\n",
186+
"הפונקציה תקבל רשימה ואינדקס, ותבצע את המעבר עד האינדקס שהתקבל.<br>\n",
187+
"אם הפונקציה לא מקבלת אינדקס, היא תחשב מעבר על הרשימה כולה (השתמשו בערכי ברירת מחדל של פונקציות).<br>\n",
188+
"על פי הדוגמה שראינו:<br></p>\n",
189+
"<code>swap_max([1, 6, 2, 4])</code><br>\n",
190+
"<samp>[1, 4, 2, 6]</samp><br><br>\n",
191+
"<code>swap_max([1, 6, 2, 4], 2)</code><br>\n",
192+
"<samp>[1, 2, 6, 4]</samp><br>\n",
193+
"<p style=\"text-align:right;direction:rtl;\">בדוגמה האחרונה ההחלפה בוצעה על תת הרשימה המסתיימת באינדקס 2, ובו המספר 2.<br></p>\n"
194+
]
195+
},
196+
{
197+
"cell_type": "code",
198+
"execution_count": 4,
199+
"metadata": {},
200+
"outputs": [],
201+
"source": [
202+
"# swap_max(list_to_sort, last_index) ממשו כאן את הפונקציה"
203+
]
204+
},
205+
{
206+
"cell_type": "markdown",
207+
"metadata": {},
208+
"source": [
209+
"<p style=\"text-align:right;direction:rtl;\"> כעת ממשו את פונקציית המיון.<br>\n",
210+
"פונקציית המיון תריץ את פונקציית המעבר תחילה על כל הרשימה, כך שהאיבר הכי גדול יהיה בסוף, ובכל צעד לאחר מכן על תת רשימה הולכת וקטנה.<br>\n",
211+
"כאשר תת הרשימה שנרוץ עליה תהיה בגודל 1 - נחזיר את מה שקיבלנו. ובכך יסתיים אלגוריתם המיון.<br>\n",
212+
"דוגמת הרצה מפורטת:<br></p>\n",
213+
"<code>swap_max([2, 6, 1, 4])</code><br>\n",
214+
"<samp>[2, 4, 1, 6]</samp><br><br>\n",
215+
"<code>swap_max([2, 4, 1, 6], 2)</code><br>\n",
216+
"<samp>[2, 1, 4, 6]</samp><br><br>\n",
217+
"<code>swap_max([2, 1, 4, 6], 1)</code><br>\n",
218+
"<samp>[1, 2, 4, 6]</samp><br><br>\n",
219+
"<code>swap_max([1, 2, 4, 6], 0)</code><br>\n",
220+
"<samp>[1, 2, 4, 6]</samp><br><br>\n",
221+
"\n"
222+
]
223+
},
224+
{
225+
"cell_type": "code",
226+
"execution_count": 3,
227+
"metadata": {},
228+
"outputs": [],
229+
"source": [
230+
"# max_sort(list_to_sort) ממשו כאן את הפונקציה"
231+
]
232+
}
233+
],
234+
"metadata": {
235+
"kernelspec": {
236+
"display_name": "Python 3",
237+
"language": "python",
238+
"name": "python3"
239+
},
240+
"language_info": {
241+
"codemirror_mode": {
242+
"name": "ipython",
243+
"version": 3
244+
},
245+
"file_extension": ".py",
246+
"mimetype": "text/x-python",
247+
"name": "python",
248+
"nbconvert_exporter": "python",
249+
"pygments_lexer": "ipython3",
250+
"version": "3.7.1"
251+
}
252+
},
253+
"nbformat": 4,
254+
"nbformat_minor": 2
255+
}

0 commit comments

Comments
 (0)