מאחר ואני מרגיש שלא הצלחתי להבהיר את החשיבות של Anonymous delegates, אני שולח עוד דוגמה.
הפעם מהעולם המתמטי.
נניח שיש לנו סדרה מתמטית למשל
$ 1,2,3,4,5,6,7,8,9,10,\dots \\ 1,4,9,16,25,36,49,81,100,\dots \\ 4,8,15,16,23,42$
שלושת הסדרות הן סדרות מתמטיות. שתי הראשונות הן אינסופיות והשלישית היא סופית.
לעתים ניתן לתאר סדרה ע”י נוסחה מתמטית שמחזירה את איבר הסדרה במקום הn.
למשל במקרה הראשון ניתן לתאר את הסדרה ע”י הנוסחה $ n \mapsto n$, במקרה השני ע”י $ n \mapsto n^2$,
ובמקרה השלישי קשה למצוא נוסחה.
משהו שניתן לעשות על סדרה מתמטית הוא ליצור ממנה סדרה חדשה שנקראת סדרת הפרשים:
אותה ניתן לייצר ע”י לקיחת כל איבר והסרה ממנו של האיבר הקודם, למשל:
$ 1,2,3,4,5,6,7,8,9,10,\dots $
נקבל את סדרת ההפרשים
$ 2-1,3-2,4-3,5-4,6-5,7-6,8-7,9-8,10-9,\dots \\ 1,1,1,1,1,1,1,1,1,\dots$
דוגמה נוספת:
$ 1,4,9,16,25,36,49,81,100,\dots $
נקבל את סדרת ההפרשים
$ 4-1,9-4,16-9,25-16,36-25,49-36,81-49,100-81,\dots \\ 3,5,7,9,11,13,15,17,19,\dots$
כעת אם בא לנו לתכנת את זה, אפשר להשתמש בAnonymous delegates.
נגדיר delegate כזה
|
|
זה delegate שמייצג סדרה שכל איבריה טבעיים.
כעת נגדיר פונקציה שמקבלת סדרה ויוצרת ממנה סדרת הפרשים:
|
|
כעת נוכל להשתמש בזה כדי למצוא סדרות הפרש:
למשל הדוגמה הראשונה:
|
|
ידפיס משהו כזה
$ 1,1,1,1,1,1,1,1,1,1$
בדוגמה השנייה
|
|
ידפיס משהו כזה:
$ 3,5,7,9,11,13,15,17,19,21$
מה שממש מגניב זה שאנחנו יכולים להפעיל סדרת הפרש כמה פעמים שאנחנו רוצים ברצף:
|
|
ונקבל משהו כזה
$ 390,750,1230,1830,2550,3390,4350,5430,6630,7950 $
זהו, בסה"כ מה שעשיתי פה די מסובך לעשות בלי Anonymous delegates.
המשך יום אנונימי טוב