Friday, October 22, 2010

אביב במשקפיים

הנה אביב במשקפיו החדשים (לצילומים כולם, שהרי זה רק מדגם, יש ללחוץ על הקישור הזה)




















































חור שחור מתמטי -- מספרי סיזיפוס


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


נתון מספר, למשל, 982100

1. נספור את מספר הספרות הזוגיות

2. נספור את מספר הספרות האי-זוגיות

3. נספור את מספר הספרות בסך הכול

4. המספר הבא בתהליך הוא זה שמתקבל מ-מספר הספרות הזוגיות כאשר משורשר לו מימין מספר הספרות האי-זוגיות ולבסוף משורשר מימין מספר הספרות בסך הכול.

במקרה שלנו המספר המתקבל בשלב הבא של התהליך יהיה 426, כי יש 4 ספרות סוגיות (0,0,2,8) ושתי ספרות אי-זוגיות (1, 9). יש להבחין שזהות הספרות אינה חשובה, אלא רק הזוגיות שלהן חשובה.

5. ממשיכים לפי ההוראות של השלבים 1-4 שוב ושוב עד אשר מתקבל אותו המספר שוב ושוב ושוב.... זה קורה כאשר מגיעים ל-123.



בהסברים של המקבץ שקיבל אביב ממכון ויצמן הפעם כתוב:

"מספר סיזיפוס כונה 'חור שחור מתמטי' על יד המתמטיקאי מייקל אקר (Michael Ecker) משום שבדומה ל'חור שחור' שמושך את מה שקרוב אליו, המספר הזה "מושך" אליו את כל המספרים השלמים כולם. לא משנה באיזה מספר התחלתי בוחרים - כאשר מבצעים עליו את האיטראציה המתוארת הוא נופל לתוך 'החור השחור המתמטי', מספר סיזיפוס - 123!"

שאלה שמצאה חן בעיני היתה:



מהו מספר השלבים הגדול ביותר האפשרי עד שמגיעים למספר סיזיפוס אם מתחילים ממספר תלת - ספרתי? שימו לב: שלב הוא כל מעבר ממספר למספר שבא אחריו.

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


נתבונן במקרים הבאים:
1. כל הספרות זוגיות (אין בכלל ספרות איזוגיות) -- אז נקבל: 303 -> 123
לכן במקרים אלה יש רק שלב אחד
2. יש רק ספרה איזוגית אחת -- אז נקבל :213 -> 123. גם כאן רק שלב אחד
3. יש שתי ספרות איזוגיות -- אז נקבל: 123 ואין צורך בשלב נוסף
4. יש שלוש ספרות איזוגיות (אין זוגיות בכלל): 033 -> 123
מסקנה: צריכים לכל היותר שני שלבים.

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


התוכנית מקבלת משורת הפקודה שני מספרים, מספר התחלה ומספר סיום, לציון התחום שיש לעבור עליו. למשל, לשאלה שקיבל אביב התחום המתאים הוא 100 עד 999. התוכנית כתובה בשפת Perl.






#!/usr/bin/perl

use strict;

use warnings;

my $from = shift;

my $to = shift;

my $max_iter=0;

foreach (my $i=$from; $i<=$to; ++$i) {

print $i,"\n";

my $num_iter=0;

my @old_r = split '',$i;

while (1){

my @r=iter(@old_r);



last if equals(\@r,\@old_r);

@old_r=@r;

++$num_iter;

print "@r\titeration #",$num_iter,"\n";

$max_iter=$num_iter if $num_iter>$max_iter;

}

print "\n===\n";

}

print "\n\nmax=$max_iter\n";



sub iter {

my $even=0;

my $odd=0;

foreach my $d (@_) {

if ($d%2) {

++$odd;

}else{

++$even;

}

}

return ($even , $odd , $even+$odd);

}



sub equals {

for(my $i=0; $i<scalar @{$_[0]}; ++$i){

return 0 if $_[0]->[$i] != $_[1]->[$i];

}

return 1;

}








תוכנית המחשב אכן אישרה את התוצאה שאליה הגיע אביב בכח המחשבה!

חוג מתמטיקה בהתכתבות של מכון דוידסון במכון ויצמן


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

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

IntelliJ IDEA will be Open Sourced starting version 9.0


The IntelliJ Blog announced that IntelliJIDEA 9 will be open source. In addition to the commercial edition, called Ultimate Edition, there's now a community edition, which is available under the apache 2.0 license. Here's a comparison of the two editions.