... היגיון, ללמוד לחשוב, ללמוד
לנתח דברים, ללמוד לפרק לגורמים, ללמוד לחלק לחלקים, ללמוד למצוא חוקיות, איך לחלק לחלקים?
איך למצוא חוקיות? איך לנתח תהליכים? והפעם נדבר על שאלת 420. LeetCode - Strong Password Checker הבאה: A password is considered strong if the below conditions are all met: It has at least 6 characters ... ולנסות להתמקד במאמץ של מציאת
התשובה. אז איך ניגשים לפתור את זה? אז כמובן שעלינו לנסות לחלק את התהליך לחלקים כמה שיותר קטנים. ועלינו לנסות לשחק קצת עם כל מיני אפשרויות בצורה ידנית, לפני שאנחנו מנסים למצוא את ... מהקל אל הכבד, איך אמורים לגשת
לנתח את השאלה הזאת: האם אני יודע לפתור את השאלה במקרה שיש רק חוק 1 שאומר ש: הסיסמה צריכה להיות באורך של לפחות תו 1 הסיסמה צריכה להיות באורך של לפחות 2 תווים הסיסמה צריכה להיות ... 6 תווים ועד כאן אני מניח
שהתשובה ברורה, והיא שעלינו לבדוק את אורך הסיסמה (=N) ואם אורך הסיסמה קטן מ X (אורך מינימלי) תווים, הרי שזה אומר שעלינו להוסיף X-N תווים, כדי שהסיסמה תהיה תקינה. לדוגמה אם אורך הסיסמה ... ננסה להבין, האם אני יודע
למצוא תשובה לשאלה, אם יש רק חוק 1 שאומר ש: הסיסמה צריכה להיות באורך של לא יותר מ תו 1 הסיסמה צריכה להיות באורך של לא יותר מ 2 תווים הסיסמה צריכה להיות באורך של לא יותר מ 3 תווים ... 20 תווים וגם עד כאן אני מניח
שהתשובה ברורה, והיא שעלינו לבדוק את אורך הסיסמה (=N) ואם אורך הסיסמה גדול מ X (אורך מקסימאלי) תווים, הרי שזה אומר שעלינו למחוק N-X תווים, כדי שהסיסמה תהיה תקינה. לדוגמה אם אורך ... תווים? וגם כאן אפשרי להניח
התשובה היא שכן, אם יש פחות מ X(אורך מינימלי), אז צריך להוסיף תווים. ואם יש יותר מ Y (אורך מקסימאלי) תווים, אז צריכים למחוק אותיות, כדי לגרום לסיסמה להיות תקינה. ועד כאן בעצם היתה ... אות ספציפית כלשהי ואם יש לנו
תשובה, אז נשאל, מה אם: הסיסמה צריכה להכיל אות אחת קטנה כלשהי?
והתשובה לכך היא, שעלינו לבדוק האם הסיסמה מכילה אות 1 קטנה כלשהי. ואם לא, אז עלינו להוסיף אות 1 קטנה כלשהי, או עלינו להחליף אות אחת קיימת, לאות 1 קטנה כלשהי. דהיינו, במקרה כזה לדוגמה ... ספרה אחת כלשהי? אז אם יש לנו
תשובה גם לזה, אז נשאל מה אם: הסיסמה צריכה להכיל את האות a הקטנה ואת האות A הגדולה? ואם הסיסמה צריכה להכיל אות 1 קטנה כלשהי ואות אחת גדולה כלשהי? ואם הסיסמה צריכה להכיל אות אחת קטנה ... תו ספציפי רצוף, לדוגמה AAA?
והתשובה היא, שאם לדוגמה יש לנו AAA עלינו או למחוק A אחד וישאר רק AA או להחליף תו אחד לדוגמה A1A או 1AA או AA1 ועכשיו הסיסמה תהיה תקינה. או להוסיף תו אחד לדוגמה A1AA או AA1A, שגם כך ... לפתור פעולות של סיסמה קצרה?
תשובה: לא. האם היינו יודעים לפתור מצב של סיסמה ארוכה: כן. האם היינו יודעים לפתור מצב של תווים חסרים?
תשובה: לא. האם היינו יודעים לפתור מצב של תווים רצופים?
תשובה: כן. ואם היתה רק פעולה אחת אפשרית של הוספה? אז היינו יכולים לפתור מצב של סיסמה קצרה, לא היינו יכולים לפתור מצב של סיסמה ארוכה מידי. כן היינו יכולים לפתור מצב של תווים חסרים ... 5 של מחיקה + 1 של החלפה. אז מהי
מהות הפתרון עד כה? במילים אחרות, ניקח את הפעולות שהן בטוח נכונות, דהיינו, שבטוח צריך לבצע אותן ובאמצעותן נפתור את כל שאר הפעולות שאולי צריך לבצע. דהיינו, אם חובה לבצע פעולות מחיקה ... השאלה. אבל האם זאת כל האמת?
והתשובה היא שעדיין לא. פתרנו חלקית, אבל לא עד הסוף. למה? כי נניח שהסיסמה היא באורך ארוך מידי, נניח של 30. אז בוודאות שעלינו לבצע 10 פעולות מחיקה. ונניח שיש לנו 10 אותיות רצופות. אז ... יעילה? היכן הכי כדאי למחוק?
והתשובה תהיה, היכן שפעולת המחיקה חוסכת הכי הרבה פעולות החלפה. דהיינו, אם נחקור בצורה ידנית את כל הרצפים מ 3 עד 20, נראה ש: רצף של 3 6 9 12 15 18 (דהיינו כפולות של 3), בכל אחד מהם, ...