ב ה. ד. ג. ב. ב. אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, חורף :22 תרגיל בית מספר 6 - להגשה עד 66 בינואר 3162 בשעה קיר

מסמכים קשורים
תרגיל בית מספר 1#

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

תרגיל בית מספר 1#

תוכן העניינים

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

שאלהIgal : מערכים דו מימדיים רקורסיה:

תוכן העניינים

מבוא לתכנות ב- JAVA תרגול 7

שאלהIgal : מערכים דו מימדיים רקורסיה:

תרגיל בית מספר 1#

אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, אביב 2019 תרגיל בית מספר - 2 להגשה עד 02/04/2019 בשעה 23:55 קיראו בעיון את הנחיות הע

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

Microsoft Word - c_SimA_MoedB2005.doc

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

Slide 1

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

תרגול 1

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Data Structure Assignment no.3 תאריך הגשה: p.m. 11/09/16, 23:59 את העבודה יש להגיש בזוגות במערכת ההגשות.submission system על העבודה להיות מוגשות כקובץ

סדנת תכנות ב C/C++

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

מבוא למדעי המחשב - חובלים

Microsoft Word - ExamA_Final_Solution.docx

מבוא למדעי המחשב

שאלהIgal : מערכים דו מימדיים רקורסיה:

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מבוא למדעי המחשב - חובלים

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

מבוא למדעי המחשב

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

פייתון

שיעור 1

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

מדריך למרצים ומתרגלים 1

Microsoft Word B

הגשה תוך שבוע בשעת התרגול

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

ex1-bash

<4D F736F F D20FAF8E2E5EC20E0ECE2E1F8E420EEF2E5F8E D F9E0ECE5FA2E646F63>

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

Microsoft Word - hedva 806-pitronot-2011.doc

מכללת הדסה, הפקולטה למדעי המחשב מבוא לתכנות מונחה עצמים והנדסת תוכנה סמסטר א', תשע"ו תרגיל 2 תאריך אחרון להגשה: קמפוס הנביאים יום א', 29/11/2015 בשעה

מבוא למדעי המחשב

בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

דף נגזרות ואינטגרלים לשאלון 608 כללים למציאת נגזרת של פונקציה: n 1. y' n x n, y הנגזרת x.1 נכפול בחזקה )נרשום אותה משמאל ל- (. x א. נחסר אחד מהחזקה. ב

שעור 6

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

ייבוא וייצוא של קבצי אקסל וטקסט

Slide 1

PowerPoint Presentation

Microsoft Word - Ass1Bgu2019b_java docx

תיק משימטיקה מגרף הנגזרת לגרף הפונקציה להנגשה פרטנית נא לפנות: כל הזכויות שמורות

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מס' ת"ז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש,

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

הנחיות הורדה ותפעול לספרים דיגיטלים. הוצאת כנרת, זמורה ביתן שמחה להגיש לכם, התלמידים, ספר דיגיטלי. הספרים עצמם הינם בקבצי PDF הניתנים להורדה ללא עלות

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

regular_expression_examples

PowerPoint Presentation

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

שאלה 2. תכנות ב - CShell

234114

מבוא למדעי המחשב

הגשה תוך שבוע בשעת התרגול

פרויקט "רמזור" של קרן אביטל בס "ד מערך שיעור בנושא: "פונקציה" טליה קיפניס והדסה ערמי, מאולפנת צביה פרטים מקדימים על מערך השיעור: השיעור מהווה מבוא לנו

מטלת מנחה (ממ"ן) 11 הקורס: חשבון אינפיניטסימלי II חומר הלימוד למטלה: יחידות 2,1 4 מספר השאלות: 7 משקל המטלה: נקודות סמסטר: ב 2007 מו

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

Tutorial 11

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

מבנים בדידים וקומבינטוריקה סמסטר אביב תשע"ט מספרי רמזי תרגול 11 הגדרה: (t R = R(s, הוא המספר הטבעי הקטן ביותר כך שבכל צביעה של צלעות הגרף וכחול(, קיים

Slide 1

Algorithms Tirgul 1

מסע מדע ו - מסע ברכב שטח ביבשות רחוקות

הקדמה מעתה תוכלו לצפות בתלוש השכר שלכם באופן ממוחשב, באמצעות מערכת חילן-נט. את סיסמת הכניסה הזמנית למערכת תמצאו בחלקו התחתון של תלוש השכר המודפס, שנשל

Slide 1

מקביליות

PowerPoint Presentation

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

מבוא לתכנות ב- JAVA תרגול 11

תרגיל 1 בקורס תוכנה 1

<4D F736F F D20EEF9E5E5E0E5FA20E3E9F4F8F0F6E9E0ECE9E5FA2E646F63>

Microsoft Word - SDAROT 806 PITRONOT.doc

תמליל:

ב ה ד ג ב ב אוניברסיטת תל אביב - בית הספר למדעי המחשב מבוא מורחב למדעי המחשב, חורף 3102 32:22 תרגיל בית מספר 6 - להגשה עד 66 בינואר 3162 בשעה קיראו בעיון את קובץ הנחיות הגשת תרגילי בית שמופיע באתר את הפונקציות משאלות 2,1,5,4 הגישו בקובץ py אחד הקפידו על שמות הפונקציות כפי שהן מצוינות בשאלות לנוחיותכם, לשאלה 5 מצורף קובץ skeleton המכיל את חתימות כל הפונקציות שעליכם לממש בשאלה זו כדי למנוע בלגן במהלך העבודה על תרגיל הבית, אנו ממליצים לעבוד עם קובץ py נפרד עבור כל שאלה למרות זאת, בסיום התרגיל אתם מתבקשים ליצור קובץ יחיד בשם 123456789py )עם תעודת הזהות שלכם( שמכיל את כל הפונקציות שנתבקשתם לממש בכל השאלות יחד הקפידו לבדוק את תקינות קובץ ה- py שאתם מגישים על ידי הרצה מדוקדקת של הפונקציות את התשובות הסופיות לשאלות 1 א, 1 בסה"כ מגישים שני קבצים בלבד הקפידו לענות על כל מה שנשאלתם 4, 5, 3,, 3 א, 3 גישו בקובץ docx,doc או pdf אחד שאלה 6 ממשו גנרטור בעל החתימה takeonly(it,pred,n) שמקבל איטרטור it ו פונקציה pred שמקבלת ארגומנט יחיד ומחזירה True/False )פונקציה כזאת נקראת פרדיקט( הגנרטור מייצר את האיברים של it לפי סדרם אם הם עונים על התנאי pred כלומר takeonly מייצר תת-סדרה של איברי it המכילה את כל האיברים x עבורם pred(x)=true אם n איברים רצופים אינם עונים לתנאי takeonly מפסיק לייצר איברים לדוגמא: list(takeonly(iter(range(30)),lambda x: x%3==1,5)) = [1, 4, 7, 10, 13, 16, 19, 22, 25, 28] list(takeonly(iter(range(30)),lambda x: x<10 or x%7==0,5)) = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14] ממשו גנרטור בעל החתימה blocks(it,k) שמקבל איטרטור it ומספר k ומחזיר רשימות של איברים עוקבים מתוך it שאורכן k למשל, שלושת האיברים הראשונים שיוחזרו ע"י blocks עם 3=k הם: הם איברי it אם it מייצר מס' איברים סופי כאשר שאינו מתחלק ב- k, blocks יחזיר בלוק אחרון שאורכו קצר יותר מ- k לדוגמא: list(blocks(iter(range(10)),5)) = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]] list(blocks(iter(range(10)),3)) = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] שימו לב: האיטרטורים שניתנים כקלט אינם בהכרח סופיים שאלה 3 אלגוריתם המיון bubble-sort פועל על רשימה מקושרת שאיבריה הם מספרים באופן הבא:

ל( 2 בכל איטרציה נסרוק את כל איברי הרשימה לפי סדרם: כאשר שני איברים סמוכים מקיימים : החלף בין האיברים a נעבור לזוג האיברים הסמוכים הבא נשים לב שלאחר החלפה האיבר הפך להיות b - ההשוואה הבאה תשווה את )שעכשיו נמצא במקום ה- 1 נסיים כאשר מתבצעת סריקה מלאה של הרשימה מבלי שבוצעה החלפה נשים לב שהדבר מעיד על כך שהרשימה ממוינת לצורך דוגמא נציג את פעולת bubble-sort על הרשימה [3,2,1,5,4,10,8,7,9,6] נרשום את מצב הרשימה לאחר כל איטרציה: [3,2,1,5,4,10,8,7,9,6] [2,1,3,4,5,8,7,9,6,10] [1,2,3,4,5,7,8,6,9,10] [1,2,3,4,5,7,6,8,9,10] [1,2,3,4,5,6,7,8,9,10] כמה איטרציות עוברות )לכל היותר( עד שהאיבר הגדול ביותר ברשימה נמצא במקומו? כמה איטרציות עוברות )לכל היותר( עד שהאיבר הקטן ביותר ברשימה נמצא במקומו? הבהרה: איטרציה בהקשר זה היא סריקה אחת של כל הרשימה מתחילתה ועד סופה למשל בדוגמה הקודמת בוצעו 4 איטרציות מהו זמן הריצה של אלגוריתם bubble-sort במקרה הגרוע כתלות באורך הרשימה n )במונחי סדר גודל ( )O(? תנו דוגמא לרשימה באורך 21 עבורה מתקבל זמן הריצה הגרוע ביותר סעיף ג לתרגיל מצורף קובץ LinkedListspy המכיל את class linked_list שראיתם בכיתה ממשו פונקציה עם החתימה bubblesort(linklst) שממיינת רשימה מקושרת )אובייקט מסוג linked_list באמצעות bubble- sort על הפונקציה למיין את הרשימה,in-place כלומר: 2 הפונקציה משנה את הייצוג הפנימי של הרשימה linklst שהתקבלה כקלט 1 ניתן ליצור לכל היותר מספר קבוע של אובייקטים חדשים מסוג Node או linked_list ניתן לייצר k אובייקטים חדשים, בתנאי ש- k נותר קבוע, ללא תלות באורך הרשימה הפונקציה אינה נדרשת להחזיר ערך כלשהו שאלה 2 כזכור, באלגוריתם Lempel-Ziv דוחסים חזרות באורך לפחות 3 )מתעלמים מחזרות באורך 2,1 משום שדחיסתם אינה משתלמת( אם נסמן ב- L את אורך החזרה המינימלי שהאלגוריתם דוחס, אז 3=L האם תיתכן מחרוזת שדחיסתה עם 4=L תהיה יעילה יותר מאשר עם 3=L? אם לדעתכם כן, רשמו את המחרוזת ואת ייצוג הביניים של הדחיסה, עבור 3=L ועבור 4=L אם לדעתכם לא, הסבירו מדוע עמוד 2 מתוך 7

דוגמא לייצוג ביניים: ייצוג הביניים של המחרוזת abcabcdedede הוא [ a, b, c,(3,3), d, e,(2,4)] נניח שעבור טקסט באורך n, מאפשרים לאורך החזרה המקסימלי באלגוריתם Lempel-Ziv להיות 1-n )במקום 32 כפי שמופיע בערכי ברירת המחדל של האלגוריתם שהוצג בכיתה( שאר פרטי האלגוריתם ללא שינוי רוצים לדחוס באופן זה את המחרוזת 01010101 באורך n i כיצד נראה ייצוג הביניים של הדחיסה? מהו יחס הדחיסה )=אורך המחרוזת הדחוסה חלקי אורך המחרוזת ללא דחיסה( כתלות ב- n? תנו תשובה בסדר גודל )( )O( בונוס 4 נקודות: רישמו את הביטוי המדויק ליחס הדחיסה )הבונוס יינתן רק לביטוי ללא אף שגיאה( ii נניח כי בנוסף לשינוי הנ"ל, מכניסים את השינוי הבא באלגוריתם: אין אפשרות לחפיפה בין סגמנטים חוזרים במילים אחרות, החזרה לא תוכל לעבור את הנקודה הנוכחית בטקסט למשל, ייצוג הביניים של המחרוזת abcabcabc יהיה [ a, b, c,(3,3),(3,3)] במקום ייצוג הביניים באלגוריתם הרגיל - [ a, b, c,(3,6)] כיצד יראה כעת ייצוג הביניים של המחרוזת 01010101 באורך n? מהו יחס הדחיסה כתלות ב- n? הניחו לשם פשטות כי n הוא חזקה שלמה של 1, ותנו תשובה בסדר גודל )( )O( הסבירו את תשובתכם סעיף ג i לפניכם מוצג קוד עבור הפונקציה genstring(n) שמייצרת מחרוזת באורך n מתוך התפלגות ידועה של שכיחות אותיות )הנתונה ע"י המחרוזת freq בקוד( def genstring(n): freq = 'a'*26+'bcdefghijklmnopqrstuvwxyz' randletters = [randomchoice(freq) for i in range(n)] return ''join(randletters) נניח ש- s הינה מחרוזת המיוצרת ע"י s=genstring(100000) איזו דחיסה צפויה לתת יחס דחיסה טוב יותר עבור s? קידוד Huffman או?Lempel-Ziv הסבירו את תשובתכם הבהרה: קידוד Huffman כאן ישתמש ב- s הן בתור corpus והן בתור,text כלומר הקידוד יבנה בהתאם לשכיחות האותיות במחרוזת s עצמה נחליף את המחרוזת freq במחרוזת הבאה: freq = 'a'*2600+'bcdefghijklmnopqrstuvwxyz' האם תשובתכם תשתנה? הסבירו ii שאלה 4 בשאלה זו נשוב לבעיה של חיפוש תת-מחרוזת משותפת באורך מקסימילי, בה נתקלנו בתרגיל בית מס' 4 הפעם ננקוט בגישה שונה בתכלית כשאנחנו מחפשים מחרוזת משותפת מקסימלית, אנחנו מחפשים מחרוזות משותפות באורך הולך ועולה, נסמן את האורך ב- בשאלה זו נחזיק את תתי-המחרוזות בטבלת עמוד 3 מתוך 7

hash ונשתמש ב- fingerprint של אלגוריתם של Karp-Rabin בתור פונקצית ה- hash ננצל את התכונות של אלגוריתם Karp-Rabin ונגדיל באופן הדרגתי את ה- fingerprints שאנחנו מחשבים נשים לב לתכונה הבאה של טביעות האצבע של אלגוריתם :Karp-Rabin עבור המחרוזת, נסמן ב- את טביעת האצבע של החלון והטביעה מייצגת הטביעה מייצגת את החלון נסתכל על ניתן לחשב את מתוך באמצעות כלל הורנר rule) (Horner s לכן, את החלון, נוכל בקלות לחשב ממנה את בהינתן רשימת טביעות האצבע של חלונות באורך, נסמנה )טביעות האצבע באורך ( נמשיך להשתמש בסימונים שהגדרנו כאן לאורך השאלה לתרגיל מצורף קובץ longmatchkrpy שמבצע חיפוש תת-מחרוזת משותפת מקסימלית של שתי מחרוזות באמצעות הפונקציה findlongest המימוש של findlongest מופיע כבר בקובץ, אך היא קוראת לפונקציות אחרות hasmatch extendfingerprints, makehashtable, עבורן המימוש חסר לאורך השאלה תתבקשו לממש את הפונקציות החסרות בקובץ longmatchkrpy לאחר מימוש הפונקציות העתיקו את כל תוכן הקובץ לתוך קובץ ה- py שאתם מגישים בתרגיל נשווה בין מחרוזות של טקסט ספרותי ספרים שייוצגו ע"י מחרוזות רציפות )בניגוד לאוספים של מחרוזות איתם עבדנו בתרגיל 4( הפרמטרים שונים לאורך התרגיל, כשנחשב טביעות אצבע נשתמש בפרמטרים מאלה שראינו בשיעור כדי שניתן יהיה להשתמש בטביעות האצבע כפונקציית hash לו היינו משתמשים ב- היינו נאלצים להשתמש בטבלת ענק עם תאים ממשו את הפונקציה (r extendfingerprints(text, fingers,,l basis, הפונקציה מקבלת מחרוזת טקסט של הטקסט עבור חלונות באורך (text) ואת רשימת טביעות האצבע על הפונקציה לחשב טביעות האצבע של הטקסט עבור חלונות באורך הפונקציה מחשבת את הפונקציה אינה מחזירה ערך, אלא ע"י הארכה של טביעות האצבע הנתונות ב- את טביעות האצבע במקום את מעדכנת את fingers כך שהרשימה תכיל את מחושבות בבסיס,basis מודולו r, כפי שאנחנו מצפים מאלגוריתם Karp-Rabin משתנה גדל, אורך הרשימה שימו לב: כאשר של טקסט ממשו את הפונקציה tablesize) makehashtable(fingers, הפונקציה מקבלת את לא ידועים ואינם חשובים כאן( ומחזירה טבלת chained-hash בגודל כלשהו )הטקסט ואורך החלון tablesize תא j בטבלה מכיל את רשימת האינדקסים i שעבורם מתקיים fingers[i] == j לדוגמא: makehashtable([0,0,1,2,1,2,1,2,3,3,3,0,0], 4) = [[0, 1, 11, 12], [2, 4, 6], [3, 5, 7], [8, 9, 10]] עמוד 4 מתוך 7

אנחנו מניחים כאן שהטבלה גדולה מספיק כדי להכיל את טביעת האצבע המקסימלית סעיף ג ממשו את הפונקציה (r hasmatch(text1, text2, fingers1, fingers2,l, הפונקציה מקבלת שתי מחרוזות text1, text2 ומחזירה True אם יש להן תת-מחרוזת משותפת באורך )אחרת מוחזר )False הפונקציה מקבלת את של שתי המחרוזות ואת r )המודולו מעליו מחושבות טביעות האצבעות( על מנת שתוכל לעשות hashing של המחרוזות הנחיה: עשו hashing של אחת המחרוזות באמצעות הפונקציה makehashtable שמימשתם ב' סעיף ד לתרגיל מצורפים שני קבצי טקסט wonderlandtxt, looking_glasstxt המכילים את תוכן הספרים Alice s Adventures in Wonderland Through the Looking Glass, and What Alice Found There מאת לואיס קרול השתמשו בפונקציה findlongest )המימוש של פונקציה זו נתון בקובץ )longmatchkrpy כדי למצוא את אורכה של תת-מחרוזת משותפת מקסימלית לשני הספרים הללו רשמו את כל תתי-המחרוזות המשותפות שאורכן מקסימלי כדי להימנע מהבדלים בין הטקסטים שנובעים מסגנון ועריכה נסיר מהטקסט חלק מסימני הפיסוק ורווחים ונהפוך אותיות גדולות לקטנות השתמשו בפונקציה formattext המצורפת כדי לנקות את הטקסטים שאלה 2 בידינו תמונה שנגרסה ונחתכה לרצועות אנכיות החתיכות נאספו מסל הגריסה ולכן ממוספרות באופן אקראי נרצה למצוא את הסדר המקורי של הרצועות, להדביק אותן לפי הסדר הנכון וכך לשחזר את התמונה למזלנו, התמונה נגרסה באמצעות מגרסת פלא שחותכת בדיוק באמצע הפיקסל לכן, לכל שתי רצועות סמוכות יש עמודת פיקסלים משותפת זאת אומרת שאם נסדר את הרצועות לפי הסדר הנכון, נמצא שהעמודה הימנית ביותר של הרצועה ה- i זהה לחלוטין לעמודה השמאלית ביותר של הרצועה ה-( i+1 ) ממשו את הפונקציה findorder(dirname) שמקבלת שם של תיקייה המכילה את קבצי הרצועות הרצועות נתונות בקבצים בעלי סיומת bitmap זהו הפורמט בו השתמשנו בכיתה לייצוג תמונה, שמאפשר טעינה נוחה לאובייקט מהמחלקה Matrix באמצעות הפונקציה )load() הפונקציה מחזירה רשימת אינדקסים המייצגת את הסדר הנכון שבו יש להדביק את הרצועות על מנת לקבל את התמונה המקורית למשל, נניח שהרצועות נמצאות בתיקייה shreds ונראות כך: עמוד 5 מתוך 7

0 1 2 3 4 5 6 הפונקציה תחזיר: findorder( \\shreds\\ ) = [4,2,5,3,6,1,0] אם נסדר את הרצועות לפי הסדר שמחזירה findorder נקבל: 5 1 4 3 6 2 1 לתרגיל מצורף קובץ zip המכיל את הרצועות של התמונה הגרוסה כאמור, כל רצועה נשמרה כקובץ בפורמט bitmap המספור של הקבצים הינו אקראי השתמשו בפונקציה findorder כדי למצוא את הסדר הנכון של הרצועות הדביקו את הרצועות ושחזרו את התמונה המקורית צרפו את התמונה המשוחזרת לקובץ ה- docx שאתם מגישים מיהי האישיות המפורסמת המופיעה בתמונה? הערה: כדי למצוא את כל הקבצים בתיקייה מסוימת dirname תוכלו להשתמש בפקודות האלו: oslistdir(dirname) globglob(dirname + *bitmap ) עמוד 6 מתוך 7

שתי הפקודות מחזירות רשימה של שמות קבצים oslistdir )של המודול )os מחזירה את שמות כל הקבצים בתיקייה והפקודה globglob )של המודול )glob כפי שנכתבה מוצאת רק קבצים עם סיומת bitmap מידע נוסף על הפונקציות האלו תוכלו למצוא בתיעוד של פייתון עמוד 7 מתוך 7