עמוד ראשי מירק סקריפטינג מירק סקריפטינג אתגרים [קל] fbin$ - תוצאות

[קל] fbin$ - תוצאות

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

Ohad
מנהל האתר
[קל] fbin$ - תוצאות
הצטרף: 29 יוני 2010, 16:13
הודעות: 111
פורסם: 21 יולי 2010, 12:10
תיאור:
האתגר הוא להחזיר את המספר העשרוני של מספר בינארי שמתקבל כקלט.
הייתי מציע לכם לקרוא את זה לפני שתשלחו את פתרונכם לאתגר.
לאתגר זה יהיו שני קטוגריות:
  • קודים עם ראגאקס
  • קודים ללא ראגאקס

תחביר:
$fbin(N)

מועד אחרון לשליחה: יום רביעי, 28/7/2010 בשעה 20:00
סוג: הקוד הקצר ביותר מנצח

איסורים:
  • DLLs
  • Sockets
  • COM Objects
  • base$

קלט (אין לבדוק אותו):
  • $1 >= 0
  • $1 יכיל רק 0 ו/או 1

פלט:
  • לפני הפלט לא יופיעו אפסים מיותרים (משמע רק כאשר הקלט הוא 0, אז הפלט יתחיל ב-0)
  • הפלט לא יכיל הודעות שגיאה
  • הפלט יהיה רק מספר

דוגמאות:
$fbin(1101) = 13
$fbin(0) = 0
$fbin(1) = 1
$fbin(1001001) = 73
$fbin(11111111) = 255
$fbin(1111111101) = 1021
$fbin(00001101100) = 108


חוקים:
  • כל משתמש רשאי להגיש שני קודים:
    • קוד עם ראגאקס
    • קוד בלי ראגאקס
    המשתמש רשאי לערוך כל אחד מהקודים הנ"ל פעם אחת (בסה"כ מקסימום 4 שליחות)
  • את הפתרונות יש לשלוח אליי בהודעה פרטית בפורום, כאשר בכותרת מצויין שם האתגר (fbin$) וקטוגריית הקוד (עם ראגאקס או ללא ראגאקס)
  • הקוד חיב לתת תוצאות נכונות ברציפות (קוד שיעבוד בפעם הראשונה ולאחר מכן לא יעבוד יותר - יחשב כפסול)
  • מספרים הבתים יקבע ע"י מונה הבתים של Kol או ע"י מונה הבתים של Bluebus112 (שניהם זהים)

תנאי בדיקה:
  • הקוד יבדק בסקשן האליאסים במירק גירסאת 6.35 נקי
  • הקוד צריך להיסגר בצורה חוקית (זאת אומרת שאם פתחתם סוגר מסולסל } אז אתם חייבים לסגור אותו)

פתרונות (לפי סדר השליחה):
1. TrAsKy
vendetta .2
Ocean .3
Ventox .4
uns .5
ZxoR .6
Nighthawk .7

בהצלחה!

TrAsKy
משתמש רשום
Re: [קל] fbin$
הצטרף: 17 יולי 2010, 16:07
הודעות: 51
פורסם: 21 יולי 2010, 14:53
אתגר נחמד..
הכנתי משהו קטן לבדיקה

alias fbincheck {
  if ($fbin(1101) = 13) echo -a 3OK - $v1
  else { echo -a 4ERROR(1101) }
  if ($fbin(0) = 0) echo -a 3OK - $v1
  else { echo -a 4ERROR(0) }
  if ($fbin(1) = 1) echo -a 3OK - $v1
  else { echo -a 4ERROR(1) }
  if ($fbin(1001001) = 73) echo -a 3OK - $v1
  else { echo -a 4ERROR(1001001) }
  if ($fbin(11111111) = 255) echo -a 3OK - $v1
  else { echo -a 4ERROR(11111111) }
  if ($fbin(1111111101) = 1021) echo -a 3OK - $v1
  else { echo -a 4ERROR(1111111101) }
  if ($fbin(00001101100) = 108) echo -a 3OK - $v1
  else { echo -a 4ERROR(00001101100) }
}

להפעלה
/fbincheck

ZxoR
מנהל גלובאלי
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 21 יולי 2010, 14:55
TrAsKy כתב:
אתגר נחמד..
הכנתי משהו קטן לבדיקה

alias fbincheck {
  if ($fbin(1101) = 13) echo -a 3OK - $v1
  else { echo -a 4ERROR(1101) }
  if ($fbin(0) = 0) echo -a 3OK - $v1
  else { echo -a 4ERROR(0) }
  if ($fbin(1) = 1) echo -a 3OK - $v1
  else { echo -a 4ERROR(1) }
  if ($fbin(1001001) = 73) echo -a 3OK - $v1
  else { echo -a 4ERROR(1001001) }
  if ($fbin(11111111) = 255) echo -a 3OK - $v1
  else { echo -a 4ERROR(11111111) }
  if ($fbin(1111111101) = 1021) echo -a 3OK - $v1
  else { echo -a 4ERROR(1111111101) }
  if ($fbin(00001101100) = 108) echo -a 3OK - $v1
  else { echo -a 4ERROR(00001101100) }
}

להפעלה
/fbincheck

אבל למה לא לעשות לולאה שתבדוק בעזרת $base עד 500 או משהו וזהו :|?
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

TrAsKy
משתמש רשום
Re: [קל] fbin$
הצטרף: 17 יולי 2010, 16:07
הודעות: 51
פורסם: 21 יולי 2010, 14:59
ZxoR כתב:
TrAsKy כתב:
אתגר נחמד..
הכנתי משהו קטן לבדיקה

alias fbincheck {
  if ($fbin(1101) = 13) echo -a 3OK - $v1
  else { echo -a 4ERROR(1101) }
  if ($fbin(0) = 0) echo -a 3OK - $v1
  else { echo -a 4ERROR(0) }
  if ($fbin(1) = 1) echo -a 3OK - $v1
  else { echo -a 4ERROR(1) }
  if ($fbin(1001001) = 73) echo -a 3OK - $v1
  else { echo -a 4ERROR(1001001) }
  if ($fbin(11111111) = 255) echo -a 3OK - $v1
  else { echo -a 4ERROR(11111111) }
  if ($fbin(1111111101) = 1021) echo -a 3OK - $v1
  else { echo -a 4ERROR(1111111101) }
  if ($fbin(00001101100) = 108) echo -a 3OK - $v1
  else { echo -a 4ERROR(00001101100) }
}

להפעלה
/fbincheck

אבל למה לא לעשות לולאה שתבדוק בעזרת $base עד 500 או משהו וזהו :|?

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

ZxoR
מנהל גלובאלי
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 21 יולי 2010, 15:00
TrAsKy כתב:
ZxoR כתב:
TrAsKy כתב:
אתגר נחמד..
הכנתי משהו קטן לבדיקה

alias fbincheck {
  if ($fbin(1101) = 13) echo -a 3OK - $v1
  else { echo -a 4ERROR(1101) }
  if ($fbin(0) = 0) echo -a 3OK - $v1
  else { echo -a 4ERROR(0) }
  if ($fbin(1) = 1) echo -a 3OK - $v1
  else { echo -a 4ERROR(1) }
  if ($fbin(1001001) = 73) echo -a 3OK - $v1
  else { echo -a 4ERROR(1001001) }
  if ($fbin(11111111) = 255) echo -a 3OK - $v1
  else { echo -a 4ERROR(11111111) }
  if ($fbin(1111111101) = 1021) echo -a 3OK - $v1
  else { echo -a 4ERROR(1111111101) }
  if ($fbin(00001101100) = 108) echo -a 3OK - $v1
  else { echo -a 4ERROR(00001101100) }
}

להפעלה
/fbincheck

אבל למה לא לעשות לולאה שתבדוק בעזרת $base עד 500 או משהו וזהו :|?

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

אבל זה היה פי 2 קצר ופי 20 אפקטיבי.
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

ZxoR
מנהל גלובאלי
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 21 יולי 2010, 15:08
alias fbincheck {
  var %cur = 1,%max = 1000,%ers = 0
  while (%cur <= %max) {
    if ($fbin($base(%cur,10,2)) == %cur) { echo -asg BCheck: $+([,%cur,]) 3OK  } | else { echo -asg BCheck: $+([,%cur,]) 4ERROR | inc %ers }
    inc %cur
  }
  echo -asg 4Errors: %ers 1 $+ $(|) 13OK: $calc(%max - %ers)
}

חחח.
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

TrAsKy
משתמש רשום
Re: [קל] fbin$
הצטרף: 17 יולי 2010, 16:07
הודעות: 51
פורסם: 21 יולי 2010, 15:12
ZxoR כתב:
alias fbincheck {
  var %cur = 1,%max = 1000,%ers = 0
  while (%cur <= %max) {
    if ($fbin($base(%cur,10,2)) == %cur) { echo -asg BCheck: $+([,%cur,]) 3OK  } | else { echo -asg BCheck: $+([,%cur,]) 4ERROR | inc %ers }
    inc %cur
  }
  echo -asg 4Errors: %ers 1 $+ $(|) 13OK: $calc(%max - %ers)
}

חחח.

נחמד.. אמרתי לך בניתי סתם משהו חפיף.. אני לא רואה טעם לבדוק 1000 פעמים שמספיק 6
ועדיף כבר שתתחיל את הלולאה מ0 ולא מ1

ZxoR
מנהל גלובאלי
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 21 יולי 2010, 15:15
TrAsKy כתב:
ZxoR כתב:
alias fbincheck {
  var %cur = 1,%max = 1000,%ers = 0
  while (%cur <= %max) {
    if ($fbin($base(%cur,10,2)) == %cur) { echo -asg BCheck: $+([,%cur,]) 3OK  } | else { echo -asg BCheck: $+([,%cur,]) 4ERROR | inc %ers }
    inc %cur
  }
  echo -asg 4Errors: %ers 1 $+ $(|) 13OK: $calc(%max - %ers)
}

חחח.

נחמד.. אמרתי לך בניתי סתם משהו חפיף.. אני לא רואה טעם לבדוק 1000 פעמים שמספיק 6
ועדיף כבר שתתחיל את הלולאה מ0 ולא מ1

חחח דווקא שתדע לך שאתה לא צודק, וכדאי לבדוק 1000 מאשר 6 בדבר כזה...
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

ZxoR
מנהל גלובאלי
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 07:43
הודעות: 368
פורסם: 27 יולי 2010, 10:43
שלחתי, תשתתפו חברים!
שימו לב: בוטי המשחק שאני בונה לא מתאימים לQuakenet אלא אם כן צויין אחרת.
<+vendetta-> סיאג לחוכמה שתיקה
<+vendetta--> בא לי מוח
<Ninja`> דפקתי נקנקיה

Ocean
משתמש רשום
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 14:38
הודעות: 77
פורסם: 28 יולי 2010, 16:00
המנצח לא צריך ליהיות כבר מפורסם??

uns
משתמש רשום
Re: [קל] fbin$
הצטרף: 01 יולי 2010, 07:18
הודעות: 95
פורסם: 28 יולי 2010, 17:16
אני מניח שיפורסם בקרוב,
אני מהמר על אוראל (Nighthawk).

Ohad
מנהל האתר
Re: [קל] fbin$
הצטרף: 29 יוני 2010, 16:13
הודעות: 111
פורסם: 28 יולי 2010, 18:01
טוב יחסית לאתגר ראשון הייתה הענות יפה.
בלי לדבר הרבה, התוצאות:

ללא-ראגאקס

מקום ראשון:
Nighthawk - 86 bytes
fbin {
  %s = 0
  %i = 1
  while $pos($1,1,%i) {
    inc %s $calc(2^($len($1)-$v1))
    inc %i
  }
  return %s
}

מקום שני:
Ventox - 91 bytes
fbin {
  %x = -1
  %L = 0
  while $mid($1,%x,1) >= 0 {
    inc %L $calc(2^(-1-1*%x)*$v1)
    dec %x
  }
  return %L
}

מקום שלישי:
uns - 94 bytes
fbin {
  var %y $len($1),%z
  while %y {
    inc %z $calc($mid($1,%y,1)*2^($len($1)-%y))
    dec %y
  }
  return %z
}

מקום רביעי:
TrAsKy - 96 bytes
fbin {
  %x = 1
  %y = 0
  while $mid($1,%x,1) >= 0 {
    inc %y $calc((2^($len($1)-%x))*$v1)
    inc %x
  }
  return %y
}

מקום חמישי:
Ocean - 100 bytes
fbin {
  %a = 1
  %b = 0
  while %a <= $len($1) {
    inc %b $calc($mid($1,%a,1)*2^($len($1)-%a))
    inc %a
  }
  return %b
}

מקום שישי:
ZxoR - 112 bytes
Fbin {
  var %A $1,%C 1,%N $len($1),%B 0
  while (%C <= %N) {
    inc %B $calc($mid(%A,%C,1) *2^(%N - %C))
    inc %C
  }
  return %B
}

Ohad - 79 bytes
fbin {
  while 2 \\ $0 tokenize 2 $mid($1 $calc($left($1,1)+2*$2) b,2)
  return $1
}


הערות כלליות:
  • יש מקומות במזהה calc שאפשר להוריד רווחים, תנסו להוריד אותם במקומות האפשריים.
  • לפעמים כאשר מגדירים משתנים יותר קצר להגדיר את המשתנים כמשתנים גלובאלים ולא כמקומיים - var
  • לפעמים אפשר להוריד את הסוגריים של התנאי (כאשר יש v1,v2,operator) אז תורידו אותם.
  • אם אתם משתמשים בתנאי/תנאי לולאה במזהה מסוים שאתם משתמשים בו לאחר מכאן, אז תשתמשו ב
    $v1 $v2
  • בקודים שקוראים מההתחלה לסוף (עם מינוסים) אז אפשר להשתמש בחישוב בדבר הבא:
    $calc(.5/2^%x *$v1)

    כאשר המשתנה x הוא אינדקס הלולאה שקטן כל פעם באחד ו-v1 הוא התו שבמספר שהתקבל (אחד/אפס).
  • כאשר אתם עושים תנאי, עשו את כל המאמצים שהאופרטר יהיה תו אחד, נגיד אצל Ventox בקוד, אפשר לשנות את התנאי ל:
    $mid($1,%x,1) > '

ראגאקס
חבל שאף אחד לא השתתף...

Ohad - 51 bytes
fbin return $calc($regsubex($1,/()/g,*2^( \0-\n)+))


תודה למשתתפים ובהצלחה באתגר הבא!

הצטרף: 27 יולי 2010, 20:22
הודעות: 24
פורסם: 28 יולי 2010, 18:05
תודה רבה לכולם וצוות האתר, אני רואה שהרבה עשו קודים ממש יפים.

מחכה כבר לאתגר הבא... והמון בהצלחה לאתר.

הצטרף: 29 יוני 2010, 16:13
הודעות: 111
פורסם: 28 יולי 2010, 18:06
עוד קוד חמוד ביותר שהוא יותר ארוך מהקוד המקורי שלי, אבל הקוד הזה ממש חמוד:
fbin {
  while 2 \\ $0 tokenize 46 $mid($1. $calc(.1+ $left($1,1)+2*$2),2)
  return $1
}

81 bytes

uns
משתמש רשום
Re: [קל] fbin$ - תוצאות
הצטרף: 01 יולי 2010, 07:18
הודעות: 95
פורסם: 28 יולי 2010, 18:58
כל הכבוד אוראל!!

הבא

חזור אל אתגרים

cron