הייתי צריך להמיר קוד ישן שכתבתי פעם ב VB (הקוד נכתב בשנת 98. לאן נעלמו להן 10 שנים ?!) לפרל שמודא שכל 9 הספרות של תעודת הזהות (כולל הספרת ביקורת) נכונים. הקוד בביסיק היה כל כך מגעיל, שהחלטתי לקרוא מחדש את החוקים להמרה, ויצרתי קוד חדש.
הסיבה להמרה היא בגלל שאני זקוק לקוד פרל עבור יישום מסוים שאני בונה ללקוח. הכתיבה המחודשת לקחה לי פחות מ10 דקות אחרי כל התיקונים והבדיקות שעשיתי (הרצתי הרבה מספרי זהות, חלקם נכונים וחלקם פקטיביים שהמצאתי). אחרי כרבע שעה מכתיבת הקוד הראשוני, גם הצלחתי לגרום לקוד להיות כתוב בצורה קריאה וקצרה יותר (עד כמה שחלק ממכם מסוגל לקבל את זה שפרל יכול להיות קריא -> והוא יכול להיות קריא) ואפילו עומד על 10 שורות קוד במקום כ25 שורות קוד מהקוד הראשוני שלי.
אחרי זה, החלטתי לחזור טיפה לשפת רובי, אז כתבתי את אותו הקוד בדיוק, רק ברובי והפעם מראש יש לי 10 שורות קוד כי היה לי על מה להתבסס, למרות שהקוד טיפה שונה (בהתאם לשינויים של שפת רובי כמובן).
אז עניין אותי כמה שורות קוד יקח לי לכתוב את זה בפסקל. אז העתקתי את האלגוריתם שיצרתי בפרל לשפת פסקל, והגעתי ל 13 שורות קוד. אם אני אפגע בקריאות של הקוד, אני יכול גם להגיע לאיזה 9-10 שורות קוד.
בכל השורות קוד אני כמובן לא סופר שורות ריקות בקוד, או דברים שאני חייב להגדיר כמו {} (או begin end) וגם לא הגדרות של var ו const שעשיתי אם כי אני יכול רק איתם לקצר עוד 2 שורות קוד, ואפילו לרדת ל 8 שורות קוד !
כנראה שבסופ"ש במידה ויהיו אנשים שיכולו לעזור לי, אממש את האלגוריתם שלי גם בשפת פיתון, ואז השפות הנורמאליות שיש ביוניקס יכילו את המימוש שלי לאלגוריתם 🙂
בכל מקרה, אם אתם מחפשים מודא של תעודת זהות שלוקח את כל 9 הספרות (ולא מחשב את הספרת ביקורת מתוך 8 הספרות), אז אתם יודעים ממי לבקש 🙂