כתבו פונקציה שמקבלת שמות 2 ערכים בוויקיפדיה (X , Y) ומרחק הפרדה מקסימלי N. הפונקציה תבדוק האם ניתן ללחוץ על N קישורים החל מהערך X כדי להגיע לערך Y.
אם N הוא 6, האם המרחק התקין הוא רק 6, או שאם יש קישור כבר בדרגה הראשונה הפונקציה תסיים?
Yam
תוקן ל־ N - 1. המרחק התקין עבור N = 6 הוא 5 לחיצות.
yuval.cagan
כן, אם אפשר בפחות זה טוב.
Rach
אבל בדוגמא שנתת היה פחות מ-5 לחיצות (3 לחיצות, 4 ערכים).
aviadamar
N הוא פרמטר הכוונה שהיא שאת יכולה לבדוק עבור כל מרחק שאת מעוניינת האם או מתקיים או לא.
Rach
תודה על התגובה, אבל איך זה עונה לי על מה ששאלתי?
aviadamar
הדוגמא היא לא עבור 6 היא עבור פחות לצורך העניין.
Rach
אתה יכול בבקשה לקרוא את הדוגמא של ים ולהסביר לי אותה?
מה שאני רואה בדוגמא שהוא הביא, זה שיש 3 לחיצות, 4 ערכים, וים כתב שם שיש חמש דרגות.
אני מנסה להבין את זה, על מנת להבין אם הפתרון שלי טוב.
aviadamar
לדעתי זה צריך להיות שם 4 אבל מה שמשנה זה השורות האלה:
orirenick
כלומר זה חייב להיות בדיוק?
כי סתם ככה הייתי מבין זה n-1 או פחות
Rach
זאת בדיוק הייתה שאלתי. האם יש שם טעות או שאני מפספסת משהו
aviadamar
n משתנה אז הקוד שלך אמור לבדוק עבור כל n - אתה יכול לבדוק דוגמאות עבור n = 3 או עבור n = 6 וכו …
אבל הקוד גנרי עבור כל n.
orirenick
אבל זה בדיוק השאלה…
נניח יש שני ערכים שהם מקושרים ישירות.
מ- A ניתן להגיע ל-B מיד כי הוא מקושר אליו ישירות, לכן הפונקציה צריכה להחזיר True עבור N=1… אבל השאלה היא האם N=2 זה גם יחזיר TRUE. כי אי אפשר להגיע “בדיוק” על ידי 2 לחיצות מA לB. (לעומת זה אולי ב3 אפשר כי נלך הלוך חזור והצלחנו)
aviadamar
הגעה מערך אחד לאחר מצריכה לחיצה על קישור.
כלומר עבור 2 ערכים יש לך מעבר 1.
עבור 2 לחיצות במצב שאתה מתאר יחזור True כי כל דרך “קצרה” יותר מN נחשבת שהיא עומדת בתנאי. כלומר הפונקציה שלך כבר תחזיר True אחרי לחיצה 1 היא אפילו לא תממש את הלחיצות הנוספות ועדין זה יחשב נכון.
כמו כן, הנקודת מוצא היא שאתה הולך רק בכיוון אחד ולכן אין מצבים של “הלוך חזור” כמו שאתה מתאר.
orirenick
טוב, לא הכי הבנתי כי אני עדיין טוען שי פה עניין של ניסוח כי אפשר פשוט בשאלה להכניס את המילה “בדיוק” או “מקסימום” ואז זה מברר איזה כוונה הייתה.
אבל רק מוודא שאני לא מפספס פה על פלוס מינוס אחד.
אם הפונקציה מקבל N=1 אז בעצם זה רק אם הערכים X, Y הם אותו דבר? כי רשום ע"י N-1 לחיצות
כלומר (shake_hands(“Uranus”, “Helium”, 1) זה True או Flase?