<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://blog.pykello.net/index.php?/feeds/atom.xml" rel="self" title="Hadi's personal blog" type="application/atom+xml" />
    <link href="http://blog.pykello.net/"                        rel="alternate"    title="Hadi's personal blog" type="text/html" />
    <link href="http://blog.pykello.net/rss.php?version=2.0"     rel="alternate"    title="Hadi's personal blog" type="application/rss+xml" />
    <title type="html">Hadi's personal blog</title>
    <subtitle type="html">Written to be remembered ...</subtitle>
    <icon>http://blog.pykello.net/templates/default/img/s9y_banner_small.png</icon>
    <id>http://blog.pykello.net/</id>
    <updated>2010-05-31T12:36:23Z</updated>
    <generator uri="http://www.s9y.org/" version="1.2">Serendipity 1.2 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/220-Adleman,-BPP,-Modality,-Resolution,-Davis-Putnam,-...-while-being-Nostalgic..html" rel="alternate" title="Adleman, BPP, Modality, Resolution, Davis-Putnam, ... while being Nostalgic." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-05-31T12:36:23Z</published>
        <updated>2010-05-31T12:36:23Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=220</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=220</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/220-guid.html</id>
        <title type="html">Adleman, BPP, Modality, Resolution, Davis-Putnam, ... while being Nostalgic.</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>... و عملیات خودنابودسازی به شکست انجامید.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/219-Intuitionistically-Faraway.html" rel="alternate" title="Intuitionistically Faraway" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-05-30T17:20:09Z</published>
        <updated>2010-05-30T17:20:09Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=219</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=219</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/219-guid.html</id>
        <title type="html">Intuitionistically Faraway</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>اژدهای شوخ طبع به من سلام کرد، ولی من او را همچنان نادیده گرفتم.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/218-Father-of-all-nerds-died-when-the-Search-Engine-invited-again-....html" rel="alternate" title="Father of all nerds died when the Search Engine invited again ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-05-26T19:21:12Z</published>
        <updated>2010-05-26T19:21:12Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=218</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=218</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/218-guid.html</id>
        <title type="html">Father of all nerds died when the Search Engine invited again ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>برخی در بازی احتمالاتی زندگی استراتژی همواره برد دارند.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/217-Who-Knows-Part-1.html" rel="alternate" title="Who Knows? Part 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-05-22T21:51:33Z</published>
        <updated>2010-05-22T21:51:33Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=217</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=217</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
            <category scheme="http://blog.pykello.net/index.php?/categories/10-Thinking" label="Thinking" term="Thinking" />
    
        <id>http://blog.pykello.net/index.php?/archives/217-guid.html</id>
        <title type="html">Who Knows? Part 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>1. آیا انسان هرگز می تواند <strong>عدم وجود</strong> خود را تصور کند؟ چگونه؟ آیا انسان در هنگام فعالیت مغزی می تواند <strong>عدم تجربه</strong> را تصور کند؟</p>

<p>2. آیا انسان می تواند به مرگ خود <strong>یقین</strong> داشته باشد؟<br />
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/216-CodeForces.html" rel="alternate" title="CodeForces" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-03-06T08:36:49Z</published>
        <updated>2010-03-07T04:34:03Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=216</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=216</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/216-guid.html</id>
        <title type="html">CodeForces</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>سلام،<br />
يک سایت مسابقات برنامه نویسی جدیدا ایجاد شده است به نام <a href="http://codeforces.com/" onclick="window.open(this.href, '_blank'); return false;">Codeforces</a>. اگر دوست داشتید سری بزنید. به نظر من که خیلی جذاب است. <br />
يکی از ويژگی های این سایت این است که هر کدام از اعضاء می توانند وبلاگ هم داشته باشند. <a href="http://codeforces.com/blog/hadi" onclick="window.open(this.href, '_blank'); return false;">این</a> لینک وبلاگ من در آنجاست.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/215-IAUM-CCC-6-Online-Round-1.html" rel="alternate" title="IAUM CCC 6 - Online Round 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-07-19T16:42:09Z</published>
        <updated>2009-07-24T10:45:25Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=215</wfw:comment>
    
        <slash:comments>11</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=215</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
            <category scheme="http://blog.pykello.net/index.php?/categories/11-IAUM-CCC" label="IAUM CCC" term="IAUM CCC" />
    
        <id>http://blog.pykello.net/index.php?/archives/215-guid.html</id>
        <title type="html">IAUM CCC 6 - Online Round 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>مسابقه ی آنلاین دوم نیز برگزار شد. سوال های A و D و G را من طرح کرده بودم.</p>

<p>برای دریافت صورت سوال ها به <a href="http://pykello.net/iaum-c3-6-1.tar" onclick="window.open(this.href, '_blank'); return false;">http://pykello.net/iaum-c3-6-1.tar</a> مراجعه کنید.</p>

<p>سوال A، تنها یک پیاده سازی معمولی بود. برای دیدن کد من برای این سوال به <a href="http://wiki.pykello.net/doku.php?id=implementation:iaumc3_cheaters" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=implementation:iaumc3_cheaters</a> مراجعه کنید.</p>

<p>سوال D، یک سوال احتمالاتی بود که از سوال احتمالاتی دفعه ی پیش کمی آسان تر بود. راه حل من برای این سوال از نوع برنامه سازی پویا بود. تنها مشکلی که برخی از شرکت کننده ها داشتند این بود که بعضی جاها 0.00000- چاپ می کردند به جای 0.00000 که چون به نظرم مشکل حادی نبود، یک clarification فرستادم تا ملت این مشکل را درست کنند. برای دیدن کد من برای این سوال به <a href="http://wiki.pykello.net/doku.php?id=implementation:iaumc3_quiz" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=implementation:iaumc3_quiz</a> مراجعه کنید.</p>

<p>راه حل من برای سوال G جستجوی دودوئی بود. برای اینکه بفهمم آیا با زمان x می شود به هدف رسید، ترتیب های مختلف نقاط را امتحان می کردم. مکان هندسی که هر کدام از نقاط در زمان x می توانند به آن بروند یک دایره است. اگر اشتراک تمام این دایره ها ناتهی بود، با زمان x می شود به هدف رسید، وگرنه نمی شود. برای دیدن کد من برای این سوال، به <a href="http://wiki.pykello.net/doku.php?id=implementation:iaumc3_atoms" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=implementation:iaumc3_atoms</a> مراجعه کنید.</p>

<p>لطفا نظرتان را درباره ی سوال ها به صورت کامنت یا ایمیل ارسال کنید.</p>

<p>پ.ن. : ایده ی سوال G برگرفته از <a href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3159" onclick="window.open(this.href, '_blank'); return false;">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3159</a> بود، که توضیح راه حل را می توانید در <a href="http://wiki.pykello.net/doku.php?id=zju:feburary09" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=zju:feburary09</a> پیدا کنید. دلیلی که باعث شد فکر کنم تغییر من بر روی این سوال تبدیل به یک سوال جدید جالب می شود، این بود که گمان می کردم قسمت اشتراک دایره ها سخت ترین بخش سوال است، و راه حل های اولی که به ذهنم رسیده بود هم سخت بود، ولی راه حل آخرم چندان هم سخت نبود :)</p>

<p>در ضمن، نمی دانم چرا سوال B با اینکه سخت نبود تنها توسط یک نفر حل شد.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/214-IAUM-CCC-6-Online-Round-0.html" rel="alternate" title="IAUM CCC 6 - Online Round 0" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-07-17T16:03:41Z</published>
        <updated>2009-07-19T09:45:56Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=214</wfw:comment>
    
        <slash:comments>16</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=214</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
            <category scheme="http://blog.pykello.net/index.php?/categories/11-IAUM-CCC" label="IAUM CCC" term="IAUM CCC" />
    
        <id>http://blog.pykello.net/index.php?/archives/214-guid.html</id>
        <title type="html">IAUM CCC 6 - Online Round 0</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>امروز مسابقه ی آنلاین اول IAUM CCC 6 برگزار شد. سه سوال از 7 سوال توسط من طرح شده بود. در این پست، ابتدا انتقاداتی از طرز انتقاد مسابقه دهندگان می کنم، و سپس به توضیح کوتاهی در باره ی سوال ها می پردازم.</p>

<p>سه سوال A و B و G توسط من طرح شده بود. برای دریافت صورت سوال ها، به آدرس <a href="http://pykello.net/iaumc3-6-0.tar" onclick="window.open(this.href, '_blank'); return false;">http://pykello.net/iaumc3-6-0.tar</a> مراجعه کنید. البته صورت سوال B در مسابقه یک اشتباه تایپی داشته که در این نسخه درست شده است.</p>

<p>سوال A مشکل خاصی نداشت، راه حل من که سعی کردم کندترین راه حل معقول باشد( از مرتبه ی زمانی (O(n^2 بود)، در کمتر از یک ثانیه اجرا می شد. سوال آسانی بود، و وقتی کد طولانی برخی شرکت کنندگان را دیدم بسی تعجب کردم. و واقعا چگونگی دست یافتن برخی شرکت کننده ها به نتیجه ی Time Limit Exceeded واقعا حیرت آور بود. به هر حال، عده ای به طرز Judge شدن این سوال معترض بودند که دلیلش را نمی دانم. من هم جزو Judge ها نبودم تا دلیل اعتراض آن ها را بدانم. داده های تست مشکلی نداشت. تعداد زیادی از افراد با اینکه در صورت سوال ذکر شده بود نقطه ای با مختصات (0,0) در ورودی نیست، باز هم وجود چنین نقطه ای را سوال می کردند.</p>

<p>سوال B ... معترضین به این سوال سه دسته بودند. دسته ای که معنی &quot;متوسط&quot; را بلد نبودند، و صورت سوال را مبهم می دانستند. اولا اینکه در صورت تمایل دوستان، می توانم بیش از 10 سوال مشابه پیدا کنم که بدون تعریف معنی متوسط، مقدار متوسط را خواسته بودند. پس اینکه تعریف &quot;متوسط&quot; را شخصی بلد نیست، ضعف در صورت سوال محسوب نمی شود. مبهم دانستن این مساله مانند این است که عدم ذکر معنای کوتاه ترین مسیر در مساله ی گراف را دلیل مبهم دانستن آن سوال بدانیم.<br />
دسته ای دیگر، به clarification ها با دقت کافی نگاه نکرده بودند، و با اینکه به تعداد مراتبی زیادی ذکر کردم که k بار شیر افتادن باید &quot;پشت سر هم&quot; باشند، باز هم با اعتماد به نفس این مساله را ندیده می گرفتند و ورودی و خروجی نمونه را اشتباه می دانستند!<br />
دسته ای دیگر، راه حل اشتباهی را انتخاب کرده بودن و مساله را به تعداد تکرار زیادی شبیه سازی کرده بودند، و مسلما جواب اشتباه می گرفتند. جالب این بود که انصاف را رها کرده بودند، و چون از 2-3 سوال دیگر و همچنین از نتیجه ی خودشان ناراضی بودند، با اعتماد به نفس زیادی می گفتند: &quot;سوال گیر الکی داشت&quot;. مطمئنا کسانی که راه حل درست را پیدا کرده بودند، به مشکل خاصی برنخوردند.</p>

<p>سوال G، تقریبا کسی به طور جدی به این سوال نپرداخت، با اینکه از لحاظ ایده ای سخت نبود، ولی شاید پیاده سازی اش کمی طول می کشید و سوال های دیگر زمانی برای این سوال باقی نگذاشته بودند.</p>

<p>در باره ی ایده ها:</p>

<p>تنها به توضیح مختصری و کدها بسنده می کنم. ممکن است در آینده توضیح بیشتری بنویسم!</p>

<p>سوال A: برای دیدن کد من برای این سوال به <a href="http://wiki.pykello.net/doku.php?id=implementation:iaum_c3_6_sight" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=implementation:iaum_c3_6_sight</a> مراجعه کنید. تنها نکته ای باید در نظر می گرفتید این بود که مثلا اگر دو نقطه در (1,1) و (1-,1-) قرار داشته باشند، هر دو نقطه را می بینیم، با اینکه نسبت x/y هر دو یکسان است.</p>

<p>سوال B: برای مشاهده کد من برای این سوال به <a href="http://wiki.pykello.net/doku.php?id=implementation:iaum_c3_6_kconsecutive" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=implementation:iaum_c3_6_kconsecutive</a> مراجعه کنید.</p>

<p>کسانی که با معنای &quot;متوسط&quot; یا &quot;امید ریاضی&quot; در نظریه ی احتمال آشنا نیستند، به <a href="http://en.wikipedia.org/wiki/Expected_value" onclick="window.open(this.href, '_blank'); return false;">http://en.wikipedia.org/wiki/Expected_value</a> مراجعه کنند.</p>

<p>فرض کنید [expDays[i برابر با تعداد متوسط روزهای لازم برای اینکه عمل سکه انداختن تمام شود با فرض اینکه i دفعه ی قبلی نتیجه سکه انداختن ها شیر بود، باشد. همانطور که معلوم است، expDays[k] = 0 است، چون k بار شیر پشت سر هم رخ داده است و بازی تمام شده است. در غیر اینصورت، expDays[i] = expDays[i+1] * p + expDays[0] * (1-p) + 1 است. عدد 1، برای این است که حتما یک بار سکه پرتاب می کنیم. با احتمال p، به حال [expDays[i+1 میرویم، یعنی به تعداد شیرهای پشت سرهم یکی اضافه می شود. و با احتمال q=1-p، به حالت [expDays[0 می رویم، یعنی تعداد شیرهای پشت سرهم به صفر می رسد. تابع calcDays در واقع این دنباله را محاسبه می کند. تابع calcMoney نیز از روشی مشابه ولی کمی پیچیده تر برای محاسبه متوسط پول استفاده می کند.</p>

<p>سوال G: برای مشاهده ی کد من برای این سوال، به <a href="http://wiki.pykello.net/doku.php?id=implementation:iaum_c3_6_grid" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=implementation:iaum_c3_6_grid</a> مراجعه کنید.</p>

<p>راه حل مطلوب این سوال، از نوع برنامه سازی پویا بود. حالت برنامه سازی پویا نیز (شماره سطر، شماره ستون، بیت های لازم از وضعیت سطر بالا، بیت های لازم از وضعیت سطر فعلی) است. اگر این مدل را بصورت بدیهی پیاده سازی کنید، مسلما تعداد حالات خیلی زیاد خواهد بود. ولی باید دقت کنید در این مساله وضعیت سطری به طول n حداکثر می تواند (F(n) = F(n-1) + F(n-3 حالت داشته باشد، که برای n=30، کمتر از 500000 حالت می شود که زیاد نیست. با کمی طراحی خوب، می توان در بدترین حالت در زمان کمتر از 2 ثانیه به هر ورودی جواب داد.</p>

<p>خوب :) دوست دارم نظرتان در باره ی سوال ها را بدانم. لطفا کامنت یا ایمیل ارسال کنید!</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/213-Hava-kara-bulutlu-....html" rel="alternate" title="Hava kara bulutlu ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-07-15T10:36:27Z</published>
        <updated>2009-07-15T10:36:27Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=213</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=213</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/213-guid.html</id>
        <title type="html">Hava kara bulutlu ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><img src="images/cloudy.jpg" align="left"><br />
در آن عصر هنگام من مُردم،<br />
ولی پس از مرگ من معجزه ای رخ داد،<br />
و به زندگی جاودانه دست یافتم و باور کردم که مرگ پایان دنیا نیست،<br />
و من هرگز این معجزه را فراموش نخواهم کرد.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/212-Topcoder-SRM-444.html" rel="alternate" title="Topcoder SRM 444" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-07-09T12:36:34Z</published>
        <updated>2009-07-09T13:20:53Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=212</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=212</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/212-guid.html</id>
        <title type="html">Topcoder SRM 444</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>عملکرد من در این مسابقه خوب نبود، ولی بد هم نبود. البته نسبت به دو مسابقه قبل خیلی بهتر بود :)</p>

<p>در سوال 250 امتیازی، نسبتا خوب عمل کردم و سعی کردم با دقت بنویسم و در نتیجه نسبتا کند نوشتم. سوال نسبتا آسانی بود، ولی در مقایسه با اکثر سوال های 250 امتیازی سخت تر بود و دقت بیشتری می خواست.</p>

<p>در سوال 500 امتیازی، سوال برنامه سازی پویای نسبتا آسان و سرراستی بود، انتظار داشتم بتوانم بیشتر از 400 امتیاز بدست بیاورم، ولی به علت اشتباهاتی نامعلوم، در ورودی های نمونه جواب درست نگرفتم، و پس از تلف کردن زمانی برای دیباگ، بخشی از کد را دوباره نوشتم و حدود 270 امتیاز گرفتم. اشتباه من در این سوال این بود که در جاهایی که می توانستم از تابع استفاده کنم از تابع استفاده نکرده بودم و کد کثیف و غیر قابل فهم شده بود.</p>

<p>با توجه به اینکه این دو سوال نسبتا زیاد طول کشید و زمان زیادی برای سوال سخت باقی نمانده بود، در زمان باقیمانده هر دو سوال را با مقداری ورودی دستی تست کردم و کدشان را دوباره بررسی کردم تا مطمئن شوم مشکلی ندارند.</p>

<p>در مرحله ی Challenge، سعی کردم محتاط باشم، ولی 2 کدی که تشخصیص دادم اشتباه است و می توانستم Challenge کنم، قبل از اینکه من اقدام کنم Challenge شدند. اشتباه من در این مرحله این بود که تعدادی تست خوب آماده نکرده بودم تا بتوانم سریع تر Challenge کنم.</p>

<p>رتبه ام 103 شد، امتیاز تاپکدرم از 2221 به 2242 افزایش پیدا کرد، که تغییر زیادی نبود، و تنها از اینکه نتیجه مثل دو دفعه پیش افتضاح نشده بود راضی بودم. ولی دوست دارم به دورانی برگردم که نصف مسابقات جزو 50 تای اول بودم :)</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/211-ZOJ-Monthly-Contest,-June-2009-Analysis.html" rel="alternate" title="ZOJ Monthly Contest, June 2009 Analysis" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-07-09T12:30:25Z</published>
        <updated>2009-07-12T10:43:55Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=211</wfw:comment>
    
        <slash:comments>6</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=211</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/211-guid.html</id>
        <title type="html">ZOJ Monthly Contest, June 2009 Analysis</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>برای مشاهده ی توضیح و بررسی سوال های مسابقه ی ZOJ Monthly Contest, June 2009 به <a href="http://wiki.pykello.net/doku.php?id=zju:june09" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=zju:june09</a> مراجعه کنید. البته هنوز ناقص است، ولی امیدوارم کامل تر کنم :) البته از هر گونه کمکی استقبال می کنم :)</p>

<p>پ.ن. : توضیح سوال D کامل تر شد.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/210-ZOJ-Monthly-Contest,-June-2009.html" rel="alternate" title="ZOJ Monthly Contest, June 2009 " />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-06-29T21:55:26Z</published>
        <updated>2009-07-03T11:07:46Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=210</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=210</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/210-guid.html</id>
        <title type="html">ZOJ Monthly Contest, June 2009 </title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>دیروز در <a href="http://acm.zju.edu.cn/onlinejudge/showContestRankList.do?contestId=297" onclick="window.open(this.href, '_blank'); return false;">این مسابقه آنلاین</a> شرکت کردم. با توجه به اینکه با کمی دقت می توانستم جزو 4 تیم اول بشوم (به جای هشتم)، از عملکرد خودم کاملا راضی نبودم، ولی به هر حال بد هم نبود.</p>

<p>در این پست، به عملکرد خود و مقداری به سوال ها می پردازم، ولی بررسی کامل سوال ها را بعدا و هنگامی که همه سوال ها را حل کردم در پستی جداگانه خواهم نوشت :)</p>

<p>ابتدا شروع به خواندن سوال ها کردم، تا سوال های خیلی آسان را پیدا کنم. تا اینکه يکی از شرکت کنندگان <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3393" onclick="window.open(this.href, '_blank'); return false;">سوال G</a> را با سرعت حیرت انگیز در دقیقه 12 حل کرد. سوال سختی نبود، یک سوال احتمالاتی که با تشکیل دستگاه معادلات خطی و حل آن به راحتی حل می شد. ولی چون تعداد دفعاتی که سر مسابقه کد حل دستگاه معادلات خطی نوشته بودم کم بود، کد این مساله را با احتیاط و کند زدم و دقیقه 41 این مساله را حل کردم. یکی از کارهای مثبتی که کردم این بود که قبل از submit چند تست دستی دادم، و یکی از خطاهایی که مرتکب شده بودم را رفع کردم (سایز آرایه را کم در نظر گرفته بودم). عملکردم در این سوال نسبتا راضی کننده بود. تنها يک نکته ی منفی وجود داشت و آن این بود که کد این مساله را با تسلط کامل و سریع نزدم، و احتمالا باید مروری بر الگوریتم های استاندارد بکنم تا آن هایی را که کاملا مسلط نیستم را کاملا مسلط شوم.</p>

<p>سوال دومی که حل کردم، <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3388" onclick="window.open(this.href, '_blank'); return false;">سوال B</a> بود، که مساله ی شبیه سازی آسانی بود. نمی دانم کار درستی کردم یا نه، ولی چون اندازه ورودی مساله بزرگ بود، به جای استفاده از ساختار map زبان ++C، از ساختار داده ای استفاده کردم که عملیات مجموعه رشته ها را سریع تر انجام دهد، که برای همین کد این مساله هم کمی زیاد طول کشید (حدود 30 دقیقه). البته باز هم راضی بودم، خیلی زیاد طول نکشید، با اینکه می شد حدود 15 دقیقه صرفه جویی کرد.</p>

<p>سوال سومی که حل کردم، <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3395" onclick="window.open(this.href, '_blank'); return false;">سوال I</a> بود، که به صورت حریصانه، و با استفاده از BFS حل کردم. از عملکردم برای این مساله ناراضی بودم. اولین اشتباهی که کردم، دقت نکردم که برای تعداد پریدن ها محدودیت وجود دارد و الگوریتم و کد اولم مشکل داشت و باعث شد مدتی تلف شود. پس از اینکه برای ورودی نمونه جواب اشتباه کردم، متوجه خطایم شدم و الگوریتم صحیح را طراحی و پیاده سازی کردم که زیاد طول نکشید، ولی Wrong Answer گرفتم. پس از بررسی الگوریتم و اطمینان از صحت آن، و اطمینان از اینکه هیچ جای برنامه overflow رخ نمی دهد، و خواندن کد و نیافتن اشتباه، چند تست دستی به برنامه دادم تا تستی که برای آن جواب اشتباه می گرفتم را پیدا کنم و متوجه شوم که جایی از برنامه به جای r*r، نوشته بودم r. کمی باید بیشتر دقت کنم!</p>

<p>سوال چهارمی که حل کردم، <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3394" onclick="window.open(this.href, '_blank'); return false;">سوال H</a> بود، که یک شبیه سازی ساده بود. این مساله را نسبتا بدون خطا حل کردم، و شاید تنها نکته ی منفی این بود که حل این مساله آسان 40 دقیقه طول کشید. البته با فرض اینکه بررسی سوال های باقیمانده ی دیگر و خواندن صورت سوال احتمالا 15 دقیقه طول کشیده، خیلی هم بد نبود.</p>

<p>سوال پنجمی که حل کردم، <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3390" onclick="window.open(this.href, '_blank'); return false;">سوال D</a> بود، که با استفاده از مدل کردن مساله به صورت ضرب ماتریس حل می شد. یافتن ایده برای حل این مساله، نسبتا زیاد طول کشید، شاید حدود 40 دقیقه. ولی باز هم خیلی زیاد نبود. بزرگترین اشتباهم در این مساله که کد آن ساده بود این بود که در نوشتن کد عجله کردم و ماتریسی که تشکیل می دادم درست نبود و جواب نمی گرفتم. البته تست های صورت سوال را می گرفتم، ولی یکی از کارهای خوبی که کردم این بود که چند تست دستی ساده دادم تا متوجه شوم برنامه ام در برخی موارد اشتباه جواب می دهد. دیباگ کردن این مساله کلی طول کشید تا مدت زمان حل این مساله حدود 90 دقیقه باشد.</p>

<p>سوال ششمی که حل کردم، <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3392" onclick="window.open(this.href, '_blank'); return false;">سوال F</a> بود، که یک مساله خیلی ساده بود، ولی با این حال عجله کردم و دقت نکردم و دو اشتباه مضحک کردم که باعث شد 2 بار Wrong Answer بگیرم. البته در نتیجه ی مسابقه خیلی تاثیر نداشت، ولی اگر این 2 خطا را نمی کردم، به جای هشتم، هفتم می شدم.</p>

<p>سپس به سراغ <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3391" onclick="window.open(this.href, '_blank'); return false;">سوال E</a> رفتم، که پس از کمی بررسی روی کاغذ آن را با استفاده از برنامه سازی پویا حل کردم، و حدود 15 دقیقه به پایان مسابقه کد آن را شروع کردم که متاسفانه نتوانستم آن را بدون اشکال تمام کنم. اگر اشتباه های سوال های قبل را نکرده بودم، وقت خیلی بیشتری برای این سوال داشتم (حداقل 90 دقیقه به جای 40 دقیقه) و می توانستم 7 سواله شوم.</p>

<p>در مورد دو سوال باقیمانده: <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3389" onclick="window.open(this.href, '_blank'); return false;">سوال C</a> به نظر قابل حل با برنامه سازی پویا می آید، و <a href="http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3387" onclick="window.open(this.href, '_blank'); return false;">سوال A</a> احتمالا با استفاده از روش عقبگرد و حرس کردن حل می شود.</p>

<p>امیدوارم دفعات بعدی خطاهای کمتری مرتکب شوم :)<br />
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/209-Topcoder-SRM-443.html" rel="alternate" title="Topcoder SRM 443" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-06-24T22:12:26Z</published>
        <updated>2009-06-26T22:19:57Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=209</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=209</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/209-guid.html</id>
        <title type="html">Topcoder SRM 443</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>برای مشاهده بررسی سوال ها و راه حل ها به <a href="http://wiki.pykello.net/doku.php?id=tc:srm_443" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=tc:srm_443</a> مراجعه کنید.</p>

<p>بررسی عملکرد من در این مسابقه:<br />
در یک کلام، نتیجه ام اصلا خوب نبود، و خیلی بد بود. ولی، این نتیجه بد در اثر صرفا تقدیر و سرنوشت و بدشانسی نبود، و من بد عمل کردم. اشتباه هایی که کردم:</p>

<p>- برای سوال آسان، می توانستم با کمی بیشتر فکر کردن راه حلی آسان تر پیدا کنم، و امتیاز بیشتری بدست بیاورم. این اشتباه، خیلی بزرگ نبود و در نتیجه خیلی تاثیر نداشت.</p>

<p>- سوال متوسط: اشتباهی که کردم، این بود که ابتدا از کنارهای راه های الگوریتمی به سرعت گذشتم و سعی کردم راه های ریاضی و فرمولی پیدا کنم. بدیهی بود که می شد این سوال را با BFS حل کرد، ولی BFS عادی زمان زیادی لازم داشت و مناسب نبود. ولی اکثر مواقع ارزش دارد که آدم راه های درست با زمان بد را بیشتر بررسی کند، که در اکثر مواقع منجر به راه حلی خوب می شود. که این مورد هم یکی از آن موارد بود. بالاخره، پس از صرف مدت قابل توجهی بر روی راه های ریاضی و عدم موفقیت، بدون اینکه به اندازه ی کافی فکر کنم، چون زمان کمی باقی مانده بود، سعی کردم راه حل BFS ای با مقداری بهینه سازی ساده بنویسم شاید جواب دهد. ولی با اینکه بر روی خیلی از تست ها خوب جواب می داد، بر روی برخی تست های دستی بیشتر از زمان مجاز 2 ثانیه طول می کشید، و برای همین submit نکردم. یک اشتباه دیگر این بود که به شکل خاص این گراف دقت نکردم. به آسانی با کمی تامل می شد BFS را طوری طراحی کرد که در زمان خیلی خوبی اجرا شود.</p>

<p>- سوال سخت: با توجه به اینکه اکثر زمان را بر روی سوال متوسط صرف کردم، به این سوال تقریبا وقتی نرسید، و بنابراین برای این سوال تقریبا هیچ کار اشتباهی انجام ندادم :)</p>

<p>- مرحله Challenge: اصولا آدم باید طوری عمل کند که برای داشتن رتبه ی خوب و افزایش rating نیازی به امتیازهای challenge نداشته باشد، و تنها برای بیشتر شدن افزایش rating در این مرحله تلاش کند. به هر حال، چون در حل مساله ها خوب عمل نکرده بودم، به این مرحله امید داشتم که در این مرحله نیز 50 امتیاز از دست دادم و نتیجه بدتر از پیش شد. دو کد در اتاق ما بود که با توجه به ranklist احتمال زیاد اشتباه بودند (و بودند)، اشتباه اول من این بود که کد شخصی با رتبه بهتر را زودتر باز کردم (اشتباه بود، چون بقیه نیز همین کار را می کنند، و برای اینکه احتمال اینکه فرصت Challenge پیدا کنم بیشتر باشد، بهتر است کدی که توسط شخص با رتبه بدتر نوشته شده است را زودتر باز کنم، یعنی بر عکس بقیه). به هر حال، 100 امتیاز مفت را در اینجا از دست دادم، و دو challenge ناموفق هم کردم و در کل 50 امتیاز در این مرحله از دست دادم. یکی از کدهایی که با عدم موفقیت challenge کردم، به طور واضحی اشتباه بود، ولی test case من به طرز احمقانه ای آسان بود و کد طرف درست جواب داد. به هر حال، در این مرحله چند تصمیم استراتژیک بهتر دیگر می شد گرفت، ولی چون این مرحله خیلی مهم نیست، بیشتر به این مرحله نمی پردازم.</p>

<p>به هر حال، rating ام به اندازه 109 تا کاهش پیدا کرد، ولی کاملا امیدوارم که بتوانم در مسابقات بعدی خوب عمل کنم و دوباره به rating بالاتر دست پیدا کنم :) امیدوارم تا پایان امسال بتوانم به 2650 برسم. البته برای این کار باید 5-6 مسابقه مداوم بدون اشتباه و خوب عمل کنم.<br />
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/208-ZOJ-Monthly-Contest,-Feburary-2009.html" rel="alternate" title="ZOJ Monthly Contest, Feburary 2009" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-06-23T17:23:00Z</published>
        <updated>2009-06-23T17:23:00Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=208</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=208</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/208-guid.html</id>
        <title type="html">ZOJ Monthly Contest, Feburary 2009</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>بررسی سوال های مسابقه ی ZOJ Monthly Contest, Feburary 2009 : به <a href="http://wiki.pykello.net/doku.php?id=zju:feburary09" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=zju:feburary09</a> مراجعه کنید.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/207-POJ-Founder-Monthly-Contest-2008.07.27.html" rel="alternate" title="POJ Founder Monthly Contest – 2008.07.27" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-06-22T17:07:34Z</published>
        <updated>2009-06-25T09:15:46Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=207</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=207</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/207-guid.html</id>
        <title type="html">POJ Founder Monthly Contest – 2008.07.27</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>بررسی سوال های مسابقه ی  POJ Founder Monthly Contest 2008.07.27 : به <a href="http://wiki.pykello.net/doku.php?id=pku:2008-07-27" onclick="window.open(this.href, '_blank'); return false;">http://wiki.pykello.net/doku.php?id=pku:2008-07-27</a> مراجعه کنید.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/206-I-had-a-nightmare-last-night.html" rel="alternate" title="I had a nightmare last night" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-05-10T11:19:28Z</published>
        <updated>2009-05-15T02:01:46Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=206</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=206</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/206-guid.html</id>
        <title type="html">I had a nightmare last night</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>دلبندم! اجازه نده مخالفتت با شخصی باعث شود تا در تصمیم گیری ها شتاب کنی! عمیق تر بنگر!</p>

<p>پ.ن. : این را بعد از دیدن خوابی نوشتم، در اثر اتفاقات روزمره ننوشتم.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/205-Russel-told-Moein-to-tell-Mostafa-to-inform-me-that-....html" rel="alternate" title="Russel told Moein to tell Mostafa to inform me that ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-05-10T10:58:06Z</published>
        <updated>2009-05-10T11:17:04Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=205</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=205</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/205-guid.html</id>
        <title type="html">Russel told Moein to tell Mostafa to inform me that ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>شخص الف: &quot;2 + 2 چند می شود؟&quot;<br />
شخص ب: &quot;4&quot;<br />
شخص الف: &quot;بی شعور، همه می دانند که 2 + 2 برابر با 5 است!&quot;<br />
شخص ب: &quot;نه، حاصل تفکرات من می گوید که 4 می شود!&quot;<br />
شخص الف: &quot;احمق، نادان، تو را خواهم کشت تا زمین از فساد پاک شود، و درس عبرتی برای دیگران شود که بدانند 2 + 2 برابر با 5 است!&quot;</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/204-Ultimate-sin.html" rel="alternate" title="Ultimate sin" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-04-26T23:04:29Z</published>
        <updated>2009-05-01T14:29:38Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=204</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=204</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
            <category scheme="http://blog.pykello.net/index.php?/categories/6-Mathematics" label="Mathematics" term="Mathematics" />
    
        <id>http://blog.pykello.net/index.php?/archives/204-guid.html</id>
        <title type="html">Ultimate sin</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="ltr" align="left">There is no sin except 1/csc!</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/203-Opera-14,-in-F,-Allegro-non-troppo.html" rel="alternate" title="Opera 14, in F, Allegro non troppo" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-04-26T05:58:25Z</published>
        <updated>2009-04-26T06:03:43Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=203</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=203</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/203-guid.html</id>
        <title type="html">Opera 14, in F, Allegro non troppo</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="ltr" align="left">Sergey's diaries, April 22nd: "The doors were invented to enter, but I re-invented them to leave!"</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/202-...-and-I-learned-to-lie-painlessly!.html" rel="alternate" title="... and I learned to lie painlessly!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2009-04-15T16:42:48Z</published>
        <updated>2009-04-19T13:13:50Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=202</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=202</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/202-guid.html</id>
        <title type="html">... and I learned to lie painlessly!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>از دفترچه خاطرات سريوژا در 15 آوریل 2009: «اعتراف می کنم، دروغ گفتم! شاید بزرگترین دروغ زندگی ام را! (تا حالا؟)»</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/201-IAUM-CCC-5-Final-Analysis-Part-1.html" rel="alternate" title="IAUM CCC 5 Final Analysis - Part 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-12-21T18:40:28Z</published>
        <updated>2008-12-21T18:44:45Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=201</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=201</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
            <category scheme="http://blog.pykello.net/index.php?/categories/11-IAUM-CCC" label="IAUM CCC" term="IAUM CCC" />
    
        <id>http://blog.pykello.net/index.php?/archives/201-guid.html</id>
        <title type="html">IAUM CCC 5 Final Analysis - Part 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
<a href="http://pykello.net/pdf/CCC5-Onsite-Finals.pdf">لینک سوالات</a><br/><br/>
<a href="http://wiki.pykello.net/doku.php?id=iaum:ccc5finals">توضیح راه حل ها</a>(فعلا توضیح سه سوال)</br>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/200-Independence-is-NP-Hard.html" rel="alternate" title="Independence is NP-Hard" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-12-05T18:41:25Z</published>
        <updated>2008-12-06T10:17:17Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=200</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=200</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/200-guid.html</id>
        <title type="html">Independence is NP-Hard</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">احساسی عجیب به من دست داد هنگامی که دریافتم بدست آوردن<a href="http://en.wiktionary.org/wiki/independence_number"> استقلال</a> کار<a href="http://en.wikipedia.org/wiki/NP-hard"> بسیار سختی</a> است، و ممکن است نه تنها عمر انسان، بلکه عمر زمین هم برای یافتن آن کافی نباشد.
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/199-Post-Fountain-Era-a.k.a-Winter.html" rel="alternate" title="Post-Fountain Era a.k.a Winter" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-11-18T11:05:23Z</published>
        <updated>2008-11-19T19:52:21Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=199</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=199</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/199-guid.html</id>
        <title type="html">Post-Fountain Era a.k.a Winter</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>مرگ به سراغ همه کس می آید، حتی خاطرات ...<br />
<center><img src="images/summerwinter.png" /></center></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/198-Lux-Aeterna.html" rel="alternate" title="Lux Aeterna" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-11-05T18:47:04Z</published>
        <updated>2008-11-13T22:22:16Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=198</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=198</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/198-guid.html</id>
        <title type="html">Lux Aeterna</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>کاش قایقی تنها بودم در اقیانوسی بی کران.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/197-Top-of-the-world.html" rel="alternate" title="Top of the world" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-11-01T06:57:49Z</published>
        <updated>2008-11-13T22:22:40Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=197</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=197</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/197-guid.html</id>
        <title type="html">Top of the world</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>اجازه ی حضور در بهشت به مدت یک دقیقه را بدست آوردم،<br />
وارد بهشت شدم، دقیقه ای گریستم،<br />
خارج شدم به جهنم بازگشتم، به سرعت دویدم و در دره ای از آتش فرو رفتم.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/196-Women-Mathematicians.html" rel="alternate" title="Women Mathematicians" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-10-02T18:31:09Z</published>
        <updated>2008-11-13T22:23:28Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=196</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
            <category scheme="http://blog.pykello.net/index.php?/categories/6-Mathematics" label="Mathematics" term="Mathematics" />
    
        <id>http://blog.pykello.net/index.php?/archives/196-guid.html</id>
        <title type="html">Women Mathematicians</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
امروز سری به صفحه <a href="http://en.wikipedia.org/wiki/Category:Women_mathematicians">لیست ریاضی دانان زن ویکی پدیا</a> زدم. نکته ی جالب توجه برای من این بود که اسم دو ایرانی هم در آن لیست بود:<br/>
1. <a href="http://en.wikipedia.org/wiki/Leila_Khatami">لیلا خاتمی</a><br/>
2. <a href="http://en.wikipedia.org/wiki/Maryam_Mirzakhani">مریم میرزاخانی</a></br/><br/><br/>
از افراد آن لیست تنها سه نفر را می شناختم :<br/>
1. <a href="http://en.wikipedia.org/wiki/Sofia_Kovalevskaya">سوفیا کوالوسکایا</a><br/>
2. <a href="http://en.wikipedia.org/wiki/Emmy_Noether">اِمی نوثر</a><br/>
3. <a href="http://en.wikipedia.org/wiki/Ada_Lovelace">ادا لاولیس</a><br/>
گمان کنم "امی نوثر" از دو فرد دیگر تاثیرگذارتر بود!
<br/><br/>
همین طوری! برام جالب بود!
</div>
<br/><br/>
<div align="center"><img src="http://83.137.212.42/sitearchive/eoc/images/womeninmaths.jpg" alt="Women Mathematicians"/></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/195-Dancing-With-the-Bear.html" rel="alternate" title="Dancing With the Bear" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-10-01T12:58:00Z</published>
        <updated>2008-11-13T22:23:20Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=195</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/195-guid.html</id>
        <title type="html">Dancing With the Bear</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>لحظات دردناک حداقل این خوبی را دارد که انسان برخی شرایط نامطبوع خود را کشف می کند،<br />
ولی ممکن است این بدی را داشته باشد که برخی از این کشفیات اشتباه باشند!</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/194-Xibalba.html" rel="alternate" title="Xibalba" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-26T20:57:21Z</published>
        <updated>2008-11-13T22:23:49Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=194</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=194</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/194-guid.html</id>
        <title type="html">Xibalba</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>گاهی اوقات انسان محکوم است که زندگی شادی داشته باشد،<br />
گاهی اوقات انسان محکوم است که احساس تنهایی نکند،<br />
گاهی اوقات انسان خاطرات گذشته را پاک می کند،<br />
و زمان حال بدون هیچ خاطره و ردپایی می گذرد،<br />
و آینده ای مجهول و بی اهمیت فرا می رسد.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/193-A-quote-on-life.html" rel="alternate" title="A quote on life" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-17T20:32:08Z</published>
        <updated>2008-11-13T22:24:40Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=193</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=193</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/193-guid.html</id>
        <title type="html">A quote on life</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="ltr" align="left">
Just living is not enough.  One must have sunshine, freedom, and a little flower.  <b>~Hans Christian Anderson</b>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/192-Almost-Here.html" rel="alternate" title="Almost Here" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-14T16:30:01Z</published>
        <updated>2008-11-13T22:24:53Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=192</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/192-guid.html</id>
        <title type="html">Almost Here</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>وجود خودمان (و بازخورد رفتارمان) دلیل خوبی است برای اینکه درباره ی دیگران و معنی رفتار آن ها زود قضاوت نکنیم.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/191-Break-with-your-past.html" rel="alternate" title="Break with your past" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-12T05:38:59Z</published>
        <updated>2008-11-13T22:25:12Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=191</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/191-guid.html</id>
        <title type="html">Break with your past</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>هنگامی که جوان تر بودم، هنگام سحر با صدای پرنده ها از خواب بیدار می شدم، و لذتی عجیب به من دست می داد.<br />
تا آنکه مدتی پیش، در جایی سکنی گُزیدم که پرنده ی مهاجر در آن می خواند!<br />
شنیدن صدای پرنده ی مهاجر و مشاهده ی طریقه پرواز آن از هر لذتی فراتر بود،<br />
دوست داشتم تا آخر عمر هر روز صبح تا شب به صدای پرنده ی مهاجر گوش فرا می دادم،<br />
ولی حیف که پرنده ی مهاجر نیاز دارد که مهاجرت کند، و من هرگز به آرزوی خود نخواهم رسید!</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/190-I-hate-213.207.241.4.html" rel="alternate" title="I hate 213.207.241.4" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-10T15:39:19Z</published>
        <updated>2008-11-13T22:25:31Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=190</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/190-guid.html</id>
        <title type="html">I hate 213.207.241.4</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">

مردم به من افتخار خواهند کرد، <br/>
هم میهنانم، هم نژادهایم، هم کیشانم،<br/>
چون آن ها نیاز دارند، نیاز دارند به دلیلی،<br/>
به دلیلی که با آن ثابت کنند که ایرانی بودن خوب است، ترک بودن خوب است، <br/>
آن ها نیاز دارند که خوش باشند،<br/>
ولی خوشی را در چیزهایی جستجو می کنند که خودشان در ایجاد آن هیچ اختیاری ندارند،<br/>
و نخواهند اندیشید به اینکه که خوشی آن ها مصادف با ناخوشی ملتی دیگر است.

<br/><br/>
--------------------------------------------------------------------------
<br/><br/>

مردم اسطوره ها خواهند ساخت،<br/>
و فراموش خواهند کرد که اسطوره یعنی دست نیافتنی، <br/>
و نخواهند فهمید که با این کار خودشان را محدود کرده اند،<br/>
و نخواهند فهمید که بدون اسطوره می توان زندگی بهتری داشت.

</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/188-How-does-it-feel-to-be-87208151.html" rel="alternate" title="How does it feel to be 87208151?" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-10T12:05:22Z</published>
        <updated>2008-11-13T22:31:30Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=188</wfw:comment>
    
        <slash:comments>5</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=188</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/188-guid.html</id>
        <title type="html">How does it feel to be 87208151?</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>تحصیل خواهم کرد، تحصیل خواهم کرد تا فراموش کنم ...<br />
 فراموش کنم که من تنها هستم.</p>

<p>تحصیل خواهم کرد، و به مدارج بالاتر دست پیدا خواهم کرد ...<br />
 احساس بودن در بهشت را خواهم کرد،<br />
 ولی فراموش خواهم کرد که در بهشت واقعی نیستم،<br />
 و جایی که من هستم تنها یک باغچه است،<br />
 و پائیز و زمستانی در راه است.</p>

<p>تحصیل خواهم کرد، و شخصیت مهمی خواهم شد، شخصیتی بسیار مهم!<br />
 مردم مرا دوست خواهند داشت، و مرا تحسین خواهند کرد، <br />
 ولی فراموش خواهم کرد که مردم تخصص مرا دوست دارند، و نه من را،<br />
 فراموش خواهم کرد که مردم مثل من شدن را دوست دارند، و نه بودن با من را، <br />
 و فراموش خواهم کرد که تنها یک تصادف برای فراموش شدن کافی است!</p>

<p>تحصیل خواهم کرد، تحصیل خواهم کرد تا فراموش کنم، فراموش کنم درد واقعی وجود داشتن را! درد تنها بودن را ...</p>

<hr />
<p>پائیز خواهد آمد، و من تنها خواهم بود، تنهاتر از گذشته، <br />
زمستان خواهد آمد، و من سرد خواهم شد، سردتر از گذشته، <br />
بهار خواهد آمد، و آرام از کنارم خواهد گذشت، بی آنکه وجودش را حس کنم، <br />
تابستان خواهد آمد، ولی من به فکر رسیدن پائیز سال بعد خواهم بود!</p>

<p>دوباره پائیز خواهد آمد، زمستان، بهار، و تابستان نیز،<br />
ولی دردها همه فراموش شده، و من فقط به فکر بالا رفتن هستم، به فکر بالا رفتن از قله های افتخار!</p>

<p>به اوج قله های افتخار خواهم رسید، نفسی خواهم کشید،<br />
و سپس خود را پرت خواهم کرد به سوی دردهای فراموش شده،<br />
ولی حیف که ظرفیتش را نخواهم داشت،<br />
و چه پایان غم انگیزی خواهد داشت بودن من!</p>

<hr />
<p>چه خوش گفت آن دوست نیک کردار:<br />
«از فراموش شدگان هستیم و خواهیم بود»<br />
وای به حال من،<br />
منی که مرگ نیز فراموشم کرده است!</p>

<hr />
<p><span style="color: blue;"><br />
پ.ن. : منظورم از جملات بالا این نبود که حس می کنم دوستانم مرا به خاطر چیز دیگری ، و نه به خاطر خودم، دوست دارند. لطفا سوء تفاهم نشود! اگر با کسی رفتار دوستانه ای دارم، مطمئن باشد که از او خیلی خوشم می آید! :) و اگر نسبت به کسی احساس خوبی نداشته باشم، معمولا آشکار می سازم!<br />
</span></p>

<p>&lt;/html&gt;</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/187-Summer-of-Big-Decisions.html" rel="alternate" title="Summer of Big Decisions" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-09T02:40:11Z</published>
        <updated>2008-11-13T22:32:35Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=187</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=187</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/187-guid.html</id>
        <title type="html">Summer of Big Decisions</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>تابستان تصمیمات بزرگ، تصمیماتی که هیچ کدام عملی نشد ...<br />
ولی زندگی همچنان جریان دارد.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/186-Cyber-Madness.html" rel="alternate" title="Cyber Madness" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-09-07T02:48:38Z</published>
        <updated>2008-11-13T22:33:13Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=186</wfw:comment>
    
        <slash:comments>11</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=186</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/186-guid.html</id>
        <title type="html">Cyber Madness</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="justify">
بحثی که می خواهم مطرح کنم، احتمالا موافقان و مخالفانی خواهد داشت. نکته ی مورد بحث من اين است که: "تا چه حدی به کامپیوتر و اينترنت نیازمندیم؟" <br/> <br/>
نمی توان منکر آن شد که کامپیوتر و اینترنت، نقش برجسته ای در تسهیل زندگی و به اشتراک گذاشتن اطلاعات دارد. من خودم شخصی هستم که ساعات بسیاری را پشت کامپیوتر و متصل به اینترنت صرف می کنم. البته میزان این ساعات بستگی به وضعیت فعلی زندگی ام دارد، مثلا الان احتمالا روزی 12 ساعت یا بیشتر پشت کامپیوتر هستم. ولی آيا واقعا اين میزان استفاده از کامپیوتر زندگی من را بهتر کرده است؟ مرا دانشمندتر کرده است؟ آیا زندگی ای بهتر از این نمی توان داشت؟  <br/> <br/>
البته، خودم از این نوع زندگی اصلا راضی نیستم، و خیلی از اوقات دلیلم برای این کار این است که مثلا در حال فعلی، توانایی انجام کار دیگری را ندارم، یا مثلا در بعضی از اوقات، صرف ساعات پشت کامپیوتر تنها برای از یاد بردن مشکلات دیگر زندگی است و به عنوان نوعی مسکن به کار می رود. ولی احتمالا همان گونه که دوستانم شاید به یاد داشته باشند، در روزهایی که از زندگی بسیار راضی بودم، استفاده ی من از کامپیوتر به شدت کمتر بود. مثلا وقتی از دانشگاه به خوابگاه می آمدم، دیگر از کامپیوتر استفاده ای نمی کردم، ... <br/> <br/>
عقیده ی من این است که اکثر اوقات (و نه همیشه، مثلا نه هنگام آمادگی برای مسابقات برنامه نویسی)، روزی حداکثر 3 ساعت پشت کامپیوتر نشستن، و روزی حداکثر 1 ساعت متصل بودن به اینترنت کافی است! اگر مخالف این عقیده هستید، لطفا ابتدا چند روز استفاده خود از کامپیوتر را بررسی کنید، و سپس به خواندن ادامه دهید. <br/> <br/>
یکی از دوستان می گفت که اینترنت منبع دانش است، و اگر بخواهیم همان دانش را خودمان تولید کنیم قرن ها طول می کشد. تا حدی قبول می کنم.  ولی تا حدی نه. اولا، به نظر من اینترنت بیشتر منبع "اطلاعات" است و نه دانش. اگر چیزی که مثلا در یک ساعت خوانده می شود، به همان میزان یا بیشتر مورد تفکر و بررسی قرار نگیرد، شک دارم بتواند تاثیر بسزایی در شخصیت، قدرت تفکر، ... ما داشته باشد. و برای فکر کردن، اصولا باید پردازنده ی مغز متمرکز بر روی آن موضوع شود، و بعید می دانم اگر بقیه ی روز را پشت کامپیوتر صرف کنیم هیچ گاه این فرصت را به دست بیاوریم.   <br/> <br/>
ثانیا، تجربه ی شخصی من بیان می کند که معمولا راه های بهتری برای دانشمندتر شدن وجود دارد. مثلا من خودم روزگاری به شدت در اینترنت به دنبال مطالبی مرتبط با نظریه ی گراف ها بودم، و دوست داشتم منابع بیشتری پیدا کنم و دانش خود را در این زمینه افزایش دهم. ولی واقعا اعتقاد دارم آن یک ماهی که به جای این کار نشستم و یک کتاب در زمینه ی نظریه ی گراف ها خواندم و تمرین های آن را حل کردم، به میزان خیلی بیشتر تاثیرگذارتر بود. <br/> <br/>
تجربه ی دیگر اینکه، تا حدودی حس می کنم اینکه در مسابقات برنامه نویسی تنها یک کامپیوتر در اختیار تیم های سه نفری است، خیلی اوقات، مزیت و نه محدودیت محسوب می شود. دلیل من و خیلی از افراد با تجربه هم این خواهد بود که روی کاغذ بهتر می شود فکر کرد، و یک شخص کم تجربه تر وقتی پشت کامپیوتر است، وسوسه می شود که شروع به نوشتن کد کند، و تقریبا فرصتی برای فکر کردن پیدا نمی کند، و چنین شخصی هیچ وقت موفق نخواهد شد یک مساله ی سخت را حل کند! داشتن یک کامپیوتر حداقل این مزیت را دارد که در هر لحظه حداقل دو نفر مجبورند پشت کامپیوتر نباشند، و بهترین کاری که می توانند فکر کردن است، که به مراتب از نوشتن کد سخت تر و البته شیرین تر است. <br/> <br/>

همچنین گمان می کنم داشتن دوستان و اطرافیانی (مهربان :D) با علایق مشترک، خیلی اوقات می تواند به اندازی جستجو در اینترنت و یا حتی بیشتر در پیشرفت علمی انسان تاثیر گذار باشد. حداقل این مزیت را هم خواهد داشت که انسان با چند نفر ارتباطی عاطفی نیز برقرار خواهد کرد، و لذت های فراتری را نیز تجربه می کند.

<br/><br/>

تحصیلات عالی برای شخصی علاقه مند به علوم کامپیوتر حداقل این مزیت را دارد که شخصی که در زمینه ی علوم کامپیوتر  تحصیلات عالی دارد دیگر نیازی ندارد برای پول درآوردن ساعت های زیادی را پشت کامپیوتر بنشیند، و کد بنویسد، و این کار احمقانه (یعنی نشستن پشت کامپیوتر به میزان زیاد) را تا آخر عمر ادامه دهد. و به جای این کار می توان در مکانی سرسبز، کنار رودخانه ای، بنشیند، و به مساله ای که روی آن باید تحقیق کند فکر کند! یا اینکه در حالی که بچه های خود را در حال بازی کردن می بیند، و از صدای آن ها لذت می برد، روی مساله ای فکر کند. <br/> <br/>
لطفا نظرات خود را بیان کنید! فقط این نکته را در نظر داشته باشید که مورد بحث من نشستن اکثر روز پشت کامپیوتر و زل زدن به مانیتور، و نه استفاده های مفید آن (مثلا گوش دادن به موسیقی، ...) است.

<br/><br/><span style="color:green">
پ.ن. : ظاهرا این گونه از متن بالا برداشت می شود که من اعتقاد دارم دانشمندتر = خوشبخت تر. (و چقدر احمق هستم اگر این اعتقاد را داشته باشم) ولی معلومه که اینطوری نیست :) اگر بحث های بالا را مطرح کردم، به این دلیل بود که اکثر افرادی که من می شناسم که به میزان زیاد پشت کامپیوتر هستند و این کارشان را موجه می دانند، دلیلشان همین است که به دنبال دانش بیشتری هستند، و من گمان می کنم این گونه افراد اشتباه می کنند، و راه های بهتری برای کسب دانش بیشتر که لذت بیشتری هم دارد وجود دارد. و گرنه افرادی که مثلا به چت یا گیم اعتیاد دارند، از نظر من به صورت بدیهی اشتباه می کنند و گمان کنم نظر اکثر افراد هم همین باشد، و خودشان هم توجیه خاصی برای این کارشان نداشته باشند، و اصلا نیازی نیست به بحث در مورد آن ها پرداخته شود. گمان کنم اکثرا افرادی که مثلا به دنبال دانش هستند کارشان را موجه می دانند، و برای همین من فقط به این گروه افراد پرداختم، که به نظرم اصولا کار اشتباهی انجام می دهند. که نه تنها دانش قابل توجهی کسب نمی کنند، بلکه در این حین میزان زیادی وقت تلف می کنند، و خودشان را از لذت واقعی زندگی نیز محروم می کنند. و این افراد می توانند با میزان ساعات استفاده ی خیلی کمتر از کامپیوتر و رایانه ( و نه هیچ استفاده ای ) به همان نتیجه یا حتی بهتر دست پیدا کنند.
</span>

<br/><br/>
<span style="color:blue">
پ.ن. 2 : برای اینکه نسبتا ثابت کنم به نظرم دانشمندتر مخالف خوشبخت تر است، گمان کافی باشد که بگویم تا لحظات آخر، یعنی تا حدود یک هفته مانده به ثبت نام ارشد (یعنی حدودا هشتم شهریور 1387) نمی خواستم ادامه تحصیل بدهم و در دوره ی ارشد ثبت نام کنم. و الان هم که ثبت نام کردم، به این دلیل نیست که خودم انگیزه پیدا کرده ام، یا آینده ی خود را روشن تر می بینم. دلیل اصلی ام برای انصراف از ادامه تحصیل این بود که می خواستم زندگی بهتر و با آرامش تری داشته باشم، هر چند مطمئنم خیلی از افراد مرا به خاطر این دلیل احمق خواهند نامید، و البته آزادند هر اعتقادی داشته باشند، ولی من هرگز دلایل آن ها را برای ادامه ی تحصیل نپذیرفتم و نپذیرفته ام، ولی چه کنم که انسان مستقل از دیگران نیست و برخی اوقات باید تن به خواسته های دیگران دهد!
<br/>
یا مثال دیگر اینکه پارسال نمی خواستم در ACM ICPC شرکت کنم، ولی به دلایلی به غیر از لذت بردن از این مسابقات، در آخرین لحظات ممکن وارد معرکه شدم!
</span>

<br/><br/>
<span style="color:green">
پ.ن. 3 : اینکه اعتقاد ندارم دانشمند تر شدن = خوشبخت تر بودن، چندین موضوع را می رساند : اولا اینکه شرط کافی برای احساس خوشبختی در خودم فقط علم زیاد نیست (هرچند جزئی از آن است). ثانیا، اگر اینگونه اعتقاد داشته باشم، منجر به دید بدی و طبقه بندی بدی نسبت به دیگران خواهد شد. ثالثا، اگر این دو را مساوی در نظر نگیرم، این به این معنا نیست که اشتراک مجموعه افراد خوشبخت و افراد دانشمند تهی است، و مسلما افراد دانشمند زیادی بوده اند که بسیار خوشبخت بودند. شاید داشتن کمی دید در زمینه ی ریاضیات گسسته و نظریه ی مجموعه ها در رفع ابهام کمک کند! و امیدوارم کسی از دست من ناراحت نشده باشد.
</span>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/185-Last-Judgement.html" rel="alternate" title="Last Judgement" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-28T12:31:49Z</published>
        <updated>2008-11-13T22:33:23Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=185</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=185</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/185-guid.html</id>
        <title type="html">Last Judgement</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>ساعت دوازده و چهل و پنچ دقیقه، هنگامی که به نظر می رسید خوشبختی من در حال آغاز شدن است، دنیا به پایان رسید.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/184-Promentory.html" rel="alternate" title="Promentory" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-27T20:02:55Z</published>
        <updated>2008-11-13T22:33:36Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=184</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=184</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/184-guid.html</id>
        <title type="html">Promentory</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>جاودانگی نیاز به کارهای بزرگ دارد، ولی کارهای بزرگ نیازی به جاودانگی ندارند ...</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/183-Fort-Battle.html" rel="alternate" title="Fort Battle" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-25T17:02:20Z</published>
        <updated>2008-11-13T22:33:47Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=183</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=183</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/183-guid.html</id>
        <title type="html">Fort Battle</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>هنگامی که «ارواح پلید» به «رویاها» ی انسان راه پیدا می کنند، احساس عجیبی به انسان دست می دهد که در یک هنگام، هم احساس خوشبختی می کند و هم احساس بدبختی ...</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/182-IOI-2008.html" rel="alternate" title="IOI 2008" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-23T22:40:14Z</published>
        <updated>2008-11-13T22:34:50Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=182</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=182</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/182-guid.html</id>
        <title type="html">IOI 2008</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="justify" >
<img src="images/karatkevich.jpg" align="left" alt="IOI, Karatkevich" style="padding:10px"/>

<a href="http://ioi2008.org/" >المپیاد کامپیوتر جهانی 2008</a> برگزار شد. از نکات جالب  مسابقه ی امسال:<br/><br/>

1. متاسفانه دولت مصر ابتدا از دادن ویزا به تیم ایران سر باز زد، و وقتی ویزا صادر کرد که یک روز از مسابقات گذشته بود، و دیگر دیر شده بود. واقعا جای تاسف داره!<br/><br/>

2. موجودی بلاروسی به نام <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=22263204">Henadzi Karatkevich</a> که تنها 14 سال دارد، مدال طلا گرفت. البته خیلی جای تعجب نداره، چون وقتی 12 ساله بود مدال نقره گرفته بود، و هنگام 13 سالگی مدال طلا. اگر 2 سال دیگر هم مدال طلا بگيره، به پرافتخارترین شرکت کننده ی المپیاد کامپیوتر را کسب می کنه. (فعلا متعلق به <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=7300191">Filip Wolski</a> هست با 4 مدال طلا). 
<br/><br/>
3. پس از گذشت مدت نسبتا زیادی، هنوز نتایج در وب سایت مسابقات قرار نگرفته. به هر حال، می توانید نتایج را در <a href="http://contests.snarknews.info/index.cgi?data=ioi/2008/ioi08res_e&menu=index&head=index&hide12=y">SnarkNews</a> ّببینید.
<br/><br/>
4. نتیجه تیم چین خیلی خوب نبود. یکی از اعضای تیم خیلی بد عمل کرد و مدال نقره گرفت، و در نتیجه تنها موفق به اخذ 3 طلا شدند :D سال 2004 تا سال 2007 همه ی مدال های چین طلا بود.
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/180-The-Fountain-of-Youth.html" rel="alternate" title="The Fountain of Youth" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-23T20:56:10Z</published>
        <updated>2008-11-13T22:34:54Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=180</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=180</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/180-guid.html</id>
        <title type="html">The Fountain of Youth</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="justify">
<img src="images/last_of_mohicans.jpg" align="left" border="0" alt="The Last of Mohicans" style="padding:10px" />

مواقع زیادی در زندگی، خیلی از معانی context free نیستند، و خیلی از چیزها با توجه به context-ای که در آن وجود دارند معنا پیدا می کنند ...<br/><br/>
موسیقی ای که ممکن است برای یکی بسیار جذاب و پر از مفاهیم عمیق باشد، ممکن است برای دیگری موسیقی ای بسیار بد و بی هیچ مفهوم سازنده ای به نظر برسد ...<br/><br/>
موسیقی ای که زمانی یادآور پیروزی و شکست ناپذیری بود، ممکن است روزی یادآور بدبختی و فلاکت و «نابودی رویاهای شیرین» باشد ...<br/><br/>
توانایی حرف زدن نعمتی بزرگ است، توانایی حرف نزدن نعمتی بزرگ تر.<br/><br/>
نقد هنگام رخ دادن؟ یا نقد پس از رخ دادن؟<br/>
نقد هنگام دقت؟ یا نقد هنگام عدم دقت؟<br/>
<br/>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/179-Hadi-Saei-wins-gold-medal!.html" rel="alternate" title="Hadi Saei wins gold medal!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-22T12:34:36Z</published>
        <updated>2008-11-13T22:35:41Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=179</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=179</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/179-guid.html</id>
        <title type="html">Hadi Saei wins gold medal!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
<img src="images/saei.jpg" align="left" /> 
هادی ساعی مدال طلای المپیک پکن را تصاحب کرد!
<br/><br/>
 ای کاش همه ی ما «ساعی» باشیم ...
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/176-IAUM-CCC-5.html" rel="alternate" title="IAUM CCC 5" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-18T14:24:00Z</published>
        <updated>2008-12-21T18:45:09Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=176</wfw:comment>
    
        <slash:comments>8</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=176</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
            <category scheme="http://blog.pykello.net/index.php?/categories/11-IAUM-CCC" label="IAUM CCC" term="IAUM CCC" />
    
        <id>http://blog.pykello.net/index.php?/archives/176-guid.html</id>
        <title type="html">IAUM CCC 5</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">

<img src="images/iaumc3.png" alt="IAUM CCC 5" border=0 align="left" />

بالاخره، مرحله نهایی مسابقه ی IAUM CCC 5 برگزار شد، و تنها چیزی که برای من به جا ماند، خاطره ای نسبتا خوش بود! هرچند از چند روز قبل از مسابقه تا اتمام مسابقه ی نهایی استرس شدیدی داشتم و آرزوی اتمام این لحظات را داشتم، ولی پس از اتمام مسابقه ی نهایی و شنیدن نظرات شرکت کنندگان، احساس رضایت کردم. <br/><br/>

من فقط یک طراح سوال و داور بودم، و عضو هیئت اجرایی نبودم، با این حال، در این مدتی که در مشهد بودم، تلاش قابل تقدیر دانشجویان دانشگاه آزاد مشهد را مشاهده کردم، و از ته دل آرزو کردم که این مسابقات باز هم ادامه داشته باشد. احتمالا مهم ترین دلیل اینکه هر سال شرکت کنندگان این مسابقات بیشتر می شود، و افراد قوی تری هر سال جذب این مسابقات می شوند، برگزاری بسیار خوب این مسابقات است. <br/><br/>

به نظر من، یکی از نکات مثبت حضور داشتن در این مسابقات آشنا شدن با افرادی است که علايقم با علايق آن ها  همپوشانی دارد، ولی قبلا با آن ها آشنا نبودم، و این احساس خوبی در من ایجاد می کند.<br/><br/>

نظرم در رابطه با نتیجه ی مرحله ی نهایی: گمان کنم چند نفر از افراد، احتمالا به علت عوامل جانبی (مانند استرس سر مسابقه، ...)، و نه به علت ضعف در حل مساله و توانایی علمی، ضعیف تر از توان واقعی خود عمل کردند و نتیجه نهایی کمی اعجاب انگیز بود. برنده ی نهایی مسابقه، آقای نیما احمدی پور بود، که بسیار خوب عمل کرد، و توانست همه ی مسائل را حل کند. به هر حال، تعداد زیادی از شرکت کننده ها را می شناختم و با تعدادی از آن ها دوست بودم، و از خوب عمل کردن خیلی های خوشحال شدم، و از بد عمل کردن خیلی ها ناراحت. <br/><br/>

با این حال، عادی است که شدیدا دوست داشته باشم که کسی که دو سال هم تیمی ام بود، و یک ترم هم اتاقی، و برای باقی عمرم یک دوست بسیار خوب، یعنی محمدرضا خانی، خیلی خوب عمل کند. نتیجه نهایی او (یعنی چهارم) خوب بود، ولی با توجه به اینکه به نظر من باهوش ترین عضو تیم Dreamers United  بود، گمان می کنم می توانست بهتر از این هم عمل کند. احتمالا یکی از دلایل اینکه خیلی خوب عمل نکرد، کمبود تمرین در چند ماه اخیر بود. امیدوارم هر روز موفق تر از دیروز باشد. <br/><br/>

در ادامه به توضیح مختصر در مورد سوالاتی که من طرح کرده بودم می پردازم: <br/><br/>

<span style="color:red">مسابقه نیمه نهایی صفر</span>(<a href="http://pykello.net/pdf/CCC5-Onsite-Semifinals-0.pdf">لینک سوالات</a>)<br/><br/>

<span style="color:green">سوال C - کوتاه ترین زیر رشته ی نا مشترک : </span> این سوال را با استفاده از Trie و مرتبه ی زمانی (O(n^2 حل کرده بودم، ولی راه حل های با مرتبه ی زمانی (O(n^2 log n نیز پذیرفته می شدند.<br/><br/>

<span style="color:green">سوال D - مربع ها : </span> هدف این بود که راه حل های (O(n^2 (برنامه نویسی پویا) و (O(n^2 log n (تبدیل به هیستوگرام و مرتب سازی و ...) پذیرفته شوند، ولی متاسفانه داده های تست ضعیف بود و راه حل (O(n^3 نیز پذیرفته می شد. <br/><br/>

<span style="color:green">سوال E - تطبیق الگو : </span> این سوال قرار بود سخت ترین سوال مسابقه باشد، ولی به علت عدم دقت در تنظیم محدودیت ها، آسان ترین سوال مسابقه بود! (مثلا باید اگر طول الگو 20000 بود و تعداد علامت سوال ها حداکثر 100، در آن صورت، بازهم راه حل خوبی برای حل مساله وجود داشت، ولی راه حل بدیهی خوب عمل نمی کرد.) با همین محدودیت ها، راه حل بدیهی به خوبی جواب می دهد. ولی اگر محدودیت ها خیلی سخت تر از این بودند، نسخه ی تغییر یافته ای از KMP، یا استفاده از Aho-Corasick می توانست مساله را به خوبی حل کند.<br/><br/>

<span style="color:green">سوال F - شمارش جفت ها : </span> قرار بود راه حل (O(n log n پذیرفته شود، ولی ظاهرا برخی از شرکت کننده ها با راه حل (O(n^2 محدود شده نیز توانسته بودند این سوال را حل کنند.<br/><br/>

<span style="color:green">جمع بندی :</span>در مجموع، از این مسابقه چندان راضی نبودم! چون زیاد اشتباه کرده بودیم! در انتها نیز دو نفر (نیما احمدی پور، و حامد احمدی) توانستند تمام سوالات را حل کنند، و حامد احمدی عنوان اول این مسابقه را کسب کرد.<br/><br/>

<span style="color:red">مسابقه نیمه نهایی یک</span>(<a href="http://pykello.net/pdf/CCC5-Onsite-Semifinals-1.pdf">لینک سوالات</a>)<br/><br/>

<span style="color:green">سوال B - علی کوچولو و کلمات متقارن : </span> راه حل داور دارای مرتبه ی زمانی متناسب با مجموع طول کلمات بود. <br/><br/>

<span style="color:green">سوال C - تجزیه ی گراف ها : </span> تبدیل می شود به مساله ی 2SAT . تنها یک نفر موفق شد این مساله را سر مسابقه حل کند (مهدی صفرنژاد) ولی حداقل دو نفر دیگر به ایده ی این سوال رسیده بودند ولی از آن جایی که بلد نبودند کد 2SAT را بنویسند، موفق به حل آن نشدند. ظاهرا محمدرضا خانی راه حل دیگری برای این سوال داشت، که به علت خستگی، از او خواستم بعدا توضیح دهد!<br/><br/>

<span style="color:green">سوال F - یافتن زیر درخت : </span> بیش از یک راه حل با مرتبه ی زمانی خطی برای حل این مساله وجود دارد.<br/><br/>

<span style="color:green">جمع بندی :</span> این مسابقه راضی کننده تر از مسابقه ی قبلی بود، و تقریبا هیچ مشکل خاصی پیش نیامد. در انتها مهدی صفر نژاد با حل 5 سوال نفر اول این مسابقه شد.<br/><br/>

<span style="color:red">مسابقه ی نهایی</span>(<a href="http://pykello.net/pdf/CCC5-Onsite-Finals.pdf">لینک سوالات</a>)<br/><br/>

<span style="color:green">سوال A - شمارش درخت های پوشا : </span> این مساله را می توان با استفاده از قضیه ی Matrix-Tree حل کرد. ولی از آن جایی که اصولا نباید انتظار داشته باشیم شرکت کننده ها چنین قضایایی را بلد باشند، من خودم این مساله را با استفاده از یک الگوریتم برنامه سازی پویای (O(n^2 3^n حل کرده بودم. سر مسابقه سه نفر این مساله را حل کردند که دو نفر از قضیه ی مذکور استفاده کردند، و یک نفر از راه حل برنامه سازی پویا (نمی دانم راه حلش شبیه مال من بود یا نه). <br/><br/>

<span style="color:green">سوال B - کوچک ترین مثلث : </span> با راه حل (O(n^3  ای که خوب پیاده سازی شده باشد حل می شود، ولی احتمالا راه حل های بهتری نیز وجود دارند!<br/><br/>

<span style="color:green">سوال C - رشته های امن : </span> برنامه سازی پویا با استفاده از آرایه ی overlap الگوریتم KMP! <br/><br/>

<span style="color:green">سوال D - مسافرت های تصادفی : </span> راه حل من یک DFS بود، ولی ظاهرا اکثر شرکت کنندگان از راه حل دیگری استفاده کردند.<br/><br/>

<span style="color:green">سوال E - انتخاب پروژه ها : </span> تبدیل می شود به مساله ی مشهور Minimum Cut در گراف. تنها یک نفر (نیما احمدی پور) موفق به حل این مساله شد، ولی حداقل یک نفر دیگر ایده ی درست برای حل این مساله را داشت (مهدی صفرنژاد)، که متاسفانه راه حلش جواب درست را نمی داد.<br/><br/>

<span style="color:green">سوال F - پارادوکس : </span> راه حل این مساله ترکیبی است از پیدا کردن مولفه های همبند، Brute Force، و برنامه سازی پویا. باز هم تنها یک نفر موفق به حل این مساله شد (نیما احمدی پور) ولی راه حل مهدی صفرنژاد هم اکثر تست ها را درست جواب می داد و تنها در چندین تست با پاسخ داور تفاوت داشت.<br/><br/>

<span style="color:green">سوال G - طولانی ترین زیردنباله ی مشترک : </span> برنامه سازی پویا. نکته ی اساسی این مساله این بود که هر عدد حداکثر یک بار در هر دنباله وجود دارد. چندین نفر تلاش کردند که از چندین LCS دو به دو استفاده کنند که مسلما راه حل درستی نیست و با کمی تامل می توان مثال نقضی برای آن پیدا کرد. <br/><br/>

<span style="color:green">جمع بندی : </span> از آن جایی که مشکل خاصی وجود نداشت، و شرک کنندگان هم از سطح و نوع سوالات راضی بودند، مسابقه ی خوبی بود، و باعث شد که مسابقات به خوشی برای من تمام شود. در انتها نیز نیما احمدی پور با حل 8 سوال مقام اول را کسب کرد.

</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/178-I-run.html" rel="alternate" title="I run" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-18T04:37:00Z</published>
        <updated>2008-11-13T22:55:24Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=178</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=178</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/178-guid.html</id>
        <title type="html">I run</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
می دوم در کوچه های پر از بن بست، و خیابان های پر از وحشت ...<br/> فرار می کنم از حال، فرار می کنم از گذشته ...<br/> چرا دیگر از کوه های زیبا بالا نمی روم؟
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/177-Minilek-Boycotts-Google-Codejam.html" rel="alternate" title="Minilek Boycotts Google Codejam " />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-17T16:15:31Z</published>
        <updated>2008-11-13T22:41:43Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=177</wfw:comment>
    
        <slash:comments>5</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=177</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/177-guid.html</id>
        <title type="html">Minilek Boycotts Google Codejam </title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
<img src="http://www.topcoder.com/i/m/Minilek_big3.jpg" align="Left">
احتمالا بعضی از شما می دانید که قوانین امسال <a href="http://code.google.com/codejam/">Google CodeJam</a> اجازه ی شرکت در مسابقات نیمه نهایی و نهایی را به ساکنان ایران و ساکنان سایر کشورهای مورد تحریم آمریکا نمی دهد. شاید برایتان جالب باشد که بدانید حداقل یک آمریکایی (<a href="http://www.topcoder.com/tc?module=MemberProfile&cr=9958883">Jelani Nelson یا Minilek</a>) به همین دلیل این مسابقات را تحریم کرده است. (<a href="http://forums.topcoder.com/?module=Thread&threadID=615210&start=345&mc=351#1013978">لینک اول</a>، <a href="http://groups.google.com/group/google-code/browse_thread/thread/d05482fadf6cd882/d36f55ed556b7252?lnk=raot">لینک دوم</a>).
<br/><br/>به عنوان یک ایرانی، از او تشکر می کنم!
<br/><br/> شاید جالب باشید بدانید که این شخص آدم خفنی می باشد. (<a href="http://web.mit.edu/minilek/www/">صفحه شخصی وی</a>)
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/175-The-Sky-is-the-Limit.html" rel="alternate" title="The Sky is the Limit" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-17T13:47:08Z</published>
        <updated>2008-11-13T22:42:02Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=175</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/175-guid.html</id>
        <title type="html">The Sky is the Limit</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">اساطیر باعث محدودیت و عدم موفقیت می شوند.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/174-The-Art.html" rel="alternate" title="The Art" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-08-17T12:17:53Z</published>
        <updated>2008-11-13T22:42:18Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=174</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/174-guid.html</id>
        <title type="html">The Art</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"> هُنَریست «لبخند زدن و خوش برخورد بودن» در هنگام استرس و نگرانی بسیار شدید.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/173-Importance-of-Possibly,-U+2203,-....html" rel="alternate" title="Importance of &quot;Possibly&quot;, U+2203, ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-29T15:17:03Z</published>
        <updated>2008-11-13T22:42:30Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=173</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=173</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/173-guid.html</id>
        <title type="html">Importance of &quot;Possibly&quot;, U+2203, ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="RTL" align="right">یکی از تفاوت های نوشته های پولیا و دیگران در نحوه ی به کار بردن adverb ها و quantifier هاست. <br/><br/>برنده ی بازی کیست؟ <br/> این تنها یک ارجاع است!</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/172-...-were-always-there-....html" rel="alternate" title="... were always there ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-29T15:04:47Z</published>
        <updated>2008-11-13T22:55:37Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=172</wfw:comment>
    
        <slash:comments>7</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=172</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/172-guid.html</id>
        <title type="html">... were always there ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="RTL" align="right">
رابطه ی حالت کنونی من و حالت کنونی دنیا چیست؟ <br/><br/>حالت کنونی من عضو ی از حالت کنونی دنیا است، یا حالت کنونی دنیا عضوی از حالت کنونی من؟
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/171-We-got-a-winner!.html" rel="alternate" title="We got a winner!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-27T19:07:58Z</published>
        <updated>2008-11-13T22:55:50Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=171</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=171</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/171-guid.html</id>
        <title type="html">We got a winner!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="RTL" align="right">برخی اوقات از اول نوشتن کد، آسان تر از پیدا کردن و رفع اشکال های کد است. ممکن است در زندگی واقعی هم همچنین مواقعی وجود داشته باشند!</div>
<div dir="RTL" align="right">اگر خدا Feedback را نمی آفرید، احتمالا بدبخت می شدیم! یا لا اقل، خوشبخت نمی شدیم.</div><br />
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/169-All-the-Sad-People.html" rel="alternate" title="All the Sad People" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-15T20:22:33Z</published>
        <updated>2008-11-13T22:55:57Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=169</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/169-guid.html</id>
        <title type="html">All the Sad People</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">مگه فرقی می کنه چطوری خوشبخت باشم؟ با گذشته یا بی گذشته؟ با دوستان قدیمی یا با دوستان جدید؟ با قد بلند یا با قد کوتاه؟<br/><br/>چه چیزی هویت منو تشکیل می ده؟ چند تا خط کج و کوله یا چند تا کلمه؟</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/167-Travelling-Salesman-Problem.html" rel="alternate" title="Travelling Salesman Problem" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-06-25T12:50:14Z</published>
        <updated>2008-11-13T22:56:12Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=167</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=167</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/167-guid.html</id>
        <title type="html">Travelling Salesman Problem</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="center">
<a href="http://xkcd.com/399/">
<img src="images/travelling_salesman_problem.png" alt="Travalling Salesman Problem"/>
</a>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/166-Brainy-Quotes.html" rel="alternate" title="Brainy Quotes" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-06-20T17:52:48Z</published>
        <updated>2008-11-13T22:56:33Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=166</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=166</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/166-guid.html</id>
        <title type="html">Brainy Quotes</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="ltr" align="left"> 
"Live as if you were to die tomorrow. Learn as if you were to live forever."
</div>
<div dir="ltr" align="right">
<b>- Mohandas Karamchand “Mahatma” Gandhi</b>
</div>
<br/><br/>
<div dir="ltr" align="left"> 
"A diamond is a piece of coal that stuck to the job."
</div>
<div dir="ltr" align="right">
<b>- Thomas A. Edison</b>
</div>
<br/><br/>
<div dir="ltr" align="left"> 
"Programming is not a zero-sum game. Teaching something to a fellow programmer doesn't take it away from you. I'm happy to share what I can, because I'm in it for the love of programming."
</div>
<div dir="ltr" align="right">
<b>- John Carmack</b>
</div>
<br/><br/>
<div dir="ltr" align="left"> 
"Low-level programming is good for the programmer's soul."
</div>
<div dir="ltr" align="right">
<b>- John Carmack</b>
</div>
<br/><br/>
<div dir="ltr" align="left"> 
"Do what you think is interesting, do something that you think is fun and worthwhile, because otherwise you won't do it well anyway."
</div>
<div dir="ltr" align="right">
<b>- Brian Kernighan</b>
</div>
<br/><br/>
<div dir="ltr" align="left"> 
"Software has to be designed by hackers who understand design, not designers who know a little about software. If you can't design software as well as implement it, don't start a startup."
</div>
<div dir="ltr" align="right">
<b>- Paul Graham</b>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/165-404.html" rel="alternate" title="404" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-06-06T04:25:48Z</published>
        <updated>2008-11-14T00:12:43Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=165</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=165</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/165-guid.html</id>
        <title type="html">404</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">روزی که کارخانه ها داده ها را پردازش می کنند و بی نهایت داده داریم، آن قدر زياد که عددها سرريز می کنند، باید به فکر به چالش کشیده شدن و مغلوب شدن هم بود.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/164-An-Enumeration-Theorem.html" rel="alternate" title="An Enumeration Theorem" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-06-04T19:37:00Z</published>
        <updated>2008-11-13T22:59:30Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=164</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=164</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/164-guid.html</id>
        <title type="html">An Enumeration Theorem</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
شهر بردارهای n-بعدی که فقط همین یک در را ندارد. همه ی اهالی آن که به دنبال خریدن بردارهای مستقل خطی نیستند.<br/><br/>
اما حيف؛ حيف که برخی شهرها هيچ دری ندارند و برای ورود به آن ها تله پورت نياز است!
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/163-Fire-Effect.html" rel="alternate" title="Fire Effect" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-03-23T20:25:15Z</published>
        <updated>2008-11-13T22:59:33Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=163</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=163</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/163-guid.html</id>
        <title type="html">Fire Effect</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
چند روز پیش الگوریتم مشهور و قدیمی اثر آتش را با استفاده از SDL پیاده سازی کردم. البته قبلا با استفاده از pygame نیز این روش را پیاده سازی کرده بودم، ولی سرعت آن خیلی کمتر از این پیاده سازی بود.<br/><br/>

فایل اجرایی:  <a href="http://pykello.net/fire.exe">fire.exe</a> <br/><br/>
احتمالا نیاز داشته باشید <a href="http://www.libsdl.org/release/SDL-1.2.13-win32.zip" title="SDL.dll">SDL.dll</a> را هم دانلود کنید.<br/><br/>
کد منبع: <a href="http://wiki.pykello.net/doku.php?id=implementation:fire_effect" title="http://wiki.pykello.net/doku.php?id=implementation:fire_effect">http://wiki.pykello.net/doku.php?id=implementation:fire_effect</a><br/><br/>
توضیح الگوریتم: <a href="http://www.gamedev.net/reference/list.asp?categoryid=72#251" title="http://www.gamedev.net/reference/list.asp?categoryid=72#251">http://www.gamedev.net/reference/list.asp?categoryid=72#251</a>
<br/><br/>
<center>
    <img src="images/fire.png" alt="Fire Effect in SDL" />
</center>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/161-BigInt-BigNum-Huge-Numbers-Implementation.html" rel="alternate" title="BigInt / BigNum / Huge Numbers Implementation" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-02-03T15:17:17Z</published>
        <updated>2008-11-14T00:12:48Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=161</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=161</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/161-guid.html</id>
        <title type="html">BigInt / BigNum / Huge Numbers Implementation</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
<a href="http://wiki.pykello.net/doku.php?id=implementation:bignum2" title="پیاده سازی کلاس BigInt در ++C">پیاده سازی کلاس BigInt در ++C</a>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/160-Links-of-the-Week.html" rel="alternate" title="Links of the Week" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-26T13:57:48Z</published>
        <updated>2008-11-13T22:59:51Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=160</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=160</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/160-guid.html</id>
        <title type="html">Links of the Week</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
1. <a href="http://developer.apple.com/documentation/developertools/gcc-4.0.1/gcc/Other-Builtins.html#Other-Builtins">توابع داخلی GCC که بعضی وقت ها (مثلا در مسابقات برنامه نویسی) ممکن است به کار بیاید.</a>
<br/><br/>
2. <a href="http://www.webdesignerwall.com/tutorials/css-gradient-text-effect/" title="CSS Gradient Text Effect">CSS Gradient Text Effect</a>
<br/><br/>
3. <a href="http://lucasmanual.com/mywiki/TurboGears" title="آموزش TurboGears">آموزش TurboGears</a>
<br/><br/>
4. <a href="http://wxformbuilder.org/" title="wxFormBuilder">نرم افزار wxFormBuilder 3.0 RC5 عرضه شد.</a>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/159-AVL-Tree.html" rel="alternate" title="AVL Tree" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-26T09:46:22Z</published>
        <updated>2008-11-13T23:00:00Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=159</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=159</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/159-guid.html</id>
        <title type="html">AVL Tree</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
<a href="http://wiki.pykello.net/doku.php?id=implementation:avl">پیاده سازی درخت جستجوی دودوئی متوازن AVL</a>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/158-Yungom.html" rel="alternate" title="Yungom" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-14T19:04:00Z</published>
        <updated>2008-11-13T23:00:11Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=158</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=158</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/158-guid.html</id>
        <title type="html">Yungom</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl">
<a href="http://wiki.pykello.net/doku.php?id=tehran2007:yungom">توضیح سوال D مسابقه ی منطقه ای تهران 2007</a> توسط تیزترین عضو تیم Tiz Boys: ارسلان موسویان.
<br/><br/>
به غیر از ارسلان، دو نفر دیگر هم قول همکاری داده اند، و احتمالا یک نفر دیگر هم همکاری کند.
<br/>
پ.ن: یک تغییر کوچولو تو متن مقاله انجام شد.
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/156-Some-nice-links.html" rel="alternate" title="Some nice links" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-10T16:02:49Z</published>
        <updated>2008-11-13T23:00:19Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=156</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=156</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/156-guid.html</id>
        <title type="html">Some nice links</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><a href="http://www.smashingmagazine.com/2007/01/19/53-css-techniques-you-couldnt-live-without/" title="53 تکنیک CSS که زندگی بدون آن ها امکان پذیر نیست!">53 تکنیک CSS که زندگی بدون آن ها امکان پذیر نیست!</a>
<br/><br/>
<a href="http://11011110.livejournal.com/" title="David Eppstein">وبلاگ David Eppstein</a>
<br/><br/>
<a href="http://programming.reddit.com/" title="programming.reddit.com">programming.reddit.com</a>
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/154-Faster-Input.html" rel="alternate" title="Faster Input" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-08T02:15:06Z</published>
        <updated>2008-11-13T23:00:33Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=154</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=154</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/154-guid.html</id>
        <title type="html">Faster Input</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>بعضی وقت ها از <a href="http://wiki.pykello.net/doku.php?id=implementation:fast_input" title="ورودی سریع">این کد</a> برای سریع تر خواندن ورودی استفاده می کنم. مسلما از scanf سریع تر است. چون شرایطی که مورد استفاده قرار می گیرد محدود تر است و می توان بسیاری از چیز ها را فرض گرفت.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/153-November-Rain.html" rel="alternate" title="November Rain" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-07T23:55:59Z</published>
        <updated>2008-11-13T23:00:48Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=153</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=153</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/153-guid.html</id>
        <title type="html">November Rain</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>سلام،
<br/><br/>
اگر دوست داشتید، سری به <a href="http://wiki.pykello.net/doku.php?id=november_rain">http://wiki.pykello.net/doku.php?id=november_rain</a> بزنید.
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/152-Some-nice-online-textbooks.html" rel="alternate" title="Some nice online textbooks" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-01-07T00:04:38Z</published>
        <updated>2008-11-13T23:00:58Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=152</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=152</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/152-guid.html</id>
        <title type="html">Some nice online textbooks</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>چند کتاب مجانی خیلی خوب برای خواندن و لذت بردن از زندگی:<br/>
1. <a href="http://www.math.ucla.edu/~tom/Game_Theory/Contents.html">کتاب نظریه ی بازی</a><br/>
2. <a href="http://web.ew.usna.edu/~wdj/book/book.html">جبر مجرد کاربردی</a><br/>
3. <a href="http://www.cs.umd.edu/~mount/754/Lects/754lects.pdf">هندسه ی محاسباتی</a>
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/149-A-Love-Story.html" rel="alternate" title="A Love Story" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-12-20T19:44:08Z</published>
        <updated>2008-11-13T23:01:07Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=149</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=149</wfw:commentRss>
    
    
        <id>http://blog.pykello.net/index.php?/archives/149-guid.html</id>
        <title type="html">A Love Story</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">
<a href="http://tafaramooshi.persianblog.ir/1386_8_tafaramooshi_archive.html#7418313">لینک</a>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/63-Misconception.html" rel="alternate" title="Misconception" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-11-25T13:14:37Z</published>
        <updated>2008-11-13T23:02:28Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=63</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=63</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/10-Thinking" label="Thinking" term="Thinking" />
    
        <id>http://blog.pykello.net/index.php?/archives/63-guid.html</id>
        <title type="html">Misconception</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="left" dir="ltr"><font face="Georgia"><i>&quot;Experience is the name everybody gives to his mistakes!&quot;</i>  Oscar Wilde</font></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/65-Consistency.html" rel="alternate" title="Consistency" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-11-18T22:36:22Z</published>
        <updated>2008-11-13T23:02:40Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=65</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=65</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/65-guid.html</id>
        <title type="html">Consistency</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">در مسابقه ی تمرینی هفته ی پیش هنگامی که هنوز 20 دقیقه به پایان مسابقه باقی مانده بود، کار را تمام شده حساب کردم و از تلاش دست کشیدم! بعدا از خودم بدم اومد <img src="http://blog.pykello.net/templates/default/img/emoticons/sad.png" alt=":-(" style="display: inline; vertical-align: bottom;" class="emoticon" /></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/66-Arash-est-moitie-moins-grand-que-la-Tour-Eiffel!.html" rel="alternate" title="Arash est moitié moins grand que la Tour Eiffel!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-11-14T12:02:42Z</published>
        <updated>2008-11-13T23:04:21Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=66</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/66-guid.html</id>
        <title type="html">Arash est moitié moins grand que la Tour Eiffel!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">آقای دکتر علی زاده در پاریس:<br /><br /><div align="center"><img alt="Arash Alizadeh" vspace="0" hspace="0" border="0" src="images/arash.JPG" /></div></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/68-Einstein-Quote-of-the-Day.html" rel="alternate" title="Einstein Quote of the Day" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-11-08T08:09:27Z</published>
        <updated>2008-11-13T23:04:31Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=68</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=68</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/10-Thinking" label="Thinking" term="Thinking" />
    
        <id>http://blog.pykello.net/index.php?/archives/68-guid.html</id>
        <title type="html">Einstein Quote of the Day</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="left" dir="ltr"><i><font face="Georgia">A clever person solves a problem. A wise person avoids it.</font></i></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/69-Words-of-Wisdom-IV.html" rel="alternate" title="Words of Wisdom IV" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-11-02T15:11:38Z</published>
        <updated>2008-11-13T23:04:39Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=69</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=69</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/9-Sacred-Words" label="Sacred Words" term="Sacred Words" />
    
        <id>http://blog.pykello.net/index.php?/archives/69-guid.html</id>
        <title type="html">Words of Wisdom IV</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">حضرت علی (ع) می فرمايند: (خطبه ی 140 نهج البلاغه)<br />« ...<br /><font color="#006633">آيا آن عيب جو نمی بيند پرده پوشی خداوندی را درباره ی گناهان خود او، که بزرگ تر است از آن خطايي که آن انسان مرتکب خطا، مبتلا به آن شده است؟ آن عيب گير چگونه آن گرفتار را سرزنش می کند، در صورتی که خود او نيز همانند آن معصيت را مرتکب شده است! و اگر هم مانند آن گناه را مرتکب نشده باشد، در غير آن مورد، خدا را نافرمانی کرده است که بزرگ تر از آن معصيت بوده است. و سوگند به خدا، اگر آن عيب جو خدا را با گناه بزرگ نافرمانی نکرده و گناهی کوچک انجام داده باشد، جرات او به ابراز عيب مردم گناهی بزرگ تر است.<br />ای بنده خدا، در اظهار عيب هيچ کس درباره ی گناهی که مرتکب شده است، شتاب مکن، زيرا شايد برای او بخشيده شده باشد. و برای خود درباره ی معصيت کوچک احساس امان مکن، شايد برای همان معصيت کوچک معذب خواهی گشت. پس هر کسی از شما که به عيب ديگری اطلاع پيدا کرده است، به جهت اطلاعی که از عيب خود دارد، از ابراز آن خودداری نمايد. و شکر و سپاسگزاری برای محفوظ ماندن از خطا او را از توجه به آنچه که ديگری به او مبتلا شده است، منصرف بسازد.</font>»<br /></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/71-Words-of-Wisdom-III.html" rel="alternate" title="Words of Wisdom III" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-26T23:34:26Z</published>
        <updated>2008-11-13T23:04:49Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=71</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=71</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/9-Sacred-Words" label="Sacred Words" term="Sacred Words" />
    
        <id>http://blog.pykello.net/index.php?/archives/71-guid.html</id>
        <title type="html">Words of Wisdom III</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"><p>رسول خدا صلی الله عليه و آله فرمودند: </p><p>«عبادت هفتاد جزء است و بالاترين و بزرگترین آن کسب حلال است.» (ثواب الاعمال و عقاب الاعمال)<br /></p><p>«آنچه بیش از هر چیز بر امتم بعد از خود می ترسم، درآمدهای حرام، هواپرستی پنهانی، و رباست.» (بحارالانوار)</p><p></p><br /><div align="justify"></div></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/74-Longing-....html" rel="alternate" title="Longing ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-23T05:46:00Z</published>
        <updated>2008-11-13T23:04:59Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=74</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=74</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/74-guid.html</id>
        <title type="html">Longing ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="justify" style="direction: rtl;">&quot;مدت زيادی به انتظار آمدن تو نشستم،</div><div align="justify" style="direction: rtl;">آن قدر زياد که به نبودن تو عادت کردم،</div><div align="justify" style="direction: rtl;">تو پس از مدت زيادی آمدی،</div><div align="justify" style="direction: rtl;">ولی من اکنون انتظار برای تو را بيش از خودت دوست دارم ...&quot; </div><div align="justify" style="direction: rtl;"></div><div align="justify" style="direction: rtl;"></div><div align="justify" style="direction: rtl;"><br />(شعری از<a href="http://fa.wikipedia.org/wiki/%D8%B9%D8%B2%DB%8C%D8%B2_%D9%86%D8%B3%DB%8C%D9%86"> عزيز نسين</a>)</div><div align="justify" style="direction: rtl;"></div><div align="justify" style="direction: rtl;"></div><div align="justify" style="direction: rtl;"><br />---------------------------------------------------</div><div align="justify" style="direction: rtl;"></div><div align="justify" style="direction: rtl;"></div><div align="justify" style="direction: rtl;"><br />کسانی که نمی دانند بدانند، <a href="http://liveaut.blogfa.com/">موفق کاتب</a> نيز صاحب وبلاگ شد!</div><div align="right"></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/76-Checking-for-overflow.html" rel="alternate" title="Checking for overflow" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-22T09:19:26Z</published>
        <updated>2008-11-13T23:05:13Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=76</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=76</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/76-guid.html</id>
        <title type="html">Checking for overflow</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">فرض کنيد می خواهيد تابعی بنويسيد که عبارت a * b<sup>p</sup> را محاسبه کند، در صورتيکه حاصل از 10<sup>18</sup> کمتر بود، حاصل را برگرداند، و در غير اين صورت عدد 1- را برگرداند. از چه راه حلی استفاده می کنيد؟ (با فرض اينکه a و b و p از 10<sup>18</sup> کوچکتر هستند.)<br /><br /><font color="#ff0000">راه حل 1: </font>از کلاس Big Integer استفاده کنيد. حاصل را حساب کنيد، و سپس حاصل را با 10<sup>18</sup> مقايسه کنيد. در ++C و C اين روش احمقانه ترين روش است (چون احتمالا بايد اين نوع داده را خودتان پياده سازی کنيد) ولی اگر از Java يا Python استفاده می کنيد، اين روش، روش خوب و ساده ايست.<br />توجه: در راه حل های بعدی از اين نکته که نوع داده ی عدد صحيح 64 بيتی (long long در ++C) می تواند اعدادی تا بزرگی 9x10<sup>18</sup> را نگهداری کند استفاده کرده ايم.<br /><br /><font color="#ff0000">راه حل 2:</font> چون 2x10<sup>18</sup> از محدوده ی long long بيرون نمی زند، به راحتی می توانيم دو عدد کوچکتر از 10<sup>18</sup> را با هم جمع کنيم، و سپس با 10<sup>18</sup> مقايسه کنيم تا بفهميم که حاصل از 1- بزرگتر است يا نه. همان طور که احتمالا می دانيد، عمل ضرب را می توان با استفاده از عمل جمع پياده سازی کرد. کد اين تابع را در زير مشاهده می کنيد:<br /><div align="left" dir="ltr"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> multiply<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">0</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> result = multiply<span style="color: #000000;">&#40;</span>a, b / <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>result == <span style="color: #0000dd;">-1</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; result += result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b % <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span> result += a;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>result &gt; 1000000000000000000ll<span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></div>و عمل توان را با استفاده از عمل عمل ضرب می توان پياده سازی کرد:<div align="left" dir="ltr"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> power<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> result = power<span style="color: #000000;">&#40;</span>a, b / <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>result == <span style="color: #0000dd;">-1</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; result = multiply<span style="color: #000000;">&#40;</span>result, result<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>result == <span style="color: #0000dd;">-1</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b % <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span> multiply<span style="color: #000000;">&#40;</span>result, a<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>result == <span style="color: #0000dd;">-1</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></div>اين روش نسبت به روش قبل ساده تر و عاقلانه تر (در صورت عدم وجود امکانات) می باشد، ولی ساده ترين روش نيست!<br /><br /><font color="#ff0000">راه حل 3: </font>با استفاده از عمل تقسيم می توان حداکثر مقداری که می توانيم در يک عدد ضرب کنيم تا حاصل کوچکتر از 10<sup>18</sup> شود را پيدا کرد. با استفاده از اين نکته، کارمان کمی ساده تر می شود و می توانيم به صورت زير عمل کنيم:<br /><div align="left" dir="ltr"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> multiply<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">0</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> maxp = 1000000000000000000ll / b;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>a &gt; maxp<span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> a * b;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></div><br /><br /><font color="#ff0000">راه حل 4:</font> استفاده از لگاريتم در مبنای 10. فرض کنيد می خواهيم a*b^p را محاسبه کنيم. اگر به صورت زير عمل کنيم:<br /><div align="left" dir="ltr"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> power<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> result = power<span style="color: #000000;">&#40;</span>a, b / <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; result *= result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b % <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span> result *= a;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> calc<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> p<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">double</span> L = <span style="color: #0000dd;">log10</span><span style="color: #000000;">&#40;</span>a<span style="color: #000000;">&#41;</span> + p * <span style="color: #0000dd;">log10</span><span style="color: #000000;">&#40;</span>b<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>L &gt; <span style="color: #0000dd;">18</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span> ;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> a * power<span style="color: #000000;">&#40;</span>b, p<span style="color: #000000;">&#41;</span> ;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></div>ممکن است بعضی اوقات نتيجه گيری اشتباهی کنيم، چون اختلاف لگاريتم 10<sup>18</sup> و 1+10<sup>18</sup> کمتر از <sup>18-</sup>10 می باشد و با اين مقايسه ها اين اختلاف ها مشخص نمی شوند. <br />چون 10<sup>18.5</sup> عمرا از محدوده ی long long خارج نیست و تمام اعداد کوچکتر يا مساوی 10<sup>18</sup> دارای لگاريتمی کمتر از 18.5 هستند، حتی با در نظر گرفتن خطاهای محاسباتی، می توان به روش زير عمل کرد:<br /><div align="left" dir="ltr"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> power<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> result = power<span style="color: #000000;">&#40;</span>a, b / <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; result *= result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b % <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span> result *= a;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> result;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> calc<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> a, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> b, <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> p<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">double</span> L = <span style="color: #0000dd;">log10</span><span style="color: #000000;">&#40;</span>a<span style="color: #000000;">&#41;</span> + p * <span style="color: #0000dd;">log10</span><span style="color: #000000;">&#40;</span>b<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>L &gt; <span style="color: #0000dd;">18.5</span><span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span> ;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">long</span><span style="color: #0000ff;">long</span> result = a * power<span style="color: #000000;">&#40;</span>b, p<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>result &gt; 1000000000000000000ll<span style="color: #000000;">&#41;</span><span style="color: #0000ff;">return</span><span style="color: #0000dd;">-1</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span> result ;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></div>مزيت روش آخر نسبت به روش های ديگر اين است که تمام چک های خارج از محدوده بودن تنها در يک نقطه انجام می گيرد، و بالطبع احتمال اشتباه کردن برنامه نويس کمتر است.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/77-Sleeping-late-Practical-guide-for-the-psycho.html" rel="alternate" title="Sleeping late: Practical guide for the psycho" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-22T06:40:00Z</published>
        <updated>2008-11-13T23:05:18Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=77</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/77-guid.html</id>
        <title type="html">Sleeping late: Practical guide for the psycho</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><table width="100%" boder="0"><tbody><tr><td><font color="#ff0000">توجه:</font> محتويات نوشته پايه ی علمی ندارد و صرفا بر اساس تجربيات خودم نوشته شده است.<div align="right" dir="rtl"><br /><font color="#003366">ساعت 12 شب است. در حال ياد گرفتن يک موضوع بسيار جالب هستيد، و يا می خواهيد يک مساله ی بسيار سخت را حل کنيد، و آنقدر مشتاق هستيد که تصميم گرفته ايد بسيار دير بخوابيد.</font> در اين حالت، بهترين دوست شما نوشيدنی ای به نام &quot;قهوه&quot; است. البته برای اينکه بتوانيد 3 ساعت ديرتر از معمول بخوابيد، برای استفاده از قهوه بايد نکاتی را در نظر بگيريد. </div><div align="right" dir="rtl"><br />اول اينکه زياد به فکر خوشمزه کردن قهوه ی خود نباشيد. به هيچ وجه از کافی ميت استفاده نکنيد، و شکر را به اندازه ای اضافه کنيد که قهوه بدمزه نباشد. قهوه ی خوشمزه اثری بسيار کمتر بر روی سيستم هوشياری شما دارد. دوم اينکه قهوه را داغ صرف ننماييد! حداقل در مورد خودم، قهوه ی داغ باعث خواب آلودگی می شود، ولی قهوه ی ولرم، يا سرد باعث هوشياری بسيار بالا می شود. سوم اينکه فکر نکنيد با يک فنجان قهوه می توانيد مدت زيادی بيدار بمانيد. برای اينکه همچنان هوشيار بمانيد، بايد حدودا هر 20 دقيقه يکبار يک ليوان قهوه بخوريد. چهارم اينکه کسانی که ناراحتی قلبی دارند از قهوه استفاده نکنند، چون ظاهرا به صورت کوتاه مدت باعث افزايش ضربان قلب می شود.</div><div align="right" dir="rtl"><br />راهبرد ديگر برای دير خوابيدن اين است که تمرين کنيد تا بتوانيد به اين موضوع که &quot;ممکن است خوابتان بيايد&quot; فکر نکنيد! حداقل اين چنين افکاری بر روی من اثر دارد و باعث می شود زودتر خوابم بيايد.</div><div align="right" dir="rtl"><br /><font color="#990033">البته روش های بالا برای افراد پستی که می خواهند برای امتحان فردا يا پس فردا آماده شوند و نگاهی مادی به علم دارند توصيه نمی شود.</font><br /><br /><div align="justify"></div></div></td><td width="325" valign="top" style="font-size: 10pt; font-family: courier new;"><center><img align="left" src="images/geek2.jpg" />Copyright © <a href="http://ellasworks.blogspot.com/">Ella Elviana</a></center></td><td></td></tr></tbody></table></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/79-Probability-and-Quizes.html" rel="alternate" title="Probability and Quizes" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-20T19:48:13Z</published>
        <updated>2008-11-13T23:05:33Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=79</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=79</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
            <category scheme="http://blog.pykello.net/index.php?/categories/6-Mathematics" label="Mathematics" term="Mathematics" />
    
        <id>http://blog.pykello.net/index.php?/archives/79-guid.html</id>
        <title type="html">Probability and Quizes</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><img align="left" src="images/dice.gif" /><p>فرض کنيد می خواهيد در يک امتحان چهار گزينه ای شرکت کنيد (که به ازای هر غلط 1/3 نمره ی منفی دارد)، و هيچ مطالعه ای راجع به موضوع اين امتحان نداريد و قصد داريد شانس خود را امتحان کنيد و گزينه هايي را به صورت تصادفی انتخاب کنيد. چند درصد احتمال دارد که امتياز شما منفی نباشد؟ (البته با این فرض ها که احتمال درست پاسخ دادن به سوال 25% و احتمال شير آمدن سکه 50% می باشد.)</p><p>برای امتحان 1 سواله: 25%</p><p>برای امتحان 5 سواله: 36%</p><p>برای امتحان 6 سواله: 46%</p><p>برای امتحان 7 سواله: 55%</p><p>برای امتحان 8 سواله: 63%</p><p>برای امتحان 9 سواله: 39%</p><p>برای امتحان 10 سواله: 47%</p><p>برای امتحان 20 سواله: 58.51%</p><p>برای امتحان 30 سواله: 48.57%</p><p>...</p><p>پس اگر می خواهيد در امتحانی 9 سواله شانس خود را امتحان کنيد، تنها به 8 سوال اول پاسخ دهيد! به اين ترتيب شانس ضايع نشدن شما 24% افزايش می يابد.</p><p>حال فرض کنيد همراه خود سکه ای سر جلسه ی امتحان برده ايد و به اين شيوه عمل می کنيد: قبل از پاسخ به هر سوال سکه می اندازيد، اگر شير آمد يکی از گزينه ها را به صورت تصادفی انتخاب می کنيد، و گرنه هيچ گزينه ای را انتخاب نمی کنيد و به سراغ سوال بعدی می رويد.</p><p>در اين صورت احتمال اينکه امتياز شما منفی نشود:</p><p>برای امتحان 1 سواله: 62 %</p><p>برای امتحان 5 سواله: 50.6 %</p><p>برای امتحان 6 سواله: 52.41 %</p><p>برای امتحان 7 سواله: 52.83 % </p><p>برای امتحان 8 سواله: 52.41 %</p><p>برای امتحان 9 سواله: 51.79 %</p><p>برای امتحان 10 سواله: 51.37 %</p><p>برای امتحان 20 سواله: 51.13 %</p><p>برای امتحان 30 سواله: 50.95 %</p><p>...</p><br /><div align="justify"></div></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/80-Reinventing-the-wheel.html" rel="alternate" title="Reinventing the wheel" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-20T17:37:56Z</published>
        <updated>2008-11-13T23:05:37Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=80</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=80</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/10-Thinking" label="Thinking" term="Thinking" />
    
        <id>http://blog.pykello.net/index.php?/archives/80-guid.html</id>
        <title type="html">Reinventing the wheel</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="justify" dir="rtl"><img border="0" align="left" src="images/wheel.jpg" />احتمالا اختراع دوباره ی چرخ کار درستی نيست،</div><div align="justify" dir="rtl">ولی احتمالا برای ساختن يک چرخ بهتر، بايد با چگونگی اختراع چرخ آشنا شويم،</div><div align="justify" dir="rtl">و برای به دست آوردن درک بهتر، يک چرخ بسازيم.<div align="justify"></div></div><div align="justify"></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/81-Paratroopers.html" rel="alternate" title="Paratroopers" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-10T08:13:56Z</published>
        <updated>2008-11-13T23:05:48Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=81</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=81</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/81-guid.html</id>
        <title type="html">Paratroopers</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="baseline" dir="rtl"><font color="#ff0000">مساله:</font><font color="#006633">جدولی mxn داريم که در برخی از خانه های آن درختی قرار گرفته است. در بالای هر ستون و در سمت چپ هر سطر تفنگی قرار گرفته است که با شليک کردن آن تفنگ تمام درختان موجود در آن سطر يا ستون نابود می شوند. شليک کردن هر کدام از تفنگ ها هزينه ای دارد. می خواهيم زيرمجموعه ای از اين تفنگ ها را شليک کنيم به طوری که تمام درختان قطع شوند و حاصل ضرب هزينه ها کمينه شود. (این مساله، یکی از مسائل مسابقه ی انتخابی دانشگاه امیرکبیر در سال 1385 بود. <a href="http://acm.zju.edu.cn/show_problem.php?pid=2874">لینک مساله در سایت acm.zju.edu.cn</a></font>)</div><div align="baseline" dir="rtl"></div><div align="baseline" dir="rtl"></div><div align="baseline" dir="rtl"><div align="center"><img vspace="0" hspace="0" border="0" src="http://blog.pykello.net/images/trees.png" /></div><br /><font color="#ff0000">توضيح و بررسی راه حل:</font> ابتدا برای ساده تر کردن مساله، به جای کمينه کردن حاصل ضرب هزينه ها، لگاريتم حاصل ضرب هزينه ها را کمينه می کنيم. در نتيجه مساله تبديل می شود به: زيرمجموعه ای از اين تفنگ ها را انتخاب کنيد به طوری که تمام درختان را قطع کنند و حاصل جمع لگاريتم هزينه ها را کمينه شود. پس می خواهيم عبارت زير را کمينه کنيم:</div><div align="baseline" dir="rtl"></div><div align="baseline" dir="rtl"><div align="left"><img src="http://blog.pykello.net/images/formula01.png" /></div><br />و در انتها جواب مساله ی اصلی برابر خواهد بود با:</div><div align="baseline" dir="rtl"></div><div align="right" dir="rtl"><div align="left"><img src="http://blog.pykello.net/images/formula02.png" /></div><br />خوب، برای حل کردن اين مساله، گرافی به شکل زير می سازيم:</div><div align="baseline" dir="rtl"></div><div align="right" dir="rtl"><div align="center"><img vspace="0" hspace="0" border="0" src="http://blog.pykello.net/images/minvertexcover.png" alt="Minimum Vertex Cover" /></div><br />که در گراف بالا r1 … r6 متناظر با سطرها می باشند و c1 … c9 متناظر با ستون ها می باشند. از s به هر کدام از سطرها يالی وصل می کنيم که وزن اين يال برابر با لگاريتم هزينه ی تفنگ آن سطر می باشد، و از هر کدام از ستون به t يالی وصل می کنيم که وزن اين يال برابر با لگاريتم هزينه ی تفنگ آن ستون می باشد. همچنين بين ri و cj يالی به وزن بی نهايت متصل می کنيم در صورتيکه در مکان [i,j] جدول درختی موجود باشد. <br /><br />همچنين عمل انتخاب تفنگ يک سطر را متناظر با حذف کردن يال بين s و آن سطر در نظر می گيريم و عمل انتخاب تفنگ يک ستون را متناظر با حذف کردن يال بين آن ستون و t در نظر می گيريم.<br /><br />حالا انتخابی از تفنگ ها را در نظر بگيريد که تمام درخت ها را قطع کند. خاصيت اين انتخاب چيست؟ خاصيت اين انتخاب اين است که به ازای هر يال ri به cj (که متناظر با يک درخت می باشد) بايد حداقل يکی از يال های s به ri  (که متناظر با تفنگ سطر می باشد) و cj به t (که متناظر با تفنگ ستون می باشد) حذف شده باشد (که متناظر با انتخاب شدن آن تفنگ می باشد). نتيجه ی اين عمل چيست؟ نتيجه ی اين عمل اين است که هيچ مسيری از s به t وجود نخواهد داشت که از اين يال ri به cj عبور کند (چون فقط يک مسير اين چنين داشتيم، و حال با حذف حداقل يک يال از آن، اين تنها مسير را هم از بين می بريم.)<br /><br />پس اگر بخواهيم تمام درخت ها را از بين ببريم، نبايد هيچ مسيری بين s و t باشد.<br /><br />بنابراين مساله ی ما تبديل شد به حذف کردن تعدادی از يال های گراف مذکور به طريقی که هيچ مسيری بين s و t نباشد و مجموع وزن های اين يال های انتخاب شده کمينه باشد. اين جمله شما را به ياد چه مساله ی مشهوری می اندازد؟<br /><br />احتمالا اکثر شما با <a href="http://www.nist.gov/dads/HTML/minimumcut.html">مساله ی مشهور Minimum Cut</a> آشنا هستيد. اگر آشنا نيستيد:<br /><br /><font color="#0000cc">مساله ی Minimum Cut:</font> می خواهيم تعدادی از يال های يک گراف را حذف کنيم به طوری که هيچ مسيری بين مبدا و مقصد نباشد و مجموع هزينه های يال های حذف شده می نيمم باشد.<br /><br />و اگر با روش حل اين مسال آشنا نيستيد، بايد عرض کنم که جواب اين مساله (کمترين هزينه) با جواب <a href="http://en.wikipedia.org/wiki/Maximum_flow_problem">مساله ی Maximum Flow</a> يکی می باشد. اگر با اين مساله و طريقه ی حل آن آشنا نيستيد، به <a href="http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=maxFlow">لينک 1 </a>و <a href="http://en.wikipedia.org/wiki/Maximum_flow_problem">لينک 2 </a>مراجعه کنيد.<br /><br />بنابراين برای حل کردن مساله، پس از ساختن گراف مذکور، با يکی از الگوريتم های معروف Maximum Flow، جواب مساله را بدست می آوريم! به همين سادگی و زيبايي!</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/83-Tanenbaum-Torvalds-debate.html" rel="alternate" title="Tanenbaum-Torvalds debate" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-09-08T00:04:00Z</published>
        <updated>2008-11-13T23:05:56Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=83</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=83</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/83-guid.html</id>
        <title type="html">Tanenbaum-Torvalds debate</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>29 ژانويه ی سال 1992، آندرو اس. تتنباوم: <font color="#006633">&quot;<font color="#ff0000">لینوکس منسوخ شده است</font></font>&quot; (<a href="http://groups.google.com/group/comp.os.minix/browse_thread/thread/c25870d7a41696d2/ac1b04eb0e09c03e?lnk=gst&q=Linux+is+Obsolete&rnum=5#ac1b04eb0e09c03e">لینک بحث در گروه کاربران minix</a>)<br /><p><font color="#990099">توضيح:</font> نظر آندرو تننباوم این بود که سیستم های مدرن به سمت معماری ريزهسته (<a href="http://en.wikipedia.org/wiki/Microkernel">Micro-Kernel Architecture</a>) حرکت می کنند، در حالیکه لینوکس دارای معماری یکپارچه (<a href="http://en.wikipedia.org/wiki/Monolithic_kernel">Monolothic Architecture</a>) بود (و هست.)</p><p>برخی بخش های جالب و بامزه از این بحث:</p><p style="direction: ltr;"><b><font color="#006633">Andy Tanenbaum says:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width">At most of you know, MINIX is a hobby</font></p><p style="direction: ltr;"><b><font color="#cc6600">Linus Benedict Torvalds answers:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width">Re 1: </font><font face="Courier, Monospaced" class="fixed_width">you doing minix as a hobby - look at who makes money off minix, and who gives linux out for free.  Then talk about hobbies.  Make minix freely available, and one of my biggest gripes with it will disappear. Linux<b></b>has very much been a hobby (but a serious one: the best type) for me: I get no money for it, and it's not even part of any of my studies in the university.  I've done it all on my own time, and on my own machine.</font></p><p style="direction: ltr;" /><p style="direction: ltr;"><b><font color="#006633">Andy Tanenbaum says:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width"> My real job is a professor and researcher in the area of operating systems.</font></p><p style="direction: ltr;"><b><font color="#cc6600"><br />Linus Benedict Torvalds answers:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width"> your job is being a professor and researcher: That's one hell of a good excuse for some of the brain-damages of minix. I can only hope (and assume) that Amoeba doesn't suck like minix does.</font></p><p style="direction: ltr;"><b><font color="#006633">Andrew S. Tanenbaum says:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width">   MINIX is a microkernel-based system. ... Linux is a monolithic style system. </font></p><p style="direction: ltr;"><b><font color="#cc6600">Linus Benedict Torvalds answers:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width">If this was the only criterion for the &quot;goodness&quot; of a kernel, you'd be right.  What you don't mention is that minix doesn't do the micro-kernel thing very well, and has problems with real multitasking (in the kernel).  If I had made an OS that had problems with a multithreading filesystem, I wouldn't be so fast to condemn others: in fact, I'd do my <br /> damndest to make others forget about the fiasco.</font></p><p style="direction: ltr;"><b><font color="#cc6600">Linus Benedict Torvalds says:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width">PS. I apologise for sometimes sounding too harsh: minix is nice enough if you have nothing else. Amoeba might be nice if you have 5-10 spare 386's lying around, but I certainly don't. I don't usually get into flames, but I'm touchy when it comes to linux <img src="http://blog.pykello.net/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></font></p><p style="direction: ltr;"><b><font color="#006633">Andy Tanenbaum says:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width"> I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error.  Be thankful you are not my student.  You would not get a high grade for such a design <img src="http://blog.pykello.net/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></font><font face="Courier, Monospaced" class="fixed_width"></font><font face="Courier, Monospaced" class="fixed_width"></font></p><p style="direction: ltr;"><b><font color="#cc6600">Linus Benedict Torvalds answers:</font></b></p><p style="direction: ltr;"><font face="Courier, Monospaced" class="fixed_width">Well, I probably won't get too good grades even without you: I had an argument (completely unrelated - not even pertaining to OS's) with the person here at the university that teaches OS design.  I wonder when I'll learn <img src="http://blog.pykello.net/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></font></p><p></p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/84-Stencil-Shadow-Volumes-Using-OpenGL.html" rel="alternate" title="Stencil Shadow Volumes Using OpenGL" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-09-03T17:48:13Z</published>
        <updated>2008-11-13T23:12:39Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=84</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/84-guid.html</id>
        <title type="html">Stencil Shadow Volumes Using OpenGL</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><p>اگر می خواهید با استفاده از OpenGL بتوانيد سايه های نسبتا واقعی ايجاد کنید:</p><p> 1. ابتدا مفهوم و چگونگی کار با Stencil Buffer را یاد بگیرید. برای این کار، به مطلب آموزشی<a href="http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=26"> Clipping &amp; Reflections Using the Stencil Buffer</a> مراجعه کنید. اگر همچنان مشکل داشتید، می توانید به <a href="http://www.flazx.com/ebook3461.php">OpenGL SuperBible</a> مراجعه کنید.</p><p> 2. مقاله ی <a href="http://www.gamedev.net/reference/articles/article1873.asp">The Theory of Stencil Shadow Volumes</a> را مطالعه کنید تا دیدی کلی از چگونگی ایجاد سایه با استفاده از Stencil Buffer پیدا کنید.</p><p> 3. مقاله ی <a href="http://www.gamedev.net/reference/articles/article2036.asp">Volume Shadows Tutorial</a> را مطالعه کنید تا هم مروری بر مطالبی که تا حالا خوانده اید باشد و هم کمی با جزئیات پیاده سازی آشنا شوید.</p><p> 4. اکنون مطب آموزشی <a href="http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=27">NeHe OpenGL Tutorials #27: Shadows</a> را مطالعه کنید و حتما سعی کنید تمام جزئیات مربوط به ایجاد سایه را درک کنید. اگر لازم شد، به <a href="http://publib.boulder.ibm.com/infocenter/pseries/v5r3/topic/com.ibm.aix.opengl/doc/openglrf/openglrf.pdf">OpenGL Reference Manual</a> مراجعه کنید تا با توابع نا آشنا آشنا شوید.</p><p> 5. حتما سعی کنید خودتان یک سیستم سایه پیاده سازی کنید. و گرنه خوب یاد نخواهید گرفت!</p><p><font color="#0000ff">توضيحات:</font></p><p> 1. بسیاری از بازی های کامپیوتری سه بعدی با کیفیت بالا، مثل <a href="http://www.doom3.com/">Doom III</a>، از این تکنیک برای ایجاد سایه ها استفاده می کنند. (<a href="http://warp.povusers.org/doom3snapshots/">چند تصویر از سایه ها در Doom 3</a>)</p><p> 2. همان طور که در تصویر دوم و سوم مشاهده می کنید، در این تکینیک، سطح دریافت کننده ی سایه حتما لازم نیست مسطح باشد.</p><p> 3. <font color="#0000ff">مهم:</font> علاوه بر این تکنیک، تکنیک های دیگری برای ایجاد سایه وجود دارد. مثل: <a href="http://en.wikipedia.org/wiki/Shadow_mapping">Shadow Texture Mapping</a> و Shadow Projection.</p><p align="baseline">چند تصویر از نتایج برنامه ی من که بالاخره پس از چند ساعت موفق شدم به یک نتیجه ی قابل قبول برسم:</p><p align="center"><img src="images/shadows.jpg" /></p><p align="center"><img src="images/shadow2.jpg" /></p><p align="center"><img src="images/shadow3.jpg" /></p><p></p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/85-Stencil-Buffer-and-Glut.html" rel="alternate" title="Stencil Buffer and Glut" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-31T19:48:31Z</published>
        <updated>2008-11-13T23:08:22Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=85</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=85</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/85-guid.html</id>
        <title type="html">Stencil Buffer and Glut</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="left" dir="ltr"><img align="right" src="images/mirror.jpg" /><p>Don't forget to enable the Stencil Buffer when initializing or you will be سر کار for many hours! </p><p>glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL);</p><p><font color="#0000ff">Comment</font>: <a href="http://en.wikipedia.org/wiki/Stencil_buffer">Stencil Buffer</a> is used in computer graphics to create some realistic cool effects like Shadows and Mirrors.</p><p /></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/86-Words-of-Wisdom-II.html" rel="alternate" title="Words of Wisdom II" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-29T11:55:59Z</published>
        <updated>2008-11-13T23:06:55Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=86</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=86</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/9-Sacred-Words" label="Sacred Words" term="Sacred Words" />
    
        <id>http://blog.pykello.net/index.php?/archives/86-guid.html</id>
        <title type="html">Words of Wisdom II</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><img align="left" src="images/hands.jpg" /><font color="#cc0000">از صحیفه ی سجادیه - دعای بیستم - در خوی های نيکو و کردار پسندیده :</font><br /><p><font color="#006633">بارخدايا، بر محمّد و خاندانش درود فرست و توفيقم ده تا با کسی که به من ناراستی کرده راستی کنم، به کسی که از من دوری گزيده نيکی کنم، کسی را که محرومم ساخته به احسان بنوازم، با کسی که رشته ی دوستی بريده بپيوندم، کسی را که از من به بدی ياد کرده به نيکی ياد کنم و همواره خوبی را سپاس گويم و از بدی چشم فرو پوشم.<br />...</font></p><p><font color="#006633">بارخدايا، آن آرزو و بدگمانی و رشک را که شيطان در دلم اَفکند، به يادِ عظمتت، تفکر در قدرتت، و تدبير بر دشمنت، دگرگون ساز؛ و آنچه از سخنِ زشت و بيهوده، يا دشنام، يا ريختن آبرو، يا گواهیِ نادرست، يا غيبت مومن غايب، يا ناسزا گفتن  به حاضر و همانند اينها، که شيطان بر زبانم روان می سازد، تو آن را به حمد و سپاست، افزونی در ثنايت، بيان مجد و عظمتت، سپاس نعمتت، اقرار به احسانت و شمارشِ نعمت هايت بدل فرما.</font></p><br /><font color="#cc0000">از صحیفه ی سجادیه - دعای چهلم - یاد مرگ :</font><br /><p><font color="#006633">بارخدايا، بر محمّد و خاندانش درود فرست و ما را از آرزوهای دور و دراز در امان بدار، و با کردار درست عمر آرزوها را به کوتاهی آر، آن سان که آرزو نکنيم ساعتی به ساعتی ديگر رسانيم، روزی را به روزی، نَفَسی را به نَفَسی، يا گامی را به گامی بپيونديم.<br /><br />بارخدايا، ما را از فريب آرزوها به سلامت دار، از شرّ آن در پناه خود آر، مرگ را در برابرمان دار، و لحظه ای غفلت از آن را بر ما روا مدار.<br /><br />از کردار شايسته، آن چنان بهره مندمان ساز، که از دير شدن بازگشت به سوی تو انديشناک شويم، و برای ديدارت لحظه بشماريم، چنانکه مرگ سرای آرامش ما باشد، که دل بدان بنديم، و آشيانِ آسايش ما باشد، که به سويش بال بگشاييم، و پناهگاه ما باشد، که نزديک شدنش را دوست بداريم.</font></p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/89-Automatic-Switching.html" rel="alternate" title="Automatic Switching" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-14T03:08:25Z</published>
        <updated>2008-11-13T23:08:29Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=89</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=89</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
    
        <id>http://blog.pykello.net/index.php?/archives/89-guid.html</id>
        <title type="html">Automatic Switching</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><font color="#339900">داستان عجيب و غريب اختراع دستگاه سوئيچينگ خودکار تلفن از کتاب &quot;شبکه های کامپيوتری&quot; نوشته ی &quot;اندرو اس. تَنن بام&quot;:</font><br />اختراع دستگاه سوئيچينگ خودکار تلفن داستان جالبی دارد: اين دستگاه در قرن نوزدهم در ايالت ميسوری توسط فردی به نام آلمون ب. استراوگر، که شغل وی کفن و دفن بود، اختراع شد. در آن روزها وقتی کسی می مُرد، يکی از بازماندگان وی با اپراتور تلفن شهر تماس می گرفت و می گفت: «لطفا مرا به يک موسسه کفن و دفن وصل کنيد.» در شهر آقای استراوگر دو موسسهء کفن و دفن وجود داشت، و از شانس بد اين آقا، اپراتور تلفن همسر رقيب بود. آقای استراوگر خيلی زود دريافت که اگر می خواهد ورشکست نشود، بايد يک دستگاه سوئيچينگ خودکار تلفن اختراع کند – و اين کار را کرد. همه ی آنهايي که در سراسر دنيا با دستگاههای سوئيچينگ خودکار تلفن سروکار دارند، آنها را با نام «دستگاه استراوگر» می شناسند. (تاريخ نمی گويد آيا اين خانم بعد از بيکار شدن توانست شغلی مانند اپراتور اطلاعات تلفن – که بايد به سوالاتی از قبيل «لطفا شماره يک موسسهء کفن و دفن را بدهيد» پاسخ دهد – بدست آورد يا خير؟)<br /><br /></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/90-Introducing-TurboGears-Part-2.html" rel="alternate" title="Introducing TurboGears - Part 2" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-11T10:17:06Z</published>
        <updated>2008-11-13T23:13:24Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=90</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=90</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/90-guid.html</id>
        <title type="html">Introducing TurboGears - Part 2</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"><img src="http://blog.pykello.net/images/tg_gear.png" align="left" />در قسمت اول، اندکی با امکاناتی که TurboGears در رابطه با مدل داده ای، کنترلرها، لايه ی نمايش در اختيار می گذارد آشنا شديم. در اين بخش می خواهم مثال های بيشتری در رابطه با مدل داده ای مطرح کنم تا بيشتر با امکانات TurboGears آشنا شويد.<br/>قبل از شروع، لازم به يادآوری است که هدف از اين سری نوشته ها آشنا کردن شما با TurboGears و امکانات آن با استفاده از تعدادی مثال کوچک است. يعنی اينکه هدف من آموزش TurboGears نيست. اگر مايل به ياد گرفتن TurboGears هستيد، به لينک های زير مراجعه کنيد:<br/> + <a href="http://exogen.case.edu/turbogears.html">TurboGears Tutorial</a><br/> + <a href="http://docs.turbogears.org/1.0">مستندات TurboGears</a><br/> + ويدئوی <a href="http://files.turbogears.org/video/20MinuteWiki2nd.mov">The 20 Minutes Wiki</a>: اين ويدئو که توسط ابداع کننده ی TurboGears یعنی <a href="http://www.blueskyonmars.com/wp-content/uploads/2006/11/MeAndABook.jpg">Kevin Dangoor</a>  ايجاد شده، نشان می دهد که چگونه می توان با استفاده از TurboGears در مدت 20 دقيقه يک سيستم Wiki ساخت.<br/><br/><br/><font color="#CC00CC">آشنايي بيشتر با مدل داده در TurboGears</font><br/>در قسمت قبل چندين مثال ساده در رابطه با مدل داده ای مطرح کرديم. در اين قسمت مثال های بيشتری مطرح می کنم. <br/>همان طور که قبلا گفتم، برای مشخص کردن نوع و مشخصات پايگاه داده ی مورد استفاده در برنامه ی تحت وبمان، بايد فايل dev.cfg را تغيير دهيم و سطری مشابه سطر زير در آن ايجاد کنيم:<br/><div align="left" dir="ltr"><div class="python" style="text-align: left">sqlobject.<span style="color: black;">dburi</span> = <span style="color: #483d8b;">&quot;sqlite:///home/brian/tutorial/tutorial.sqlite&quot;</span></div><br/><br/></div>در مثال بالا، نوع پايگاه داده ی مورد استفاده (sqlite) و مسيری که فايل پايگاه داده در آن ذخيره می شود ذکر شده است. در زير چند مثال ديگر مشاهده می کنيد که پايگاه داده هايي از نوع <a href="http://mysql.com/">MySQL</a> و <a href="http://www.postgresql.org/">PostgreSQL</a> را مشخص می کنند:<div align="left" dir="ltr"><div class="python" style="text-align: left">mysql://<span style="color: #dc143c;">user</span>:password@host/database<br />mysql://host/database?debug=<span style="color: #ff4500;">1</span><br />postgres://<span style="color: #dc143c;">user</span>@host/database?debug=&amp;cache=<br />postgres:///full/path/to/<span style="color: #dc143c;">socket</span>/database<br />postgres://host:<span style="color: #ff4500;">5432</span>/database</div><br/><br/></div>برای ايجاد کردن ارتباط يک به چند:<div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Address<span style="color: black;">&#40;</span>SQLObject<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; Country = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; City = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; StreetAddress = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; Owner = ForeignKey<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Person&quot;</span><span style="color: black;">&#41;</span><br /><br /><span style="color: #ff7700;font-weight:bold;">class</span> Person<span style="color: black;">&#40;</span>SQLObject<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; name = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; addresses = MultipleJoin<span style="color: black;">&#40;</span><span style="color: #483d8b;">'Address'</span><span style="color: black;">&#41;</span></div><br/><br/></div>در مثال بالا، هر آدرس متعلق به تنها يک شخص است، ولی يک شخص می تواند دارای چندين آدرس باشد.<br/>مثال ديگر در ارتباط با تعريف جداول همراه با توضيحات:<br/><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Person<span style="color: black;">&#40;</span>SQLObject<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; <span style="color: #dc143c;">email</span> = StringCol<span style="color: black;">&#40;</span>alternateID = <span style="color: #008000;">True</span><span style="color: black;">&#41;</span><span style="color: #808080; font-style: italic;"># email is an index column for the table</span><br />&#160; &#160; &#160; &#160; name = StringCol<span style="color: black;">&#40;</span>unique = <span style="color: #008000;">True</span><span style="color: black;">&#41;</span><span style="color: #808080; font-style: italic;"># no duplicate values for name</span><br />&#160; &#160; &#160; &#160; birthdate = DateCol<span style="color: black;">&#40;</span>notNone = <span style="color: #008000;">True</span><span style="color: black;">&#41;</span><span style="color: #808080; font-style: italic;"># birthdate cannot be without value</span><br />&#160; &#160; &#160; &#160; maritalStatus = EnumCol<span style="color: black;">&#40;</span>enumValues=<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Single'</span>, <span style="color: #483d8b;">'Married'</span><span style="color: black;">&#93;</span>, default=<span style="color: #483d8b;">'Single'</span><span style="color: black;">&#41;</span><span style="color: #808080; font-style: italic;"># maritalStatus can be either 'Single' or 'Married', and its default value is 'Single'</span></div><br/><br/></div>لازم به ذکر است که هر کدام از جداول به طور پيش فرض دارای فيلدی به نام id هستند که به عنوان Primary Key به کار می رود.برای انتخاب رکوردها با استفاده از مقادير فيلد ها:<div align="left" dir="ltr"><div class="python" style="text-align: left">result = Person.<span style="color: black;">selectBy</span><span style="color: black;">&#40;</span>name = <span style="color: #483d8b;">&quot;Hadi&quot;</span>, maritalStatus = <span style="color: #483d8b;">'Single'</span><span style="color: black;">&#41;</span></div><br/><br/></div>برای انتخاب رکوردها با استفاده از فيلدهای ايندکس:<div align="left" dir="ltr"><div class="python" style="text-align: left">result = Person.<span style="color: black;">byEmail</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'hadi@pykello.net'</span><span style="color: black;">&#41;</span></div><br/><br/></div>برای مشخص کردن Query با استفاده از زبان SQL:<div align="left" dir="ltr"><div class="python" style="text-align: left">result = Person._connection.<span style="color: black;">queryAll</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Select * from Person'</span><span style="color: black;">&#41;</span></div><br/><br/></div>برای بدست آوردن تعداد رکوردها موجود در نتيجه:<div align="left" dir="ltr"><div class="python" style="text-align: left">count = result.<span style="color: black;">count</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div><br/><br/></div>برای بدست آوردن رکورد اول موجود در نتيجه و تغيير يکی از فيلدهای آن:<div align="left" dir="ltr"><div class="python" style="text-align: left">firstPerson = result<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><br />firstPerson.<span style="color: black;">name</span> = <span style="color: #483d8b;">&quot;Hadi Moshayedi&quot;</span></div><br/><br/></div>TurboGears برای ارتباط با پايگاه داده از <a href="http://www.sqlobject.org/">SQLObject</a> استفاده می کند. برای آشنايي بيشتر با امکانات SQLObject به <a href="www.sqlobject.org/SQLObject.html">مستندات SQLObject</a> مراجعه کنيد.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/91-Introducing-TurboGears-Part-1.html" rel="alternate" title="Introducing TurboGears - Part 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-10T17:54:27Z</published>
        <updated>2008-11-13T23:13:37Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=91</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=91</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/8-Programming" label="Programming" term="Programming" />
    
        <id>http://blog.pykello.net/index.php?/archives/91-guid.html</id>
        <title type="html">Introducing TurboGears - Part 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><img src="http://blog.pykello.net/images/tg_gear.png" align="left" />در اين بخش و بخش های بعدی به معرفی TurboGears، فريم ورکی برای توليد برنامه های تحت وب خواهم پرداخت. هدف من از اين سری مطالب آموزش TurboGears نيست، بلکه می خواهم شما حسی نسبت به چگونگی توليد برنامه های کاربردی تحت وب با استفاده از TurboGears و امکاناتی که در اختيار شما قرار می دهد پيدا کنيد، و بتوانيد تصميم بگيريد که آيا TurboGears برای نيازهای شما مناسب است يا نه.</div><div align="right" dir="rtl"></div><br/><br/><div align="right" dir="rtl"><font color="#9933CC">TurboGears چيست؟</font><br />TurboGears يک زبان جديد نيست، بلکه يک سری ابزار و کتابخانه ی برنامه نويسی است که با استفاده از آن می توانيد برنامه های تحت وب ايجاد کنيد. زبان برنامه نويسی که TurboGears از آن استفاده می کند Python است.<br />TurboGears مبتنی بر معماری Model-View-Controller می باشد و برنامه نويس را هدايت به جدا کردن اين سه لايه از يکديگر می کند.</div><div align="right" dir="rtl"></div><br/><br/><div align="right" dir="rtl"><font color="#9933CC">مدل داده ای</font><br />ديگر در TurboGears نيازی به نوشتن دستورات پيچيده ی SQL نيست. مثلا اگر بخواهيم يک جدول به نام User داشته باشيم که دارای فيلدهای name و email باشد، کافی است کلاسی به اسم User که از کلاس SQLObject مشتق می شود ايجاد کنيم:<br /><br /></div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> User<span style="color: black;">&#40;</span>SQLObject<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; name = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #dc143c;">email</span> = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></div><div align="right" dir="rtl">و اگر بخواهيم هر User دارای چندين دوست باشد (ارتباط چند-به-چند):</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> User<span style="color: black;">&#40;</span>SQLObject<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; name = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #dc143c;">email</span> = StringCol<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; friends = MultipleJoin<span style="color: black;">&#40;</span><span style="color: #483d8b;">'User'</span><span style="color: black;">&#41;</span></div></div><div align="right" dir="rtl">و البته اين کلاس ها می توانند دارای تابع هم باشند:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> User<span style="color: black;">&#40;</span>SQLObject<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; …<br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span> FriendCount<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span> friends.<span style="color: black;">count</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></div><div align="left" dir="ltr"></div><div align="right" dir="rtl">اکنون اگر بخواهيم يک سطر به جدول User اضافه کنيم، کافی است يک شیء از نوع User ايجاد کنيم:</div><div align="left" dir="ltr"><div class="python" style="text-align: left">hadi = User<span style="color: black;">&#40;</span>name = <span style="color: #483d8b;">&quot;Hadi&quot;</span>, <span style="color: #dc143c;">email</span> = <span style="color: #483d8b;">&quot;hadi@pykello.net&quot;</span><span style="color: black;">&#41;</span></div></div><div align="right" dir="rtl">اگر بخواهيم اين سطر را در پايگاه داده تغيير دهيم، کافی است که دستور زير را اجرا کنيم:</div><div align="left" dir="ltr"><div class="python" style="text-align: left">hadi.<span style="color: #dc143c;">email</span> = <span style="color: #483d8b;">&quot;irancoldfusion@yahoo.com&quot;</span></div></div><div align="right" dir="rtl">و برای حذف اين سطر از جدول:</div><div align="left" dir="ltr"><div class="python" style="text-align: left">hadi.<span style="color: black;">destroySelf</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></div><div align="right" dir="rtl">و اگر بخواهيم يک User که فيلد name آن برابر با Hadi است را از جدول پيدا کنيم:</div><div align="left" dir="ltr"><div class="python" style="text-align: left">result = User.<span style="color: black;">selectBy</span><span style="color: black;">&#40;</span>name = <span style="color: #483d8b;">&quot;Hadi&quot;</span><span style="color: black;">&#41;</span></div></div><div align="right" dir="rtl">در TurboGears، جداول را در فايل model.py تعريف می شوند، و برای مشخص کردن نوع پايگاه داده ی مورد استفاده (MySQL، PostgreSQL، SQLite، ...) و مشخصات آن، سطری مانند سطر زير در فايل dev.cfg استفاده می کنيم:</div><div align="left" dir="ltr"><div class="python" style="text-align: left">sqlobject.<span style="color: black;">dburi</span> = <span style="color: #483d8b;">&quot;sqlite:///home/brian/tutorial/tutorial.sqlite&quot;</span></div></div><div align="right" dir="rtl">همان طور که مشاهده می کنيد، در TurboGears کاری به جزئياتی مانند ايجاد ارتباط با پايگاه داده، نوشتن دستورات SQL، ... نداريم. و همچنين با رکوردهای موجود در پايگاه داده مانند اشياء رفتار می کنيم.البته در صورت نياز، می توان با اين جزئيات کار داشت، و سطح پائين تر کار کرد، ولی اين نيازها کمتر به وجود می آيند.<br/>خيلی خوبه، مگه نه؟<br/>در قسمت های بعدی بيشتر به بحث امکاناتی که TurboGears در رابطه با مدل داده ای در اختيار ما می گذارد خواهم پرداخت.<br/><br/><br/><font color="#9933CC">کنترلرها</font><br/>رفتار برنامه ی شما در فايل controllers.py توصيف می شود. <br/>توجه: در ادامه فرض می کنم که URL برنامه ی ما http://localhost/ است.<br/>مثلا اگر می خواهيد صفحه ی http://localhost/ (و همچنين http://localhost/index) عبارت Hello World! را نمايش دهد:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Root<span style="color: black;">&#40;</span>controllers.<span style="color: black;">RootController</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; @expose<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span> index<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span><span style="color: #483d8b;">&quot;Hello World!&quot;</span></div></div><div align="right" dir="rtl">در واقع کلاس Root متناظر با مسير اصلی (يعنی http://localhost/ ) متناظر است، و توابع کلاس Root متناظر با صفحات شما. <br/>حال اگر بخواهيم پارامترهايي را به يک صفحه پاس کنيم:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Root<span style="color: black;">&#40;</span>controllers.<span style="color: black;">RootController</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; …<br />&#160; &#160; &#160; &#160; @expose<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span> showmessage<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, name = <span style="color: #483d8b;">&quot;Hadi&quot;</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span><span style="color: #483d8b;">&quot;Hello &quot;</span> + name</div></div><div align="right" dir="rtl">حال اگر با استفاده از مرورگر وب مسير http://localhost/showmessage را مشاهده کنيد، عبارت Hello Hadi را مشاهده می کنيد، و مسير http://localhost/showmessage?name=pykello عبارت Hello pykello را نمايش می دهد.<br/><br/>اکنون اگر بخواهيم آدرس ايميل کاربری را از پايگاه داده استخراج کنيم و نمايش دهيم:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Root<span style="color: black;">&#40;</span>controllers.<span style="color: black;">RootController</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; …<br />&#160; &#160; &#160; &#160; @expose<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span> showemail<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, name=<span style="color: #483d8b;">&quot;hadi&quot;</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; result = User.<span style="color: black;">selectBy</span><span style="color: black;">&#40;</span>name = name<span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">if</span> result.<span style="color: black;">count</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">0</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span><span style="color: #483d8b;">&quot;No such user!&quot;</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span><span style="color: #483d8b;">&quot;The email address is &quot;</span> + result<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: #dc143c;">email</span></div></div><div align="right" dir="rtl">در صورتی که هيچ تابعی برای مديريت صفحه ی مورد نظر موجود نباشد، تابع default فراخوانی می شود:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Root<span style="color: black;">&#40;</span>controllers.<span style="color: black;">RootController</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; …<br />&#160; &#160; &#160; &#160; @expose<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span> default<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, methodname<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span> methodname + <span style="color: #483d8b;">&quot; not found&quot;</span></div></div><div align="right" dir="rtl">اگر بخواهيم آدرس هايي با فرمت http://localhost/~username آدرس ايميل متناظر با username را نشان دهد:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Root<span style="color: black;">&#40;</span>controllers.<span style="color: black;">RootController</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; …<br />&#160; &#160; &#160; &#160; @expose<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span> default<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, methodname<span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">if</span><span style="color: #dc143c;">re</span>.<span style="color: black;">match</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;^~[<span style="color: #000099; font-weight: bold;">\w</span><span style="color: #000099; font-weight: bold;">\d</span>]+$&quot;</span>, methodname<span style="color: black;">&#41;</span>: <span style="color: #808080; font-style: italic;"># a regular expression matching</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span> showemail<span style="color: black;">&#40;</span>methodname<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: #808080; font-style: italic;"># i.e. suffix starting from second character</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span><span style="color: #483d8b;">&quot;Page not found!&quot;</span></div></div><br/><br/><div align="right" dir="rtl"><font color="#9933CC"><br/>لايه ی نمايش<br/></font>مثال هايي که در بخش قبلی نشان داديم، تنها متن ساده به عنوان خروجی ايجاد می کردند. اگر بخواهيم صفحات خوشگل ايجاد کنيم، روش بخش قبل کثيف و پردردسر است.<br/>TurboGears اين امکان را در اختيار ما می گذارد که لايه ی نمايش را با استفاده از template ها توصيف کنيم.مثلا، اگر مسيری که پروژه ی ما در آن ذخيره شده باشد c:\tutorial باشد، برای اينکه يک تابع در لايه ی کنترلر از template موجود در c:\tutorial\tutorial\templates\user.kid استفاده کند:</div><div align="left" dir="ltr"><div class="python" style="text-align: left"><span style="color: #ff7700;font-weight:bold;">class</span> Root<span style="color: black;">&#40;</span>controllers.<span style="color: black;">RootController</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; …<br />&#160; &#160; &#160; &#160; @expose<span style="color: black;">&#40;</span>template=<span style="color: #483d8b;">&quot;tutorial.templates.user&quot;</span><span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">def</span>&#160; showemail<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, name = <span style="color: #483d8b;">&quot;hadi&quot;</span><span style="color: black;">&#41;</span>:<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; result = User.<span style="color: black;">selectBy</span><span style="color: black;">&#40;</span>name = name<span style="color: black;">&#41;</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #ff7700;font-weight:bold;">return</span><span style="color: #008000;">dict</span><span style="color: black;">&#40;</span>name = name, <span style="color: #dc143c;">email</span> = result<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>.<span style="color: #dc143c;">email</span><span style="color: black;">&#41;</span></div></div><div align="right" dir="rtl">و فايل user.kid:</div><div align="left" dir="ltr"><div style="text-align: left">&lt;html&gt;<br />&#160; &#160; &#160; &#160; &lt;head&gt;&lt;title&gt;Welcome to TurboGears!&lt;/title&gt;&lt;/head&gt;<br />&#160; &#160; &#160; &#160; &lt;body&gt;The email address for user $name is $email .&lt;/body&gt;<br />&lt;/html&gt;</div></div><div align="right" dir="rtl">در قسمت های بعدی بيشتر به ايجاد template ها و امکانات خواهم پرداخت.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/92-Where-is-the-Sun-day.html" rel="alternate" title="Where is the Sun-day?" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-05T04:53:48Z</published>
        <updated>2008-11-13T23:15:40Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=92</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=92</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/92-guid.html</id>
        <title type="html">Where is the Sun-day?</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="left" dir="ltr">Life is going into reverse ...</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/93-Daily-Comment.html" rel="alternate" title="Daily Comment" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-20T14:04:33Z</published>
        <updated>2007-12-01T20:24:50Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=93</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/93-guid.html</id>
        <title type="html">Daily Comment</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>می توان برای مدتی به یک نقطه زُل زد و از این زُل زدن لذت هم برد، مگر این که اجباری در کار باشد.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/94-These-words-he-writes-....html" rel="alternate" title="These words he writes ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-19T08:42:20Z</published>
        <updated>2008-11-13T23:14:10Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=94</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=94</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/94-guid.html</id>
        <title type="html">These words he writes ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p style="direction: rtl;"><img vspace="0" hspace="0" border="0" align="left" src="http://blog.pykello.net/images/65.jpg" />بهشت سبز به خانه ام می آید،</p><p style="direction: rtl;">و من خاکستری می گریم،</p><p style="direction: rtl;">خاکستری، خاکستری، خاکستری، ...</p><p style="direction: rtl;">------------------------------</p><p style="direction: rtl;">میز مواخذه و جایگاه محاکمه و روز بازخواست</p><p style="direction: rtl;">آشوب در پس جبینم</p><p style="direction: rtl;">به نابخشوده ترین راه</p><p style="direction: rtl;">آه، به نابخشوده ترین راه</p><p style="direction: rtl;">من میان روشنی و تاریکی تاب می خورم ...</p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/95-Ivan-and-the-bugs.html" rel="alternate" title="Ivan and the bugs" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-15T16:58:52Z</published>
        <updated>2008-11-13T23:14:13Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=95</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/95-guid.html</id>
        <title type="html">Ivan and the bugs</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p dir="rtl" align="right">امروز به بررسی <a href="http://acm.tju.edu.cn/toj/showp2714.html">مساله Collecting Bugs </a>که یکی از سوالات <a href="http://neerc.ifmo.ru/past/2004/northern/standings.html">ACM/ICPC 2004 NEERC Northern Subregional</a> و همچنین یکی از سوالات آخرین مسابقه هفتگی ما بود می پرازم.</p><p dir="rtl" align="right">صورت سوال: n نوع شیء آبی و از هر کدام به اندازه ی بی نهایت و s نوع شیء زرد و از هر کدام به اندازه ی بی نهایت داریم. هر روز یک شیء آبی و یک شیء قرمز را به تصادف انتخاب می کنیم. هنگامی که از هر نوع شیء آبی حداقل یکی و هر نوع شیء قرمز حداقل یکی انتخاب کرده باشیم دیگر ادامه نمی دهیم. می خواهیم <a href="http://en.wikipedia.org/wiki/Expected_value">امید ریاضی</a> تعداد روزهایی که به آخر کار می رسیم را پیدا کنیم.</p><p dir="rtl" align="right">طبق تجربه، در چنین مواردی که حداکثر تعداد روزها معلوم نیست، نباید به راه حلی که به ازای هر مقداری احتمال رخداد آن را حساب کرد و جمع حاصل ضرب مقادیر در احتمالات نتیجه را حساب کرد. و باز هم طبق چندین سوال احتمالاتی که تا حالا دیده ام، این گونه مسائل اکثر با<a href="http://en.wikipedia.org/wiki/Dynamic_programming"> برنامه سازی پویا </a>قابل حل شدن می باشند. برای آشنایی و یادگیری بیشتر در باره ی مسائل احتمالاتی در مسابقات برنامه نویسی و دیدن چندین مثال دیگر به <a href="http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=probabilities">مقاله ی Understanding Probabilities</a><a href="http://www.topcoder.com/tc">سایت Topcoder</a> مراجعه کنید.</p><p dir="rtl" align="right">فرض کنید F<sub>i,j</sub> امید ریاضی حالتی باشد که در آن تعداد اشیاء آبی که تا به حال هیچ وقت انتخاب نشده اند i و تعداد اشیاء قرمز که تا به حال هیچ وقت انتخاب نشده اند برابر j باشد. چندین حال برای جفت i و j داریم:</p><p dir="rtl" align="right"> 1- i = 0 و j = 0: در این صورت دیگر لازم نیست هیچ روزی ادامه دهیم و جواب برابر با 0 خواهد بود.</p><p> 2- i = 0 و j != 0: به هر حال باید یک روز انتخاب را انجام دهیم. در این روز به احتمال j/s شیء زردی که قبلا هیچ وقت انتخاب نکردیم را انتخاب می کنیم و در روز های بعد باید با j-1 شی انتخاب نشده ی زرد ادامه دهیم، و با احتمال s-j)/s) یکی از اشیاء زردی را که قبلا انتخاب کردیم را انتخاب می کنیم و در روز های بعد باید با j شی انتخاب نشده ی زرد ادامه دهیم. بنابراین F<sub>i,j</sub> در این حالت برابر خواهد بود با:</p><div align="left"><img vspace="0" hspace="0" border="0" src="http://pykello.net/blog/images/eq3.GIF" /></div><p dir="rtl" align="right">که با ساده کردن معادله ی بالا برای F<sub>0,j</sub> بدست می آوریم:</p><p align="left"><img src="http://blog.pykello.net/images/eq4.GIF" /></p><p align="baseline">3- حالت سوم وقتی i != 0 و j = 0. با استدلالی مشابه حالت قبلی برای این حالت بدست خواهیم آورد:</p><p align="left"><img src="http://blog.pykello.net/images/eq5.GIF" /></p><p align="baseline">4- حالتی که i != 0 و j != 0: در این صورت با احتمال i/n \* j/s شیء آبی جدید و شیء زرد جدیدی انتخاب خواهیم کرد، با احتمال n-i)/n \* j/s) شیء زرد جدید انتخاب خواهیم کرد ولی شیء آبی جدیدی انتخاب نمی کنیم، ... که در این صورت F<sub>i,j </sub>برابر خواهد بود با:</p><p align="left"><img src="http://pykello.net/blog/images/eq1.GIF" /></p><p align="baseline">که با ساده کردن معادله ی بالا خواهیم داشت:</p><p align="left"><img src="http://pykello.net/blog/images/eq2.GIF" /></p><p>و کد من برای حل این مساله:</p><p></p><div align="left" dir="ltr" width="100%"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #339900;">#include &lt;iostream&gt;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #339900;">#include &lt;string&gt;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #339900;">#include &lt;iomanip&gt;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">using</span><span style="color: #0000ff;">namespace</span> std;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">int</span> n, s;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">double</span> mat<span style="color: #000000;">&#91;</span><span style="color: #0000dd;">1002</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #0000dd;">1002</span><span style="color: #000000;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">int</span> main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000dd;">cin</span>&gt;&gt; n &gt;&gt; s;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">for</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #0000dd;">0</span>; i &lt;= n; i++<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; <span style="color: #0000ff;">for</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">int</span> j = <span style="color: #0000dd;">0</span>; j &lt;= s; j++<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>i == <span style="color: #0000dd;">0</span>&amp;&amp; j == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = <span style="color: #0000dd;">0</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #0000ff;">else</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>i == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #0000dd;">-1</span><span style="color: #000000;">&#93;</span> + <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span>s / j;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #0000ff;">else</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>j == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = mat<span style="color: #000000;">&#91;</span>i<span style="color: #0000dd;">-1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> + <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span>n / i;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #0000ff;">else</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> = <span style="color: #0000dd;">1</span> + <span style="color: #000000;">&#40;</span>mat<span style="color: #000000;">&#91;</span>i<span style="color: #0000dd;">-1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #0000dd;">-1</span><span style="color: #000000;">&#93;</span> \* <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>i \* j<span style="color: #000000;">&#41;</span>&#160; +</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #0000dd;">-1</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> \* i \* <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>s - j<span style="color: #000000;">&#41;</span> +</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #0000dd;">-1</span><span style="color: #000000;">&#93;</span> \* <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>n - i<span style="color: #000000;">&#41;</span> \* j<span style="color: #000000;">&#41;</span> / <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>s \* n<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; mat<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>j<span style="color: #000000;">&#93;</span> /= <span style="color: #0000dd;">1</span> - <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>n - i<span style="color: #000000;">&#41;</span> \* <span style="color: #000000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>s - j<span style="color: #000000;">&#41;</span> / <span style="color: #000000;">&#40;</span>s \* n<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #000000;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000dd;">cout</span>.<span style="color: #00eeff;">precision</span><span style="color: #000000;">&#40;</span><span style="color: #0000dd;">4</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000dd;">cout</span>.<span style="color: #00eeff;">setf</span><span style="color: #000000;">&#40;</span>ios::<span style="color: #00eeff;">fixed</span> | ios::<span style="color: #00eeff;">showpoint</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000dd;">cout</span>&lt;&lt; mat<span style="color: #000000;">&#91;</span>n<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span>s<span style="color: #000000;">&#93;</span>&lt;&lt; endl;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">return</span><span style="color: #0000dd;">0</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></iomanip></string></iostream></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/96-At-the-data-structure-department-of-Macrohard!.html" rel="alternate" title="At the data-structure department of Macrohard!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-15T05:45:29Z</published>
        <updated>2008-11-13T23:14:23Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=96</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/96-guid.html</id>
        <title type="html">At the data-structure department of Macrohard!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p align="right" dir="rtl">امروز به بررسی <a href="http://acm.tju.edu.cn/toj/showp2722.html">مساله ی K-th Number</a> که یکی از سوالات <a href="http://neerc.ifmo.ru/past/2004/northern/standings.html">ACM/ICPC 2004 NEERC Northern Subregional </a>و همچنین آخرین مسابقه ی هفتگی ما بوده می پردازم.</p><p align="right" dir="rtl">صورت مساله این است که n تا عدد داریم و می خواهیم پرسش هایی از نوع: &quot;k-امین کوچکترین عدد در بین اعداد i-ام تا j-ام چیست؟&quot;</p><p align="right" dir="rtl">مثلا اگر n عدد ما عبارت باشند از: {1,5,2,6,3,7,4} ، سومین کوچکترین عدد بین اعداد 2-ام تا 5-ام (یعنی {5,2,6,3} ) برابر 5 می باشد و اولین کوچکترین عدد بین اعداد 4-ام تا 4-ام برابر 6 می باشد.</p><p align="right" dir="rtl">بدیهی ترین راه این است که برای هر پرسش اعداد i-ام تا j-ام را مرتب کنیم و k-امین کوچکترین را به عنوان خروجی چاپ کنیم. ولی در این صورت برای پاسخ به هر پرسش زمانی از مرتبه ی (O(n*log n صرف خواهیم کرد که با توجه به اینکه حداکثر 5000 پرسش از این نوع را می خواهیم پاسخ دهیم این راه حل چندان مناسب نمی باشد.</p><p align="right" dir="rtl">کلید اصلی حل این سوال این است که می توانیم به پرسش &quot;چند عدد کوچکتر یا مساوی عدد m در بین اعداد a-ام تا b-ام وجود دارد؟&quot; در زمان (O(log<sup>2</sup> n پاسخ داد. در نتیجه با استفاده از پاسخ این پرسش و جستجوی دودوئی می توان هر پرسش را در زمان (O(log<sup>3</sup> n پاسخ داد. در زیر شبه-کد مربوط به این قسمت را مشاهده می کنید:</p><p></p><div align="right" dir="ltr" width="100%"><div class="python" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># arr[0..n-1] is the sorted version of input array</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;"># We want to answer: Find k-th smallest number among a-th to b-th numbers</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Left = <span style="color: #ff4500;">0</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Right = n<span style="color: #ff4500;">-1</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Result = arr<span style="color: black;">&#91;</span>Right<span style="color: black;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff7700;font-weight:bold;">while</span> Left &lt;= Right:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; Mid = <span style="color: black;">&#40;</span>Left + Right<span style="color: black;">&#41;</span> / <span style="color: #ff4500;">2</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; <span style="color: #ff7700;font-weight:bold;">if</span> Count<span style="color: black;">&#40;</span>a, b, arr<span style="color: black;">&#91;</span>Mid<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>&lt; k:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; Left = Mid + <span style="color: #ff4500;">1</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; <span style="color: #ff7700;font-weight:bold;">else</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; Result = arr<span style="color: black;">&#91;</span>Mid<span style="color: black;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; Right = Mid - <span style="color: #ff4500;">1</span></div></li></ol></div></div><p align="baseline" style="direction: rtl;">حال، به بررسی اینکه چگونه می توان تعداد اعداد کوچکتر یا مساوی یک عدد را بین اعداد a-ام تا b-ام به دست آورد می پردازیم. برای این کار، از درختی دودوئی استفاده می کنیم. مثلا برای مثال بالا این درخت به شکل زیر خواهد بود:</p><p align="center" style="direction: rtl;"><img src="http://blog.pykello.net/images/heap1.gif" /></p><p style="direction: rtl;">ریشه ی این درخت نماینده ی کل اعداد می باشد. فرزند سمت چپ هر گره نماینده ی نیمه ی اول بازه ی مربوط به آن گره و فرزند سمت راست نماینده ی نیمه ی دوم بازه ی مربوط به آن گره می باشد. همچنین برای هر کدام از گره ها اعداد موجود در بازه ی مربوط به آن را به صورت مرتب شده داریم. </p><p style="direction: rtl;">بدیهی است که می توان هر بازه را معادل با یک سری گره در این درخت در نظر گرفت که تعداد آن گره ها از مرتبه (O(log n می باشد. مثلا برای بازه ی 2 تا 7، گره های 3-2 و 7-4، برای بازه ی 3 تا 5 گره های 3-3 و 5-4 و ...</p><p style="direction: rtl;">با استفاده از جستجوی دودوئی می توان مشخص کرد که در یک آرایه ی مرتب چند عدد کوچکتر یا مساوی یک عدد خاص وجود دارد. پس برای مشخص کردن تعداد اعداد کوچکتر مساوی یک عدد در بازه ای خاص، گره های مربوط به آن بازه را در درخت پیدا می کنیم و با استفاده از جستجوی دودوئی در آرایه ی مربوط به هر گره تعداد اعداد کوچکتر مساوی در کل بازه را بدست می آوریم. پیچیدگی زمانی این مرحله از مرتبه ی (O(log<sup>2</sup> n می باشد.</p><p style="direction: rtl;">حالا توضیح می دهیم که درخت بالا را چگونه می سازیم. برای ساختن درخت بالا از یک آرایه استفاده می کنیم که عنصر با اندیس یک ریشه ی درخت می باشد و فرزندان گره با اندیس i گره هایی با اندیس های 2i و 2i+1 می باشند. در این آرایه، برای هر گره نگه می داریم که آرایه ی مرتب شده مربوط به آن گره در کجا قرار دارد. من در راه حل خودم آرایه های مرتب شده را در یک آرایه ی دیگر ذخیره کرده ام و در آرایه ی اصلی برای هر گره اندیس شروع و طول مکانی که آرایه ی مرتب شده مربوط به آن گره در آن قرار دارد را نگهداری می کنیم.</p><p style="direction: rtl;">در زیر تابع مربوط به ایجاد این درخت را مشاهده می کنید:</p><div align="left" dir="ltr" width="100%"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">int</span> arr<span style="color: #000000;">&#91;</span><span style="color: #0000dd;">100000</span><span style="color: #000000;">&#93;</span>; <span style="color: #ff0000;">// Contains the original information</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">int</span> mem<span style="color: #000000;">&#91;</span><span style="color: #0000dd;">2000000</span><span style="color: #000000;">&#93;</span>; <span style="color: #ff0000;">// Container for node sorted-arrays</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">int</span> heap<span style="color: #000000;">&#91;</span><span style="color: #0000dd;">250000</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #000000;">&#93;</span>; <span style="color: #ff0000;">// The Actual Tree</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">int</span> cnt = <span style="color: #0000dd;">0</span>; <span style="color: #ff0000;">// Shows how many items has been inserted into Len till now</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">void</span> Create<span style="color: #000000;">&#40;</span><span style="color: #0000ff;">int</span> idx, <span style="color: #0000ff;">int</span> Len, <span style="color: #0000ff;">int</span> root<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>Len == <span style="color: #0000dd;">0</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">for</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff;">int</span> i = <span style="color: #0000dd;">0</span>; i &lt; Len; i++<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; mem<span style="color: #000000;">&#91;</span>cnt+i<span style="color: #000000;">&#93;</span> = arr<span style="color: #000000;">&#91;</span>idx+i<span style="color: #000000;">&#93;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; sort<span style="color: #000000;">&#40;</span>mem+cnt, mem+cnt+Len<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; heap<span style="color: #000000;">&#91;</span>root<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #000000;">&#93;</span> = cnt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; heap<span style="color: #000000;">&#91;</span>root<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #000000;">&#93;</span> = Len;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; cnt += Len;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>Len == <span style="color: #0000dd;">1</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #0000ff;">return</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; Create<span style="color: #000000;">&#40;</span>idx, Len / <span style="color: #0000dd;">2</span>, root \* <span style="color: #0000dd;">2</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; Create<span style="color: #000000;">&#40;</span>idx + Len / <span style="color: #0000dd;">2</span>, Len - Len / <span style="color: #0000dd;">2</span>, root \* <span style="color: #0000dd;">2</span> + <span style="color: #0000dd;">1</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li></ol></div></div><p style="direction: rtl;">این تابع اندیس شروع و طول قسمتی از آرایه را که می خواهیم به درخت اضافه کنیم و همچنین اندیس گرهی از درخت که این قسمت از آرایه به آن اضافه خواهد شد را می گیرد. برای درست کردن کل درخت، آن را با پارامترهای (Create(0,n,1 صدا می کنیم.</p><p style="direction: rtl;">و بالاخره، به بررسی روش انتخاب گره های مناسب برای بدست آوردن جواب مساله می پردازیم. فرض کنید می خواهیم گره هایی از زیردرخت با ریشه ی root را انتخاب کنیم که بازه ی مربوط به هر کدام از این گره ها کاملا زیر مجموعه ای از بازه ی مورد نظر باشند و هیچ دو گرهی وجود نداشته باشد که پدرشان یکی باشد و بازه ی مربوط به پدرشان نیز زیر مجموعه ی بازه ی مورد نظر باشد. برای این کار، چند حالت وجود دارد:</p><p style="direction: rtl;"> 1- بازه ی مربوط به root هیچ اشتراکی با بازه ی مورد نظر ندارد. در این صورت هیچ کدام از فرزندان root عضو مجموعه گره های مورد نظر نیست. و نیازی نیست فرزندانش را بررسی کنیم.</p><p style="direction: rtl;"> 2- بازه ی مربوط به root زیرمجموعه ی بازه ی مورد نظر می باشد. در این صورت خود گره root داخل مجموعه گره های مورد نظر می باشد. و نیازی نیست فرزندانش را بررسی کنیم.</p><p style="direction: rtl;"> 3- بازه ی مربوط به root زیر مجموعه ی بازه ی مورد نظر نمی باشد، ولی با بازه ی مورد نظر اشتراک دارد. در این صورت خود گره root داخل مجموعه ی گره های مورد نظر نمی باشد ولی تعدادی از گره های موجود در زیر درخت آن متعلق به این مجموعه می باشد. در این صورت فرزندان root را باید بررسی کنیم.</p><p style="direction: rtl;"> شبه کد تابع مربوط به انتخاب گره ها به شکل زیر خواهد بود:</p><div align="left" width="100%" dir="ltr"><div class="python" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">function Select<span style="color: black;">&#40;</span>root, Left, Right<span style="color: black;">&#41;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160;<span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#91;</span>Left, Right<span style="color: black;">&#93;</span><span style="color: #ff7700;font-weight:bold;">is</span> subset of <span style="color: black;">&#91;</span>a, b<span style="color: black;">&#93;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #808080; font-style: italic;"># A new node has been found</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #808080; font-style: italic;"># which is useful for us</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160;<span style="color: #ff7700;font-weight:bold;">else</span><span style="color: #ff7700;font-weight:bold;">if</span><span style="color: black;">&#91;</span>Left, Right<span style="color: black;">&#93;</span> intersects <span style="color: black;">&#91;</span>a, b<span style="color: black;">&#93;</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; Length = Right - Left + <span style="color: #ff4500;">1</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; Select<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span> \* root, Left + Length / <span style="color: #ff4500;">2</span> - <span style="color: #ff4500;">1</span>, Right<span style="color: black;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160; &#160; Select<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span> \* root + <span style="color: #ff4500;">1</span>, Left + Length / <span style="color: #ff4500;">2</span>, Right<span style="color: black;">&#41;</span></div></li></ol></div></div><p align="right" dir="rtl">گمان کنم توضیحات بالا برای حل مساله ی مورد نظر کافی باشد. ولی اگر همچنان مشکلی داشتید یا پیشنهادی داشتید comment بگذارید!</p><p align="right" dir="rtl">این مساله مثال خوبی بود برای یادگیری کار کردن با درخت های دودوئی برای پاسخ دادن به query های مربوط به یک آرایه. برای تمرین بیشتر توصیه می کنم مسائل ساده تر زیر را نیز حل کنید:</p><p align="right" dir="rtl"> - <a href="http://acmicpc-live-archive.uva.es/nuevoportal/data/problem.php?p=2191">Potentiometers</a></p><p align="right" dir="rtl"> -<a href="http://acm.timus.ru/problem.aspx?space=1&num=1491"> Unreal Story</a> : که البته این سوال یک راه حل خیلی ساده تر و تمیزتر هم دارد. ولی به هر حال آن را می توان با این روش نیز حل کرد.</p><p align="right" dir="rtl"> -<a href="http://acm.zju.edu.cn/show_problem.php?pid=2671"> Cryptography</a></p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/97-TopCoder-Exchange.html" rel="alternate" title="TopCoder Exchange" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-12T10:12:37Z</published>
        <updated>2008-11-13T23:15:48Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=97</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=97</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/97-guid.html</id>
        <title type="html">TopCoder Exchange</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p>قابل توجه مشترکان <a href="http://padster.gyronet.org/tc/TCX/index.php">بازار بورس Topcoder</a>! قیمت<a href="http://www.topcoder.com/tc?module=MemberProfile&cr=13400497"> irancoldfusion </a>در روزهای اخیر به شدت با کاهش روبرو بوده است و زمان خوبی برای خریدن سهام این handle می باشد. کارشناسان پیش بینی می کنند که <a href="http://padster.gyronet.org/tc/TCX/coderpage.php?cr=13400497">قیمت سهام irancoldfusion </a>افزایش چشم گیری در دو هفته ی آینده خواهد داشت.</p><p>هفته ی گذشته قیمت <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=21659750">Chmel_Tolstiy</a> افزایش چشم گیری داشت. ولی این handle برای خرید پیشنهاد نمی شود. چون احتمالا دفعات بعد سقوط خواهد کرد.</p><p>گزینه های مناسب دیگر که پیشنهاد می کنم: <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=307060">AdrianKuegel</a> و <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=302501">PMH</a> و<a href="http://www.topcoder.com/tc?module=MemberProfile&cr=10428762"> HiltonLange</a> و<a href="http://www.topcoder.com/tc?module=MemberProfile&cr=15511417"> ltdtl</a>.</p><p style="direction: rtl;"><br />------------------------------</p><p style="direction: rtl;">پی نوشت: برای اطمینان از کم ریسک بودن سرمایه گذاری بر روی irancoldfusion در وضعیت فعلی، به <a href="http://acm.tju.edu.cn/toj/user_hadi.html">پروفایل وی در سایت TJU</a> مراجعه کنید!</p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/99-Love,-Life,-and-Contests!.html" rel="alternate" title="Love, Life, and Contests!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-11T16:38:42Z</published>
        <updated>2008-11-13T23:15:57Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=99</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=99</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/99-guid.html</id>
        <title type="html">Love, Life, and Contests!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p>سلام دوستان،</p><p> چند هفته است با وجود تلاش و تمرین فراوان، بدتر از قبل عمل می کنم، و نتایجم ظاهرا &quot;شکستی&quot; بیش نیست! به چند نمونه توجه کنید:</p><p>  - پنج شنبه صبح، در<a href="http://www.topcoder.com/tc?module=MatchDetails&rd=10672"> مسابقه ی هفتگی Topcoder</a> با وجود داشتن ایده ی درست برای هر دو سوال 250 امتیازی و 500 امتیازی، هیچ کدام را درست پیاده سازی نکردم و یکی Challenge و دیگری Failed System Test شد! و Rating ام 150 تا پایین آمد!</p><p> - پنج شنبه در مسابقه ی هفتگی دانشکده، با وجود داشتن اعتماد به نفس کافی و ایده ی درست برای <a href="http://acm.tju.edu.cn/toj/showp2722.html">سوال آخر</a>، آن را درست پیاده سازی نکردم و چندین جواب Time Limit Exceeded ناراحت کننده دریافت کردم! گمان کنم اگر به راه حلم ایمان کافی می داشتم، حتما پس از گرفتن Time Limit Exceeded آن را درست می کردم و سرافکنده و شکست خورده به خوابگاه برنمی گشتم!</p><p> ظاهرا مشکل من عدم دقت است ... ولی گمان کنم مصطفی راست می گوید که &quot;نباید خودم را زیاد ناراحت بکنم، دست خودم نیست که ... &quot; <img src="http://blog.pykello.net/templates/default/img/emoticons/wink.png" alt=";-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p style="direction: rtl;">-----------------------------------------------------</p><p style="direction: rtl;">یک روش عالی و امتحان شده برای حل مسائل سخت: پس از درک سوال به توالت بروید و چند دقیقه ای آن جا فکر کنید. مزیت این مکان نسبت به پشت کامپیوتر این است که به کیبورد دسترسی ندارید و تحریک نمی شوید کد بزنید (<a href="http://forums.topcoder.com/?module=Message&messageID=802958">منبع</a>)</p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/100-Sabr,-Copyrighted-2007,-Koodakanehaye-man!.html" rel="alternate" title="Sabr, Copyrighted © 2007, Koodakanehaye man!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-11T14:28:38Z</published>
        <updated>2008-11-13T23:16:04Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=100</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=100</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/100-guid.html</id>
        <title type="html">Sabr, Copyrighted © 2007, Koodakanehaye man!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p>وقتی لکه ی جوهر روی یک صفحه بیافته اگه دفتر رو ورق بزنی ممکنه چندین صفحه بعد هم جوهری شه...باید صبر کرد تا خوب خشک شه!</p><p>توزندگی هم اگه لکه ای روی یک صفحه اش افتاد برای پوشوندنش سریع شروعبه ورق زدن نکنید چون ممکنه صفحه های بعدی زندگی هم لکه دار شه!</p><p>صبر کنید...صبر!</p><p>فقط کاش..کاش..</p><p>کاش لکه اون قدر بزرگ نباشه که صبر هم راه حلش نباشه!</p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/101-Welcome-back!.html" rel="alternate" title="Welcome back!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-11T14:25:11Z</published>
        <updated>2007-12-01T20:27:42Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=101</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=101</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/101-guid.html</id>
        <title type="html">Welcome back!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>به درود، دنیای زیبای آرزوهای من. فعلا، تا دیدار بعدی.</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/102-Art-of-life.html" rel="alternate" title="Art of life" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-05-07T15:08:17Z</published>
        <updated>2008-11-13T23:16:11Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=102</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=102</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/102-guid.html</id>
        <title type="html">Art of life</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p>از دفترچه خاطرات سریوژا در ششم می 2007:</p><p>&quot;به این فکر بودم که در صفحه ی ششم دفترچه ی نقاشی ام چه بکشم ... ولی آن را دست نخورده و سفید رد کردم ...&quot;</p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/103-Damour-ou-damitie.html" rel="alternate" title="D'amour ou d'amitié" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-30T07:51:27Z</published>
        <updated>2008-11-13T23:16:22Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=103</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=103</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/103-guid.html</id>
        <title type="html">D'amour ou d'amitié</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p style="direction: rtl;">در مکان های خیلی خیلی دور، سیاره ای وجود دارد به نام لیمپاندایینین. جمعیت فعلی این سیاره کمتر از 20 نفر و شعاع آن متغیر است.</p><p style="direction: rtl;">زندگی در این سیاره ی قشنگ و دوست داشتنی زیباست. ولی حیف که اکثر انسان ها از وجود این سیاره خبر ندارند!</p><p style="direction: rtl;">در این سیاره، هر اظهار نظری از روی محبت انجام می گیرد. </p><p style="direction: rtl;">در این سیاره، زبان های برنامه نویسی به جای &quot;Goto&quot;، از &quot;Please come with me to&quot; و به جای while X do از while X let's do استفاده می کنند.</p><p style="direction: rtl;">دیروز، پتیا، يکی از ساکنان این سیاره تصمیم به ترک سیاره گرفت. &quot;اُ پتیای عزیز، لطفا پیش ما بمان&quot;</p><p style="direction: rtl;">اکثر گاوهای خال خالی دوست دارند بزغاله های بی خال لاغر را اذیت کنند. ولی، بتسی، گاو خال خالی سیاره ی ما، این طور نیست. او حتی به بزغاله های بی خال لاغر کمک هم می کند. حتی یک بار عاشق یکی از آن ها شده بود!</p><p style="direction: rtl;">هر بار که یکی از اعضای این سیاره زخمی می شود، همه ی هفتاد و هفت گل موجود در این سیاره پژمرده می شوند.</p><p style="direction: rtl;">دیروز داشتم در این سیاره قدم می زدم و همراه با بقیه ی ساکنان این سیاره زمزمه می کردم:</p><p style="direction: rtl;">&quot;مانند جزیره ای هستم در یک اقیانوس بی انتها </p><p style="direction: rtl;"> چیزی برای گفتن ندارم،</p><p style="direction: rtl;"> ولی حاضرم زندگی ام را وقف تو کنم </p><p style="direction: rtl;"> ...&quot;</p><p style="direction: rtl;"> چه کسی می گوید بتسی آواز قناری ها را درک نمی کند؟!!</p><p style="direction: rtl;" /><p style="direction: rtl;" /></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/104-Virginia-Tech-Tragedy-....html" rel="alternate" title="Virginia Tech Tragedy ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-23T08:57:13Z</published>
        <updated>2008-11-13T23:16:34Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=104</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=104</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/104-guid.html</id>
        <title type="html">Virginia Tech Tragedy ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p align="baseline"><a href="http://news.bbc.co.uk/1/hi/world/americas/6560685.stm">تراژدی ويرجينيا تک</a> که یادتون هست؟</p><p align="center"><a href="http://www.mg.co.za/zapiro/imagePage.aspx?YearId=2007|MonthId=4|DayId=19"><img src="http://www.mg.co.za/ContentImages/2561/19-apr07x.gif" boarder="0" /></a></p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/105-The-Change.html" rel="alternate" title="The Change" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-20T11:40:40Z</published>
        <updated>2008-11-13T23:16:41Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=105</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=105</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/105-guid.html</id>
        <title type="html">The Change</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p>نرم افزار وبلاگم را از <a href="http://wordpress.org/">Wordpress</a> به <a href="http://www.s9y.org/">Serendipity</a> تغییر دادم. علت این کار هم این بود که Wordpress خیلی زور می گفت و بعضی از تغییرات دستی من در کد HTML مربوط به پست ها را تغییر می داد. </p><p>علاوه بر آن، Serendipity به طور پیش فرض تقویم شمسی و زبان فارسی را پیش فرض پشتیبانی می کند، دارای ویرایشگر بهتری است، و قابلیت انعطاف آن بیشتر است.</p><p>احتمالا دلیل اینکه Wordpress بیشتر به کار می رود این است که: 1. قدیمیتر است 2. استفاده کننده های آن زیاد است و کلی Plug-in برای آن ایجاد شده است. </p><p>چون تا یکی-دو هفته دیگر هاستینگ وب سایتم را عوض خواهم کرد، فعلا همه ی مطالب وب لاگ وردپرسم را به اینجا نیاوردم. می توانید مطالب وبلاگ قبلی را در آدرس<a href="http://blog.pykello.net/wp-index.php"> blog.pykello.net/wp-index.php</a> مشاهده کنید.</p><p>قالب فعلی وبلاگم تغییر یافته ی قالب Idea است. لطفا نظرات و پیشنهادات خودتان را درباره ی این قالب بیان کنید.</p></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/106-Sad-News-....html" rel="alternate" title="Sad News ..." />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-05T11:16:00Z</published>
        <updated>2008-11-13T23:18:39Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=106</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=106</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/106-guid.html</id>
        <title type="html">Sad News ...</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><table width="100%" border="0" dir="ltr"><tr><td><img border="0" src="http://blog.pykello.net/images/mountain.jpg" /></td><td><div align="right" dir="rtl"><font color="#006633">از دفترچه خاطرات سریوژا در روز سوم آوریل 2007:</font></div><div align="right" dir="rtl"></div><div align="right" dir="rtl">«... وای بر من! کوهی که به قله ی آن صعود کرده بودم از یخ بود و با طلوع آفتاب آب شد! ...»</div></td></tr></table></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/107-Einsteins-Chauffer.html" rel="alternate" title="Einstein's Chauffer" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-05T11:12:00Z</published>
        <updated>2008-11-13T23:18:52Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=107</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
    
        <id>http://blog.pykello.net/index.php?/archives/107-guid.html</id>
        <title type="html">Einstein's Chauffer</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="justify" dir="rtl">حکايتی واقعی درباره ی <a href="http://nobelprize.org/nobel_prizes/physics/laureates/1921/einstein-bio.html">آلبرت اينشتين</a> و <a href="http://en.wikipedia.org/wiki/Theory_of_relativity">نظريه ی نسبت او</a> وجود دارد.<p>اينشتين پس از اينکه نظريه ی نسبيت مشهور خود را ارائه داد، به دانشگاه های مختلف ايالات متحده ی آمريکا می رفت و درباره ی نظريه ی خود سخنرانی می کرد. در طی اين سفرها، راننده ی باوفايش، هری، هميشه همراه او بود و در همه ی سخنرانی های او حضور داشت و در رديف عقب می نشست.<br /><img border="0" align="left" style="padding: 5px" src="http://blog.pykello.net/images/einstein.jpg" /><br />يک روز پس از يکی از سخنرانی ها، وقتی که اينشتين از سالن خارج شده بود و می خواست سوار اتومبيلش بشود، هری به او گفت: "پروفسور اينشتين، من سخنرانی شما را درباره ی نظريه ی نسبيت آن قدر شنيده ام که اگر به من فرصتی داده شود می توانم آن را کامل و بدون نقص ارائه دهم!"<br />اينشتين جواب داد: "خيلی خوب! من هفته ی بعد به دارتموث می روم. مرا آنجا نمی شناسند. تو آن جا به عنوان اينشتين سخنرانی کن، و من جای تو هری می شوم!"</p><p>و اين اتفاق افتاد ... هری سخنرانی را بدون عيب و نقص ارائه داد، بدون اينکه هيچ سخنی را اشتباه بگويد، و اينشتين در رديف عقب به عنوان "راننده" نشست و کمی چرت زد.</p><p>هنگامی که سخنرانی تمام شده بود و هری در حال پائين آمدن از جايگاه مخصوص بود، يکی از محققان جلوی او را گرفت و پرسشی درباره ی نظريه ی نسبيت از او پرسيد ... هری به محقق جواب داد: "پاسخ اين پرسش بسيار آسان است! در واقع، اين پرسش آنقدر ساده است که از راننده ام می خواهم تا پاسخ شما را بدهد!"</p><p>منبع: <a href="http://www.short-funny-stories.com/funny-stories/story-81.html">http://www.short-funny-stories.com/funny-stories/story-81.html</a></p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/108-Words-of-Wisdom.html" rel="alternate" title="Words of Wisdom" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-04T11:06:00Z</published>
        <updated>2008-11-13T23:18:56Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=108</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=108</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/9-Sacred-Words" label="Sacred Words" term="Sacred Words" />
    
        <id>http://blog.pykello.net/index.php?/archives/108-guid.html</id>
        <title type="html">Words of Wisdom</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#006600">حضرت علی(ع)</font> می فرمایند: "<font color="#000099">هر کس اختیار خود را به دست آرزوهایش سپارد، ناگهان مرگ فرا رسد و او را از پای در آرد.</font>"</div><div align="right" dir="rtl"></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/4-Base-1-+-i.html" rel="alternate" title="Base -1 + i" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-03T07:36:20Z</published>
        <updated>2008-11-13T23:19:09Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=4</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
            <category scheme="http://blog.pykello.net/index.php?/categories/6-Mathematics" label="Mathematics" term="Mathematics" />
    
        <id>http://blog.pykello.net/index.php?/archives/4-guid.html</id>
        <title type="html">Base -1 + i</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>با استفاده از 1- + i به عنوان مبنای دستگاه اعداد، که در آن i برابر با&#160; می باشد، تمام اعداد صحيح مختلط (اعدادی که دارای يک قسمت حقيقی و يک قسمت موهومی می باشند) را می توان به صورت اعداد بدون علامت متشکل از دنباله ای از يک و صفر نمايش داد. و اين [...]<div dir="rtl" align="right">با استفاده از 1- + i به عنوان مبنای دستگاه اعداد، که در آن i برابر با&#160;<img src="http://blog.pykello.net/images/sqrt1.gif" border="0" alt="sqrt1" title="sqrt1" width="27" height="20" /> می باشد، تمام <a href="http://www.clarku.edu/~djoyce/complex/">اعداد صحيح مختلط</a> (اعدادی که دارای يک قسمت حقيقی و يک قسمت موهومی می باشند) را می توان به صورت اعداد بدون علامت متشکل از دنباله ای از يک و صفر نمايش داد. و اين نمايش برای هر عددی يکتا می باشد. در ادامه به اثبات اين قضايا نخواهيم پرداخت، بلکه به توضيح مختصری درباره ی اين مبنا و روش بدست آوردن نمايش معادل يک عدد در اين دستگاه اعداد خواهيم پرداخت.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">فرض کنيد می خواهيم نمايش عدد 2 در اين مبنا را بدست بياوريم. اين کار را می توانيم با استفاده از روش معمول تبديل مبنا انجام دهيم: يعنی 2 را بر  1- + i تقسيم کنيم، سپس خارج قسمت آن را بر&#160; 1- + i تقسيم کنيم، و اين کار را تا جايي انجام دهيم که خارج قسمت بدست آمده صفر شود. سپس با پشت سر هم گذاشتن باقيمانده های تقسيم ها نتيجه ی مورد نظر را بدست آوريم. می خواهيم باقيمانده های بدست آمده صفر يا يک باشند. برای اينکه ببينيم اين کار همواره ممکن است، فرض کنيد می خواهيم يک عدد صحيح دلخواه به فرم a + bi را بر  1- + i تقسيم کنيم. می خواهيم q و r را چنان پيدا کنيم که q يک عدد مختلط و r برابر 1 يا 0 باشد و رابطه ی زير برقرار باشد:</div><div dir="rtl" align="right">&#160;</div><div dir="ltr" align="left"> <span> a + bi = (q<sub>r</sub> + q<sub>i</sub>i)(-1 + i) + r </span> </div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">که در آن q<sub>r</sub> نشانگر قسمت حقيقی q و q<sub>i</sub> نشانگر قسمت موهومی q می باشد. با برابر قرار دادن قسمت های موهومی و حقيقی و حل دو معادله ی دو مجهولی روابط زير برای q<sub>r</sub> و q<sub>i</sub> بدست می آيد:<br /> <div dir="ltr" align="left"> <span> q<sub>r</sub> = (b - a + r) / 2 <br /> q<sub>i</sub> = (-a - b + r) / 2 </span> </div><p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">واضح است که اگر a و b هر دو زوج يا هر دو فرد باشند، با قرار دادن r = 0 ، q يک عدد صحيح مختلط خواهد بود و در صورتی که يکی از a و b فرد و ديگری زوج باشد، می توانيم r را برابر با 1 انتخاب کنيم تا q يک عدد صحيح مختلط شود.</p><p>در ادامه از روش بالا برای پيدا کردن نمايش عدد 2 در اين مبنا استفاده می کنيم:</p><p>مرحله ی اول: a = 2 و b = 0. در نتيجه q<sub>r</sub> = -1 و q<sub>i</sub> = -1 و r = 0.<br />مرحله ی دوم: a = -1 و b = -1. در نتيجه q<sub>r</sub> = 0 و q<sub>i</sub> = 1 و r = 0.<br />مرحله ی سوم: a = 0 و b = 1. در نتيجه q<sub>r</sub> = 1 و q<sub>i</sub> = 0 و r = 1.<br />مرحله ی چهارم: a = 1 و b = 0. در نتيجه q<sub>r</sub> = 0 و q<sub>i</sub> = 0 و r = 1.<br />مرحله ی پنجم: a = 0 و b = 0. پايان!<br />اگر باقيمانده ها را پشت سر هم بگذاريم، نتيجه را که برابر 1100 می باشد را بدست می آوريم.</p><p><font color="#009900">يادداشت:</font> <font color="#0033cc">منبع مطالبی که خوانديد، <a href="http://www.hackersdelight.org/">کتاب Hacker&rsquo;s Delight </a>از <a href="http://www.aw.com">انتشارات Addison Wesley</a> می باشد. علت اينکه اين بخش از کتاب توجه مرا جلب کرد اين بود که اين مطلب مرتبط با سوال <a href="http://acm.uva.es/p/v111/11180.html">UVa #11180</a> می باشد که قبلا با همکاری هم تيمی های عزيز با استفاده از يک راه حل ديگر حل کرده بوديم، ولی روش ما به سادگی اين روش نبود. البته اين نشان گر اين است که اگر روابط مربوط به مساله را با دقت بررسی کنيم، معمولا به راحتی به راه حل های ساده تر و تميز تر می رسيم. <br />روشی که ما استفاده کرده بوديم، حاصل از بررسی توان های مختلف  1- + i و Pattern هايي بود که در آن وجود داشت.<br /></font> </div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/5-Histograms-Part-2.html" rel="alternate" title="Histograms - Part 2" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-04-02T08:45:13Z</published>
        <updated>2009-05-11T04:42:45Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=5</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/5-guid.html</id>
        <title type="html">Histograms - Part 2</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">در <a href="http://pykello.net/blog/?p=64">قسمت قبل</a> به طرح مساله ی زير و يک ايده ی ساده برای حل آن پرداختيم:<br />&quot;<font color="#009900">يک سری مستطيل با عرض واحد و ارتفاع های مختلف داريم که کنار هم قرار گرفته اند. الگوريتمی پيشنهاد دهيد که مساحت بزرگترين مستطيلی که درون اين مستطيل ها جا می شود را پيدا کند.</font>&quot;</p><p>در اين قسمت روش ديگری برای حل اين مساله ارائه می کنيم:</p><p><font color="#009900">روش دوم (Iterative):</font> ايده ی اين روش اين است که عريض ترين مستطيلی که هم ارتفاع با يکی از مستطيل ها باشد بازه ای شامل مستطيل هايي با ارتفاع های بزرگتر مساوی اين ارتفاع می باشد.</p><p>مستطيل ها را به ترتيب ارتفاع بررسی می کنيم. در هر مرحله يک سری بازه داريم (که در ابتدا خالی است) و در هر مرحله بازه ی مستطيلی که بررسی می شود را به اين بازه های اضافه می کنيم. (منظورم از بازه، بازه ای از محور x ها است که هر مستطيل اشغال می کند. مثلا برای سمت چپ ترين مستطيل، اين بازه [0,1]، برای بعدی [1,2] و &#8230; می باشد.)<br />پس از اضافه کردن بازه ی مستطيل جاری، ممکن است اين بازه از سمت چپ يا از سمت راست به يک بازه ای که قبلا اضافه شده بچسبد، يا اينکه دو بازه را به هم بچسباند، يا اينکه يک بازه ی جديد ايجاد کند. به هر حال بازه ای که پس از اضافه کردن بازه ی مستطيل جاری شامل بازه ی مستطيل جاری می باشد، عريض ترين بازه ای است که هم ارتفاع با اين مستطيل می تواند باشد. <br />(البته استثنا در مورد مستطيل های هم ارتفاعی که عريض ترين بازه يشان يکسان است وجود دارد، ولی چون بالاخره چنين بازه ای بعد از اضافه کردن آخرين مستطيل بوجود می آيد، خللی در درستی الگوريتم ما ايجاد نمی کند.)</p><p>اميدوارم توانسته باشم ايده ی اين روش را خوب توضيح بدهم.</p><p>برای نگهداری بازه ها، از دو آرايه با نام های Left و Right که طول آن ها N (که N تعداد مستطيل ها می باشد) استفاده می کنيم که مقدار اوليه ی عناصر آن ها 1- می باشد. برای يک بازه عضو متناظر با سمت راست ترين عضو آن بازه در آرايه ی Right انديس سمت چپ ترين عضو آن بازه را نگه داری می کند و عضو متناظر با سمت چپ ترين عضو آن بازه در آرايه ی Left انديس سمت راست ترين عضو آن بازه را نگه داری می کند. چون هميشه ما فقط با دو سر بازه کار داريم، مقاديری که در اعضای متناظر با ساير اعضای آرايه نگه داری می شود برای ما اهميتی ندارد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">در اين صورت، pseudo-code الگوريتم فوق به صورت زير خواهد بود: </div><div dir="rtl" align="right"><div dir="ltr" align="left"> <span>Heights<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">[</span><span class="S2">3</span><span class="S10">,</span><span class="S0"> </span><span class="S2">6</span><span class="S10">,</span><span class="S0"> </span><span class="S2">9</span><span class="S10">,</span><span class="S0"> </span><span class="S2">7</span><span class="S10">,</span><span class="S0"> </span><span class="S2">11</span><span class="S10">,</span><span class="S0"> </span><span class="S2">8</span><span class="S10">,</span><span class="S0"> </span><span class="S2">14</span><span class="S10">,</span><span class="S0"> </span><span class="S2">4</span><span class="S10">,</span><span class="S0"> </span><span class="S2">6</span><span class="S10">,</span><span class="S0"> </span><span class="S2">3</span><span class="S10">,</span><span class="S0"> </span><span class="S2">5</span><span class="S10">]</span><br /> Left<span class="S0"> &#160;&#160;&#160;</span><span class="S10">=</span><span class="S0"> </span><span class="S10">[-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">]</span><br /> Right<span class="S0"> &#160;&#160;</span><span class="S10">=</span><span class="S0"> </span><span class="S10">[-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">]</span></p><p> <span class="S5">function</span><span class="S0"> </span>FindLargestRectangle<span class="S10">():</span><br /> <span class="S0">&#160; &#160;</span>Result<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S2">0</span><br /> <span class="S0">&#160; &#160;</span>SortedArray<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">[</span><span class="S2">0</span><span class="S10">,</span><span class="S0"> </span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span><span class="S10">&#8230;</span><span class="S0"> </span><span class="S10">,</span><span class="S0"> </span>N<span class="S10">-</span><span class="S2">1</span><span class="S10">]</span><br /> <span class="S0">&#160; &#160;</span>SortedArray<span class="S10">.</span>SortUsingHeights<span class="S10">()</span><span class="S0"> </span><span class="S1"># This can be done in O(N*log(N))</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">for</span><span class="S0"> </span>i<span class="S0"> </span><span class="S5">in</span><span class="S0"> </span><span class="S2">0</span><span class="S0"> </span><span class="S10">..</span><span class="S0"> </span>N<span class="S10">-</span><span class="S2">1</span><span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>CurrentLeft<span class="S0"> &#160;</span><span class="S10">=</span><span class="S0"> </span>SortedArray<span class="S10">[</span>i<span class="S10">]</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>CurrentRight<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>SortedArray<span class="S10">[</span>i<span class="S10">]</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S0"> </span>CurrentRight<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span>N<span class="S10">-</span><span class="S2">1</span><span class="S0"> </span><span class="S5">and</span><span class="S0"> </span>Right<span class="S10">[</span>CurrentRight<span class="S0"> </span><span class="S10">+</span><span class="S0"> </span><span class="S2">1</span><span class="S10">]</span><span class="S0"> </span><span class="S10">!=</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># if there is another range in the right side of current range,</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># then extend current range</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>CurrentRight<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>Right<span class="S10">[</span>CurrentRight<span class="S0"> </span><span class="S10">+</span><span class="S0"> </span><span class="S2">1</span><span class="S10">]</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S0"> </span>CurrentLeft<span class="S0"> </span><span class="S10">&gt;</span><span class="S0"> </span><span class="S2">0</span><span class="S0"> </span><span class="S5">and</span><span class="S0"> </span>Left<span class="S10">[</span>CurrentLeft<span class="S0"> </span><span class="S10">-</span><span class="S0"> </span><span class="S2">1</span><span class="S10">]</span><span class="S0"> </span><span class="S10">!=</span><span class="S0"> </span><span class="S10">-</span><span class="S2">1</span><span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># if there is another range in the left side of current range,</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># then extend current range</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>CurrentLeft<span class="S0"> &#160;</span><span class="S10">=</span><span class="S0"> </span>Left<span class="S10">[</span>CurrentLeft<span class="S0"> </span><span class="S10">-</span><span class="S0"> </span><span class="S2">1</span><span class="S10">]</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S1"># Update Result</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>Result<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>Max<span class="S10">(</span>Result<span class="S10">,</span><span class="S0"> </span><span class="S10">(</span>CurrentRight<span class="S0"> </span><span class="S10">-</span><span class="S0"> </span>CurrentLeft<span class="S0"> </span><span class="S10">+</span><span class="S0"> </span><span class="S2">1</span><span class="S10">)</span><span class="S0"> </span><span class="S10">*</span><span class="S0"> </span>Heights<span class="S10">[</span>SortedArray<span class="S10">[</span>i<span class="S10">]])</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S1"># Update Range Arrays</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>Right<span class="S10">[</span>CurrentLeft<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>CurrentRight<br /> <span class="S0">&#160; &#160;&#160; &#160;</span>Left<span class="S10">[</span>CurrentRight<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>CurrentLeft<br /> <span class="S0">&#160; &#160;</span><span class="S5">end</span><span class="S0"> </span><span class="S5">for</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span>Result<br /> <span class="S5">end</span><span class="S0"> </span><span class="S5">function</span></p><p> <span class="S5">print</span><span class="S0"> </span>FindLargestRectangle<span class="S10">()</span></span> </div><p>پيچيدگی زمانی اين الگوريتم از مرتبه ی ((O(n*log(n می باشد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">منتظر قسمت های بعدی باشيد!</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/6-Petrozavodsk-Wins-Bronze-Medals!.html" rel="alternate" title="Petrozavodsk Wins Bronze Medals!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-28T07:32:15Z</published>
        <updated>2009-05-11T04:42:48Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=6</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=6</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/6-guid.html</id>
        <title type="html">Petrozavodsk Wins Bronze Medals!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"><font color="#006633">آخرین خبر از مسابقات ACM ICPC World Finals 2007:</font> تيم دانشگاه Petrozavodsk که تنها تیمی بود که 6 سوال حل کرده بود و سیزدهم شده بود و مدال نگرفته بود، مدال برنز گرفت! برای دیدن نتیجه ی نهایی و رنگ مدال ها به<a href="http://icpc.baylor.edu/icpc/Finals/scoreboard/Final/"> رتبه بندی نهایی مسابقات</a> مراجعه کنید.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">برای دیدن توضیحات Bill Poucher به<a href="http://forums.topcoder.com/?module=Thread&amp;threadID=568887&amp;start=165&amp;mc=175#779381"> فروم Topcoder </a>مراجعه کنید.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">واقعا برای اعضای تیم Petrozavodsk خوشحالم! </div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center"><img src="images/petrzavodsk.jpg" border="0" alt="Petrozavodsk State University" title="Petrozavodsk State University" width="448" height="298" /></div><p>&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/7-Histograms-Part-1.html" rel="alternate" title="Histograms - Part 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-28T06:06:21Z</published>
        <updated>2009-05-11T04:43:00Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=7</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/7-guid.html</id>
        <title type="html">Histograms - Part 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">به مساله ی زير توجه کنيد:<br />&quot;<font color="#009933">يک سری مستطيل با عرض واحد و ارتفاع های مختلف داريم که کنار هم قرار گرفته اند. الگوريتمی پيشنهاد دهديد که مساحت بزرگترين مستطيلی که درون اين مستطيل ها جا می شود را پيدا کند.</font>&quot;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">(برای امتحان کردن روش های مختلف حل اين مساله، سعی کنيد مساله ی <a href="http://acm.zju.edu.cn/show_problem.php?pid=1985">ZJU #1985</a> را حل کنید.)</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">مثلا در شکل زير، مستطيلی که مساحت آن جواب مساله است با رنگ سبز مشخص شده است.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center"><img src="http://blog.pykello.net/images/histogram.png" border="0" alt="Histograms" title="Histograms" width="514" height="235" /></div><p>&#160;</div><div dir="rtl" align="right">ساده ترين راه حلی که به ذهن می رسد اين است که به ازای هر مستطيل فرض کنيم که مستطيل نتيجه هم ارتفاع با آن است و ببينيم با اين ارتفاع چقدر می توانيم به سمت راست و چپ برويم. ولی پيچيدگی زمانی اين راه حال در بدترين حالت (O(n^2 می باشد که چندان مطلوب نيست.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">چيزی که اين مساله را برای من جالب کرده اين است که اين مساله چندين راه حل جالب و متنوع دارد و بسيار آموزنده و سرگرم کننده می باشد. در اين قسمت و قسمت های بعدی به بررسی برخی از اين الگوريتم ها که بلدم می پردازم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009933">روش اول (Divide and Conquer):</font> دفعه ی اولی که اين مساله را سر امتحان ميان ترم درس طراحی الگوريتم ها ديدم، اين راه حل به ذهنم رسيد:</p><p>فرض کنيد می خواهيم جواب را برای مستطيل a-ام تا b-ام پيدا کنيم. اين مستطيل ها را از وسط به دو قسمت تقسيم می کنيم. جواب يا کاملا در قسمت سمت چپ است يا کاملا در قسمت سمت راست يا اينکه قسمتی از آن در سمت راست است و قسمتی از آن در سمت چپ. دو حالت اول را به صورت بازگشتی پيدا می کنيم و برای پيدا کردن بهترين جواب در حالت سوم، به روش زير عمل می کنيم:</p><p>در هر مرحله مستطيل را با ارتفاع جاری گسترش می دهيم. حالا، از سمت چپ و راست به دو مستطيل مختلف مماس می شود. ارتفاع جاری را به ماکزيمم ارتفاع اين دو مستطيل تغيير می دهيم و ادامه می دهيم. در هر مرحله مساحت مستطيل جاری را پيدا کرده و جواب را بروز می کنيم. اين کارها را تا زمانی انجام می دهيم که از سمت چپ به مستطيل a-ام و از سمت راست به مستطيل b-ام برسيم.</p><p>برای اينکه منظور من را دقيق تر بفهميد، به pseudo-code زير توجه کنيد:<br /> <div dir="ltr" align="left"> <span>Heights<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">[</span><span class="S2">3</span><span class="S10">,</span><span class="S0"> </span><span class="S2">6</span><span class="S10">,</span><span class="S0"> </span><span class="S2">9</span><span class="S10">,</span><span class="S0"> </span><span class="S2">7</span><span class="S10">,</span><span class="S0"> </span><span class="S2">11</span><span class="S10">,</span><span class="S0"> </span><span class="S2">8</span><span class="S10">,</span><span class="S0"> </span><span class="S2">14</span><span class="S10">,</span><span class="S0"> </span><span class="S2">4</span><span class="S10">,</span><span class="S0"> </span><span class="S2">6</span><span class="S10">,</span><span class="S0"> </span><span class="S2">3</span><span class="S10">,</span><span class="S0"> </span><span class="S2">5</span><span class="S10">]</span></p><p> <span class="S5">function</span><span class="S0"> </span>FindLargestRectangle<span class="S10">(</span>a<span class="S10">,</span><span class="S0"> </span>b<span class="S10">):</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">if</span><span class="S0"> </span>a<span class="S0"> </span><span class="S10">==</span><span class="S0"> </span>b<span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span>Heights<span class="S10">[</span>a<span class="S10">]</span><br /> <span class="S0">&#160; &#160;</span>mid<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">(</span>a<span class="S10">+</span>b<span class="S10">)</span><span class="S0"> </span><span class="S10">/</span><span class="S0"> </span><span class="S2">2</span><br /> <span class="S0">&#160; &#160;</span>Result<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>max<span class="S10">(</span>FindLargestRectangle<span class="S10">(</span>a<span class="S10">,</span><span class="S0"> </span>mid<span class="S10">),</span><span class="S0"> </span>FindLargestRectangle<span class="S10">(</span>mid<span class="S10">+</span><span class="S2">1</span><span class="S10">,</span><span class="S0"> </span>b<span class="S10">))</span><br /> <span class="S0">&#160; &#160;</span>Left<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>mid<br /> <span class="S0">&#160; &#160;</span>Right<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>mid<span class="S10">+</span><span class="S2">1</span><br /> <span class="S0">&#160; &#160;</span>CurrentHeight<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>min<span class="S10">(</span>Heights<span class="S10">[</span>Left<span class="S10">],</span><span class="S0"> </span>Heights<span class="S10">[</span>Right<span class="S10">])</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">while</span><span class="S0"> </span>Left<span class="S0"> </span><span class="S10">!=</span><span class="S0"> </span>a<span class="S0"> </span><span class="S5">or</span><span class="S0"> </span>Right<span class="S0"> </span><span class="S10">!=</span><span class="S0"> </span>b<span class="S0"> </span><span class="S5">do</span><span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S0"> </span>Left<span class="S0"> </span><span class="S10">==</span><span class="S0"> </span>a<span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># We cannot go to left anymore</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>Right<span class="S0"> </span><span class="S10">+=</span><span class="S0"> </span><span class="S2">1</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>CurrentHeight<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>min<span class="S10">(</span>CurrentHeight<span class="S10">,</span><span class="S0"> </span>Heights<span class="S10">[</span>Right<span class="S10">])</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">elif</span><span class="S0"> </span>Right<span class="S0"> </span><span class="S10">==</span><span class="S0"> </span>b<span class="S10">:</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># We cannot go to right anymore</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>Left<span class="S0"> </span><span class="S10">-=</span><span class="S0"> </span><span class="S2">1</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>CurrentHeight<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>min<span class="S10">(</span>CurrentHeight<span class="S10">,</span><span class="S0"> </span>Heights<span class="S10">[</span>Left<span class="S10">])</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">elif</span><span class="S0"> </span>Heights<span class="S10">[</span>Left<span class="S10">-</span><span class="S2">1</span><span class="S10">]</span><span class="S0"> </span><span class="S10">&gt;=</span><span class="S0"> </span>CurrentHeight<span class="S10">:</span><span class="S0"> </span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># We can go to Left with CurrentHeight</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>Left<span class="S0"> </span><span class="S10">-=</span><span class="S0"> </span><span class="S2">1</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">elif</span><span class="S0"> </span>Heights<span class="S10">[</span>Right<span class="S10">+</span><span class="S2">1</span><span class="S10">]</span><span class="S0"> </span><span class="S10">&gt;=</span><span class="S0"> </span>CurrentHeight<span class="S10">:</span><span class="S0"> </span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># We can go to right with CurrentHeight</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>Right<span class="S0"> </span><span class="S10">+=</span><span class="S0"> </span><span class="S2">1</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">else</span><span class="S10">:</span><span class="S0"> </span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S1"># Choose the next CurrentHeight</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>CurrentHeight<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>max<span class="S10">(</span>Heights<span class="S10">[</span>Left<span class="S10">-</span><span class="S2">1</span><span class="S10">],</span><span class="S0"> </span>Heights<span class="S10">[</span>Right<span class="S10">+</span><span class="S2">1</span><span class="S10">])</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>Result<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>max<span class="S10">(</span>Result<span class="S10">,</span><span class="S0"> </span><span class="S10">(</span>Right<span class="S0"> </span><span class="S10">-</span><span class="S0"> </span>Left<span class="S0"> </span><span class="S10">+</span><span class="S0"> </span><span class="S2">1</span><span class="S10">)</span><span class="S0"> </span><span class="S10">*</span><span class="S0"> </span>CurrentHeight<span class="S10">)</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">end</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span>Result</p><p> <span class="S5">print</span><span class="S0"> </span>FindLargestRectangle<span class="S10">(</span><span class="S2">0</span><span class="S10">,</span><span class="S0"> </span>len<span class="S10">(</span>Heights<span class="S10">)-</span><span class="S2">1</span><span class="S10">)</span></span> </div><p>رابطه ی بازگشتی زمان اين الگوريتم:</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div dir="ltr" align="left"><span>T(n) = 2*T(n/2) + O(n)</span></div><p>که اگر آن را حل کنيم، بدست می آوريم که پيچيدگی زمانی اين الگوريتم از مرتبه ی ((O(n*log(n می باشد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">در قسمت های بعدی راه های ديگری برای حل اين مساله را بررسی می کنم.</div><div dir="rtl" align="right">&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/109-Barometer-the-Skyscraper.html" rel="alternate" title="Barometer &amp; the Skyscraper" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-27T11:04:00Z</published>
        <updated>2008-11-13T23:19:38Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=109</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=109</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
    
        <id>http://blog.pykello.net/index.php?/archives/109-guid.html</id>
        <title type="html">Barometer &amp; the Skyscraper</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">"توضيح دهيد که چگونه می توان با استفاده از يک فشارسنج ارتفاع يک آسمان خراش اندازه گرفت."<br />سوال بالا يکی از سوالات امتحان فيزيک در دانشگاه کپنهاگ بود.<p>يکی از دانشجويان چنين پاسخ داد: "انتهای فشارسنج را به ريسمانی بلند می بنديم. سپس فشارسنج را از بالا آسمان خراش طوری آويزان می کنيم که سرش به زمين بخورد. ارتفاع ساختمان مورد نظر برابر با طول طناب به اضافه ی طول فشارسنج خواهد بود."</p><p>پاسخ بالا چنان مسخره به نظر می آمد که مصحح بدون تامل دانشجو را مردود اعلام کرد. ولی دانشجو اصرار داشت که پاسخ او کاملا درست است و درخواست تجديد نظر در نمره ی خود کرد. يکی از اساتيد دانشگاه به عنوان قاضی تعيين شد و قرار شد که تصميم نهايي را او بگيرد.</p><p>نظر قاضی اين بود که پاسخ دانشجو در واقع درست است، ولی نشانگر هيچ گونه دانشی نسبت به اصول علم فيزيک نيست. سپس تصميم گرفته شد که دانشجو احضار شود و در طی فرصتی شش دقيقه ای پاسخی شفاهی ارائه دهد که نشانگر حداقل آشنايي او با اصول علم فيزيک باشد.</p><p>دانشجو در پنج دقيقه ی اول ساکت نشسته بود و فکر می کرد. قاضی به او يادآوری کرد که زمان تعيين شده در حال اتمام است. دانشجو گفت که چندين روش به ذهنش رسيده است ولی نمی تواند تصميم گيری کند که کدام يک بهترين می باشد.</p><p>قاضی به او گفت که عجله کند، و دانشجو پاسخ داد: "روش اول اين است که فشارسنج را از بالای آسمان خراش رها کنيم و مدت زمانی که طول می کشد به زمين برسد را اندازه گيری کنيم. ارتفاع ساختمان را می توان با استفاده از اين مدت زمان و فرمولی که روی کاغذ نوشته ام محاسبه کرد."</p><p>دانشجو بلافاصله افزود: "ولی من اين روش را پيشنهاد نمی کنم، چون ممکن است فشارسنج خراب شود!"</p><p>"روش ديگر اين است که اگر خورشيد می تابد، طول فشارسنج را اندازه بگيريم، سپس طول سايه ی فشارسنج را اندازه بگيريم، و آنگاه طول سايه ی ساختمان را اندازه بگيريم. با استفاده از نتايج و يک نسبت هندسی ساده می توان ارتفاع ساختمان را اندازه گيری کرد. رابطه ی اين روش را نيز روی کاغذ نوشته ام."</p><p>"ولی اگر بخواهيم با روشی علمی تر ارتفاع ساختمان را اندازه بگيريم، می توانيم يک ريسمان کوتاه را به انتهای فشارسنج ببنديم و آن را مانند آونگ ابتدا در سطح زمين و سپس در پشت بام أسمان خراش به نوسان درآوريم. سپس ارتفاع ساختمان را با استفاده از تفاضل نيروی گرانش دو سطح بدست آوريم. من رابطه های مربوط به اين روش را که بسيار طولانی و پيچيده می باشند در اين کاغذ نوشته ام."</p><p>"آها! يک روش ديگر که چندان هم بد نيست: اگر آسمان خراش پله ی اضطراری داشته باشد، می توانيم با استفاده از فشارسنج سطح بيرونی آن را علامت گذاری کرده و بالا برويم و سپس با استفاده از تعداد نشان ها و طول فشارسنج ارتفاع ساختمان را بدست بياوريم."</p><p>"ولی اگر شما خيلی سرسختانه دوست داشته باشيد که از خواص مخصوص فشارسنج برای اندازه گيری ارتفاع استفاده کنيد، می توانيد فشار هوا در بالای ساختمان اندازه گيری کند، و سپس فشار هوا در سطح زمين را اندازه گيری کنيد، سپس با استفاده از تفاضل فشارهای حاصل ارتفاع ساختمان را بدست بياوريد."</p><p>"ولی بدون شک بهترين راه اين می باشد که در خانه ی سرايدار آسمان خراش را بزنيم و به او بگوييم که اگر دوست دارد صاحب اين فشارسنج خوشگل بشود، می تواند ارتفاع آسمان خراش را به ما بگويد تا فشارسنج را به او بدهيم!"</p><p>دانشجويي که داستان او را خوانديد، <a href="http://nobelprize.org/nobel_prizes/physics/laureates/1922/bohr-bio.html">نيلس بوهر</a>، تنها دانمارکی که موفق به دریافت جايزه ی نوبل شده است، بود.</p></div><div align="right" dir="rtl"></div><div align="right" dir="rtl">منبع: <a href="http://www.mentors.ca/bohr.html">http://www.mentors.ca/bohr.html</a></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/9-Random-Thoughts.html" rel="alternate" title="Random Thoughts" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-27T09:34:35Z</published>
        <updated>2009-05-11T04:38:43Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=9</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=9</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/9-guid.html</id>
        <title type="html">Random Thoughts</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">سلام دوستان!</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">سال 1385 با خوشی آغاز شد و با خوشی پایان یافت. امیدوارم اتفاقی مشابه در مورد سال 1386 بیافتد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">گفته بودم در تعطیلات سال نو می خواهم یک ویکی الگوریتمی ایجاد کنم. یادم نرفته، ولی:</div><div dir="rtl" align="right">&#160;1. از فضای وب هاستینگم چیز زیادی نمونده و جا برای نصب سیستم ویکی ندارم. <img src="http://pykello.net/blog/wp-content/plugins/Wysi-Wordpress/plugins/emotions/images/smiley-frown.gif" border="0" alt="Frown" title="Frown" /> </div><div dir="rtl" align="right">&#160;2. می خواهم هاستینگم را عوض کنم، چون این یکی انتظارات من را بر آورده نکرد! <img src="http://pykello.net/blog/wp-content/plugins/Wysi-Wordpress/plugins/emotions/images/smiley-undecided.gif" border="0" alt="Undecided" title="Undecided" /></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">ولی، در طی این مدت سعی می کنم چند مساله ی جالب را در وبلاگم توضیح بدهم، باشد که خشنود شوید! منتظر باشید!</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#160;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">یا ایها الکسانی که این وبلاگ را می خوانید، شما را قسم می دهم به کسی که می پرستید:</div><div dir="rtl" align="right">&#160;&#160; - اگر به نظرتان مطلبی را به اندازه ی کافی توضیح نداده ام و مبهم است یا توضیح بیشتری نیاز دارید، comment بگذارید و بگویید!</div><div dir="rtl" align="right">&#160;&#160; - بگویید چه جور مطالبی دوست دارید بنویسم. باور کنید مطالبی را که می نویسم از روی علاقه و لذت می نویسم، و اگر احساس کنم مطالبم برای کسی مفید واقع شده این احساس لذت صد چندان خواهد شد!</div><div dir="rtl" align="right">باشد که رستگار شوم!&#160; <img src="http://pykello.net/blog/wp-content/plugins/Wysi-Wordpress/plugins/emotions/images/smiley-innocent.gif" border="0" alt="Innocent" title="Innocent" /></div><div dir="rtl" align="right">&#160;</div>
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/10-Counting-Connected-Subgraphs-Part-3.html" rel="alternate" title="Counting Connected Subgraphs - Part 3" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-27T09:20:25Z</published>
        <updated>2009-05-11T04:39:12Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=10</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=10</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/10-guid.html</id>
        <title type="html">Counting Connected Subgraphs - Part 3</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">برای مشاهده ی قسمت های پيشين این مطلب به لينکهای زير مراجعه کنيد:</div><div dir="rtl" align="right"><a href="http://pykello.net/blog/?p=48">قسمت اول</a></div><div dir="rtl" align="right"><a href="http://pykello.net/blog/?p=60">قسمت دوم&#160;</a></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">در اين قسمت، ابتدا روش بدست آوردن زيرمجموعه های يک مجموعه که در قسمت قبلی استفاده کرديم را توضيح می دهم و سپس به بررسی پيچيدگی الگوريتم ارائه شده می پردازم.</p><p>همان طور که گفتيم، هر مجموعه را با يک عدد 15 بيتی نمايش می دهيم که اگر بيت i-ام يک باشد يعنی چيز i-ام عضو مجموعه ی مورد نظر است، و گرنه نيست. حال می خواهيم روشی را ارائه کنيم که زير مجموعه بعدی يک مجموعه را که از لحاظ ارزش عددی کمتر از زير مجموعه ی جاری است را پيدا کند.<br />از اين به بعد فقط با نمايش دودوئی اعداد سر و کار داريم.<br />کم کردن يک از يک عدد را در نظر بگيريد. چه اتفاقی می افتد؟ سمت راست ترين 1 تبديل به صفر می شود و تمام صفر های سمت راست آن به 1 تبديل می شوند.<br />مثلا 100 تبديل به 11 می شود و 100110 تبديل به 100101 می شود.<br />حال هنگامی که می خواهيم زير مجموعه ی بعدی يک مجموعه (P) را پيدا کنيم، بايد اتفاقی مشابه بيافتد: سمت راست ترين 1 تبديل به صفر شود و تمام صفر های سمت راست آن که عضو مجموعه ی P هستند تبديل به يک شوند. اگر زير مجموعه ی جاری را منهای يک کنيم، سمت راست ترين 1 تبديل به صفر می شود و تمام صفر های سمت راست آن تبديل به يک می شوند.&#160; چون ما می خواهيم فقط بيت های عضو مجموعه ی P تبديل به يک شوند، حاصل تفريق را با مجموعه ی P &quot;و&quot; منطقی می کنيم. در نتيجه زير مجموعه ی از لحاظ عددی کوچکتر به دست می آيد.</p><p>حال به بررسی پيچيدگی زمانی الگوريتم می پردازيم. </p><p>پيچيدگی زمانی تابع CalculateEdges همان طور که آشکار است از مرتبه ی (O(n^2*2^n می باشد.برای بررسی تابع CountConnectedSubgraphs، جفت V و Y را در نظر بگيريد. پيچيدگی زمانی اين تابع متناظر با تعداد حالت های اين جفت می باشد. اگر بيت های متناظر V و Y را در نظر بگيريم، می فهميم که حالت هايی که ممکن است پيش بيايد عبارت است از: (1 و 0) &ndash; (1 و 1) &ndash; (0 و 0) . حالت (0 و 1) ممکن نيست، چون عضوی که عضو مجموعه ای نيست نمی تواند عضو زيرمجموعه ی آن بشود. پس، تعداد حالت ها <font color="#cc3300">3 به توان n </font>خواهد بود و پيچيدگی زمانی اين تابع از مرتبه ی (O(3^n.</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/11-Counting-Connected-Subgraphs-Part-2.html" rel="alternate" title="Counting Connected Subgraphs - Part 2" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-25T09:36:46Z</published>
        <updated>2009-05-11T04:39:44Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=11</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/11-guid.html</id>
        <title type="html">Counting Connected Subgraphs - Part 2</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"> سلام،<br />در<a href="http://pykello.net/blog/?p=48"> قسمت قبل</a>، به ايده ی اوليه ی مساله ی زير پرداختيم:<br /><font color="#006633">يک گراف ساده ی بدون جهت با حداکثر 15 راس داريم. الگوريتمی پيشنهاد دهيد که تعداد زيرگراف های همبند آن را پيدا کند.</font></p><p>در اين قسمت می خواهيم کمی به جزئيات پياده سازی راه حل ارائه شده برای اين مساله بپردازيم. فرض کنيد تعداد راس های گراف N باشد.</p><p>ابتدا يک pseudo-code برای اين راه حل ارائه می دهيم:<br /> <div dir="ltr" align="left"> <span>function CountConnectedSubgraphs(V, E):<br /> &#160; &#160;Result = 2 ^ |E|<br /> &#160; &#160;for each subset V&#39; of V such that (V&#39; contains V[0]) and (V&#39; != V) do:<br /> &#160; &#160;&#160; &#160;Result -= CountConnectedSubgraphs(V&#39;, E&#39;) * 2 ^ E(V-V&#39;)<br /> &#160; &#160;return Result</span> </div><p>برای اين مساله، فرض می کنيم که گراف را در يک ماتريس مجاورت ذخيره می کنيم:<br /> <div dir="ltr" align="left"> <span><span class="S5">int</span><span class="S0"> </span>graph<span class="S10">[</span><span class="S4">15</span><span class="S10">][</span><span class="S4">15</span><span class="S10">];</span></span> </div><p>برای پياده سازی pseudo-code فوق، نياز داريم که:<br />&#160;1. ساختمان داده ای برای نمايش زير مجموعه ای از راس های گراف داشته باشيم. هر زير مجموعه را با استفاده از يک عدد 15 بيتی که يک يا صفر بودن بيت i-ام آن نشانگر اين است که آيا راس i-ام عضوی از زير مجموعه ی مورد نظر است يا نه.<br />&#160;2. تعداد يال های هر کدام از زيرگراف ها (که با يک زير مجموعه از راس ها مشخص می شوند) را داشته باشيم. اين کار را با يک حلقه ی 2 به توان N تايي انجام می دهيم. هر عضو از آرايه ی نتيجه نشانگر تعداد يال های زير گراف مربوطه می باشد:<br /> <div dir="ltr" align="left"> <span><span class="S5">int</span><span class="S0"> </span>E<span class="S10">[</span><span class="S4">1</span><span class="S10">&lt;&lt;</span><span class="S4">15</span><span class="S10">];</span></p><p> <span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>i<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>i<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span><span class="S10">(</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>N<span class="S10">);</span><span class="S0"> </span>i<span class="S10">++)</span><br /> <span class="S10">{</span><br /> <span class="S0">&#160; &#160;</span>E<span class="S10">[</span>i<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>j<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>j<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span>N<span class="S10">;</span><span class="S0"> </span>j<span class="S10">++)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>k<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>k<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span>N<span class="S10">;</span><span class="S0"> </span>k<span class="S10">++)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S2">// Check if j-th and k-th vertices are member of i</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S10">(((</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>j<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>i<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;&amp;</span><span class="S0"> </span><span class="S10">((</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>k<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>i<span class="S10">))</span><span class="S0"> </span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S2">// Check if there is an edge from j to k</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S10">(</span>graph<span class="S10">[</span>j<span class="S10">][</span>k<span class="S10">])</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span>E<span class="S10">[</span>i<span class="S10">]</span><span class="S0"> </span><span class="S10">+=</span><span class="S0"> </span><span class="S4">1</span><span class="S10">;</span><br /> <span class="S10">}</span></span> </div><p>&#160;3. روشی نياز داريم که توسط آن بتوانيم زيرمجموعه های يک مجموعه را بدست بياوريم. در واقع، چون هر مجموعه را با يک عدد 15 بيتی نمايش می دهيم، می خواهيم اعدادی را به دست بياوريم که يک های آنها زير مجموعه ای از عدد متناظر با مجموعه ی مورد نظر باشند. فرض کنيد مجموعه ی مورد نظر را با X نمايش دهيم. می خواهيم اعداد Y ای را بدست بياوريم که X &amp; Y برابر با Y باشد. (&amp; = bitwise and). ساده ترين روش برای انجام دادن اين کار:<br /> <div dir="ltr" align="left"> <span><span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>i<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>i<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span><span class="S10">(</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>N<span class="S10">);</span><span class="S0"> </span>i<span class="S10">++)</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">if</span><span class="S10">((</span>X<span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>i<span class="S10">)</span><span class="S0"> </span><span class="S10">==</span><span class="S0"> </span>i<span class="S10">)</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">{</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S2">// do calculations here</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">}</span></span> </div><p>ولی روش بهتری برای انجام دادن عمل بالا وجود دارد: <br /> <div dir="ltr" align="left"> <span><span class="S5">int</span><span class="S0"> </span>Y<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>X<span class="S10">;</span><br /> <span class="S5">do</span><span class="S10">{</span><br /> <span class="S0">&#160; &#160;</span><span class="S2">// do calculations here</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">&#8230;</span><br /> <span class="S0">&#160; &#160;</span><span class="S2">// Move to next subset</span><br /> <span class="S0">&#160; &#160;</span>Y<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">(</span>Y<span class="S0"> </span><span class="S10">-</span><span class="S0"> </span><span class="S4">1</span><span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>X<span class="S10">;</span><br /> <span class="S10">}</span><span class="S5">while</span><span class="S10">(</span>Y<span class="S10">);</span></span> </div><p>در قسمت بعدی به طرز کار اين روش و چند نکته ی جالب ديگر خواهم پرداخت.</p><p>4. اگر راه حل بالا را به صورت بازگشتی ساده بنويسيم، چون حالات تکراری زيادی بوجود می آيد، زمان اجرای برنامه خيلی زياد خواهد بود. برای جلوگيری از محاسبه ی دوباره ی حالات تکراری، از يک آرايه استفاده می کنيم که مقدار اوليه ی همه ی عناصر آن 1- می باشد و پس از محاسبه ی جواب برای هر زير گراف، نتيجه را در آن قرار می دهيم تا در دفعات بعدی از آن استفاده کنيم:<br /> <div dir="ltr" align="left"> <span><span class="S5">int</span><span class="S0"> </span>arr<span class="S10">[</span><span class="S4">1</span><span class="S10">&lt;&lt;</span><span class="S4">15</span><span class="S10">];</span></span> </div><p>و در نهايت، از کنار هم قرار دادن قطعات بالا، سورس کد زير به دست می آيد:<br /> <div dir="ltr" align="left"> <span><br /> <span class="S5">int</span><span class="S0"> </span>graph<span class="S10">[</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span><span class="S4">15</span><span class="S10">];</span><br /> <span class="S5">int</span><span class="S0"> </span>arr<span class="S10">[</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span><span class="S4">15</span><span class="S10">];</span><br /> <span class="S5">int</span><span class="S0"> </span>N<span class="S10">;</span></p><p> <span class="S5">void</span><span class="S0"> </span>CalculateEdges<span class="S10">()</span><br /> <span class="S10">{</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>i<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>i<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span><span class="S10">(</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>N<span class="S10">);</span><span class="S0"> </span>i<span class="S10">++)</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">{</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>E<span class="S10">[</span>i<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>j<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>j<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span>N<span class="S10">;</span><span class="S0"> </span>j<span class="S10">++)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S5">for</span><span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>k<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><span class="S0"> </span>k<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span>N<span class="S10">;</span><span class="S0"> </span>k<span class="S10">++)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S2">// Check if j-th and k-th vertices are member of i</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S10">(((</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>j<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>i<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;&amp;</span><span class="S0"> </span><span class="S10">((</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>k<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>i<span class="S10">))</span><span class="S0"> </span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S2">// Check if there is an edge from j to k</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S10">(</span>graph<span class="S10">[</span>j<span class="S10">][</span>k<span class="S10">])</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;</span>E<span class="S10">[</span>i<span class="S10">]</span><span class="S0"> </span><span class="S10">+=</span><span class="S0"> </span><span class="S4">1</span><span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">}</span><br /> <span class="S10">}</span></p><p> <span class="S5">int</span><span class="S0"> </span>CountConnectedSubgraphs<span class="S10">(</span><span class="S5">int</span><span class="S0"> </span>V<span class="S10">)</span><br /> <span class="S10">{</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">if</span><span class="S10">(</span>arr<span class="S10">[</span>V<span class="S10">]</span><span class="S0"> </span><span class="S10">!=</span><span class="S0"> </span><span class="S10">-</span><span class="S4">1</span><span class="S10">)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span>arr<span class="S10">[</span>V<span class="S10">];</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">int</span><span class="S0"> </span>FirstBit<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">1</span><span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">while</span><span class="S10">((</span>FirstBit<span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>V<span class="S10">)</span><span class="S0"> </span><span class="S10">==</span><span class="S0"> </span><span class="S4">0</span><span class="S10">)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>FirstBit<span class="S0"> </span><span class="S10">*=</span><span class="S0"> </span><span class="S4">2</span><span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">int</span><span class="S0"> </span>Result<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">(</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>E<span class="S10">[</span>V<span class="S10">]);</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">int</span><span class="S0"> </span>Y<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>V<span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">do</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">{</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">if</span><span class="S10">((</span>Y<span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>FirstBit<span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;&amp;</span><span class="S0"> </span>Y<span class="S0"> </span><span class="S10">!=</span><span class="S0"> </span>V<span class="S10">)</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S10">{</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span><span class="S5">int</span><span class="S0"> </span>X<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">~</span>Y<span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>V<span class="S10">;</span><span class="S0"> </span><span class="S2">// X = V - Y</span><br /> <span class="S0">&#160; &#160;&#160; &#160;&#160; &#160;</span>Result<span class="S0"> </span><span class="S10">-=</span><span class="S0"> </span>CountConnectedSubgraphs<span class="S10">(</span>Y<span class="S10">)</span><span class="S0"> </span><span class="S10">*</span><span class="S0"> </span><span class="S10">(</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>E<span class="S10">[</span>X<span class="S10">]);</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S10">}</span><br /> <span class="S0">&#160; &#160;&#160; &#160;</span>Y<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">(</span>Y<span class="S0"> </span><span class="S10">-</span><span class="S0"> </span><span class="S4">1</span><span class="S10">)</span><span class="S0"> </span><span class="S10">&amp;</span><span class="S0"> </span>V<span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">}</span><span class="S5">while</span><span class="S10">(</span>Y<span class="S10">);</span><br /> <span class="S0">&#160; &#160;</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span>arr<span class="S10">[</span>V<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>Result<span class="S10">;</span><br /> <span class="S10">}</span></p><p> <span class="S5">int</span><span class="S0"> </span>main<span class="S10">()</span><br /> <span class="S10">{</span><br /> <span class="S0">&#160; &#160;</span><span class="S2">// Read N and Graph here</span><br /> <span class="S0">&#160; &#160;</span><span class="S10">&#8230;</span><br /> <span class="S0">&#160; &#160;</span>memset<span class="S10">(</span>arr<span class="S10">,</span><span class="S0"> </span><span class="S10">-</span><span class="S4">1</span><span class="S10">,</span><span class="S0"> </span><span class="S5">sizeof</span><span class="S0"> </span>arr<span class="S10">);</span><br /> <span class="S0">&#160; &#160;</span>CalculateEdges<span class="S10">();</span><br /> <span class="S0">&#160; &#160;</span>cout<span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>CountConnectedSubgraphs<span class="S10">((</span><span class="S4">1</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>N<span class="S10">)</span><span class="S0"> </span><span class="S10">-</span><span class="S0"> </span><span class="S4">1</span><span class="S10">)</span><span class="S0"> </span><span class="S10">&lt;&lt;</span><span class="S0"> </span>endl<span class="S10">;</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><br /> <span class="S10">}</span><br /> </span> </div></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/15-Dilemma!.html" rel="alternate" title="ِDilemma!" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-18T04:44:13Z</published>
        <updated>2009-05-11T04:39:47Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=15</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/15-guid.html</id>
        <title type="html">ِDilemma!</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><a href="http://www.topcoder.com/tc?module=MemberProfile&amp;cr=278460">آینده نگر</a> باشیم. [<a href="http://forums.topcoder.com/?module=Thread&amp;threadID=569157&amp;start=0">+</a>] </div><div dir="rtl" align="right">&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/111-At-Tokyo-for-ICPC-Finals-Part-6.html" rel="alternate" title="At Tokyo for ICPC Finals - Part 6" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-17T08:24:00Z</published>
        <updated>2008-11-13T23:22:15Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=111</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=111</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/111-guid.html</id>
        <title type="html">At Tokyo for ICPC Finals - Part 6</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">مراسم Celebration:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">مراسم طبل زنی ژاپنی جالب بود:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo19.jpg" /></div><p> </p></div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">یکی بود که خفن جیب و ساعت و … می زد. حتی پیراهن یکی را به صورت خفن و یکباره ای در آورد. خیلی خفن بود:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo20.jpg" /></div><p> </p></div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">بچه های تیم Shanghai JiaoTong با حال بودند:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo18.jpg" /></div><p> </p></div><br />
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/112-At-Tokyo-for-ICPC-Finals-Part-5.html" rel="alternate" title="At Tokyo for ICPC Finals - Part 5" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-17T08:23:00Z</published>
        <updated>2008-11-14T00:10:40Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=112</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/112-guid.html</id>
        <title type="html">At Tokyo for ICPC Finals - Part 5</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">دیروز رفتیم <a href="http://www.tokyodisneyresort.co.jp/tdl/index_e.html">Tokyo Disney Land</a>:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo14.jpg" /></div><p> </p></div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">چند تا از شخصیت های کارتونی را دیدیم:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo17.jpg" /></div><p> </p></div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo15.jpg" /></div><p> </p></div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">بچه های ژاپنی بامزه اند:</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"><div style="text-align: center;"><img border="0" src="images/tokyo16.jpg" /></div><p> </p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/113-At-Tokyo-for-ICPC-Finals-Part-4.html" rel="alternate" title="At Tokyo for ICPC Finals - Part 4" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-17T08:21:00Z</published>
        <updated>2008-11-13T23:30:02Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=113</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=113</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/113-guid.html</id>
        <title type="html">At Tokyo for ICPC Finals - Part 4</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">بدعمل کردیم زیرا: اگر سر سوال G بد عمل نمی کردیم و یک ساعته تمامش میکردیم، می توانستیم حداقل یکی از دو سوال F که سوال متوسط به پائینی بود وسوال D که نیاز به دانستن<a href="http://en.wikipedia.org/wiki/Pick%27s_theorem"> قضیه ی Pick </a>داشت و ما دانش کافی برای حل آن را داشتیم را حل کنیم و وضع مان از این خیلی بهتر باشد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">می توان راضی بود زیرا: در 20 دقیقه ی آخر دو سوال گرفتیم و از وضعیت افتضاح به وضعیت متوسط رسیدیم. و چون یک سال دیگر وقت داریم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">در قدم اول برای سال بعد، فعلا تصمیم دارمدر تعطیلات سال نو topcode rating ام را (در سه مسابقه) به بالای 2200(فعلا 2040 هستم) برسانم.&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/114-At-Tokyo-for-ICPC-Finals-Part-3.html" rel="alternate" title="At Tokyo for ICPC Finals - Part 3" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-16T08:16:00Z</published>
        <updated>2008-11-13T23:55:50Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=114</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=114</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/114-guid.html</id>
        <title type="html">At Tokyo for ICPC Finals - Part 3</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"><font color="#0033cc">و بالاخره روز مسابقه:</font></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">قبل از مسابقه همه خندان بودیم. (من عینکیه هستم): </div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo10.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">صبح زود بیدار شدیم، صبحانه خوردیم، و آمادهشدیم که به محل مسابقه وارد شویم. رضا badge اش را درست نبسته بود، برایهمین Bill Poucher مجبورش کرد چند حرکت شنا انجام بدهد و کلی خندیدیم. </div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">و بالاخره مسابقه آغاز شد:</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo13.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009966">دقیقه ی 1:</font>حسین سوال A، من سوال B، و رضا سوال C را خواند. سوال A آسان بود، ولی منهنوز سوال B را درست نفهمیده بودم. حسین سوال A را به ما توضیح داد وتصمیم گرفتیم که به عنوان اولین سوال، سوال A را بنویسیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009966">دقیقه ی 20: </font>تیم های زیادی سوال B را گرفته اند، رضا سوال B را دوباره خوانده و برای من توضیح داده. هنوز هیچ ایده ای نداریم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 50:</font>حسین کد سوال A را تمام کرد و پس از کمی تست Submit می کنیم. هنوز هیچایده ای برای سوال B نداریم. سوال B را برای حسین نیز توضیح می دهیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 51: </font>جواب Submit مون Wrong Answer شد. کمی کد را می خوانیم و به مشکل پی می بریم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 67:</font> سوال A را دوباره Submit می کنیم. این دفعه جواب Submit مون Yes شد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 70: </font>هر سه روی B فکر می کنیم. ایده های زیادی مطرح می شود ولی چون مطمئن نیستیم بیشتر فکر می کنیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 90:</font> بالاخره بر سر ایده ی سوال B توافق می کنیم. شروع می کنم به نوشتن کدش.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 100:</font>سوال B را Submit می کنیم و جوابش Yes می شود. حسین سوال G را می خواند وتوضیح می دهد. به نظر آسان می آید. بر سر پیاده سازی اش توافق می کنیم وشروع می کنم به پیاده سازی جواب.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 130:</font> اولین Wrong Answer برای سوال G را می گیریم. کد را می خوانیم و دو باگ در می آوریم، درستش می کنیم و دوباره Submit می کنیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 145: </font>دومینWrong Answer را می گیریم. کد را n بار می خوانیم. هیچ مشکلی پیدا نمیکنیم … صورت سوال را چند بار می خوانیم …&#160; یک قسمتش برای مان مبهماست. با یک فرض دیگر یک کد دیگر می نویسیم و Submit می کنیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 160:</font>سومین Wrong Answer را می گیریم. رضا صورت سوال را دوباره می خواند و سریک جمله گیر می دهد. بالاخره نظر رضا را قبول می کنیم و آن برداشت یک کددیگر می زنیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 200:</font> این دفعه Runtime Error می گیریم. نمی دانیم چه کار کنیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 243: </font>من شروع می کنم به زدن کد سوال C. بابک به ساز بسیار نگران به ما نگاه می کند.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 260:</font> حسین صورت سوال را دوباره می خواند، یک نکته ی دیگر پیدا می کند … شروع می کند و درست کردن کد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 280: </font>بالاخره سوال G را Submit می کنیم و Yes می گیریم. من بقیه ی کد C را می زنم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 290:</font> سوال C را Submit می کنیم و Wrong Answer می گیریم. رضا یک حالت خاص را توضیح می دهد و من شروع می کنم به درست کردن کد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 296:</font> سوال C را Submit می کنیم و Yes می گیریم. بابک به ساز از حالت نگرانی شدید به وضع عادی بر می گردد. 4 دقیقه ی آخر را حرف می زنیم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009999">دقیقه ی 300:</font> مسابقه تمام شد. </div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo11.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">و بالاخره در Awards Ceremony معلوم می شود که تیم دانشگاه Warsaw قهرمان امسال شده.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo12.jpg" border="0"></div><p>&#160;</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/115-At-Tokyo-for-ICPC-Finals-Part-2.html" rel="alternate" title="At Tokyo for ICPC Finals - Part 2" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-14T08:15:00Z</published>
        <updated>2008-11-13T23:24:57Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=115</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=115</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/115-guid.html</id>
        <title type="html">At Tokyo for ICPC Finals - Part 2</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">روز Practice Contest:</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo8.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">و Team Photo:</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo9.jpg" border="0"></div><p>&#160;</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/116-At-Tokyo-for-ICPC-Finals-Part-1.html" rel="alternate" title="At Tokyo for ICPC Finals - Part 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-13T08:11:00Z</published>
        <updated>2008-11-13T23:25:02Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=116</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=116</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/1-ACM-ICPC" label="ACM ICPC" term="ACM ICPC" />
    
        <id>http://blog.pykello.net/index.php?/archives/116-guid.html</id>
        <title type="html">At Tokyo for ICPC Finals - Part 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">سلام دوستان،</div><div dir="rtl" align="right">توکیو خوش می گذره. جاتون خالی.&#160;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo1.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">امروز تو خیابان های<a href="http://www.jtcent.com/disneysea/"> دیزنی سی</a> توکیو <a href="http://en.wikipedia.org/wiki/Goofy">گوفی</a> را دیدیم.&#160;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo2.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">با بچه ها دو سه تا عکس گرفتیم.&#160;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo3.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">دیزنی سی قشنگ بود. حال کردم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo4.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">یکی از هیجان انگیزترین مراسم عمرم را دیدم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo5.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">توکیو مسجد هم داشت، ولی مال<a href="http://www.sinbad-themovie.com/"> افسانه های سندباد</a> بود.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo6.jpg" border="0"></div><p>&#160;</p></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">بازی <a href="http://en.wikipedia.org/wiki/Dance_Dance_Revolution">Dance Dance Revolution</a> خیلی هیجان انگیز بود.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><div style="text-align: center;"><img src="images/tokyo7.jpg" border="0"></div><p>&#160;</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/23-Counting-Connected-Subgraphs-Part-1.html" rel="alternate" title="Counting Connected Subgraphs - Part 1" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-03-07T16:21:58Z</published>
        <updated>2008-11-13T23:25:08Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=23</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/23-guid.html</id>
        <title type="html">Counting Connected Subgraphs - Part 1</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>سلام،به این مساله توجه کنید: یک گراف ساده ی بدون جهت با حداکثر 15 راس داریم. الگوریتمی پیشنهاد بدهید که تعداد زیر گراف های همبند آن را پیدا کند.&#160;بیشتر افراد، از جمله من، وقتی عدد 15 را می بینند، سعی می کنند مساله را با استفاده از برنامه سازی پویا (Dynamic Programming) مدل سازی کنند [...]<div dir="rtl" align="right">سلام،</div><div dir="rtl" align="right">به این مساله توجه کنید: <font color="#006600">یک گراف ساده ی بدون جهت با حداکثر 15 راس داریم. الگوریتمی پیشنهاد بدهید که تعداد <a href="http://mathworld.wolfram.com/Subgraph.html">زیر گراف</a> های همبند آن را پیدا کند.</font></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">بیشتر افراد، از جمله من، وقتی عدد 15 را می بینند، سعی می کنند مساله را با استفاده از <a href="http://en.wikipedia.org/wiki/Dynamic_programming">برنامه سازی پویا (Dynamic Programming)</a> مدل سازی کنند و رابطه ای بازگشتی برای پیدا کردن جواب مساله برای مجموعه راس های S را مستقیما با استفاده از حل زیر مساله های کوچکتر برای زیر مجموعه های مجموعه ی S پیدا کنند. که احتمالا به جواب هم نمی رسند.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">ولی یک حل کننده ی مساله ی خوب زیاد به یک راه حل گیر نمی دهد و سعی می کند راه های دیگری را نیز امتحان کند.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">یکی از کارهای خوبی که می توان هنگام حل کردن مساله انجام داد این است که تعیین کرد که با داشتن چه چیز هایی می توانیم جواب مساله را پیدا کنیم. مثلا در این مساله می توان از رابطه ی تعداد <font color="#0033cc">زیر گراف های همبند + تعداد زیر گراف های ناهمبند = تعداد کل زیرگراف ها</font> استفاده کرد و برای پیدا کردن جواب مساله به دنبال پیدا کردن تعداد کل زیرگراف ها و تعداد زیرگراف های ناهمبند بود:</div><div dir="rtl" align="right">&#160;1. تعداد کل زیر گراف ها <font color="#0033cc">2 به توان |E|</font><span>&#160;</span>  می باشد که در آن |E| تعداد یال ها ی گراف می باشد. این قسمت از مساله که یک مساله شمارش ساده بود.</div><div dir="rtl" align="right">&#160;2. تعداد زیر گراف های ناهمبند: یک زیر گراف ناهمبند را در نظر بگیرید. در این زیر گراف تعدادی از راس ها با راس اول مولفه ای همبند تشکیل می دهند و بقیه ی راس ها جدا از این مولفه می باشد. توجه کنید که مجموعه ی راس های جدا از این مولفه نباید تهی باشد. بقیه ی راس ها می توانند هر گونه گرافی را بسازند. </div><div dir="rtl" align="right">&#160;پس برای پیدا کردن تعداد زیرگراف های ناهمبند یک مجموعه راس S کافی است تمام زیر مجموعه های &#39;S ای از این مجموعه را که S مخالف &#39;S باشد و &#39;S شامل اولین راس S باشد را در نظر بگیریم و <font color="#0033cc">تعداد زیر مجموعه های همبند گراف &#39;S</font> ضرب در<font color="#0033cc"> 2 به توان تعداد یال های گراف با مجموعه راس &#39;S-S</font> را به جوابمان اضافه کنیم. پس این قسمت را نیز می توان با استفاده از رابطه ای بازگشتی و برنامه سازی پویا حل کرد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">در قسمت بعدی به چند نکته ی پیاده سازی مفید در پیاده سازی این مساله اشاره خواهم کرد.&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/25-Undo-Closed-Tab-in-Firefox-2.0.html" rel="alternate" title="Undo Closed Tab in Firefox 2.0" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-02-13T16:37:49Z</published>
        <updated>2009-05-11T04:40:33Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=25</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=25</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/25-guid.html</id>
        <title type="html">Undo Closed Tab in Firefox 2.0</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">با استفاده از Ctrl+Shift+T</div><div dir="rtl" align="right">&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/26-Dijkstra-with-STL-priority_queue.html" rel="alternate" title="Dijkstra with STL priority_queue" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-02-11T09:00:12Z</published>
        <updated>2009-05-11T04:41:06Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=26</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/26-guid.html</id>
        <title type="html">Dijkstra with STL priority_queue</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="ltr" align="left">
<p>Some days ago, I was trying to solve a problem, I used so called technique &quot;<a href="http://www.proj-mission.org/EE367/MinCost+PFS.doc">Priority First Search</a>&quot; (PFS). With not much thought, I realized that &quot;PFS with marking visited states&quot; isSomehowEqualTo &quot;<a href="http://en.wikipedia.org/wiki/Dijkstra&#39;s_algorithm">Dijkstra&#39;s Shortest Path Algorithm</a>&quot;.&#160;</p><p>I used to implement Dijkstra using <a href="http://www.sgi.com/tech/stl/">STL </a><a href="http://www.sgi.com/tech/stl/set.html">set</a>, but I realized that I can use <a href="http://www.sgi.com/tech/stl/priority_queue.html">priority_queue</a> instead, and with some analysis, I realized that the <a href="http://en.wikipedia.org/wiki/Big_O_notation">time complexity</a> remains O(e*<a href="http://pykello.net/blog/wp-admin/en.wikipedia.org/wiki/Logarithm">log</a>(v)) (Where &quot;v&quot; is number of <a href="http://mathworld.wolfram.com/GraphVertex.html">vertices </a>and &quot;e&quot; is number of <a href="http://mathworld.wolfram.com/GraphEdge.html">edges </a>of <a href="http://en.wikipedia.org/wiki/Graph_theory">graph</a>). The <a href="http://en.wikipedia.org/wiki/Pseudocode">pseduocode </a>for this would be something like this:</p><p><span><span class="S5">int</span><span class="S0"> </span>Distance<span class="S10">[</span>N<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">{</span>inf<span class="S10">}</span><span class="S0"> </span><span class="S10">*</span><span class="S0"> </span>N<span class="S10">;</span><br />  <span class="S5">bool</span><span class="S0"> </span>Visited<span class="S10">[</span>N<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S10">{</span><span class="S5">false</span><span class="S10">}</span><span class="S0"> </span><span class="S10">*</span><span class="S0"> </span>N<span class="S10">;</span><br />  priority_queue<span class="S10">&lt;</span>pair<span class="S10">&gt;</span><span class="S0"> </span>Q<span class="S10">;</span><br /> Distance<span class="S10">[</span>source<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S4">0</span><span class="S10">;</span><br /> Q<span class="S10">.</span>push<span class="S10">([</span><span class="S4">0</span><span class="S10">,</span><span class="S0"> </span>source<span class="S10">]);</span></p><p> <span class="S5">while</span><span class="S10">(!</span>Q<span class="S10">.</span>empty<span class="S10">()):</span><br /> <span class="S0">&#160;&#160;&#160;</span>P<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>Q<span class="S10">.</span>top<span class="S10">();</span><br />  <span class="S0">&#160;&#160;&#160;</span>Q<span class="S10">.</span>pop<span class="S10">();</span><br /> <span class="S0">&#160;&#160;&#160;</span>u<span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>P<span class="S10">[</span><span class="S4">1</span><span class="S10">];</span><br /> <span class="S0">&#160; &#160;</span><span class="S5">if</span><span class="S10">(</span>u<span class="S0"> </span><span class="S10">==</span><span class="S0"> </span>target<span class="S10">)</span><br />  <span class="S0">&#160; &#160;&#160; &#160;</span><span class="S5">return</span><span class="S0"> </span><span class="S10">-</span>P<span class="S10">[</span><span class="S4">0</span><span class="S10">];</span><br /> <span class="S0">&#160;&#160;&#160;</span><span class="S5">if</span><span class="S10">(</span>Visited<span class="S10">[</span>u<span class="S10">]</span><span class="S0"> </span><span class="S10">==</span><span class="S0"> </span><span class="S5">true</span><span class="S10">)</span><br />  <span class="S0">&#160;&#160;&#160;&#160;&#160;&#160;</span><span class="S5">continue</span><span class="S10">;</span><br /> <span class="S0">&#160;&#160;&#160;</span>Visited<span class="S10">[</span>u<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span><span class="S5">true</span><span class="S10">;</span><br /> <span class="S0">&#160;&#160;&#160;</span><span class="S5">for</span><span class="S0"> </span><span class="S10">(</span>u<span class="S10">,</span>v<span class="S10">,</span>weight<span class="S10">)</span><span class="S0"> </span>in<span class="S0"> </span>edges<span class="S10">:</span><br />  <span class="S0">&#160;&#160;&#160;&#160;&#160;&#160;</span><span class="S5">if</span><span class="S10">(</span>Distance<span class="S10">[</span>u<span class="S10">]</span><span class="S0"> </span><span class="S10">+</span><span class="S0"> </span>weight<span class="S0"> </span><span class="S10">&lt;</span><span class="S0"> </span>Distance<span class="S10">[</span>v<span class="S10">]):</span><br />  <span class="S0">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span>Q<span class="S10">.</span>push<span class="S10">([-(</span>Distance<span class="S10">[</span>u<span class="S10">]</span><span class="S0"> </span><span class="S10">+</span><span class="S0"> </span>weight<span class="S10">),</span><span class="S0"> </span>v<span class="S10">]);</span><br />  <span class="S0">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span>Distance<span class="S10">[</span>v<span class="S10">]</span><span class="S0"> </span><span class="S10">=</span><span class="S0"> </span>Distance<span class="S10">[</span>u<span class="S10">]</span><span class="S0"> </span><span class="S10">+</span><span class="S0"> </span>weight<span class="S10">;</span><br />  </span><p>&#160;</p><p>The time complexity analysis: We will have at most &quot;e&quot; pushes (Since every vertex is visited at most once) in the Q, then we will have at most &quot;e&quot; pushes in the Q. this will lead to O(e * log(e)) time complexity which is equal to O(e * log(v)) (Since e &lt;= v^2 and log(v^2) = 2*log(v)). </p><p>Of course some improvements can be made.</p><p>With some experiments, I realized that this method is faster than implementing Dijkstra&#39;s algorithm using STL set in most cases.&#160;</p><p>To practice this method, try to solve <a href="http://acm.uva.es/p/v109/10986.html">UVA #10986</a> .</p>
</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/121-I-Fear.html" rel="alternate" title="I Fear" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-02-11T07:50:00Z</published>
        <updated>2008-11-13T23:28:40Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=121</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=121</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/121-guid.html</id>
        <title type="html">I Fear</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>
<div dir="rtl" align="right"><font color="#009900">از دفترچه خاطرات سريوژا در 20 دسامبر 2006:</font></div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">« می ترسم … می ترسم به او نزديک تر شوم …می ترسم تلاش کنم او را بیشتر بشناسم … می ترسم از آنکه تقدسش را در ذهنمن از دست بدهد … می ترسم همه ی احساس های شیرین یاد او را از دست بدهم …می ترسم … »&#160;</div>
</p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/124-Beauty-of-Numbers.html" rel="alternate" title="Beauty of Numbers" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-01-22T07:42:00Z</published>
        <updated>2008-11-13T23:25:55Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=124</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=124</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
            <category scheme="http://blog.pykello.net/index.php?/categories/6-Mathematics" label="Mathematics" term="Mathematics" />
    
        <id>http://blog.pykello.net/index.php?/archives/124-guid.html</id>
        <title type="html">Beauty of Numbers</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><table border="0"><tbody><tr><td><img border="0" align="left" src="images/erdos.jpg" alt="Paul Erdos" /><div align="justify" dir="rtl" style="padding: 10px;">«چرا اعداد زيباهستند؟ به آن می ماند که بپرسيد چرا سمفونی نهم بتهون زيباست … اگر نمیتوانيد زيبايی اعداد را ببنيد، کسی نمی تواند علت زيبايی آن ها را به شمابگويد … من می دانم که اعداد زيبا هستند. اگر آن ها زيبا نيستند، پس هيچچيز زيبا نيست …» </div><div align="left" dir="rtl"><a href="http://en.wikipedia.org/wiki/Paul_Erd%C5%91s"> پال اردوس</a></div></td></tr></tbody></table></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/125-Holidays.html" rel="alternate" title="Holidays" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-01-12T07:41:00Z</published>
        <updated>2008-11-13T23:25:59Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=125</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/125-guid.html</id>
        <title type="html">Holidays</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right">فرداامتحانات پایان ترم شروع می شود، و من می توانم کمی استراحت کنم، کتاب(غیر درسی) بخوانم، چند تا فیلم ببینم، با هم اتاقی ها بیشتر صحبت کنم، …</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">—————————&#160;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">&#160;انسان موجودی است پر از رازهایپیچیده، و غیر قابل شناسایی … نمی دانم چطور می شود در باره ی این موجودبا اطمینان حرف زد و درباره ی او تنها با یک نگاه و چند شنیده قضاوت کرد.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">—————————</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right"><font color="#009900">از دفترچه خاطرات سريوژا در روز 6 ژانويه 2007:</font></div><div dir="rtl" align="right">" … نیکالای بهترین دوست من بود، همیشه بامن خوب بود، دوستش می داشتم. مدتی رفتارش با من بد شد، حرف هایش دل من رامی آزرد. گمان کردم که ديگر همه چیز تمام شده است، … گذشته را فراموش کردهبودم، فراموش کرده بودم که چند سال بهترین مونس تنهایی های من بود، … کمیفکر کردم، گذشته را به ياد آوردم، و حدث زدم که احتمالا مشکلی براینیکالای پیش آمده است. به او محبت کردم، از مشکلاتش پرسیدم، او لبخند زد،و من شاد شدم. دوستت دارم نیکالای."</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">—————————</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">فردا امتحانات شروع می شود، و احتمالا برای مدتی چیزی در این وبلاگ ننویسم.</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">—————————</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">احتمالا در تعطیلات اول سال بعد یک ویکی الگوریتمی درست کنم، چنان ویکی ای که تا به حال نظیرش را ندیده باشید! منتظر باشید! </div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="right">&#160;—————————</div><div dir="rtl" align="right">&#160;</div><div dir="ltr" align="left"><font color="#006699">Logic will get you from A to B. Imagination will take you everywhere!</font>"Albert Einstein"</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/126-Life.html" rel="alternate" title="Life" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-01-09T11:21:00Z</published>
        <updated>2008-11-13T23:26:12Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=126</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=126</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/126-guid.html</id>
        <title type="html">Life</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">ترنس تائو تنها 13 سال داشت که برنده ی مدال طلا در المپياد رياضی جهانی شد. او درجه ی PHD خود را در 1996 از پرينستون گرفته و هم اکنون استاد تمام دانشگاه کاليفرنيا در لس آنجلس است ... کارهای او در موضوعاتی نظير آناليز هارمونيک، معادلات ديفرانسيل با مشتق های جزئی غير خطی، اثر داشته و مدال فيلدز را برای خدماتش در اين زمينه ها دريافت کرده.<p>... و اما هادی ... مهم ترين کاری که در دوران قبل از دانشگاه خود کرد اين بود که در امتحان سمپاد قبول شد و ديگر هيچ ... او مدال المپياد ندارد، هيچ اختراعی نکرده، هيچ وقت (حتی در ابتدايي) معدلش خوب نبوده، کتاب زياد دارد ولی اکثر آن ها را نخونده، از اونهايي هم که خونده هيچی يادش نيست، و همين.<br />اما ...<br />اما همچنان کسانی هستند که هادی برای آن ها بسيار مهم تر، با ارزش تر، و دوست داشتنی تر از ترنس تائو می باشد. برای آن ها هيچ مهم نيست که هادی برنده ی مدال های کشوری و جهانی نيست، معدلش خوب نيست، يا اينکه يک مساله "بيشترين جريان" ساده را نمی تواند درک کند. برای آن ها مهم نيست که هادی در يک مسابقه ی برنامه نويسی 138 ام می شود و اول نمی شود، ...<br />هادی زندگی می کند؛ همواره می داند که هميشه کسانی هستند که دوستش دارند و به او اميد دارند. او می تواند به خيلی ها کمک کند، و آن ها را به زندگی بهتری اميدوار کند؛ آن ها به هادی محبت کنند، دل او را تسخير کنند، و او را به زندگی اميدوارتر کنند. هادی عاشق آن ها شود، بی منت به آن ها کمک کند، به حرف های آن ها گوش بدهد، به خاطر آن ها غمگين شود، اشک بريزد؛ به خاطر آن ها خوشحال باشد، به آن ها شادی هديه کند ...</p><p>همين. با تمام غم های ممکن، زندگی زيباست!</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/127-Hinfunchip.html" rel="alternate" title="Hinfunchip" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-01-07T07:40:00Z</published>
        <updated>2008-11-13T23:26:16Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=127</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=127</wfw:commentRss>
    
    
        <id>http://blog.pykello.net/index.php?/archives/127-guid.html</id>
        <title type="html">Hinfunchip</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"> </div><div align="right" dir="rtl">زندگی سخت شده است …</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">—————–</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">هر روز حدودا 15 دقیقه به آزادی مطلق می رسم، و احساس خوشبختی می کنم … </div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">—————–</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl"> آهنگ غم ناک می گذارم، سعی می کنم غمگین باشم، ولی همچنان می خندم.</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">—————–</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">من: زندگی سخت است، مشکلات زياد است …</div><div align="right" dir="rtl">نیکالای: چه مشکلی؟</div><div align="right" dir="rtl">من: (سکوت)</div><div align="right" dir="rtl"> </div><div align="right" dir="rtl">چشمانم را کمی بازتر می کنم، در زندگی دیگران دقیق می شوم، و به این نتیجه می رسم که من مشکلی ندارم!</div><div align="right" dir="rtl"> </div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/128-Sir-Issac-Newton.html" rel="alternate" title="Sir Issac Newton" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-01-06T11:27:00Z</published>
        <updated>2008-11-13T23:26:35Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=128</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=128</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
            <category scheme="http://blog.pykello.net/index.php?/categories/6-Mathematics" label="Mathematics" term="Mathematics" />
    
        <id>http://blog.pykello.net/index.php?/archives/128-guid.html</id>
        <title type="html">Sir Issac Newton</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="justify" dir="rtl"><img border="0" align="left" style="padding: 7px;" title="Sir Isaac Newton" alt="Sir Isaac Newton" src="http://blog.pykello.net/images/newton2.jpg" /></div><div align="justify" dir="rtl"><font color="#009900">توضيح: امروز سالگرد تولد يکی از نوابغ علوم بشری، اسحاق نيوتون است. نوشته ی زير خلاصه ای از فصل مربوط به نيوتون از کتاب &quot;رياضي دانان نامی&quot;، اثر &quot;اريک تمپل بک&quot;، با ترجمه ی حسن صفاری، از انتشارات اميرکبير می باشد. </font></div><div align="justify" dir="rtl"><font color="#009900"></font></div><div align="justify" dir="rtl">&quot;من نمی دانم به چه صورتی ممکن است در نظر جهانيان جلوه گر شوم، اما به نظر خودم چنين می آيد که همچون کودک خردسالی هستم که در ساحل به بازی مشغولم و گاه و بيگاه سنگ ريزه ای صاف تر از سنگ های ديگر يا صدفی زيباتر از صدف های ديگر به دست می آورم، در حالی که اقيانوس عظيم حقيقت در مقابل من گسترده است و مرا بر آن آگاهی نيست.&quot;<br />اين است قضاوتی که اسحق نيوتن در حدود پايان زندگانی طويل خويش درباره ی اکتشافات خود می نمايد و با اين حال جانشينان او که قابليت درک ارزش آثارش را داشته اند نيوتن را صاحب بزرگترين فکری دانسته اند که تا امروز در نژاد بشری وجود داشته است: « مردی که در قدرت نبوغ از مقام انسانی تجاوز کرد».<p>اسحق نيوتن که در روز 4 ژانويه سال 1643 ميلادی، يعنی سال مرگ گاليله، متولد شد، از خانواده ای است که افراد آن کشاورزان مستقل و متوسط الحال بوده اند و مجاور دريا در قريه ی وولستورپ می زيستند.</p><p>نيوتن کودکی نبود که ساختمان بدنی قوی و مستحکم داشته باشد و بنابراين مجبور بود از بازي های پر هياهو و زد و خوردهای همسالان خود کناره بگيرد و بجای اينکه از تفريحات آنان پيروی کند، شخصا برای خويش تفريحاتی اختراع می کرد که نبوغ وی در ضمن آن ها خودنمايي می نمود.<br />برخی از تفريحات وی عبارت بودند از: ساختن بادبادکی که چراغی در خود پنهان داشت و موجب وحشت اهالی ده می گرديد؛ بازيچه های مکانيکی تمام اجزاي آن ها را تماما خود می ساخت؛ ...</p><p>طبق نسايح دايی وی ابتدا او را به کالج گرانتهام فرستادند و در اين کالج او را در کلاس ماقبل آخر جای دادند. او همواره مورد طعنه و طنز شاگردانی واقع می شد که از وی قوی تر بوده اند و روزی از روزها يکی از ايشان با بی رحمی بسيار، کتک مفصلی به او زد بطوريکه جانش از آن آزرده شد. ام در نتيجه ی تشويق يکی از استادان خويش شاگرد مزبور را به مبارزه طلبيد و با ضربات جانانه ای وی را از پا درآورد و در آخر کار نيز از سر تحقير بينی او را به ديوار کليسا کوبيد. تا آن تاريخ نيوتن توجه بسيار به درس های خود نشان نداده بود اما بر اثر اين واقعه تصميم گرفت به آنان ثابت کند که مغز وی قوی تر از ايشان است و با جديت به کار پرداخت و در اندک مدت بهترين شاگرد کلاس شد.<br />در اين هنگام بود که مديران مدرسه و دايی او متفق القول شدند که وی قادر است برنامه ی دانشگاه کمبريج را درک کند. تصميم قاطع روزی اختيار شد که دايی آيسکاف او را غافلگير کرد و ملاحظه نمود که در کنار پرچين مزرعه نشسته و در خفا سخت مشغول مطالعه است و حال آن که همه تصور می کردند وی با کمک يکی از کارگران مزرعه برای خريد به بازار رفته است.</p><p>معلم رياضی نيوتن در دانشگاه کمبريج اسحق بارو نام داشت که در عين حال رياضی دان و عالم علوم الهی بود. بارو از روی خلوص و حسن نيت به اين نکته ايمان آورد که شاگردش به مراتب بر او رجحان دارد و چون در سال 1669 هنگام آن رسيد که کرسی رياضيا لوکازيان را که وی اولين اشغال کننده ی آن بوده است ترک کند، با نهايت ميل اين کرسی را به شاگرد و مريد بی مانند خود سپرد.</p><p>نيوتن تا سال 1664 هنوز کار قابل ملاحظه ای انجام نداده بود جز اينکه از بس با اصرار و سماجت به هاله ی ماه و ذوذنبی که می گذشت نگاه کرد مريض شد، و يا اگر کار مهمی انجام داده بود آن را مخفی می داشت.</p><p>از زندگانی او هيچ چيزی را با دقت و صحت نمی دانيم جز اينکه طی سال های 1666 – 1664 يعنی از 21 سالگی تا 23 سالگی تمام اکتشافات آينده ی خويش را در رياضيات و علوم ديگر پی ريزی کرد و با ايمان و عقيده هر روز به سعی و کوشش و کار پرداخت و شب ها تا دير وقت بيدار می ماند تا جاييکه مريض و بستری گرديد. متاسفانه ميل طبيعی نيوتن به اينکه اکتشافات خويش را پنهان از ديگران نگه دارد، نيز موجب تاريکی بيشتر اين اسرار شد.<br />او طی اين سه سال روش حساب ديفرانسيل و انتگرال را اختراع کرد، قانون جاذبه ی عمومی را کشف کرد و با تجربه ثابت نمود که نور سفيد ماحصل ترکيب تمام انوار با رنگ های مختلف می باشد.</p><p>نسخه ای خطی که تاريخ آن بيستم ماه می 1665 است نشان می دهد که نيوتن در 23 سالگی به قدر کافی اصول حساب عناصر بی نهايت کوچک را پيش برده بود که بتواند انحنای هر منحنی متصل را در يک نقطه حساب کند و مماس بر منحنی را در اين نقطه رسم نمايد.</p><p><img border="0" align="right" style="padding: 7px;" title="Sir Isaac Newton" alt="Sir Isaac Newton" src="http://blog.pykello.net/images/newton1.jpg" />دومين الهام بزرگ نيوتون هنگاميکه در حدود 23 سال داشت، يعنی در سال 1666 که در وولستورپ بسر می برد عبارت از قانون جاذبه ی عمومی اوست. غالب مورخين علوم که قولشان معتبر است اين نکته را پذيرفته اند که نيوتن در سال 1666 دست به يک سلسله محاسبات تقريبی زد تا ملاحظه کند که آيا قانون جاذبه ی عمومی او می تواند قوانين کپلر را توضيح دهد يا نه.<br />انتشار قانون جاذبه ی عمومی 20 سال طول کشيد. علت تاخير نيوتن آن بوده است که وی نمی توانست مسئله ای مربوط به حساب انتگرال و ديفرانسيل را حل کند و اين مسئله در قانون جاذبه ی عمومی به صورتی که مورد توجه او قرار گرفته بود نقش اساسی به عهده داشت. در واقع نيوتن قبل از اينکه حرکت سيب يا حرکت ماه را مورد مطالعه قرار دهد احتياج به آن داشت که معلوم نمايد که جاذبه ی کلی کره ی متجانسی بر نقطه ای که در خارج اين کره قرار گرفته چيست. بديهی است که هر يک از نقاط کره ی مزبور نقطه ی خارجی را با نيرويی که متناسب با جرم دو ذره و معکوس مجذور فاصله ی آن هاست جذب می کنند، ليکن چگونه بايد بی نهايت جاذبه ی مجزا را که به اين طريق حاصل می شوند را با هم جمع کرد يا ترکيب نمود تا جاذبه ی منتجه حاصل شود؟<br />آشکار است که مسئله ی مزبور از نوع مسائل حساب انتگرال است. امروز اين مسئله را در کتاب های مقدماتی و درسی حساب انتگرال به عنوان تمرين ساده ای مطرح می سازند و دانشجويان جوان حداکثر در 20 دقيقه به حل آن توفيق می يابند، اما نيوتن 20 سال در باره ی آن فکر کرد تا به حل آن توفيق يافت!</p><p>بعد از آنکه بار ديگر به کمبريج بازگشت به عنوان عضو وابسته در ترينيتی کالج پذيرفته شد (1667) و دو سال بعد از آن در 1669 در 26 سالگی به عنوان استاد رياضی جانشين اسحق بارو گرديد، در اولين درس های وی از مبحث نور گفتگو به عمل می آيد. وی ضمن اين درس ها اکتشافات شخصی خود را مطرح می سازد و تئوری های ذره ای نور را بيان می دارد که طبق آن نور ماحصل ذره است و نه چنانکه هوک و هويگنس عقيده داشته اند نمودی موجی می باشد.</p><p>در 1668 نيوتن با دست خود يک تلسکوپ انعکاسی ساخت و به مدد آن به رصد و مشاهده ی اقمار مشتری پرداخت. در اين نکته ترديدی نيست که منظور وی از اين رصد ها آن بود که اقمار مزبور را مورد تجربه قرار دهد و به کمک آن ها ملاحظه کند که آيا قانون «جاذبه» ی وی واقعا «عمومی» است يا نه.</p><p>در سال 1672 نيوتن به عضويت جامعه ی پادشاهی انتخاب شد، به اين مناسبت اکتشافات خود را در مورد تلسکوپ ها و نظريه ی ذره ای نور به جامعه ی مزبور عرضه داشت. هيئتی مرکب از سه عضو اين جامعه که از جمله ی ايشان يکی مرد زشتخوئی همچون هوک بود، مامور شدند که درباره ی اين اکتشافات گزارشی به جامعه ی مزبور تقديم دارند. هوک از سمت خود سوء استفاده کرد<img width="350" height="225" border="0" align="left" title="Isaac Newton Prism" alt="Isaac Newton Prism" src="http://blog.pykello.net/images/newton4.jpg" /> و گزارشی عليه نيوتن به جامعه تقديم داشت و ضمن آن تبليغ بسياری به نفع نظريه ی موجی نور کرد.<br />در ابتدای امر نيوتن خونسردی کامل خود را حفظ کرد ليکن بزودی رفتار خود را تغيير داد و خاصه هنگاميکه لوکاس رياضی دان و لينوس فيزيک دان به هوک پيوستند و نظرات و ايرادات آنان صورت بدگويي احمقانه يافت و نيوتن به کلی عنان احتيار از دست داد. بالاخره نيوتن تصميمی کودکانه گرفت که از آن پس با هيچکس از اکتشافات خود سخن نگويد و علت آن بود که نمی توانست اصلا چنين جدال احمقانه ای را تحمل کند.<br />در سال 1679 که سی و هفت سال داشت بزرگترين اکتشافات خود را انجام داده بود اما آن ها را با نهايت دقت در مغز خويش و يا در کشو ميز خود محفوظ می داشت.</p><p>دوران ما بين 1884 و 1886 از نظر تاريخ فکری بشر مقام ارجمندی دارد. در اين دوران هالی توانست با تدبير بسيار او را وادارد که اکتشافات خويش را در نجوم و علم حرکات به منظور انتشار تدوين کند و نيوتن نيز رضا به اين کار داد. به احتمال قوی  طی تاريخ هيچ گاه موجودی بشری با چنين مداومت خويشتن را به افکاری چنين عميق نسپرد و کوششی معادل آن چه نيوتن برای تدوين <img width="188" height="252" border="0" align="left" style="padding: 7px;" title="Sir Isaac Newton" alt="Sir Isaac Newton" src="http://blog.pykello.net/images/newton3.jpg" />کتاب «اصول رياضی حکمت طبيعی» (Principa Mathematica Philosphiae Naturalis) به عمل آور انجام نداد.<br />چنين به نظر می رسد در دورانی که نيوتن به تحرير و تدوين شاهکار خود مشغول بود هرگز به سلامتی خويش توجهی نکرد و فراموش کرد که خوردن و خوابيدن از لوازم زندگی است. غالبا به غذايي ساده اکتفا می کرد يا اصلا چيزی نمی خورد و با عجله از خوابی که چند لحظه بيش ادامه نداشت برمی خاست و با لباسی مختصر ساعت ها در کنار بستر می نشست و به تفکر و محاسبه می پرداخت تا بتواند از پيچ و خم های مشکلات رياضی خويش عبور کند. بالاخره در سال 1686 کتاب اصول آماده شد و برای اظهار نظر به جامعه ی پادشاهی تقديم گرديد و در سال 1687 با خرج هالی منتشر گرديد.<br />سراسر اين کتاب آغشته از دو نظر اصلی نيوتون يعنی قوانين علم حرکات و قانون جاذبه ی عمومی اوست و بخصوص به موارد استعمال اين قوانين در بيان حرکات دستگاه شمسی و «دستگاه جهان» می پردازد.</p><p>بيخوابی مفرط و احتراز از غذا خوردن مرتب، يعنی عواملی که او را مجاز داشته بودند کتاب اصول را در مدت 18 ماه تنظيم کند بضد او برخواسته و جبران مافات می کردند: در پائيز سال 1692 هنگاميکه به 50 سالگی نزديک می شد و می بايست در غايت قوت و کمال باشد به سختی مريض و بستری شد.<br />خبر کسالت شديد نيوتون در قاره ی اروپا انتشار يافت و طبعا با اغراق توام شد. ليکن بعد از آنکه خبر بهبود او را دادند دوستانش که يکی از آن ها بعدها از سخت ترين دوستان نيوتن شد بسيار شادمان گرديدند.<br />لايب نيتس در همين اوقات خبر سلامتی نيوتون را به يکی از آشنايان خود نوشت و اظهار رضايت کرد که بار ديگر نيوتون به صورت خويش بازگشته است. در همين سال 1693 بود که نيوتون بعد از معالجه برای اولين بار مطلع شد که حساب ديفرانسيل و انتگرال را در قاره ی اروپا به خوبی می دانند و عموما ابداع آن را به لايب نيتس نسبت می دهند.</p><p><img width="220" height="312" border="0" align="right" style="padding: 7px;" title="Leibnitz" alt="Leibnitz" src="http://blog.pykello.net/images/leibnitz.jpg" />بعد ها در سال 1712، در آن هنگام که مردم کوچه و بازار و وطن پرستان غيور که به کلی از حقايق موضوع غافل بودند با ابهام تمام دانستند که نيوتون کار برجسته ای در رياضيات انجام داده است، ناگهان مسئله ی تعيين اينکه فضل تقدم در اختراع حساب ديفرانسيل و انتگرال با کيست تبديل به مسئله ی حسادت ملی حادی شد و همه ی مردم صاحب فرهنگ انگلستان پشت سر قهرمان خويش که کم و بيش از اين وضع متحير بود صف بستند و نعره می کشيدند که رقيب وی مردی دروغگوست.<br />در ابتدای امر نه رفتار نيوتون در خور ملامت بود و نه روش لايب نيتس. اما به تدريج که غريزه ی ورزشی بريتانيايی تحريک می شد نيوتون نيز ابتدا رضايت داد و سپس خود به خود يا به اغوای ديگران وارد معرکه شد و دست به اقداماتی مشکوک و دور از شرافت زد تا به هر قيمت که شده است در اين مسابقه ی بين المللی فاتح شود حتی اگر بهای آن شرافت ملی باشد. لايب نيتس و پيروان او نيز همين راه در پيش گرفتند و ما حصل اينکار آن شد که انگليسيان سر سخت مدت يک قرن بعد از مرگ نيوتون در سکوتی کامل در زمينه ی رياضيات قرار گرفتند و حال آنکه مردم فرانسه و سوئيس که بر جای پای لايب نيتس متکی شدند و راه او را در پيش گرفتند روشهايش را که لااقل از لحاظ به کار بردن علامات بوضع غير قابل مقايسه ای بهتر از روش نيوتون بوده است تکميل کردند و از حساب عناصر بی نهايت کوچک وسيله ای ساده و قابل استعمال برای تجسس بوجود آوردند و حال آن که می بايست افتخار اين تکميل نصيب جانشينان بلافاصله ی نيوتون گردد.</p><p>در سال 1696 برنوئيلی و لايب نيتس به اتفاق توطئه ای چيدند و برای حل دو مسئله ای که مطرح ساختند رياضی دانان اروپايي را به مبارزه طلبيدند. بعد از آنکه مدت 6 ماه رياضی دانان اروپايي را سرگردان ساخت برای بار دوم مطرح شد و نيوتن برای اولين بار در روز 29 ژانويه 1696 بوسيله ی يکی از دوستان خود از وجود آن مطلع شد. وی تازه به خانه ی خويش مراجعه کرده و هنوز از خستگی کار سنگين روزانه نياسوده بود. بعد از صرف شام مسئله ها را تمام کمال حل کرد و فردای آن روز راه حل خود را بدون ذکر نام حل کننده آن به جامعه ی پادشاهی عرضه داشت.<br />برنوئيلی هنگامی که راه حل را ديد بلافاصله فرياد بر کشيد که: «آه! من شير را بخوبی از جای پايش می شناسم!»</p><p>نيوتن بار ديگر در سال 1716 هنگامی که هفتاد و چهار سالهی بود دليل ديگری بر قدرت نيروی فکری خود اقامه کرد.<br />در اين هنگام لايب نيتس گستاخانه مسئله ای مطرح کرده و رياضی دانان اروپائی را به مبارزه طلبيده بود و در واقع نيوتون را در نظر داشت زير مسئله بنظر وی مشکل می نمود.<br />نيوتن صورت مسئله را روزی از روزها ساعت 5 بعد از ظهر که خسته و کوفته به خانه برگشته بود دريافت داشت و در همان شب آن را به تمامی حل کرد حال آن که لايب نيتس گمان می کرد اين بار ديگر شير را در دام انداخته است.</p><p>آخرين روزهای زندگی وی تاثرانگيز و از جنبه ی انسانی قوی و عميق بوده است. اگر چه نيوتون نيز مانند ساير افراد بشر از رنج فراوان بی بهره نماند ليکن بردباری بسياری که در مقابل درد و شکنجه ی دائمی دو سه سال اخير زندگی اخير خويش نشان داد شکوفه هايي ديگر بر تاج گلی که بر فرق او قرار دارد می افزايد. دردهای جانگدازی که ماحصل سنگ مثانه بود هرگز نمی توانست قيافه ی آرام و دلپذير او را کدر سازد و همواره نسبت به کسانی که از او پرستاری می کردند کلمات محبت آميز بر زبان داشت. در آخرين روزهای زندگی سرفه ای مداوم او را بسيار ضعيف کرد و عاقبت بعد از آنکه چند روزی از درد جانگداز آسوده بود در نهايت آرامش مابين ساعت يک و دو بعد از نيمه شب بيستم ماه مارس 1727 زندگانی را بدرود گفت و در اين هنگام او هشتاد و پنج سال داشت. وی را در صومعه ی وست مينستر به خاک سپردند.</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/129-The-gift-of-the-magi.html" rel="alternate" title="The gift of the magi" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-01-01T07:38:00Z</published>
        <updated>2008-11-13T23:26:39Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=129</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=129</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/4-Daily-Comments" label="Daily Comments" term="Daily Comments" />
    
        <id>http://blog.pykello.net/index.php?/archives/129-guid.html</id>
        <title type="html">The gift of the magi</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><p><img src="images/pic7.jpg" alt="The gift of the magi by o'henry" align="right" border="0"></p><div dir="rtl" align="right"> سال نو میلادی برای من یادآور چه چیز می تواند باشد مگر "<a href="http://www.auburn.edu/%7Evestmon/Gift_of_the_Magi.html">هدیه ی سال نو</a>" ؟</div><div dir="rtl" align="right">&#160;</div><div dir="ltr" align="left"><font color="#006600">…</font></div><div dir="ltr" align="left"><font color="#006600">&#160;</font></div><div dir="ltr" align="left"><font color="#006600">But she hugged themto her bosom, and at length she was able to look up with dim eyes and asmile and say: "My hair grows so fast, Jim!"</font><p><font color="#006600">And them Della leaped up like a little singed cat and cried, "Oh, oh!"</font></p><p><font color="#006600">Jim had not yet seen his beautiful present.She held it out to him eagerly upon her open palm. The dull preciousmetal seemed to flash with a reflection of her bright and ardent spirit.</font></p><p><font color="#006600">"Isn't it a dandy, Jim? I hunted all over townto find it. You'll have to look at the time a hundred times a day now.Give me your watch. I want to see how it looks on it."</font></p><p><font color="#006600">Instead of obeying, Jim tumbled down on the couch and put his hands under the back of his head and smiled.</font></p><p><font color="#006600">"Dell," said he, "let's put our Christmaspresents away and keep 'em a while. They're too nice to use just atpresent. I sold the watch to get the money to buy your combs. And nowsuppose you put the chops on."</font></p></div><div dir="ltr" align="left"><font color="#006600">&#160;</font></div><div dir="ltr" align="left"><font color="#006600">…</font></div><div dir="ltr" align="left"><font color="#006600">&#160;</font></div><div dir="ltr" align="left"><font color="#006600">&#160;</font></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/130-Good-Problem-Solvers.html" rel="alternate" title="Good Problem Solvers" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-31T21:39:00Z</published>
        <updated>2008-11-14T00:04:54Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=130</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=130</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/7-Problem-Solving" label="Problem Solving" term="Problem Solving" />
            <category scheme="http://blog.pykello.net/index.php?/categories/10-Thinking" label="Thinking" term="Thinking" />
    
        <id>http://blog.pykello.net/index.php?/archives/130-guid.html</id>
        <title type="html">Good Problem Solvers</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="right"> چند ويژگی از ويژگی های يک حل کننده ی مساله ی خوب :<br />1. هيچ گاه بدون درک کامل مساله به سراغ حل کردن آن نمی رود.<br />2. به مساله از زاويه های مختلف نگاه می کند.<br />3. هيچ گاه در يک راه حل خاص گير نمی کند و به سراغ راه حل های ديگر نيز می رود.<br />4. هيچ گاه راه حل خود را قبل از حصول اطمينان از درستی آن به کار نمی برد.<br />5. از تجربه می آموزد.<br />6. به صورت عاقلانه ای تنبل است!<p><font color="#ff3300">1. </font>آن چه که مسلم است اين است که درک دقيق و کامل مساله بسيار اهميت دارد. اگر بدون درک کامل مساله به سراغ حل مساله برويد، آن چه که در اغلب اوقات به دست خواهيد آورد پشيمانی است. حال اين پشيمانی ممکن است از آن جهت باشد که يا سعی در حل کردن مساله ای متفاوت کرده ايد يا از آن جهت که مساله ی اصلی بسيار آسان تر از آن چيزی است که شما فهميده ايد.<br />اين مشکل برای من بارها پيش آمده، هر چند در ماه های اخير خيلی دقيق تر شده ام.</p><p><font color="#ff3300">2.</font> به قولی، تفاوت عمده ی حل کننده ی مساله ی خوب و افراد ديگر اين است که او بلد است مساله را از زاويه های بسيار بيشتری بنگرد. برای تقويت اين مهارت، دو راه عمده ای که به ذهن بنده می رسد، ياد گرفتن و تمرين کردن می باشد.</p><p><font color="#ff3300"> 3. </font>برای اين که بتوانيم به مساله از زاويه های مختلف نگاه کنيم، بايد اين توانايي را داشته باشيم که در يکنوع راه حل خاص گير نکنيم و به سراغ راه حل های ديگر برويم. مثلا، بار ها اتفاق افتاده که من احتمال زيادی بدهم که يک مساله ی خاصی راه حلی از نوع Dynamic Programming دارد و وقت زيادی را صرف پيدا کردن چنين راه حلی کنم. و هنگامی که سعی می کنم راه حلی از نوع ديگر پيدا کنم باز هم دوست دارم برگردم و سعی کنم راه حلی از نوع DP پيدا کنم. و در آخر هم بفهمم که اين مساله، مثلا راه حلی Greedy داشته، يا … . مشکل اصلی من در اين مواقع اين است که به يک نوع راه حل خاص زياد گير می دهم و سعی نمی کنم به مساله اززاويه های مختلفی نگاه کنم.</p><p><font color="#ff3300">4. </font>خب، اصلا عاقلانه نيست که يک راه حل را قبل از حصول اطمينان از درستی آن به کار برد. علت اصلی که مرا وادار میسازد تا اين کار را نکنم اين است که دوست دارم هر چه زودتر به نتيجه ی مطلوب برسم، غافل از آنکه دير رسيدن بهتر از هرگز نرسيدن است! <br />بهترين راه برای حصول اطمينان از درستی راه حل اين است که از ته دل و جان سعی کنيد تا مثال نقض برای آن پيدا کنيد. اگر سعی کنيد مستقيما درستی آن را اثبات کنيد، معمولا حالت هايي که راه حل را مشکل دار می کنند را در نظرنمی گيريد (طبيعت من که اين طور است). ولی اگر از ته دل سعی کنيد تا مثال نقض پيدا کنيد، مستقيما دنبال مواردی می رويد که ممکن است راه حل شما رامشکل دار کند، و اگر راه حل شما درست بود، اثبات می کنيد که در آن حالت مساله ی شما درست جواب می دهد و اگر راه حل شما مشکل داشت، معمولا تشخيص اين که راه حل شما در يک حالت خاص اشتباه جواب می دهد چندان سخت نيست.</p><p><font color="#ff3300">5. </font>به نظر من، کسی که تجربه ی زيادی دارد از کسی که استعداد ذاتی زياد دارد، در زمينه ی حل مساله، معمولا بهتر عمل می کند. منظورم از فرد با تجربه کسی نيست که مثلا 1000 تا مساله ی سخت راحل کرده باشد. بلکه منظورم کسی است که پس از حل هر مساله ای اين کارها راانجام می دهد: آ. موانعی را که باعث شدند دير به راه حل برسد را شناسايي می کند ب. روشی که باعث شد او به راه حل برسد را شناسايي می کند و به آن فکر می کند. در واقع، روش رسيدن به راه حل، بسيار بيشتر از خود راه حل اهميت دارد. به همين دليل، من کسانی که راه حل ديگران را نيز ياد می گيرند و سپس به روشی که ممکن است او را به چنين راه حلی برساند و موانعی که اورا از رسيدن به راه حل درست باز داشتند فکر می کند را نيز افرادی به حساب می آورم که از تجربه می آموزند. در واقع تجربه، از ديد من، رويداد يک اتفاق برای يک شخص نيست، بلکه تعميق و تامل در آن چه برای ما اتفاق افتاده، است. </p><p><font color="#ff3300">6. </font>همواره سعی کنيد به دنبال پيدا کردن روش های کوتاهتر و عاقلانه تری برای انجام کارها باشيد. شايد اين کار باعث شود که يک ساعت از وقت خود را صرف فکر کردن کنيد، ولی مطمئنا در آينده باعث خواهد شد تا مدت زيادی صرفه جويي کنيد.</p><p><font color="#ff3300">7. </font>برای ياد گرفتن شنا کردن، بايد شنا کنيد. برای ياد گرفتن حل مساله، بايد مساله حل کنيد. به قول شاعر:<br />    گر تو خواهی تا که باشی خوش نويس  ...  می نويس و می نويس و می نويس<br />يا به قول فرنگی ها: Practice makes it perfect!</p><p>در نوشته های بعد خود در زمينه ی حل مساله، چند مورد نمونه از تجربيات خودم را ذکر خواهم کرد.</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/40-Joy-of-Math.html" rel="alternate" title="Joy of Math" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-27T06:03:52Z</published>
        <updated>2009-05-11T04:36:34Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=40</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=40</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
    
        <id>http://blog.pykello.net/index.php?/archives/40-guid.html</id>
        <title type="html">Joy of Math</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div dir="rtl" align="justify">&#160;&laquo; &#8230; دلیل اولیه ی ما در پرداختن به ریاضیات این است که ما را متحیر می سازد. ریاضیات هم حس کنجکاوی عقلانی و هم حس ظرافت و ادراک را تحریک می کند. پرسش های عمیق معنی داری را مطرح می کند که پاسخ های آن (اگر به قدر کافی خوش اقبال باشیم که جوابی پیدا کنیم) موجب پاداش زودرس و روحانی ای می گردد که راهی را به سوی موج جدیدی از کنجکاوی ها و پرسش ها می گشاید. همه ی این ها جزء اهمیت باطنی ریاضیات است &#8230;&raquo;</div><div dir="rtl" align="right">&#160;</div><div dir="rtl" align="left">&#160;<a href="http://alikhani206.googlepages.com/joyofmath.pdf">لذت ریاضیات، سعید علیخانی</a>&#160;</div><div dir="rtl" align="right">&#160;</div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/133-64-65.html" rel="alternate" title="64 = 65 ?" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-26T00:27:00Z</published>
        <updated>2008-11-14T00:00:38Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=133</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/5-Joy-of-Science" label="Joy of Science" term="Joy of Science" />
    
        <id>http://blog.pykello.net/index.php?/archives/133-guid.html</id>
        <title type="html">64 = 65 ?</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">آیا 64 برابر است با 65 ؟!!</div><div align="right" dir="rtl">به <a href="http://www.top-greetings.com/v/2003/09/crazytest.gif">این لینک جالب</a> سر بزنید. با اینکه با کمی دقت متوجه اشکال کار خواهید شد، ولی به هر حال جالبه، مگه نه؟</div><div align="right" dir="rtl"></div><div align="center" dir="rtl"><img border="0" src="images/crazytest2.gif" alt="64 = 65" /></div><div align="right" dir="rtl"></div><div align="right" dir="rtl">(<a href="http://pykello.net/blog/?p=24">پست قبلی ام</a> کمی تغییر پیدا کرده)</div><div align="right" dir="rtl"></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/134-Rank-Tree.html" rel="alternate" title="Rank Tree" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-25T00:17:00Z</published>
        <updated>2008-11-14T00:00:47Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=134</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=134</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/2-Algorithms" label="Algorithms" term="Algorithms" />
    
        <id>http://blog.pykello.net/index.php?/archives/134-guid.html</id>
        <title type="html">Rank Tree</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="center"><img border="0" alt="Rank Tree" src="images/ranktree.gif" /></div><div align="right" dir="rtl">فرض کنيد که یک لیست مرتب داريم که در طیاجرای يک الگوريتمی نياز داريم عنصر k-ام را حذف کنیم یا مقدار آن را بهدست بياوریم. بهترین ساختمان داده برای این کار چیست؟</div><div align="right" dir="rtl"></div><div align="right" dir="rtl">اگر از لیست های پيوندی استفاده کنیم، به دست آوردن اشاره گر عنصر k-ام از مرتبه ی زمانی (O(n می باشد و حذف آن (O(1 . </div><div align="right" dir="rtl"></div><div align="right" dir="rtl">اگر از آرایه استفاده کنيم، به دست آوردن اشاره گر عنصر k-ام از مرتبه ی زمانی (O(1 می باشد و حذف آن (O(n.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl">پس در کل اگر بخواهیم عضو k-ام را حذف کنيم، با استفاده از ساختمان داده های بالا این کار از مرتبه ی زمانی (O(n می باشد.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl">این جاست که به ساختمان داده ی Rank Tree نياز پیدا می کنیم. این ساختمان داده همان <a href="http://en.wikipedia.org/wiki/Binary_search_tree">درخت جستجوی دودوئی</a> است، با این تفاوت که هر گره آن تعداد گره های موجود در زير درختی که این گره ریشه ی آن است را دارد. </div><div align="right" dir="rtl"></div><div align="right" dir="rtl">با استفاده از این ساختمان داده، پيدا کردنعنصر k-ام از مرتبه ی زمانی (O(h و حذف آن نیز از مرتبه ی زمانی (O(h میباشد که h ارتفاع درخت می باشد. الگوریتم های اضافه کردن و حذف کردن دراین درخت شبیه الگوریتم های درخت جستجوی دودوئی است با این تفاوت که بایدبر چسب های هر گره را که لازم است را بروز کنیم. </div><div align="right" dir="rtl"></div><div align="right" dir="rtl">اگر در طول الگوریتم افزودن به درخت نداشته باشیم، در ابتدای کار می توانیم این عناصر را طوری به درخت اضافه کنیم که ارتفاعش (log<sub>2</sub>(n باشد. (ابتدا عنصر وسطی را اضافه کنیم، سپس به صورت بازگشتی نیمه ی راست و سپس نیمه چپ)</div><div align="right" dir="rtl"></div><div align="right" dir="rtl">ولی اگر در وسط کار نیاز به افزودن به درخت داشته باشیم، می توانیم از <a href="http://en.wikipedia.org/wiki/AVL_tree">درخت های AVL </a>استفاده کنیم. </div><div align="right" dir="rtl"></div><div align="right" dir="rtl">برای مطالعه ی بیشتر در باره ی این ساختمان داده و مشاهده ی یک پیاده سازی نمونه، به<a href="http://tclab.kaist.ac.kr/%7Eotfried/cs206/notes16.pdf"> لینک 1 </a>مراجعه کنید.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl">—————————————————————————-</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#cc3300">Ali Said:</font> قبول، اگر فرض كنيم كه چنين درختي داريم. اما توجه داشته باش كه ساخت اين درخت هم از مرتبه زماني (O(n است. </div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#00cc00">To Ali:</font> البتهمنظورم این بود که در طی الگوریتم به پیدا کردن عنصر k-ام یا حذف کردن آنبه تعداد زیادی نیاز داشته باشیم و نه فقط یکبار. مثلا اگر n بار نیازداشته باشیم، با استفاده از آرایه یا لیست پیوندی پیچیدگی زمانی از مرتبهی (O(n<sup>2</sup> می شود و با این ساختمان داده ((O(n*log(n. </div><div align="right" dir="rtl"></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/135-Introduction-to-Problem-Solving.html" rel="alternate" title="Introduction to Problem Solving" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-24T21:33:00Z</published>
        <updated>2008-11-14T00:01:01Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=135</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=135</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/7-Problem-Solving" label="Problem Solving" term="Problem Solving" />
            <category scheme="http://blog.pykello.net/index.php?/categories/10-Thinking" label="Thinking" term="Thinking" />
    
        <id>http://blog.pykello.net/index.php?/archives/135-guid.html</id>
        <title type="html">Introduction to Problem Solving</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl"><div align="right" dir="rtl">روزگاری، هنگامی که به يک مساله ی پيچيده ی الگوريتمی می رسيدم، به صورت مساله زل می زدم و سعی می کردم تا يک اتفاق عجيب بيافتد و من يک کشف بزرگ و عجيب وغريب بکنم و مساله را ناگهان حل کنم!<p>در آن زمانه، نوابغ برای من موجوداتی عجيب و خارق العاده و دست نيافتنی بودند … تصور من اين بود که راه حل ها به آن ها &quot;الهام می شوند&quot;.و احتمالا تصور اکثر مردم از نوابغ همين طور باشد. (البته فعلا در اينجا منظورم از نابغه کسی است که خوب مساله حل می کند)</p><p>ولی با گذشت زمان و کسب تجربه های بيشتر، دريافتم که آن چنان که من فکرمی کردم نيست و نوابغ نيز انسان هايي مانند ما هستند و تفاوت آن ها با انسان هايی مثل من اين است که آن ها &quot;بلدند&quot; مساله ها را حل کنند. می گويم&quot;بلدند&quot; و منظورم اين است که آن ها دارای دانشی به اسم &quot;حل مساله&quot; هستند و به آن ها هنگام حل مساله &quot;الهام&quot; نمی شود! و اين &quot;دانش حل مساله&quot;يادگرفتنی است.</p><p>آن چه که من امروز، و در دفعات بعد درباره ی آن خواهم نوشت، حاصل خوانده ها و شنيده ها و تجربيات خودم در زمينه ی حل مساله می باشد. اگرعلاقمند به پيدا کردن منابع بيشتر و مطالعه ی بيشتر در اين زمينه هستيد به گوگل دات کام سری بزنيد و عبارات &quot;Problem Solving&quot; يا &quot;Creative Problem Solving&quot; را جستجو کنيد.</p></div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900"> يادداشت:</font> چون زمينه ای که من در آن بيشتر به حل مساله می پردازم مسائل الگوريتمی هستند، مثال های من اکثرا در اين زمينه خواهند بود. ولی مسلما روش های حل مساله در هر زمينه ای قابل استفاده می باشند.<p>حل مساله چند گام دارد. گام های اصلی عبارتند از:<br />1. فهميدن مساله<br />2. مدل سازی مساله<br />3. حل مدل<br />4. استفاده کردن از آن چه که بدست آورده ايم</p><p>اکثر آدم ها اين گام ها را می دانند، و شايد اگر از آن ها بپرسيد پاسخ درستي به شما بدهند. ولی اکثر آن ها به اين گام ها عمل نمی کنند!<br />ابتدا يک مساله ی ساده را با استفاده از اين گام ها حل می کنم تا بفهميد منظورم از هر گام چيست.</p><p><font color="#009900">صورت مساله:</font> يک تخته شکلات مستطيلی که بااستفاده از خطوط عمودی و افقی به تعدادی مربع هم اندازه تقسيم شده است داريم. می خواهيم آن را ببريم تا به مربع های تشکيل دهنده ی آن تجزيه شود. يک برش عبارت است از برداشتن يک قطعه و بريدن آن توسط يک از خطوط آن. تعداد برش های لازم چقدر است؟</p><p><font color="#009900">مدل سازی:</font> ابتدا چند متغير تعريف می کنيم:<br />C: تعداد برش ها<br />P: تعداد قطعات <br />و صورت مساله به اين صورت در می آيد: پيدا کنيد مقدار C را هنگامی که P = width * height.</p><p><font color="#009900">حل مساله: </font><br />-    هنگامی که C = 0، داريم P = 1. <br />-    هنگامی که به مقدار C يکی اضافه می شود، مقدار P نيز يکی افزايش پيدا می کند.<br />   + بنابراين: P – C ثابت است!</p></div><div align="right" dir="rtl">-    پس نتيجه می گيريم که P– C همواره برابر با يک می باشد.-    حال با توجه به رابطه ی بالا، مقدار C وقتی که مقدار P برابر با width * height می باشد را پيدامی کنيم!<p>تمام گام های حل مساله به يک اندازه مهم هستند. ولی سخت ترين اين گامها، به نظر من، گام مدل سازی است. مهمترين نکته در مدل سازی اين است که مدلی که می سازيم تنها آن چه را در بر داشته باشد که لازم است، و جزئيات نامهم را حذف کند. مدلی که می سازيم، ممکن است مساله را تبديل کند به: پيدا کردن جواب های يک دستگاه معادلات خطی، يا پيدا کردن کوتاهترين مسيردر يک گراف بدون وزن و جهت دار، يا يک تابع بازگشتی، يا …</p></div><div align="right" dir="rtl">خيلی از اين مدل ها به صورت نا خودآگاه درذهن ما وجود دارند و ما در مواجهه با يک مساله ابتدا سعی می کنيم آن را به يکی از اين مدل ها تبديل کنيم. <br />گام مدل سازی نياز به تمرين زياد دارد، و در واقع افرادی را که مساله را خوب حل می کنند اين گام را بسياربهتر از ديگران انجام می دهند. بعدا درباره ی اين گام توضيح بيشتری خواهمداد.<p>گام حل مدل گامی است که معمولا افرادی که در جامعه به افراد &quot;باهوش&quot;شهرت دارند آن را به خوبی انجام می دهند. اکثر مسائلی که در کتاب های دورهی دبيرستان و يا در کتاب های رياضی مقدماتی با آن ها مواجه می شويم، درواقع حل مدل هستند. و معمولا در عرف به افرادی &quot;باهوش&quot; گفته می شود که درحل اين نوع مسائل موفق تر هستند.</p></div><div align="right" dir="rtl">اکثر اوقات پس از آن که مدل سازی انجام شد، راه حل مشخصی که در کتاب ها موجود است برای حل آن مدل وجود دارد. مثلا،اگر ابزاری که برای مدل سازی به کار بستيم يک گراف باشد، اکثر مسائل دررابطه با گراف ها قبلا حل شده اند. مثلا پيدا کردن کوتاهترين مسير بين دوگره، يا پيدا کردن تعداد مسير های مجزا از نظر يالی بين دو گره، يا …</div>ولی ممکن است اين طور نباشد … در اين صورت بهتر است کاغذ و قلم را برداريم و به بررسی مساله، پيدا کردن روابط بين متغير ها، پيدا کردن ثابت های مساله، پيدا کردن خواص جواب مساله، …بپردازيم. کسانی که در اين مرحله سعی می کنند بدون استفاده از کاغذ و قلم به جستجوی جواب بپردازند يا خيلی خارق العاده هستند، يا اين که خيلی ضايع تشريف دارند! به نظر من اصلا جالب نيست که يکی سعی کند مساله ای مثل<a href="http://acm.uva.es/p/v108/10872.html"> UVa #10872 </a>را بدون مدد جستن از کاغذ و قلم حل کند. <br />کاغذو قلم به فکر انسجام می بخشد و باعث می شود که نتايجی که قبلا به دست آورده ايم را از ياد نبريم و هميشه آن ها را مد نظر داشته باشيم.<p>برای اين که در اين گام مهارت لازم را پيدا کنيد، بهتر است چند تا کتاب در زمينه ی مورد علاقه ی خود بخريد، مثال های آن ها را ياد بگيريد وسپس سعی کنيد تمرين های آن ها را حل کنيد.</p><p>و بالاخره گام آخر، &quot;استفاده از آن چه که بدست آورده ايم&quot;، شايد آسانترين گام باشد. مثلا، در مورد مسائل الگوريتمی، اين مرحله متناظر است با نوشتن کد برای حل مسائله ی مورد نظر.</p><p>البته اين گام ها ذکر کردم ترتيب خطی ندارند، يعنی ممکن است که ابتدا يک مدل را فرض کنيم و سپس سعی کنيم مساله را در قالب آن مدل حل کنيم، ولی نتوانيم. در اين صورت دوباره به گام دوم بر می گرديم و مراحل را دوباره انجام می دهيم.</p><p>در دفعات بعدی، بيشتر وارد جزئيات خواهم شد و مثال های متنوع تری خواهم زد. همچنين درباره ی ويژگی های يک حل کننده ی مساله ی خوب خواهم گفت.</p></div></p>

 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://blog.pykello.net/index.php?/archives/136-SRM-331.html" rel="alternate" title="SRM 331" />
        <author>
            <name>Hadi Moshayedi</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2006-12-22T00:13:00Z</published>
        <updated>2008-11-14T00:07:56Z</updated>
        <wfw:comment>http://blog.pykello.net/wfwcomment.php?cid=136</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://blog.pykello.net/rss.php?version=atom1.0&amp;type=comments&amp;cid=136</wfw:commentRss>
    
            <category scheme="http://blog.pykello.net/index.php?/categories/3-Competing" label="Competing" term="Competing" />
    
        <id>http://blog.pykello.net/index.php?/archives/136-guid.html</id>
        <title type="html">SRM 331</title>
        <content type="xhtml" xml:base="http://blog.pykello.net/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><div align="right" dir="rtl">زمان: پنج شنبه 30 آذر 1385</div><div align="right" dir="rtl">مکان: تبریز -  Topcoder Competition Arena </div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#0000cc">مرحله ی کد نویسی:</font></div><div align="right" dir="rtl">مسابقه شروع می شود - حدود 20 ثانیه تمرکز می کنم و سوال 250 امتیازی را باز می کنم. سوال بسیار آسان و بدیهی است.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 5:</font>سوال 250 امتیازی را Submit می کنم. نگاهی به Summary می کنم و سپس کدی کهبرای این سوال نوشته ام را دوباره می خوانم تا اگر مشکل داشت برطرفش کنم.مشکلی ندارد.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 6:</font> سوال 500 امتیازی را باز می کنم و می خوانم. بررسی اش می کنم. به راه حل Brute Force فکر می کنم … نه!</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 10:</font>سعی می کنم راه حلی Dynamic پیدا کنم، یک راه حل به ذهنم می رسد. شک دارم… ردش می کنم. (بعد مسابقه فهمیدم که این راه حل هم درست بود)</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 20:</font> افکارم پریشان است. سعی می کنم دوباره تمرکز کنم. </div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 30:</font>هنوز به نتیجه نرسیده ام. نگاهی به Summary می اندازم. 4-5 نفر این سوالرا Submit کرده اند. بعضی ها حتی سوال سوم را نیز Submit کرده اند.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 31: </font>به Greedy فکر می کنم. یک راه حل به ذهنم می رسد. خیلی مطمئن نیستم، ولی درست به نظر میاد. شروع می کنم به کد زدن.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 45:</font> سوال 500 امتیازی را تست می کنم و سپس Submit می کنم.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 46:</font>سوال 1000 امتیازی را باز می کنم و می خوانم. سوالش آسان است … 30 دقیقهوقت دارم … کمی به جزئیات سوال فکر می کنم و سپس شروع می کنم به نوشتن …</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 65:</font> نوشتن کد تمام شد، تستش می کنم … دو تا از Testcase ها را اشتباه جواب می دهد … کد را بارها می خوانم.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 71:</font> یک Bug را برطرف می کنم. حالا فقط یکی از Testcase ها را اشتباه جواب می دهد … دوباره شروع می کنم به بررسی کد …</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 75:</font> مرحله ی کد نویسی تمام شد!</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#0000cc"> مرحله ی Challenge:</font></div><div align="right" dir="rtl">چون از 500 امتیازی خودم مطمئن نیستم و راهحل های درست و اشتباه را نمی توانم تشخیص دهم، فقط Division Summary رانگاه می کنم … در آغاز حدود 170 ام هستم.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 8:</font> Petr سوال 500 امتیازی من را باز می کند. نفسم را در سینه حبس می کنم …</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 9:</font> Petr سورس کد من را بدون Challenge می بندد. نفس راحتی می کشم. (چون احتمال زیاد راه حلم درست است که Challenge اش نکرد.)</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">دقیقه ی 15:</font> 151 ام هستم و مرحله ی Challenge نیز به پایان می رسد.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"></div><div align="right" dir="rtl"> کمی منتظر می مانم تا مرحله ی System Test به پایان برسد. </div><div align="right" dir="rtl"> …</div><div align="right" dir="rtl"> نفس راحتی می کشم. هر دو سوال من این مرحله را پاس کرده اند و رتبه ام به 137 ام رسیده. زیاد بد نیست!</div><div align="right" dir="rtl"> …</div><div align="right" dir="rtl"> Log out می کنم و دوباره Log in میکنم. Rating ام از 1779 به 1793 افزایش پیدا کرده … امروز تصمیم داشتم1800 رو رد کنم! انشاءالله دفعه ی بعد! </div><div align="right" dir="rtl"></div><div align="right" dir="rtl"> امروز اولین دفعه ای بود که می تونستم سوال 1000 امتیازی را Submit کنم! ولی کمی کند و بدون دقت عمل کردم.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900"> یک اشتباه کوچک در سوال 1000 امتیازی:</font>دو تا تابع حدود 15 سطری داشتم. می تونستم یک پارامتر به یکی از آن هااضافه کنم و آن یکی را حذف کنم! در این صورت Debug کردن نیز آسان تر می شد.</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">یادداشت:</font> امروز دوباره سوال 1000 امتیازی (<a href="http://pykello.net/pdf/hiddensquares.pdf">صورت سوال</a>)را نوشتم، که بیشتر از 15 دقیقه طول نکشید. چیزی که برای من ضد حال اساسیبود این است که تنها تفاوت این کد و کد دیروز من (در طول مسابقه) سطری استکه با رنگ قرمز مشخص شده است (که دیروز این سطر را ننوشته بودم).</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">نتیجه ی اخلاقی:</font> یادمان باشد که مربع همواره چهار ضلع دارد (و نه سه ضلع) !</div><div align="right" dir="rtl"></div><div align="right" dir="rtl"><font color="#009900">مصطفی می گه:</font> زیاد ناراحت نشو، دست خودت نیست که … !!! <img class="wp-smiley" alt=";)" src="9_files/icon_wink.gif" /></div><div align="right" dir="rtl"></div><div align="legt" dir="ltr"><div class="cpp" style="text-align: left"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">class</span> HiddenSquares <span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">public</span>:</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">int</span> count<span style="color: #000000;">&#40;</span>vector &lt;int&gt;, vector &lt;int&gt;, vector &lt;int&gt;, vector &lt;int&gt;<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #339900;">#define VP vector&lt;pair&lt;int, int&gt; &gt;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #339900;">#define mini(a,b) ((a)&lt;(b)?(a):(b))</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #339900;">#define maxi(a,b) ((a)&gt;(b)?(a):(b))</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">map&lt;int, VP &gt; X, Y;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">set&lt;int&gt; sx, sy;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">vector&lt;int&gt; vx, vy;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">bool</span> Intersect<span style="color: #000000;">&#40;</span>pair&lt;int, int&gt; p, <span style="color: #0000ff;">int</span> s, <span style="color: #0000ff;">int</span> e<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">int</span> a = maxi<span style="color: #000000;">&#40;</span>s, p.<span style="color: #00eeff;">first</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">int</span> b = mini<span style="color: #000000;">&#40;</span>e, p.<span style="color: #00eeff;">second</span><span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">return</span> b &gt; a;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#125;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">bool</span> exist<span style="color: #000000;">&#40;</span>VP v, <span style="color: #0000ff;">int</span> a, <span style="color: #0000ff;">int</span> b<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>b &lt;= a<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; <span style="color: #0000ff;">return</span><span style="color: #0000ff;">true</span>;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160;<span style="color: #0000ff;">for</span><span style="color: #000000;">&#40;</span>VP::<span style="color: #00eeff;">iterator</span> it = v.<span style="color: #00eeff;">begin</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; it != v.<span style="color: #00eeff;">end</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; it++<span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; <span style="color: #0000ff;">if</span><span style="color: #000000;">&#40;</span>Intersect<span style="color: #000000;">&#40;</span>*it, a, b<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; <span style="color: #000000;">&#123;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #0000ff;">int</span> s1 = a;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&#160; &#160; &#160; &#160; &#160;<span style="color: #0000ff;">int</span> e1 = maxi<span style="color: #000000;">&#40;</span>a, it-&gt;first<span style="color: #000000;">&#41;</span>;</div></li><li style="font-family: 'Courier New', Courier, m