שאלה - מיפוי חחע מזוג מספרים לאחד

kikkler

New member
שאלה - מיפוי חחע מזוג מספרים לאחד

n הוא שלם בין 0 ל-N-1 m הוא שלם בין 0 ל- M-1. אני רוצה לקחת את הזוג <n.m> ולהחזיר בצורה חח"ע מס' בין 0 ל- NxM - 1. אם N היה שווה ל-M, למשל, התשובה הטריויאלית הייתה n * N + m. הבעיה היא שהם שונים, וכל דבר שאני חושב עליו נכשל במבחן החח"עיות.. יש למישהו רעיון לכיוון?
 

shirbi

New member
למה שלא תכניס את האפשרויות לטבלה

שמספר העמודות שלה הוא N ומספר השורות שלה הוא M, ואז להחזיר את האיבר הנמצא בעמודה ה n בשורה הm?
 

kikkler

New member
כי זה קצת מכוער מימושית..

הנה עוד רעיון שהיה לי - גם הוא לא הכי יפה..
 

kikkler

New member
מצטער על חוסר ההחלטיות שלי

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

vinney

Well-known member
הN וM ידועים?

אם לא - קצת תורת המספרים: תשתמש בכפולות ראשוניים. אם כן - התשובה של שיר מצויינת, כי אם N וM ידועים, אז הפתרון הוא חד-חד-ערכי (=> קיימת פונקציה הפכית).
 

kikkler

New member
ידועים

פונקציה הופכית קיימת, אבל בשביל למצוא אותה צריך לסרוק את המערך.. בקיצור הייתי מעדיף O(1) space/time בשני הכיוונים. רעיון שקיבלתי כרגע ואני צריך עוד לחשוב עליו -
i = (N > M) ? m * N + n : n * M + m​
 

vinney

Well-known member
ברור שזה O של 1

זה הרעיון שקיבלת הרגע? שיר כתב לך את זה ב22:42
 

kikkler

New member
אולי אם מסתכלים על ההודעה

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