اطلاعیه

Collapse
No announcement yet.

چالش برنامه نویسی !

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    چالش برنامه نویسی !

    سلام به همه دوستان گرامی :nerd:
    آقا چند وقتی هست که از مواجهه با افراد برنامه نویس نما واقعا کلافه شدم :angry:
    به این فکر افتادم که مساله ای رو مطرح کنم که افراد به میزان توانایی هایی های خودشون واقف بشن این که واقعا چقدر برنامه نویس هستند
    نه برنده ای در کار هست و نه جایزه ای ، صرفا افراد داوطلب خودشون متوجه سطح خودشون و توانایی هاشون میشن :twisted:

    آقا مساله از این قرار که :
    برنامه ای بنویسید که دو عدد از ورودی خوانده و بزرگترین عدد را نمایش دهد.

    این برنامه رو یه فرد خیلی ساده هم میتونه بنویسه ولی آیا با شرط های زیر شما میتونید اینچنین برنامه ای بنویسید ؟

    در برنامه نباید از عبارت شرطی IF استفاده شود
    در برنامه نباید از هرگونه عبارت شرطی بر روی دو عدد چه مستقیم چه غیر مستقیم استفاده شود.
    در برنامه نباید از توابعی استفاده شود در آنها عبارت شرطی مورد استفاده قرار گرفته باشد.

    اگر در حلش عاجز موندید مساله رو من به زیان سی حل کردم و راه حل رو تو این لینک گذاشتم
    http://agape.ir/blog/1393/04/27/%DA%...C%D8%B3%DB%8C/

    خوب آیا حالا می تونید برنامه رو توضیح بدید که چی شده ؟؟؟؟

    #2
    پاسخ : چالش برنامه نویسی !

    حاجی اون چه کدی بود نوشته بودی حوصلم سر رفت تا آخر نخوندم راه حلت خیلی طولانی بود
    من با پایتون نوشتم شد 10خط
    http://kolonel.persiangig.com/eagle%20learning/Max.py
    به جای این برنامه ها بیاید یه برنامه درست درمون بگید بنویسیم اینا که بیشتر جک هستند
    توجه این کد برای پایتون نسخه 3 به بعد نوشته شده اگه میخواید با نسخه 2 بازش کنید خطا میده میتونید پیغام بدید تا نسخه ورژن 2 رو بزارم

    خوب حالا شما بیاید بگید چی به چی شده
    من دوست ندارم خودم را درگير مسئله بهشت يا جهنم بکنم ، چون در هر دو قسمت دوستان خوبي دارم !

    دیدگاه


      #3
      پاسخ : چالش برنامه نویسی !

      نوشته اصلی توسط icarus
      حاجی اون چه کدی بود نوشته بودی حوصلم سر رفت تا آخر نخوندم راه حلت خیلی طولانی بود
      من با پایتون نوشتم شد 10خط
      به جای این برنامه ها بیاید یه برنامه درست درمون بگید بنویسیم اینا که بیشتر جک هستند
      توجه این کد برای پایتون نسخه 3 به بعد نوشته شده اگه میخواید با نسخه 2 بازش کنید خطا میده میتونید پیغام بدید تا نسخه مخصوص رو بزارم

      خوب حالا شما بیاید بگید چی به چی شده
      سلام حاجی - خیلی خوبه اگه اینطور که میگید باشه ، در ضمن اون برنامه برای این اینقدر طولانی هست که زیاد پیچیده نشه و احتمالا اگه کسی خواست تحلیل کنه راحت تر باشه
      حالا برنامه با پایتون کجاست که شده ده خط - oo:

      دیدگاه


        #4
        پاسخ : چالش برنامه نویسی !

        ای وای آبروم رفت لینکو یادم رفت بزارم !!!! :eek:
        جایی نگی آبروم میره ها :eek:
        [s]الان میزارم[/s]
        لینک رو در پست دوم قرار دادم اصلا حواسم نبود ممنون از تذکرتون
        در ضمن 10 خط با حساب کردن جینگولک بازیاش شده وگرنه اصل قسمتش 5 خط کد هست ببینید کامل متوجه میشید چه کلکی زدم

        دوستانی که میخوان با وزژن 2 پایتون این رو اجرا کنند خط اول و دوم کد :
        کد:
        a = int(input("please enter number 1: "))
        b = int(input("please enter number 2: "))
        به این تغییر کنه :
        کد:
        a = int(raw_input("please enter number 1: "))
        b = int(raw_input("please enter number 2: "))
        من دوست ندارم خودم را درگير مسئله بهشت يا جهنم بکنم ، چون در هر دو قسمت دوستان خوبي دارم !

        دیدگاه


          #5
          پاسخ : چالش برنامه نویسی !

          ممنون از راهکارتون :job: ولی حساب نیست ! چون در واقع از پرش شرطی استفاده کردید ! :eek:
          خوب همین زبان های ساخت یافته سطح بالا است که باعث میشه آدم تنبل بشه! :NO:
          شما از مدیریت خطا زبان استفاده کردید اگر درکم از کدتون درست بوده باشه ، که در واقع میشه پرش شرطی به ازاء اشتباه بودن یک خط از برنامه که داره رو یکی از اعداد انجام میشه
          گفتم که هیچگونه شرط - پرش شرطی روی اعداد نداریم

          دیدگاه


            #6
            پاسخ : چالش برنامه نویسی !

            دوست عزیز یا نمیدونید یا دارید اذیت میکنید!!!!
            دستور For به Instruction های CMP و JMP ترجمه میشه CMP یعنی Compare و معنی فارسیش میشه مقایسه که اگه مقدار دو رجیستر با هم برابر باشه جامپ انجام میشه پس این یعنی شما هم دارید از دستور شرطی استفاده میکنید خودتون گفتید چه مستقیم چه غیر مستقیم قبول نیست پس کد شما هم پر :wow:

            دقیقا کجاش رو میگید ؟ بگید تا عوض کنم یا از یه روش دیگه برم اصلا مهم نیست :twisted: :twisted:
            موقع نوشتنش حداقل 8-9 تا راه تو ذهنم بود گفتم با این برم تنوع بشه :evil:

            ما با سطح پایینا آردمونو ریختیم الکمونم آویختیم حالا اومدیم سر این در ضمن پایتون روی سی نوشته شده و دستوراش راحت به سی تبدیل میشه
            موفق باشید
            من دوست ندارم خودم را درگير مسئله بهشت يا جهنم بکنم ، چون در هر دو قسمت دوستان خوبي دارم !

            دیدگاه


              #7
              پاسخ : چالش برنامه نویسی !

              .
              1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
              من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
              !Electronic On! Programming On
              هوشمندانه سوال بپرسیم!
              http://ir02x6.persiangig.com/logo/eca/tanks_01.png

              دیدگاه


                #8
                پاسخ : چالش برنامه نویسی !

                واقعا اگه یکی بتونه به اون شکلی که شما گفتید این برنامه رو حل کنه برنامه نویسه؟
                الان همه زبون ها دارن سعی میکنن تمرکز برنامه نویس رو به سمت هدفش جلب کنن تا به این قبیل مسائل انحرافی!
                ;()((void (*)(void))0x0000))

                دیدگاه


                  #9
                  پاسخ : چالش برنامه نویسی !

                  حق با شماست ولی بیشتر هدف ایشون فک کنم دیدن ایده های مختلف هست و این که بیایم توانایی هامون رو به چالش بکشیم
                  مسلمن همچین کدی کاربردی نداره ولی خب دادن راه های مختلف یا روش های حل مساله باعث میشه ما همیشه فکرمون رو باز نگه داریم
                  همیشه که نباید همه چی نتیجه داشته باشه بعضی چیزا هم هستند چون فقط هستند!!
                  هدف برنامه نویسی هم چیزی نیست جز رسیدن به جواب مساله به ساده ترین شکلش
                  من دوست ندارم خودم را درگير مسئله بهشت يا جهنم بکنم ، چون در هر دو قسمت دوستان خوبي دارم !

                  دیدگاه


                    #10
                    پاسخ : چالش برنامه نویسی !

                    ملاک برای "ّبرنامه نویس" بودن، آشنایی کامل و استفاده اصولی و بهینه از امکانات و تکنیک های زبان برنامه نویسی مورد استفاده است و صورت مسئله مطرح شده بیشتر معطوف به پیاده سازی یک الگوریتم خاص است که ارتباط چندانی به برنامه نویسی اصولی و مهارت در برنامه نویسی ندارد.
                    در هر حال برای پیاده سازی فرض مسئله شما نیازی به برنامه ای با طول و تفصیلی شبیه نمونه کدی که قرار داده اید، نیست و در یک خط برنامه هم می توان آن را انجام داد. مطابق صورت مسئله شما اگر هدف بدست آوردن مقدار بزرگتر از بین دو مقدار 8 بیتی باشد، دو نمونه کد برای این منظور در ادامه آورده شده که در متغیر max مقدار بزرگتر a یا b قرار می گیرد.

                    روش اول:

                    کد:
                    max = a-((a-b)&((unsigned int)(a-b)>>7));


                    روش دوم:

                    کد:
                    max = a ^ ((a ^ b) & -(a < b));
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      #11
                      پاسخ : پاسخ : چالش برنامه نویسی !

                      نوشته اصلی توسط طراح
                      ملاک برای "ّبرنامه نویس" بودن، آشنایی کامل و استفاده اصولی و بهینه از امکانات و تکنیک های زبان برنامه نویسی مورد استفاده است و صورت مسئله مطرح شده بیشتر معطوف به پیاده سازی یک الگوریتم خاص است که ارتباط چندانی به برنامه نویسی اصولی و مهارت در برنامه نویسی ندارد.
                      در هر حال برای پیاده سازی فرض مسئله شما نیازی به برنامه ای با طول و تفصیلی شبیه نمونه کدی که قرار داده اید، نیست و در یک خط برنامه هم می توان آن را انجام داد. مطابق صورت مسئله شما اگر هدف بدست آوردن مقدار بزرگتر از بین دو مقدار 8 بیتی باشد، دو نمونه کد برای این منظور در ادامه آورده شده که در متغیر max مقدار بزرگتر a یا b قرار می گیرد.

                      روش اول:

                      کد:
                      max = a-((a-b)&((unsigned int)(a-b)>>7));


                      روش دوم:

                      کد:
                      max = a ^ ((a ^ b) & -(a < b));
                      میتوان از عملگر ? هم استفاده کرد
                      1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                      من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                      !Electronic On! Programming On
                      هوشمندانه سوال بپرسیم!
                      http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                      دیدگاه


                        #12
                        پاسخ : چالش برنامه نویسی !

                        دوست عزیز یا نمیدونید یا دارید اذیت میکنید!!!!
                        دستور For به Instruction های CMP و JMP ترجمه میشه CMP یعنی Compare و معنی فارسیش میشه مقایسه که اگه مقدار دو رجیستر با هم برابر باشه جامپ انجام میشه پس این یعنی شما هم دارید از دستور شرطی استفاده میکنید خودتون گفتید چه مستقیم چه غیر مستقیم قبول نیست پس کد شما هم پر :wow:

                        دقیقا کجاش رو میگید ؟ بگید تا عوض کنم یا از یه روش دیگه برم اصلا مهم نیست :twisted: :twisted:
                        موقع نوشتنش حداقل 8-9 تا راه تو ذهنم بود گفتم با این برم تنوع بشه :evil:

                        ما با سطح پایینا آردمونو ریختیم الکمونم آویختیم حالا اومدیم سر این در ضمن پایتون روی سی نوشته شده و دستوراش راحت به سی تبدیل میشه
                        موفق باشید
                        دوست گرامی من که قصد اذیت کردن ندارم ، درسته که توی حلقه از شرط استفاده شده ولی اون شرط هیچ ربطی به اعداد مورد نظر نداره - من به راحتی با تکرار اون بنده ها میتونم حلقه رو حذف کنم :job: ولی تو برنامه شما دارید یک پرش شرطی بر اساس یکی از طرف های معادله انجام میدید ! :NO:

                        واقعا اگه یکی بتونه به اون شکلی که شما گفتید این برنامه رو حل کنه برنامه نویسه؟
                        الان همه زبون ها دارن سعی میکنن تمرکز برنامه نویس رو به سمت هدفش جلب کنن تا به این قبیل مسائل انحرافی!
                        نه صرفا اینطور نیست ، من تو پست بلاگ توضیح دادم برنامه نویسی یعنی چی! یعنی ارائه یه راهکار مناسب با توجه به محدودیت ها، حالا اینم یه تسته که شاید مشخص میکنه شما چقدر در ارائه راهکار خلاقیت دارید !
                        در ضمن فکر میکنید حدف از برنامه نویسی چی هست ؟ :biggrin:

                        ملاک برای "ّبرنامه نویس" بودن، آشنایی کامل و استفاده اصولی و بهینه از امکانات و تکنیک های زبان برنامه نویسی مورد استفاده است و صورت مسئله مطرح شده بیشتر معطوف به پیاده سازی یک الگوریتم خاص است که ارتباط چندانی به برنامه نویسی اصولی و مهارت در برنامه نویسی ندارد.
                        در هر حال برای پیاده سازی فرض مسئله شما نیازی به برنامه ای با طول و تفصیلی شبیه نمونه کدی که قرار داده اید، نیست و در یک خط برنامه هم می توان آن را انجام داد. مطابق صورت مسئله شما اگر هدف بدست آوردن مقدار بزرگتر از بین دو مقدار 8 بیتی باشد، دو نمونه کد برای این منظور در ادامه آورده شده که در متغیر max مقدار بزرگتر a یا b قرار می گیرد.

                        روش اول:

                        کد: [انتخاب]
                        max = a-((a-b)&((unsigned int)(a-b)>>7));

                        روش دوم:

                        کد: [انتخاب]
                        max = a ^ ((a ^ b) & -(a < b));
                        :job: یکی از اصولی ترین قوائد برنامه نویسی ارائه راهکار هست ، حق با شماست که شاید این قضیه ربط کسی رو با برنامه نویسی به صورت واضح مشخص نکنه ، ولی به نظر من کسی که نتونه راه حل بده قطعا در سطح خوبی از برنامه نویسی قرار نمی گیره ، حداقل از نظر من، در ضمن این یکی از اصول هر کاری هست که شما بتونی از ابزارت به خوبی استفاده کنی و هیچ شکی درش نیست چه برای یک مکانیک و چه برای یک برنامه نویس

                        دیدگاه


                          #13
                          پاسخ : پاسخ : چالش برنامه نویسی !

                          نوشته اصلی توسط Mahan.Rafiee
                          میتوان از عملگر ? هم استفاده کرد
                          نظری درباره این عملگر ندارید؟
                          1 در دنیا 100 در آخرت (درس و مشق فعالیتمو تو انجمن کم کرده)
                          من آنچه شرط بلاغست با تو میآ‌گویم. تو خواه از سخنم پند گیر و خواه ملال. سعدی
                          !Electronic On! Programming On
                          هوشمندانه سوال بپرسیم!
                          http://ir02x6.persiangig.com/logo/eca/tanks_01.png

                          دیدگاه


                            #14
                            پاسخ : پاسخ : چالش برنامه نویسی !

                            نوشته اصلی توسط Mahan.Rafiee
                            نظری درباره این عملگر ندارید؟
                            سلام دوست گرامی - از این عملگر نمیشه استفاده کرد چون در واقع همون شرط اینلاینه !

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

                            دیدگاه


                              #15
                              پاسخ : چالش برنامه نویسی !

                              حوصله نداشتم از اول تاپیک رو بخونم. اما کلا برای دوعدد که بخوای بزرگ یا کوچیک رو بدون شرط پیدا کنی فرمول زیر هست:

                              کد:
                              max=(|a+b|+|a-b|)/2
                              
                              min=(|a+b|-|a-b|)/2
                              ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

                              امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

                              دیدگاه

                              لطفا صبر کنید...
                              X