התגובות שלי בפורום
-
מאתתגובות
-
yoav zilbermanמשתתף
יפה מאוד!!
yoav zilbermanמשתתףלירן שלום!
לא ניתן להשתמש במודולו אלא רק בחילוק וחיבור.
אולם פתרונך נכון ויפה!
נסה למצוא פתרון ללא מודולו.
yoav zilbermanמשתתףאפשר גם :
x=x/2+(x+1)%2
להשתמע,
יואב
yoav zilbermanמשתתףלירן שלום!
נסה גם לפתור את החידות האחרות שפירסמתי:
את חידת הסדרה, חידה 4, חידה בג'אווה (אם אתה יודע, אם לא אוכל לתרגם לך לשפה שאתה כן יודע מלבד אסמבלי).
yoav zilbermanמשתתףאף אחד לא הצליח??
אם הצלחת כתבו את הדרך, זה חידה מעניינת כדאי לפחות לנסות…
חג שמח
yoav zilbermanמשתתףלירן שלום רב!
אני ממש מצטער, הייתי בטוח שכתבת בג'אווה.
אם כך הפתרון שלך בסדר!
לגבי ההסבר לפיתרון שהצעתי:
טילדה היא אינה אופרטור לא אלא אופרטור שמחזיר את המספיר השלילי מהשארית וקטן ממנו ב-1 למשל:
~(5%2)-2)
~(19%4)-4)
לכן מכיוון שהתוכנית הראשונית אומרת:
אם מספר זוגי- חלק איקס ב-2 והוסף 1
ואם מספר אי זוגי- הכנס איקס לחלק ל-2
אזי אם נכניס טילדה נדע שכאשר מספר זוגי יש לנו חסר של מינוס אחד ואז איקס לחלק ל-2 ועוד 2 ייתן קלט רצוי
אם מספר אי זוגי טילדה תעשה מינוס 2 ולכן גם כן איקס לחלק ל-2 ועוד 2 יהיה טוב.
אך ארשה לי להציע את הפתרון המיוחל שהוא יותר פשוט מהאחרים:
x=x/2+1-(x%2)
מה אתה חושב??
yoav zilbermanמשתתף8?
yoav zilbermanמשתתףתיקון ללמעלה:
x=x/2+2+~(x%2)
yoav zilbermanמשתתףהנה פתרון אחד לייעול עם טילדה:
x=x+2+~(x%2)
(חשוב למה)
נסה לחשוב על פיתרון נוסף לייעול
yoav zilbermanמשתתףלירן שלום רב!
קודם כל, כל הכבוד על הניסיונות.
הרצה מהירה בג'אווה תראה לך שאופרטור "הטילדה" מחזיר מינוס 1 או מינוס 2 (מינוס 1 לזוגיים כאופציה שונה ל-מינוס 2 לאי זוגיים), אופרטור ה"לא" כפי שאני מכנה אותו (ולא הרעיון הלוגי) אינו מתקיים על ביטוי חישוב כפי שכבר ציינתי.
נסה לחשוב על הצבה ללא שימושים באף אופרטורים , הפתרון יותר פשוט מכפי שנדמה לך.
חג שמח וכשר,
יואב זילברמן
yoav zilbermanמשתתףאין משמעות לאופרטור "לא" עבור ביטוי חישוב ולא השוואתי או בוליאני.
אך אתה קרוב מאוד, נסה לחשוב עוד קצת.
בברכה,
יואב
yoav zilbermanמשתתףבתוכנה מעלה משום מה המעבד החליף את מקום איי במערך בסמל הנורה , בכל מקרה עבור אותו עיקרון שרשמתי הנה פלט לסדרה בת מאה איברים:
1,3,1,2,1,3,2,3,1,2,1,3,1,2,3,2,1,3,1,2,1,3,2,3,1,3,2,1,2,3,1,2,1,3,1,2,3,2,1,2,3,1,3,2,3,1,2,3,2,1,3,1,2,1,3,2,3,1,3,2,1,2,3,1,3,2,3,1,2,1,3,1,2,3,1,3,2,1,3,1,2,3,2,1,2,3,1,3,2,1,2,3,2,1,3,2,3,1,3,2,
1=אדום
2=ירוק
3=צהוב
האם זה נכון?
בברכה,
יואב זילברמן!
yoav zilbermanמשתתףכתבתי תוכנית קטנה שתמצא את המבוקש, בשביל למצוא עבור יותר איברים פשוט יש לשנות את גודל המערך ואת תנאי העצירה של הלולאה החיצונית ביותר.
העיקרון שלי הוא נורא פשוט: כל צבע מקבל מספר שמסמל אותו- אדום=1, ירוק=2, צהוב
אני מתנצל מראש על כך שהתוכנה לא יעילה לחלוטין וניתן לקצר את זמן פעולתה לכדי שורש שלישי!
:
import java.util.*;
public class subsequence
{
static Scanner s=new Scanner(System.in);
public static void main(String[]args)
{
int[]a=new int[100];
int mone=0;
boolean bodek=true;
int index=3;
a[0]=1;
int x=1;
for(int i=1;i<=99;i++)
{
x=1;
index=3;
mone=0;
bodek=true;
a=(int)(Math.random()*3)+1;
while(a==a[i-1])
{
a=(int)(Math.random()*3)+1;
}
while(x==1)
{
x=0;
while(bodek==true)
{
if(i-index>=0)
{
{
for(int j=i-index;j<=i-index+((index-1)/2);j++)
{
if(a[j]==a[j+(index+1)/2])
{
mone++;
}
}
while (mone==(index+1)/2)
{
mone=0;
a=(int)(Math.random()*3)+1;
x=1;
while(a==a[i-1])
{
a=(int)(Math.random()*3)+1;
}
for(int j=(i-index);j<=(i-index+((index-1)/2));j++)
{
if(a[j]==a[j+((index+1)/2)])
{
mone++;
}
}
}
}
}
else
if(i-index<0)
{
bodek=false;
}
index=index+2;
mone=0;
}
}
}
for(int i=0;i<=99;i++)
{
System.out.print(a+",");
}
}
}
בברכה,יואב זילברמן
yoav zilbermanמשתתףלא אמרתי להקטין מימדי תיבה , אלא אמרתי לבנות תיבה שתחסום את התיבה המוכלת וגם פאותיה יקבילו לתיבה המכילה.
הרעיון שלי הוא פשוט:
1. סמן זווית בין קודקוד של תיבה מוכלת לבין פאה של תיבה מכילה
2. המשך בסימון הזוויות כך שכל הזוויות שבין הקודקודים והפאות יקבלו סימון
3.סמן אורך ועומק של תיבה מוכלת בנעלמים
4. בטא אורך ועומק של תיבה מכילה באמצעות טריגו
5. מתקבל כי אורך ועומק של תיבה מכילה שווה למכפלת אורך ועומק של תיבה מוכלת בסכום סינוז וקוסינוס של זווית שסומנה
6. קל להראות שסכום סינוס וקוסינוס גדול מ-1
7. ריבוע הסכום שצויין בסעיף למעלה גדולה מ-1 משום שהוא מורכב מסינוס בריבוע ועוד קוסינוס בריבוע ועוד משהוא ואם ריבוע גדול מ-1 גם שורש גדול מ-1.
8. גובה של תיבה מוכלת בהכרח קטן משל תיבה מכילה מעצם הגדרת ההכלה.
9. מש"ל
האם עכשיו זה ברור יותר?
yoav zilbermanמשתתףהבנתי אותך, אתה צודק-הנחת יסוד מוטעית שלי.
לתיבה יכולים להיות שני מצבים כלליים:
1. כל קודקודי התיבה המוכלת נוגעים בדפנות התיבה המכילה
2. לא כול הנ"ל נוגעים
אם נוכיח כי 1 נכון בהכרח אז גם 2 נכון בהכרח משום שעבור כל מצב 2 ניתן למצוא תיבה פנימית וכך הלאה עד שיתקיים 1 או לחליפין נקבל תיבה פנימית מוכלת מקבילה למכילה שבהכרח תקיים את התנאי.
נוכיח את 1:
אם החסום תיבה בתוך תיבה נסמן זווית בין אחד הקודקודים של התיבה המוכלת לדופן של התיבה המכילה. אם נמשיך עם סימון הזווית ונסמן אורך ורוחב של תיבה מוכלת בנעלמים, בעזרת טריגו נבטא גם אורך ורוחב של תיבה מכילה, מתקבל כי סכום של סינוס זווית וקוסינוס זווית הכופל את סכום מימדי האורך והעומק של תיבה מוכלת הוא סכום מימדי האורך והעומק של תיבה מכילה. סכום של סינוס וקוסינוס ניתן לבטא כשורש של ריבוע של השניים. אם נפתח סוגריים נקבל כי הביטוי הוא סינוס בריבוע ועוד קוסינוס בריבוע ועוד 2 סינוס קוסינוס השניים הראשונים- סכום אחד לפי זהות טריגונומטרית לכן כל הביטוי גדול מ-1 ולכן השורש שלו גדול מ-1 ולפיכך סכום מימדי האורך והעומק גדולים מ-1, הגובה של תיבה מוכלת בהכרח קטן מתיבה מכילה בשל הגדרת החסימה ולפיכך הוכחנו את הדרוש שכן סכום המימדים של התיבה המכילה בהכרח גדול משל התיבה המוכלת.
האם הפתרון לשביעות רצונך?
-
מאתתגובות