চারটি চার ধাঁধা


21

চারটি চার ধাঁধা একটি জনপ্রিয় বিনোদনমূলক গাণিতিক ধাঁধা যে ঠিক চার 4S (এবং অন্য কোনো সংখ্যা) এবং অপারেশন একটি পৃথক সেট ব্যবহার জড়িত একটি প্রদত্ত সর্বাধিক 0 থেকে যে সংখ্যা পৌঁছানোর হয়।

এই সংস্করণে, কেবলমাত্র নিম্নলিখিত অপারেটরদের অনুমোদিত:

  • যে কোনও গ্রুপিং প্রতীক ব্যবহার করা যেতে পারে
  • সংযোজন ( +), বিয়োগ ( -), গুণ ( *), বিভাগ ( /)
  • কারখানা ( !), গামা ফাংশন ( Γ)
  • বর্ধিতকরণ ( ^), স্কোয়ার রুট ( )
  • প্রতিযোগিতা (উদাহরণস্বরূপ 44দুটি 4গুলি)
  • দশমিক বিন্দু (উদাহরণস্বরূপ 4.4দুটি 4গুলি), ওভারবার (উদা। .4~ = 4/9)

ক্রিয়াকলাপের স্ট্যান্ডার্ড অর্ডার প্রযোজ্য।

আপনার প্রোগ্রামটি 0 এবং 100 এর মধ্যে ইনপুট সমেত একটি ইনপুট দেওয়া উচিত, সেই ইনপুটটির সঠিক সমাধান। প্রোগ্রামটি যদি কোনও ইনপুটটিতে একটি অবৈধ সমাধান বের করে, তবে সেই প্রোগ্রামটি অবৈধ।

উদাহরণস্বরূপ, একটি ইনপুট সহ 0, আপনার প্রোগ্রামটি উত্পন্ন হতে পারে 44-44

বাহ্যিক মডিউলগুলির ব্যবহার অনুমোদিত নয়। কেবল _.4~ওভারবার অপারেটরের জন্যই অনুমোদিত - এটি কেবলমাত্র 4দশমিক পয়েন্টের পিছনে থাকতে পারে।

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম সমাধানটি জয়লাভ করে।


সম্পাদনা : অতিরিক্ত স্পষ্ট করার জন্য, প্রোগ্রামটি অবশ্যই উপরের ক্রিয়াকলাপগুলির একটি সেটকে আউটপুট করতে হবে ঠিক চারটি 4- এর চেয়ে বেশি, কম নয়। এছাড়াও, .4 = 4/10একটি বৈধ শব্দ, এবং শুধুমাত্র একটি ব্যবহার হিসাবে গণনা করা হয় 4


কোন রাউন্ডিং অপারেশন? :-(
জন ডিভোরাক

@ জনডভোরাক ভুল করেছেন, না, এটি অনুমোদিত হবে না।
অস্থিরতা

গামা এবং কৌতুক উভয় অনুমোদিত?
জন ডিভোরাক

@ জনডভোরাক যা সর্বদা তালিকাবদ্ধ রয়েছে (তবে কেবলমাত্র তালিকাভুক্ত জিনিসগুলি) ব্যবহার করা যেতে পারে।
অস্থিরতা

আমরা কি পূর্ববর্তী ফাংশন (এর !(4)চেয়ে (4)!) হিসাবে ফ্যাকটোরিয়াল আউটপুট দিতে পারি ?
জন ডিভোরাক

উত্তর:


6

গল্ফস্ক্রিপ্ট (129 অক্ষর *)

[4.`2'√4'24'4!'6'Γ4'1'Γ√4'120'ΓΓ4']2/:F{.F=[[44.`]]*\{`{+{'+*-'1/{:^;.[~@[\]{'()'1/*}%^*@@^~\]\}/}:|~2/~\+|;}+F/}%+}3*\{\0==}+?1=

চলমান সময়টি আমার পিসিতে 4 মিনিটের অর্ডার হয়। এর .&পরে তাত্ক্ষণিক স্বতন্ত্রতা ক্রিয়া যুক্ত করে দুটি অক্ষরের ব্যয়ে একটি মাঝারি গতি অর্জন করা যেতে পারে %+

আমি প্রাক কোডেড এক্সপ্রেশন ব্যবহার 1, 2, 4, 6, 24, 120, এবং 44, এবং ব্যবহার করে শুধুমাত্র থেকে বিশ্রাম গড়ে তুলতে +, *এবং -। এইভাবে প্রোগ্রামটিতে আমার কোনও অ-পূর্ণসংখ্যার পাটিগণিত করার দরকার নেই। আমি শুরুতে সহজ প্রাক কোডড মানগুলি রেখে সহজ অভিব্যক্তি পাওয়ার চেষ্টা করেছি।

এই সমস্ত মানগুলির প্রয়োজন , এবং বিয়োগের উভয় দিক ( complex_expression - simple_expressionএবং বিপরীতে) সমর্থন করা প্রয়োজন । এটি এমন কিছু ক্রিয়াকলাপ অন্তর্ভুক্ত করা দরকার যার জন্য প্রথম বন্ধনী প্রয়োজন (বিশেষত, a*(b-c)), তাই আমি নির্বিচারে সমস্ত subexpress বন্ধনী আবদ্ধ করি।

* আমি ইউনিকোড কোড পয়েন্টগুলি গণনা করছি প্রোগ্রামটিকে ইউটিএফ -8 এনকোডড হিসাবে ধরে নিয়েছি, এবং কার্পেটের নীচে ব্রাশ করছি এই সত্যটি যে আপনি যদি দোভাষী চালানোর জন্য রুবির সাম্প্রতিক সংস্করণটি ব্যবহার না করেন তবে এটি এএসসিআইআই অক্ষর হিসাবে সত্যই বিবেচিত হচ্ছে। আপনি যদি এই সম্পর্কে খুব চিন্তিত Gহন তবে গামা এবং vস্কয়ার্টের জন্য ব্যবহার করুন ।

ভাল, কঠোরভাবে আমি হিসাবে এবং হিসাবে 44বিনিময়ে অপসারণ করতে পারে , কিন্তু এটি একটি ভাল বাণিজ্য বন্ধ নয়।1144/471√(Γ√4+(ΓΓ4+Γ√4)!)


7

পাইথন 155 বাইট

h={4:'4',24:'4!',6:'â4',.4:'.4',1:'âû4',4/9.:'.4~'}
f={}
def g(r,s='24',y='4!'):f[eval(s)]=y;[g(r-1,s+o+`k`,y+o+h[k])for k in h for o in'/*-+'if r]
g(3)

প্রথম তিনটি বাইট ( \xEF\xBB\xBF) হ'ল ইউটিএফ -8 বাইট অর্ডার চিহ্ন, যদিও ফাইলটি এএনএসআই ফর্ম্যাটে সংরক্ষণ করা উচিত। ûএবং âহিসাবে interpretted করা হবে না এবং Γযথাক্রমে cp437 এবং cp850 , যা ঠিক কোন উইন্ডোজ বক্স সম্পর্কে কাজ করা উচিত।

রানটাইম আমার কম্পিউটারে প্রায় 0.4 সে।

নমুনা ব্যবহার (ফাইলের নাম four_fours.py):

$ python
>>> from four_fours import f
>>> f[39]
'4!+4!/.4/4'
>>> f[87]
'4!*4-4/.4~'
>>> for i in range(101): print i, f[i]
0 4!+4!-4!-4!
1 4!+4!/4!-4!
2 4!-4!+Γ4-4
3 4!-4!+4-Γ√4
4 4!+4!/Γ4-4!
.
.
.
96 4!+4!+4!+4!
97 4!*4!/Γ4+Γ√4
98 4!*4+Γ4-4
99 4!*4+4-Γ√4
100 4!*4!/Γ4+4

০.১০০ এর জন্য ফলাফল । যেভাবে হ্যাশটি পুনরাবৃত্তি হয় তার কারণে এটি যতবার 4!সম্ভব ব্যবহার করা পছন্দ করে ।

সম্পাদনা করুন: যোগ করে বেশ কয়েকটি বাইট সংরক্ষণ করা হয়েছে Γ√4 = 1, যা কোনও গ্রুপিংয়ের প্রয়োজনীয়তা এবং মুছে ফেলে √4 = 2, যা আর প্রয়োজন ছিল না।


4

জে, 175 161 অক্ষর

   f=.')',~'(',;@((<;._2'+ - * % .4 .4~ g(r(4)) r(4) 4 g(4) 4! ( ) '){~(143402 A.i.9)
      /:~(12,11,0,6$0 4 4)+(9$4 7 7)#:((,@(+/,-/,*/,%/)~)^:2,0.4 4r9 1 2 4 6 24)&i.)

   f 1
(.4+.4)+(.4%r(4))

   f 42
(r(4)+4)+(g(4)*g(4))

   f 100
(r(4)+r(4))+(4*4!)

চেক করা ফর্ম্যাটটি (v op v) op (v op v)কোথায় v={0.4 4/9 1 2 4 6 24}এবং কোথায়op={+ - * /}

পূর্ণ 0..100 ফলাফল


আমি মনে করি না যে .4এই গেমটির জন্য একটি বৈধ সংখ্যা।
জন ডিভোরাক

@JanDvorak এটা - হয়তো, আমি করেছি উচিত এটা পরিষ্কার
উদ্বায়ীতামূলক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.