לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 14-06-2007, 15:17
צלמית המשתמש של maxim k
  maxim k maxim k אינו מחובר  
 
חבר מתאריך: 05.08.06
הודעות: 2,860
שלח הודעה דרך MSN אל maxim k
אתגר מספר 4 - הצופן התנ"כי

כבר הרבה הרבה זמן לא היה אתגר, אז בשעה טובה הגיע הזמן לאתגר חדש

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

דוגמא

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

שימו לב שכשמחפשים מחרוזת עם רווח בתוכה - מתעלמים ממנו. כלומר חיפוש "אניה" זהה לחיפוש "אנ יה"

בונוס
אלו לא סעיפי חובה, אבל ביצוע שלהם יקנה נקודות נוספות:

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


קוד PHP:
 $a "לאמה, נהרי ואהובה";
$b "אניה";
byblicSearch($a,$b);
 
/* יחזיר מערך כזה

array(1,6,9,13)

כי האות 'א' מופיעה בתו מספר 1 בטקסט (כי תוים מתחילים לספור מ-0)
האות 'נ' מופיעה בתו מספר 6 בטקסט
האות 'י' מופיעה בתו מספר 9 בטקסט
והאות 'ה' מופיעה בתו מספר 13 בטקסט

  */ 




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


הניקוד
ישנן 16 נקודות סה"כ:
6 נקודות על ביצוע המשימה
5 נקודות על יעילות (היעילות תימדד על פי זמן הריצה)
3 נקודות על בונוס (ראה סעיף בונוס)
2 נקודות על קריאות הקוד (בין היתר יש להוסיף תיעוד. לא לכתוב יותר מדי ולא לכתוב מעט מדי. מספיק תיעוד של תפקיד המשתנים ופונקציות העזר(אם יש) ותיעוד של חלקים ספציפיים בקוד שאינם אינטואיטיביים)

הפרסים
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילהמקום ראשון: צל"ש לחודש!
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה מקום שני: צל"ש לשבועיים!
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה מקום שלישי: צל"ש לשבוע!

לוח זמנים
האתגר נפתח היום (14/6/07) ונסגר בעוד חודש (14/7/07)
יש לכם הרבה זמן, ואני מקווה שכולכם תשתתפו!

טיפים והצעות
אני ממליץ להשתמש בהרחבה mb_string, מכיוון שבקידוד UTF-8 פונקציות המחרוזת הרגילות לא תמיד תעבודנה כרגיל.

עבודה עם mb_string כמעט זהה לעבודה עם פונקציות המחרוזת הרגילות, ככה שגם אלו מכם שאינם מכירים את ההרחבה יוכלו להשתמש בה בקלות


אתם לא מרוצים מהפתרון שלכם? לא נורא! שלחו אותו בכל זאת. תמיד ייתכן שיש מישהו עם פתרון גרוע משלכם
כל שאלה או תהייה בנוגע לאתגר תכתב בעוגן הזה

בהצלחה לכולם!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #35  
ישן 09-07-2007, 18:28
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
שאלה נוספת....:
בתגובה להודעה מספר 1 שנכתבה על ידי maxim k שמתחילה ב "אתגר מספר 4 - הצופן התנ"כי"

האם תכניסו מחרוזות לבדיקה שאורכן 0 או 1 וכדו'? סתם ליתר ביטחון...האם תנסו לבדוק אם הפונקציה תיתן שגיאה טכנית (לדוגמא שהפונקציה נותנת שגיאה) בווריאציות שונות?

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

אבל האם צריך לעשות זאת גם במחרוזת שאותה מחפשים בתוך הטקסט? או שצריך לסנן אך ורק רווחים רגילים?
כלומר את ה-return, סימני ניקוד והגייה, מספרים וכדו' צריך "לסנן"?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #44  
ישן 12-07-2007, 10:34
  רמי ד רמי ד אינו מחובר  
 
חבר מתאריך: 07.10.06
הודעות: 1,795
כמה שאלות:
בתגובה להודעה מספר 1 שנכתבה על ידי maxim k שמתחילה ב "אתגר מספר 4 - הצופן התנ"כי"

1. איך מתבצעת השוואת זמני הריצה של האלגוריתמים? הרי:

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

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


2. מה נותן הצל"ש? כתבתי אלגוריתם מעולה אבל תהיתי פתאום מה בעצם מרוויחים מלפרסם אותו...(חוץ מביקורת חיצונית, אני יודע. אבל הוא באמת אלגוריתם עם מצב לנצח) (-:
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #45  
ישן 12-07-2007, 11:30
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
כמה תשובות:
בתגובה להודעה מספר 44 שנכתבה על ידי רמי ד שמתחילה ב "כמה שאלות:"

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

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

ג. עושים את זה בשביל הכיף, תהנה

נערך לאחרונה ע"י ישראל K בתאריך 12-07-2007 בשעה 11:35.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 20:40

הדף נוצר ב 0.09 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר