פורסם ב זה רק קוד, מתכוננות לראיונות

רקורסיה – חלק ב' – כתיבת אלגוריתם רקורסיבי מהסוף להתחלה

זמן קריאה: 9 דקות

הפוסט הקודם בסדרה – רקורסיה – חלק א' – הבנת אלגוריתמים רקורסיביים

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

להמשיך לקרוא "רקורסיה – חלק ב' – כתיבת אלגוריתם רקורסיבי מהסוף להתחלה"
פורסם ב זה רק קוד, מתכוננות לראיונות

רקורסיה – חלק א' – הבנת אלגוריתמים רקורסיביים

זמן קריאה: 5 דקות

הפוסט הקודם בסדרה – רקורסיה – הקדמה

מהי רקורסיה?

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

להמשיך לקרוא "רקורסיה – חלק א' – הבנת אלגוריתמים רקורסיביים"
פורסם ב זה רק קוד, מתכוננות לראיונות

רקורסיה – הקדמה

זמן קריאה: 4 דקות

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

לצערי הרב, לרקורסיות יש מוניטין קצת רע, הן נחשבות מאוד מסובכות להבנה ולא כל כך שימושיות – מה שגורם לכך שהמון מתכנתות מתייאשות מהר מהניסיון להבין אותן ומדלגות הלאה.

להמשיך לקרוא "רקורסיה – הקדמה"
פורסם ב מתכוננות לראיונות

המספר הגדול הבא

זמן קריאה: 9 דקות

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

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

מראה מראה שעל הקיר, מי הכי פלינדרום בעיר?

זמן קריאה: 4 דקות

אז אתמול היה יום מאוד מיוחד, זה היה יום עם תאריך פלינדרומי – 02.02.2020 (ותודה ללא מדויק שבזכותו שמתי לב.
ואיזו דרך טובה* יותר יש לחגוג יום פלינדרומי מאשר עם אלגוריתם שבודק אם מילה היא פלינדרום? 
*אלא אם כן אתן אייבופוביות כמובן. אם כן, אני מתנצלת מראש, ואולי כדאי שתצאו מהפוסט עכשיו 🤷‍♀️

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

בעיית פינוי הסנאט

זמן קריאה: 10 דקות

השאלה הבאה לקוחה ממאגר השאלות של Google Code Jam, ואתן יכולות לנסות לפתור אותה כאן.

השאלה הולכת ככה – 
שריפה פרצה בסנאט האמריקאי (אבוי!) וצריך לפנות משם את כל הסנטורים. במקום נמצאים סנטורים מ-N מפלגות שמסומנות באותיות A-N ובכל שלב של הפינוי אפשר להוציא עד שני סנטורים.
במהלך הפינוי הסנטורים עדיין יכולים להצביע על חוקים (כל כך שמחה שאני מתכנתת ולא פוליטיקאית!) ולכן צריך לוודא שבכל שלב של הפינוי אין אף מפלגה שחבריה מהווים יותר מ-50% מהקולות שנשארו בסנאט הבוער.
המטרה היא למצוא תוכנית פינוי שמקיימת את התנאים ומובטח לי שקיימת תוכנית כזו.

להמשיך לקרוא "בעיית פינוי הסנאט"
פורסם ב מתכוננות לראיונות

כך קיבלתי חמש (וחצי) הצעות עבודה מעולות – בלי להיות נינג'ה, תותח או תמסח

זמן קריאה: 14 דקות

קצת רקע

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

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

מחשבון כבקשתך – חלק א'

זמן קריאה: 16 דקות

אם שוטטתן בפייסבוק לאחרונה כנראה נתקלתן בהתייחסויות לתרגיל (2+2)2÷8 (ואם לא, כדאי לקרוא את ההסבר של לא מדויק).
בקצרה, מדובר בתרגיל חשבוני שיש לו שני פתרונות אפשריים שנובעים מקונבנציות שונות של כתיבת מתמטית. אפשר להתייחס אליו כך – 

8÷2*(2+2) = 8÷2*4 = 4*4 = 16

ואפשר להתייחס אליו כך –

8÷2*(2+2) = 8/(2*(2+2)) = 8/(2*4) = 8/8 = 1

אז לפני שמתחילה מלחמת עולם בסגנון ה-little endians מול ה-big endians, חשבתי לנסות ליצור אלגוריתם שיוכל לשרת את שני המחנות.
הרי, אף אחד לא מתווכח על החישוב עצמו, אלא רק על קונבנציית הכתיבה – אז אני הולכת לבנות מחשבון קסום שאפשר יהיה לקנפג, ויספק לכל משתמשת את התשובה שהיא מחפשת.

להמשיך לקרוא "מחשבון כבקשתך – חלק א'"
פורסם ב זה רק קוד, מתכוננות לראיונות

מחשבון כבקשתך -חלק ב'

זמן קריאה: 9 דקות

בחלק א' של פוסט זה הסברתי שאני רוצה לבנות מחשבון שיוכל לקבל קונפיגורציה של קונבנציית כתיבה, ולפתור תרגילים בהתאם.
הרעיון הגיע מהתרגיל  (2+2)2÷8 שהוא ביטוי שיש לו שתי תוצאות שונות בעבור שתי קונבנציות כתיבה שונות.
בחלק הראשון של הפוסט בניתי את המחשבון שלי, ובחלק הנוכחי אני רוצה להוסיף לו קונפיגורציות.

להמשיך לקרוא "מחשבון כבקשתך -חלק ב'"
פורסם ב זה רק קוד, מתכוננות לראיונות

הרצף הארוך ביותר

זמן קריאה: 7 דקות

נתון מערך של מספרים שונים זה מזה, והמשימה היא למצוא את האורך של הרצף הארוך ביותר שניתן ליצור מהמספרים במערך.
לדוגמא –

A = [2, 5, 3, 10, 9, 4] longest_subsequence_length(A) = 4 ([2,3,4,5])

להמשיך לקרוא "הרצף הארוך ביותר"