נתון מערך דו-ממדי board המכיל תווים שהם אותיות ה-abc הקטנות בלבד.
כמו כן נתונה מחרוזת תווים word המכילה מילה.
אנחנו מעוניינים לבדוק אם ניתן להרכיב את המילה word במסלול במערך board בהתאם לכללים הבאים:
לדוגמה:
אם המערך הדו-ממדי board הוא זה:
| 0 | 1 | 2 | 3 | 4 | |
| 0 | x | s | u | b | o |
| 1 | t | h | h | e | r |
| 2 | e | a | c | j | e |
| 3 | d | l | i | a | a |
| 4 | m | o | c | v | d |
| 5 | a | b | n | a | k |
את המחרוזות "java" ו-"shalom" אפשר להרכיב לפי תנאי המסלולים. (המסלולים מסומנים במערך)
את המחרוזות "bread" ו-"teacher" אי אפשר להרכיב לפי תנאי המסלולים. במחרוזת "bread" (שמתחילה באות 'b' שנמצאת במקום board[0][3]) אי אפשר לעבור מ-'b' ל-'r' כי זה באלכסון, ובמחרוזת "teacher" (שמתחילה באות 't' שנמצאת במקום board[1][0]) יש יותר מפניה אחת.
בהינתן המערך הדו-ממדי board מלא באותיות לטיניות קטנות בלבד, ומחרוזת תווים word, יש להחזיר true אם אפשר להרכיב את word כמסלול במערך board לפי התנאים, ו-false אחרת.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
abc) וגם במחרוזת יש אותיות קטנות בלבד.null.String מותר להשתמש אך ורק בשיטות charAt ו-length.board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "java"
true
הסבר: המחרוזת "java" ניתנת להרכבה במערך: j נמצאת ב-(2,3), a ב-(3,3), v ב-(4,3), a ב-(5,2). המסלול תקין - כל מעבר הוא בכיוון אחד (למטה, למטה, שמאלה) עם שינוי כיוון אחד בלבד.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "shalom"
true
הסבר: המחרוזת "shalom" ניתנת להרכבה במערך: s ב-(0,1), h ב-(1,1), a ב-(2,1), l ב-(3,1), o ב-(4,1), m ב-(4,0). המסלול הולך למטה ואז שמאלה - שינוי כיוון אחד בלבד.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "bread"
false
הסבר: המחרוזת "bread" מתחילה באות 'b' שנמצאת במקום (0,3). אבל כדי להמשיך ל-'r' צריך ללכת באלכסון, וזה אסור לפי הכללים.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "teacher"
false
הסבר: המחרוזת "teacher" מתחילה באות 't' שנמצאת במקום (1,0). כדי להמשיך ל-'e' נלך למטה ל-(2,0), ואז ל-'a' ב-(2,1) ימינה - אבל זה כבר שינוי כיוון שני, ויש יותר מפניה אחת בסה"כ.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "her"
true
הסבר: המחרוזת "her" מתחילה ב-'h' ב-(1,2), ואז 'e' ב-(1,3) ימינה, ואז 'r' ב-(1,4) ימינה - כיוון אחד בלבד, ללא שינוי כיוון.
board = [['a', 'b'], ['c', 'd']], word = "abc"
false
הסבר: המחרוזת "abc" - מתחילה ב-'a' ב-(2,1), ואז 'b' ב-(5,1)? המרחק גדול מדי. אין מסלול רציף תקין עם לכל היותר שינוי כיוון אחד.
board = [['a', 'b'], ['c', 'd']], word = "ab"
true
הסבר: המחרוזת "ab" מתחילה ב-'a' ב-(0,0), ואז 'b' ב-(0,1) ימינה - כיוון אחד בלבד, תקין.
board = [['a', 'b'], ['c', 'd']], word = "abd"
true
הסבר: המחרוזת "abd" - 'a' ב-(0,0), 'b' ב-(0,1) ימינה, 'd' ב-(1,1) למטה - שינוי כיוון אחד, תקין.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "x"
true
הסבר: המחרוזת "x" היא תו בודד שנמצא ב-(0,0). מסלול באורך 1 תמיד תקין.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "zzz"
false
הסבר: המחרוזת "zzz" לא קיימת במערך כלל - האות 'z' לא מופיעה.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "ore"
true
הסבר: המחרוזת "ore" - 'o' ב-(4,1), 'r' אין שכן 'r'. ננסה 'o' ב-(0,4), ואז... אין מסלול תקין עם לכל היותר פניה אחת.
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "dlmo"
false
הסבר: המחרוזת "dlmo" - 'd' ב-(3,0), 'l' ב-(3,1) ימינה... אין 'm' שכן ל-'l'. ננסה 'd' ב-(4,4), אין מסלול. ננסה מסלול אחר: 'd' ב-(3,0), למטה ל-'m' ב-(4,0), 'l' לא שכן. לא תקין.
קלט:
board = [['x', 's', 'u', 'b', 'o'], ['t', 'h', 'h', 'e', 'r'], ['e', 'a', 'c', 'j', 'e'], ['d', 'l', 'i', 'a', 'a'], ['m', 'o', 'c', 'v', 'd'], ['a', 'b', 'n', 'a', 'k']], word = "java"
הפלט המבוקש:
true