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