ככל הנראה טעות הקלדה במחברת הסיכום

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


גם ההסבר של הדוגמא טוען שגם במקרה השני וגם במקרה השלישי הפונקציה מקבלת. האם יש טעות הקלדה? או שלא הבנתי משהו?
תודה מראש

אתה צודק זאת אכן טעות, היא מופיעה באשכול התיקונים של השבוע הרלוונטי :slight_smile:

3 לייקים

תודה! ומכיוון שאני כבר בשוונג אשאל שאלה קצרה נוספת
ברשימת המעברים transitions לא מובן לי, מדוע יש בכלל את המצב הפותח q1. הרי אנחנו הגדרנו שהמצב ההתחלתי הוא q0. האם מדובר בניסיון “לכסות” את כול סוגי המעברים האפשריים, כאשר בפועל הקוד שאכתוב צריך לזרוק את המצב הזה לפח ולעבוד רק עם המצב ההתחלתי שהוגדר? אחלה יום!

מעתיקה מתוך ההסבר במחברת:

הפסקה השנייה תמיד תראה כך:
הפסקה תמיד תפתח במילה Transitions:, ואחריה רשימה של כללי מעבר.
כל כלל מעבר מורכב מהמצב ממנו יוצאים, המצב אליו מגיעים ומה הקלט ש"מפעיל" את המעבר.
השורה תכתב באופן הבא, כאשר X הוא המצב ממנו יוצאים, Z הוא המצב אליו מגיעים ו־Y היא רשימת הקלטים שמפעילה את מצב המעבר:
X: Y -> Z

לייק 1

למיטב הבנתי, תחת “start” בקובץ המצורף הגדרת שהמצב ההתחלתי הוא q0.

אוטומט סופי דטרמיניסטי - אומר שיש אפשרות מעבר אחת עבור קבוצת אותיות בשפה. (הכוונה שהיא שלמשל עבור 3 לא תוכלי לעבור לשני מצבים שונים אלא רק למצב אחד)
(המעברים מתבצעים עבור “אותיות” השפה של האוטומט במקרה הזה מספרים בין 0 ל 9 )

כלומר ברשימת המצבים יש לך עבור כל אות בשפה מצב מסויים - לאיזה מצב הוא עובר.
במקרה שלנו לq1 יש שתי אופציות של מעבר - עבור שתי קבוצות של מספרים.

כנל עבור q0 במקרה הזה.

המצב ההתחלתי במקרה הזה הוא אכן q0.

לייק 1

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

אוקיי הבנתי את הבעיה, אכן המצב ההתחלתי הוא q0 אבל ההתחלה של transitions לא מבטאת מצב התחלתי אלא מצב קיים

לייק 1

התאור של כל שורה בtransition בא לומר: באיזה מצב אני נמצא - עבור איזה סוג של קלט - אני מגיע למצב אחר.
כלומר העובדה שכתוב q1 בא לומר שמהמצב q1 עוברים למקום אחר עבור קלט מסויים.
אין קשר בין השורות בtransition למה מצב התחלתי.

המצב ההתחלתי מצויין רק בstart

2 לייקים