וידוא מספר ביקורת של תעודת זהות

הייתי צריך להמיר קוד ישן שכתבתי פעם ב VB (הקוד נכתב בשנת 98. לאן נעלמו להן 10 שנים ?!) לפרל שמודא שכל 9 הספרות של תעודת הזהות (כולל הספרת ביקורת) נכונים. הקוד בביסיק היה כל כך מגעיל, שהחלטתי לקרוא מחדש את החוקים להמרה, ויצרתי קוד חדש.

הסיבה להמרה היא בגלל שאני זקוק לקוד פרל עבור יישום מסוים שאני בונה ללקוח. הכתיבה המחודשת לקחה לי פחות מ10 דקות אחרי כל התיקונים והבדיקות שעשיתי (הרצתי הרבה מספרי זהות, חלקם נכונים וחלקם פקטיביים שהמצאתי). אחרי כרבע שעה מכתיבת הקוד הראשוני, גם הצלחתי לגרום לקוד להיות כתוב בצורה קריאה וקצרה יותר (עד כמה שחלק ממכם מסוגל לקבל את זה שפרל יכול להיות קריא -> והוא יכול להיות קריא) ואפילו עומד על 10 שורות קוד במקום כ25 שורות קוד מהקוד הראשוני שלי.

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

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

בכל השורות קוד אני כמובן לא סופר שורות ריקות בקוד, או דברים שאני חייב להגדיר כמו {} (או begin end) וגם לא הגדרות של var ו const שעשיתי אם כי אני יכול רק איתם לקצר עוד 2 שורות קוד, ואפילו לרדת ל 8 שורות קוד !

כנראה שבסופ"ש במידה ויהיו אנשים שיכולו לעזור לי, אממש את האלגוריתם שלי גם בשפת פיתון, ואז השפות הנורמאליות שיש ביוניקס יכילו את המימוש שלי לאלגוריתם :)

בכל מקרה, אם אתם מחפשים מודא של תעודת זהות שלוקח את כל 9 הספרות (ולא מחשב את הספרת ביקורת מתוך 8 הספרות), אז אתם יודעים ממי לבקש :)

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

12 תגובות על וידוא מספר ביקורת של תעודת זהות

  1. האם הוא לא צריך לחשב אותה קודם בשביל לוודא אותה?

    אם כן אז למה הוא "לא מחשב את הספרת ביקורת מתוך 8 הספרות"

  2. מאת ik_5

    מה שאני יצרתי כולל את הספרת ביקורת עצמה. כלומר
    0-12345678-9
    (רק בלי התבנית של הקווים, אלא הכל חייב להיות ספרות).

    בשביל לחשב את הספרת ביקורת דרוש צעד אחד לפני מה שאני עשיתי בעצם. אם יהיה לי צורך, אז אני אכתוב גם תוכנית לחישוב הספרת ביקורת עצמה (קרי 8 מספרים).

  3. מאת Ilan Shavit

    הקדמתי אותך בכתיבת הקוד בפסקל לבדיקה וחישוב ספרת ביקורת בתעודת הזהות אך עדיין לא פירסמתי את הקוד. אפרסם את הקוד אחה"צ ומעניין יהיה להשוות את הקוד ביננו :)
    לגבי פייתון: כבר כתבתי קוד כזה. תוכל להתרשם ממנו כאן:
    http://ilsh.info/?p=714
    http://ilsh.info/?p=715

  4. אז מה בדיוק התוכנית שלך בודקת?

    שיש 9 ספרות?

  5. מאת ik_5

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

  6. מאת Amos

    Well? If it's just 10 lines then why not post it here and let us discuss it?

  7. מאת Amos

    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

  8. מאת ik_5

    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.

  9. פינגבאק: אלגוריתם לחישוב תעודת זהות « לראות שונה

  10. מאת עמית

    שאלה:מה התעודת זהות שלך?

  11. מאת ik_5

    למזלי היא לא נמצאת ברשת האינטרנט שאני יודע עליה וטוב שכך :)

  12. מאת דנה

    מהזה קוד וידוא

כתיבת תגובה

Fill in your details below or click an icon to log in:

WordPress.com Logo

אתה מגיב באמצעות חשבון WordPress.com שלך. Log Out / לשמור )

Twitter picture

אתה מגיב באמצעות חשבון Twitter שלך. Log Out / לשמור )

Facebook photo

אתה מגיב באמצעות חשבון Facebook שלך. Log Out / לשמור )

Connecting to %s