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

גלידה

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

חם היום!
כמה חם? כל כך חם שהלכתי לחפש שאלת תכנות בנושא גלידה, והנה מה שמצאתי – 

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

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

אנגרמות

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

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

הדוגמא שנתונה לנו בשאלה היא זו – 

arr = [“cat”, “dog”, “god”, “tca”] find_anagrams(arr) = [[1, 4], [2, 3]]

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

שקילת מטבעות

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

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

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

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

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

איחוד פגישות

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

נתונה רשימה של אובייקטים מסוג Meeting.
כל אובייקט מתאר פגישה, ומכיל זמן התחלה וזמן סיום. זמני ההתחלה והסיום הם מספר הבלוקים של חצי שעה אחרי 9 בבוקר.
כלומר, פגישה שמתחילה ב-10 ונגמרת ב-12 תהיה (Meeting(2,6 ופגישה שמתחילה ב-12 ונגמרת ב-13:30 תהיה (Meeting(6,9.
המשימה היא לכתוב פונקציה שמקבלת רשימה לא ממוינת של פגישות ומאחדת אותן כך שכל הפגישות שחופפות בזמנים יאוחדו לפגישה אחת.

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

סודוקו

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

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

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

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

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

רצף k-unique

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

אוקי, אז השאלה היא כזו – 
נתון מערך של מספרים ומספר כלשהו k.
צריך לכתוב אלגוריתם שמוצא את הרצף הכי ארוך במערך שיש בו בדיוק k מספרים שונים זה מזה נתון לי ש-k<=n.

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

להמשיך לקרוא "רצף k-unique"
פורסם ב זה רק קוד, מתכוננות לראיונות

חמש ושבע

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

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

צריך לכתוב 4 פונקציות שונות שמקבלות מספר אחד – 5 או 7 ומחזירות את המספר השני.
הפונקציות צריכות להיות שונות אחת מהשנייה במהותן ואסור להן להשתמש בשום סוג של if,switch וכיוצ"ב.

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

אז לפניכן ולהנאתכן, הפונקציות – 

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

העתקת ביטים

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

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

נתונים שני מספרים באורך 32 ביט – M,N ושני אינדקסים – I,J.
המשימה היא לכתוב פונקציה שמעתיקה את M לתוך N בין האינדקסים j ו-i.
אפשר להניח שההפרש בין j ל-i גדול מספיק כדי להכיל את כל M.

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

מילוי שטחים

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

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

אוקי, אני אתחיל מדוגמא.

הדוגמא שלי תהיה מטריצה בגודל 3X3 בשני צבעים – 1 ייצג צבע שחור ו-0 ייצג צבע לבן.

A = 1 1 1 1 0 0 1 0 0

להמשיך לקרוא "מילוי שטחים"