כותרת: השאלה המלאה
19. (**) המורה של דני השתמש בשיטה הבאה כדי לכווץ הודעה המורכבת מ – 26 אותיות ה – ABC (אותיות גדולות בלבד):
הגדרה:
מילון0 הוא מילון היודע לקחת מחרוזת ולמצוא מספר שהותאם לה קודם לכן
(או להגיד שעדיין לא הותאם לה מספר)
עבור כל אות מה – ABC, בצע:
התאם למחרוזת המכילה את האות הזו בלבד את האינדקס שלה ב – ABC
(כלומר, ל – "A" יותאם 1 ול – "Z" יותאם 26)
הכנס למשתנה קוד0 את המספר 26
קרא את התו הראשון מהמסר ושמור אותו ב – מחרוזת0
כל עוד ישנם עדיין תווים במסר שלא נקראו, בצע:
קרא את התו הבא מהמסר ושמור אותו ב – תו0
הכנס ל – מחרוזת1 את מחרוזת0 עם תו0 משורשר בסופה
אם כבר הותאם מספר ל – מחרוזת1 ב – מילון0 אזי:
החלף את הערך של מחרוזת0 בערך של מחרוזת1
אחרת:
פלוט את המספר שהותאם ל – מחרוזת0 לפי מילון0
הוסף אחד לערך של קוד0
התאם במילון0 את המספר קוד0 למחרוזת מחרוזת1
החלף את הערך של מחרוזת0 בערך של תו0
פלוט את המספר שהותאם למחרוזת0 לפי מילון0
המסר המכווץ נראה כך (משמאל לימין):
3, 7, 27, 24, 29, 31, 7
דני רוצה לפענח את המסר, בתקווה שמשמעותו היא שהמורה מבטל את השיעור הקרוב. עזרו לדני!
מהו המסר המקורי אותו כיווץ המורה?
פתרתי את זה בעזרת מחשב ולא על נייר… (יישמתי ב-C) אבל אני מניח שגם על נייר זה אפשרי.