ABA


"תרגיל בג'אווה שמשגע אותי"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21921 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21921
jon snow לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.7.13
655 הודעות, 1 פידבק
   18:19   22.01.17   
אל הפורום  
  תרגיל בג'אווה שמשגע אותי  
 
   מקבלים מספר N וצריך להחזיר כמה פעמים הספרה 1 מופיעה בכל המספרים שסופרים עד N כולל.
לדוגמא N=13 אז המודה תחזיר 6 כי: 1,2,3,4,5,6,7,8,9,10,11,12,13 יש את 1,10,11,12,13
N יכול להיות בין 1-1000000


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא יודע כמה זה יעיל אבל מה שהייתי עושה זה Bonito  22.01.17 18:31 1
  מכתב Crazy Lion  22.01.17 20:51 2
     זה יעבוד רק עד 100 jon snow 22.01.17 21:31 5
  תהפוך לstring ותבדוק עם indexOf Mr Andersson 22.01.17 21:00 3
  אני הייתי משתמש בקומבינטוריקה לפי אורך N (מספר ספרות) ldan192  22.01.17 21:01 4
  זה הפתרון שאני עשיתי (זה היה במבחן היום) jon snow 22.01.17 21:36 6
  בטוח זה קיים גם ב-java, -UC- 23.01.17 16:45 7
  לא הכי פשוט לחלק ב10 וכל פעם לבדוק את המודולו? The Slayer  23.01.17 17:18 8
     לפי השיטה שלך, המספר 10114 יחזיר 4 (לא 1) דוקטור חייק  23.01.17 19:38 9
         מחזיר 3 (אם זה מה שהבנתי) The Slayer  23.01.17 20:28 10
             צודק, חשבתי שהתכוונת למשהו אחר, כנראה שזה מהעייפות של אחרי העבודה :) דוקטור חייק  24.01.17 06:17 11
             זה מה גם חשבתי אבל נראה לי שבגאווה יש בעיה לבצע את זה ככה לא? Crazy Lion  24.01.17 07:23 12
     סיבות: -UC- 24.01.17 15:55 13
         אני חושב שזה לא יעיל ומבחינת קריא גם פחות The Slayer  24.01.17 21:44 15
             אוקיי עכשיו זה ברור. יפה jon snow 25.01.17 07:20 17
             אחלה פתרון -UC- 25.01.17 09:21 18
     אם נגיד המספר 100000 jon snow 24.01.17 17:07 14
         יוסיף 4 The Slayer  24.01.17 21:46 16

       
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   18:31   22.01.17   
אל הפורום  
  1. לא יודע כמה זה יעיל אבל מה שהייתי עושה זה  
בתגובה להודעה מספר 0
 
   יוצר לולאה של כל המספרים ואז מפרק כל מספר לARRAY ומריץ על הARR הזה עוד לולאה שבודקת אם כל מספר שווה ל1, אם כן עושה ++ לספירה הראשית וזהו.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Crazy Lion  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.7.02
19328 הודעות, 9 פידבק
   20:51   22.01.17   
אל הפורום  
  2. מכתב  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 22.01.17 בשעה 20:58 בברכה, Crazy Lion
 
משהו שחשבתי ככה בשליפה , שוב פעם בלי להסתכל על יעילות:
תעשה לולאה מ 1 עד N
כל פעם תיקח את המונה של הלולאה שזה בעצם מספר ותפרק לו את ספרה ע"י חילוק ב 10 ואז תבדוק אם זה הספרה 1 , אם כן , תוסיף +1 לקאונטר
בסוף הלולאה תציג את הקאונטר.
הבעיה שזה דיי איטי בגלל שאם ה N הוא מיליון אז נראה לי תיהיה קריסה.

*אני לא זוכר בגאווה איך נהוג לפרק מספר לגורמים .

מה אתה ניסת לעשות?

מילוי סקרים בתשלום למי שמעונין ,
משלם בזמן וקל להגיע ליעד :
https://goo.gl/EJh6V2


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
jon snow לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.7.13
655 הודעות, 1 פידבק
   21:31   22.01.17   
אל הפורום  
  5. זה יעבוד רק עד 100  
בתגובה להודעה מספר 2
 
   אחרי 100 נגיד 151%10 ייתן לי 1 אבל אני צריך להוסיף לקאונטר 2 שלא נדבר על נגיד 11110


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Mr Andersson
חבר מתאריך 19.3.02
6234 הודעות, 1 פידבק
   21:00   22.01.17   
אל הפורום  
  3. תהפוך לstring ותבדוק עם indexOf  
בתגובה להודעה מספר 0
 
  

http://i60.tinypic.com/35aowg8.jpg


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:01   22.01.17   
אל הפורום  
  4. אני הייתי משתמש בקומבינטוריקה לפי אורך N (מספר ספרות)  
בתגובה להודעה מספר 0
 
תקבל סיבוכיות באורך N, או (log(N


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
jon snow לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.7.13
655 הודעות, 1 פידבק
   21:36   22.01.17   
אל הפורום  
  6. זה הפתרון שאני עשיתי (זה היה במבחן היום)  
בתגובה להודעה מספר 0
 
  

int numberOfOnes = 0;
for (int i = 0 ; i == n ; i++){
String temp = Integer.toString(i);
for(int j = 0 ; j < temp.length() ; j++){
if(Character.getNumericValue(temp.charAt(i) == 1 ){
numberOfOnes++;
}
}
}



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
-UC- לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
21922 הודעות, 1 פידבק
   16:45   23.01.17   
אל הפורום  
  7. בטוח זה קיים גם ב-java,  
בתגובה להודעה מספר 0
 
ערכתי לאחרונה בתאריך 23.01.17 בשעה 16:52 בברכה, -UC-
 
ב-c# פשוט הייתי הופך את המספר למחרוזת ואז חותך(split) לפי "1" ומחסר 1.
צריך רק לקחת בחשבון שעבור המחרוזת "1" זה לא יעבוד, אבל את זה אתה יכול לחשב מראש - אם N>10 אז ברור ש-1 מופיע שם, אז לא צריך לחשב עבורו. אתה אוטומטית יכול להתחיל לרוץ על הלולאה אחרי 10.
זו הכמות הופעות של האיבר.


public int CountOnes(int N)
{
int totalOccurenceOfOnes = N > 1 ? 1 : 0;

for (var curretnNumber = 10; curretnNumber < N; curretnNumber++)
{
string curretnNumberString = curretnNumber.ToString();
int currentOccurenceOfOnes = curretnNumberString.Split('1').Length - 1;

if (currentOccurenceOfOnes > 0)
{
totalOccurenceOfOnes += currentOccurenceOfOnes;
}
}

return totalOccurenceOfOnes;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Slayer 
חבר מתאריך 29.4.03
7959 הודעות, 2 פידבק
   17:18   23.01.17   
אל הפורום  
  8. לא הכי פשוט לחלק ב10 וכל פעם לבדוק את המודולו?  
בתגובה להודעה מספר 0
 
   אם המודולו 1 פשוט מוסיפים אחד לקאונטר
לא הבנתי למה להמיר למחרוזת


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   19:38   23.01.17   
אל הפורום  
  9. לפי השיטה שלך, המספר 10114 יחזיר 4 (לא 1)  
בתגובה להודעה מספר 8
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Slayer 
חבר מתאריך 29.4.03
7959 הודעות, 2 פידבק
   20:28   23.01.17   
אל הפורום  
  10. מחזיר 3 (אם זה מה שהבנתי)  
בתגובה להודעה מספר 9
 
   כל פעם לוקחים את המודולו ב10 ומשווים ל1
4 לא לוקחים
1 לוקחים
1 לוקחים
0 לא לוקחים
1 לוקחים

בסה"כ 3
ואת זה מוסיפים לקאונטר הכללי

@דוקטור חייק@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
דוקטור חייק  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.12.06
40783 הודעות, 13 פידבק
   06:17   24.01.17   
אל הפורום  
  11. צודק, חשבתי שהתכוונת למשהו אחר, כנראה שזה מהעייפות של אחרי העבודה :)  
בתגובה להודעה מספר 10
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Crazy Lion  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.7.02
19328 הודעות, 9 פידבק
   07:23   24.01.17   
אל הפורום  
  12. זה מה גם חשבתי אבל נראה לי שבגאווה יש בעיה לבצע את זה ככה לא?  
בתגובה להודעה מספר 10
 
   בפייתון אני חושב שזה היה עובד בלי בעיה.

מילוי סקרים בתשלום למי שמעונין ,
משלם בזמן וקל להגיע ליעד :
https://goo.gl/EJh6V2


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
-UC- לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
21922 הודעות, 1 פידבק
   15:55   24.01.17   
אל הפורום  
  13. סיבות:  
בתגובה להודעה מספר 8
 
1. יעילות
2. קוד קריא יותר(!)

תעיף מבט על הקוד שצירפתי בתגובה שלי....


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Slayer 
חבר מתאריך 29.4.03
7959 הודעות, 2 פידבק
   21:44   24.01.17   
אל הפורום  
  15. אני חושב שזה לא יעיל ומבחינת קריא גם פחות  
בתגובה להודעה מספר 13
 
   לא יעיל כי בכל מקרה צריך לעבור על מספר הספרות במספר
ומבחינת זיכרון
מספר מטיפוס int תופס בזיכרון 4 בתים
כל תו במחרוזת תופס בית אחד (בתקן ASCII)
כך שאתה רק יכול לגזול יותר מהזיכרון
ובכל מקרה קיבלת את המשתנה בתור int

קוד קריא?
נגיד בc הייתי כותב את כל התכנית


int num = 13;
int counter = 0;
for (int i = 1; i < num + 1; i++)
for (int n = i; n > 0; n = n / 10)
if (n % 10 == 1)
counter++;

cout << counter << endl;

@-UC-@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
jon snow לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.7.13
655 הודעות, 1 פידבק
   07:20   25.01.17   
אל הפורום  
  17. אוקיי עכשיו זה ברור. יפה  
בתגובה להודעה מספר 15
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
-UC- לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
21922 הודעות, 1 פידבק
   09:21   25.01.17   
אל הפורום  
  18. אחלה פתרון  
בתגובה להודעה מספר 15
 
אני חשבתי יותר באופן אוניברסלי, אבל בתכלס כדי למנות אחדים בתוך מספר אז הפתרון שלך סבבה לגמרי ובהחלט עדיף ויעיל יותר משלי....

@The Slayer@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
jon snow לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.7.13
655 הודעות, 1 פידבק
   17:07   24.01.17   
אל הפורום  
  14. אם נגיד המספר 100000  
בתגובה להודעה מספר 8
 
   מתישהו יש 11110

11110%10 = 0

וצריך להוסיף 4 לקאונטר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
The Slayer 
חבר מתאריך 29.4.03
7959 הודעות, 2 פידבק
   21:46   24.01.17   
אל הפורום  
  16. יוסיף 4  
בתגובה להודעה מספר 14
 
   כנראה לא הבנת אותי

רשמתי קוד בתגובה 15

@jon snow@


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net