voguemaster
New member
אתגר קטן - גדול
כמו שאתם יודעים, באפליקציות מסוימות יש כל מיני נואנסים שקשורים בהצגת טקסט. דוגמאות הן WRAPPING וכיוון נכון של פיסקאות (ע"ע אלגוריתם BIDI). הצורה שבה כותבים את האלגוריתם בד"כ קובעת אם מה שרואים על המסך נראה "נכון". אז הנה נתקלתי בבעיה (פתרתי אותה) ואני רוצה לשים אותה פה בתור מיני-אתגר קטן למי שרוצה. כמו שחלקכם בוודאי יודעים, אלגוריתם WRAP סטנדרטי מוסיף מילים לשורה כלשהי עד שהוא מגלה שהוספת המילה הבאה תחרוג מהאורך המקסימלי של השורה (שזה תלוי בגודל שאפשר להציג בתוכו, בין אם זה פקד, טבלה ב-HTML וכד'). נתונה שורת טקסט באורך לא ידוע. ניתן להניח שאת השורה רוצים להציג בדף HTML ולכן הדפדפן יידע לשבור לבד את השורה לכמה שורות כי מילים מופרדות ע"י רווחים ביניהן (רמז..). לעומת זאת, יכול להיווצר מצב שבו יש מילה או קטע טקסט רציף שארוך יותר מהאורך הניתן להצגה (תניחו 80 תווים לדוגמא). הבעיה שיש להרבה אפליקציות היא שהם לא שוברים את הקטע הארוך ההוא בכלל. דוגמאות: MSN Messenger. נסו לכתוב שורה ארוכה מאוד. כל עוד יש בה רווחים היא נכנסת יפה לחלון. אם אחת המילים תהיה ארוכה מאוווווד (נניח 160 או יותר תווים), היא לא נשברת והאפליקציה פותחת פס גלילה אופקי. המשימה שלכם (באם תחליטו לקבל אותה) - למצוא דרך לשבור את השורה הזדונית כך שתוצג כולה במלואה כמו שצריך כאשר חלקים רציפים נשברים בהתאם לאורך המקסימלי שציינתי. בנוסף, קטע רציף יכול להיות באורך לא ידוע כך שהוא יכול לתפוס כמה "שורות" בעצמו (אם הוא 200 תווים הוא תופס שתי שורות וקצת). כמובן שקטע רציף יכול להופיע בכל מקום בתוך השורה הזדונית, בין מילים רגילות ותמימות לחלוטין. רצוי מאוד שאחרי ששוברים קטע רציף ארוך שכזה, ההמשך יבוא מייד אח"כ. (דגש על *רצוי*).
כמו שאתם יודעים, באפליקציות מסוימות יש כל מיני נואנסים שקשורים בהצגת טקסט. דוגמאות הן WRAPPING וכיוון נכון של פיסקאות (ע"ע אלגוריתם BIDI). הצורה שבה כותבים את האלגוריתם בד"כ קובעת אם מה שרואים על המסך נראה "נכון". אז הנה נתקלתי בבעיה (פתרתי אותה) ואני רוצה לשים אותה פה בתור מיני-אתגר קטן למי שרוצה. כמו שחלקכם בוודאי יודעים, אלגוריתם WRAP סטנדרטי מוסיף מילים לשורה כלשהי עד שהוא מגלה שהוספת המילה הבאה תחרוג מהאורך המקסימלי של השורה (שזה תלוי בגודל שאפשר להציג בתוכו, בין אם זה פקד, טבלה ב-HTML וכד'). נתונה שורת טקסט באורך לא ידוע. ניתן להניח שאת השורה רוצים להציג בדף HTML ולכן הדפדפן יידע לשבור לבד את השורה לכמה שורות כי מילים מופרדות ע"י רווחים ביניהן (רמז..). לעומת זאת, יכול להיווצר מצב שבו יש מילה או קטע טקסט רציף שארוך יותר מהאורך הניתן להצגה (תניחו 80 תווים לדוגמא). הבעיה שיש להרבה אפליקציות היא שהם לא שוברים את הקטע הארוך ההוא בכלל. דוגמאות: MSN Messenger. נסו לכתוב שורה ארוכה מאוד. כל עוד יש בה רווחים היא נכנסת יפה לחלון. אם אחת המילים תהיה ארוכה מאוווווד (נניח 160 או יותר תווים), היא לא נשברת והאפליקציה פותחת פס גלילה אופקי. המשימה שלכם (באם תחליטו לקבל אותה) - למצוא דרך לשבור את השורה הזדונית כך שתוצג כולה במלואה כמו שצריך כאשר חלקים רציפים נשברים בהתאם לאורך המקסימלי שציינתי. בנוסף, קטע רציף יכול להיות באורך לא ידוע כך שהוא יכול לתפוס כמה "שורות" בעצמו (אם הוא 200 תווים הוא תופס שתי שורות וקצת). כמובן שקטע רציף יכול להופיע בכל מקום בתוך השורה הזדונית, בין מילים רגילות ותמימות לחלוטין. רצוי מאוד שאחרי ששוברים קטע רציף ארוך שכזה, ההמשך יבוא מייד אח"כ. (דגש על *רצוי*).