הייתי צריך להמיר קוד ישן שכתבתי פעם ב VB (הקוד נכתב בשנת 98. לאן נעלמו להן 10 שנים ?!) לפרל שמודא שכל 9 הספרות של תעודת הזהות (כולל הספרת ביקורת) נכונים. הקוד בביסיק היה כל כך מגעיל, שהחלטתי לקרוא מחדש את החוקים להמרה, ויצרתי קוד חדש.
הסיבה להמרה היא בגלל שאני זקוק לקוד פרל עבור יישום מסוים שאני בונה ללקוח. הכתיבה המחודשת לקחה לי פחות מ10 דקות אחרי כל התיקונים והבדיקות שעשיתי (הרצתי הרבה מספרי זהות, חלקם נכונים וחלקם פקטיביים שהמצאתי). אחרי כרבע שעה מכתיבת הקוד הראשוני, גם הצלחתי לגרום לקוד להיות כתוב בצורה קריאה וקצרה יותר (עד כמה שחלק ממכם מסוגל לקבל את זה שפרל יכול להיות קריא -> והוא יכול להיות קריא) ואפילו עומד על 10 שורות קוד במקום כ25 שורות קוד מהקוד הראשוני שלי.
אחרי זה, החלטתי לחזור טיפה לשפת רובי, אז כתבתי את אותו הקוד בדיוק, רק ברובי והפעם מראש יש לי 10 שורות קוד כי היה לי על מה להתבסס, למרות שהקוד טיפה שונה (בהתאם לשינויים של שפת רובי כמובן).
אז עניין אותי כמה שורות קוד יקח לי לכתוב את זה בפסקל. אז העתקתי את האלגוריתם שיצרתי בפרל לשפת פסקל, והגעתי ל 13 שורות קוד. אם אני אפגע בקריאות של הקוד, אני יכול גם להגיע לאיזה 9-10 שורות קוד.
בכל השורות קוד אני כמובן לא סופר שורות ריקות בקוד, או דברים שאני חייב להגדיר כמו {} (או begin end) וגם לא הגדרות של var ו const שעשיתי אם כי אני יכול רק איתם לקצר עוד 2 שורות קוד, ואפילו לרדת ל 8 שורות קוד !
כנראה שבסופ"ש במידה ויהיו אנשים שיכולו לעזור לי, אממש את האלגוריתם שלי גם בשפת פיתון, ואז השפות הנורמאליות שיש ביוניקס יכילו את המימוש שלי לאלגוריתם
בכל מקרה, אם אתם מחפשים מודא של תעודת זהות שלוקח את כל 9 הספרות (ולא מחשב את הספרת ביקורת מתוך 8 הספרות), אז אתם יודעים ממי לבקש
האם הוא לא צריך לחשב אותה קודם בשביל לוודא אותה?
אם כן אז למה הוא "לא מחשב את הספרת ביקורת מתוך 8 הספרות"
מה שאני יצרתי כולל את הספרת ביקורת עצמה. כלומר
0-12345678-9
(רק בלי התבנית של הקווים, אלא הכל חייב להיות ספרות).
בשביל לחשב את הספרת ביקורת דרוש צעד אחד לפני מה שאני עשיתי בעצם. אם יהיה לי צורך, אז אני אכתוב גם תוכנית לחישוב הספרת ביקורת עצמה (קרי 8 מספרים).
הקדמתי אותך בכתיבת הקוד בפסקל לבדיקה וחישוב ספרת ביקורת בתעודת הזהות אך עדיין לא פירסמתי את הקוד. אפרסם את הקוד אחה"צ ומעניין יהיה להשוות את הקוד ביננו
לגבי פייתון: כבר כתבתי קוד כזה. תוכל להתרשם ממנו כאן:
http://ilsh.info/?p=714
http://ilsh.info/?p=715
אז מה בדיוק התוכנית שלך בודקת?
שיש 9 ספרות?
מספר ת.ז. משתמש באלגוריתם מתמטי בשביל ליצור מספר ספרת ביקורת.
עכשיו תאורטית כל אחד יכול להקיש כל מספר, ולשים "ספרת ביקורת". זה יכול להתרחש בגלל טעות הזנה, או בגלל רצון להתחזות. התוכנית שלי בודקת שהספרות עצמן מתאימות למבנה המתמטי של האלגוריתם.
האלגוריתם עצמו ד"א פותח ע"י IBM בשנות ה50.
Well? If it's just 10 lines then why not post it here and let us discuss it?
BTW – While looking around to find the algorithm, I found the following – look for the list of implementations near the bottom:
http://en.wikipedia.org/wiki/Luhn_algorithm
The platform of WordPress really sucks in placing inline code, and I'm lazy, and do not wish to add it to my personal web site.
פינגבאק: אלגוריתם לחישוב תעודת זהות « לראות שונה
שאלה:מה התעודת זהות שלך?
למזלי היא לא נמצאת ברשת האינטרנט שאני יודע עליה וטוב שכך
מהזה קוד וידוא