חידה
למי שמזהה השאלה הזאת הופיעה באולימפיאדת מדעי המחשב השנה: נתונה שורה באורך N, N>3<1000, של מספרים שלמים חיוביים כלשהם. מעוניינים להמיר את כל מספרי השורה ל-0, באמצעות שימוש חוזר ונשנה בפונקציה Add. הפונקציה Add מקבלת שלושה פרמטרים – מקומות סידוריים של שני מספרים בשורה, וערך שלם, חיובי או שלילי. הפונקציה מוסיפה לשני המספרים (שמקומותיהם הסידוריים נתונים) את הערך השלם. ניתן לזמן את הפונקציה שוב ושוב, ובכל פעם – עם שני מקומות סידוריים (שונים זה מזה) כרצונך, וכל ערך שלם כרצונך. למשל, עבור השורה הבאה של 8 מספרים: 12 2 3 9 11 2 14 3 זימון של Add(3,7,10( יגדיל את המספר השלישי בשורה ל-13 ואת השביעי ל-24. זימון של Add(3,5,-10) יקטין את המספר השלישי בשורה ל- 7- ואת החמישי ל-1. זימון כגון Add(5,5,-10) איננו חוקי כיון ששני המקומות המצוינים בו שווים (שניהם 5). כתוב תכנית אשר הקלט שלה הוא N, ואחריו שורה של N מספרים שלמים חיוביים, והפלט שלה הוא הודעה האם ניתן או לא ניתן להמיר את השורה לשורה של 0-ים באמצעות סדרת זימונים של Add. אם ההודעה היא כן – הצג בפלט את סדרת הזימונים (כל זימון יתואר בפלט על-ידי ערכי שלושת הפרמטרים שלו). בהצלחה לכולם! החידה נלקחה מ- http://www.codeguru.co.il/forum/ShowMessage.asp?id=729&Fnumber=3&SunId=0
למי שמזהה השאלה הזאת הופיעה באולימפיאדת מדעי המחשב השנה: נתונה שורה באורך N, N>3<1000, של מספרים שלמים חיוביים כלשהם. מעוניינים להמיר את כל מספרי השורה ל-0, באמצעות שימוש חוזר ונשנה בפונקציה Add. הפונקציה Add מקבלת שלושה פרמטרים – מקומות סידוריים של שני מספרים בשורה, וערך שלם, חיובי או שלילי. הפונקציה מוסיפה לשני המספרים (שמקומותיהם הסידוריים נתונים) את הערך השלם. ניתן לזמן את הפונקציה שוב ושוב, ובכל פעם – עם שני מקומות סידוריים (שונים זה מזה) כרצונך, וכל ערך שלם כרצונך. למשל, עבור השורה הבאה של 8 מספרים: 12 2 3 9 11 2 14 3 זימון של Add(3,7,10( יגדיל את המספר השלישי בשורה ל-13 ואת השביעי ל-24. זימון של Add(3,5,-10) יקטין את המספר השלישי בשורה ל- 7- ואת החמישי ל-1. זימון כגון Add(5,5,-10) איננו חוקי כיון ששני המקומות המצוינים בו שווים (שניהם 5). כתוב תכנית אשר הקלט שלה הוא N, ואחריו שורה של N מספרים שלמים חיוביים, והפלט שלה הוא הודעה האם ניתן או לא ניתן להמיר את השורה לשורה של 0-ים באמצעות סדרת זימונים של Add. אם ההודעה היא כן – הצג בפלט את סדרת הזימונים (כל זימון יתואר בפלט על-ידי ערכי שלושת הפרמטרים שלו). בהצלחה לכולם! החידה נלקחה מ- http://www.codeguru.co.il/forum/ShowMessage.asp?id=729&Fnumber=3&SunId=0