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

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

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

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

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

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

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

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

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

  1. ik_5 מאת

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

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

  2. ik_5 מאת

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

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

  4. Elazar

    אם כבר פייתון
    tr = lambda i, d : d if i%2==1 else sum([int(k) for k in str(d * 2)])
    def isvalid_userid(userid):
    return (userid % 10) == (-sum([tr(i, int(d)) for i, d in enumerate(str(userid // 10))]) % 10)

כתיבת תגובה

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

הלוגו של WordPress.com

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

תמונת Twitter

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

תמונת Facebook

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

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s