একটি এক্সপ্রেশন, অনেক মান


26

আমাদের পরিচিত গাণিতিক চিহ্নগুলি ব্যবহার করে: +, এক্স, প্রথম বন্ধনী এবং যে কোনও যুক্তিযুক্ত সংখ্যা, এমন অভিব্যক্তি তৈরি করা সহজ যা কিছু পছন্দসই সংখ্যার সাথে মূল্যায়ন করে। উদাহরণস্বরূপ: 1+(2x3)=7, (1+2)+(3x6.5)=22.5এবং তাই। যথেষ্ট বিরক্তিকর।

এই প্রতিদ্বন্দ্বিতায়, আমরা একটি নতুন অপারেটর ব্যবহার করব: ±±একটি এক্সপ্রেশন ব্যবহার এর অর্থ আপনার ±দ্বারা +বা -সমস্ত সম্ভাব্য উপায়ে প্রতিস্থাপনের মাধ্যমে অভিব্যক্তিটি মূল্যায়ন করা এবং সমস্ত সম্ভাব্য মানগুলির সেটটি ফিরিয়ে দেওয়া উচিত। উদাহরণ স্বরূপ:

  • 1±2±3 = {-4,0,2,6}কারণ 1±2±3কোন হতে পারে 1+2+3, 1+2-3, 1-2+3এবং 1-2-3এবং তাদের মান 6,0,2,-4যথাক্রমে।
  • (±2)x(2±3) = {-10,-2,2,10} একই কারণে

এখন, যেমন দেখা যাচ্ছে যে, স্বতন্ত্র বাস্তব সংখ্যার কোনো সেট দেওয়া, এটা সম্ভব সঙ্গে একটি অভিব্যক্তি তৈরি করতে এর +, x, (, ), ±, এবং রিয়েল নম্বর যে প্রদত্ত সারি মূল্যায়ন করে।

কার্য

আপনার টাস্ক আপনার পছন্দের একটি ভাষা, যে একটি ক্রম (তালিকা / অ্যারের / কোন সুবিধাজনক বিন্যাস) এর সময় লাগে একটি প্রোগ্রাম বা ফাংশন লিখতে হয় পূর্ণসংখ্যার (একটি স্ট্রিং হিসাবে) এবং একটি অভিব্যক্তি আউটপুট গঠিত +, x, (, ), ±, এবং মূলদ সংখ্যার যা প্রদত্ত সংখ্যাগুলির সেটকে মূল্যায়ন করে।

  • মনে রাখবেন যে সঠিক চরিত্রটি ±কোনও ব্যাপার নয়; আপনি যতক্ষণ না অন্য চরিত্রটি ব্যবহার করছেন ততক্ষণ আপনি নিজের পছন্দ মতো অন্য চরিত্রটি ব্যবহার করতে পারেন। তবে আপনাকে অবশ্যই উল্লেখ করতে হবে যে আপনি আপনার জমা দেওয়ার ক্ষেত্রে কোন চরিত্রটি ব্যবহার করছেন।
  • ইনপুটটি ব্যবহৃত যৌক্তিক সংখ্যার দশমিক আনুমানিক (যুক্তিসঙ্গত নির্ভুলতা অবধি) সমন্বিত থাকতে পারে।
  • ইনপুট এবং আউটপুট মানক যে কোনও উপায়ে নেওয়া যেতে পারে।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • আপনি ধরে নিতে পারেন প্রদত্ত পূর্ণসংখ্যা পৃথক হবে এবং ক্রমবর্ধমান ক্রমে সরবরাহ করা হবে।
  • আউটপুটে স্পেস এবং নিউলাইনগুলি থাকতে পারে।

বিজয়ী মানদণ্ড

এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড।

উদাহরণ

ইনপুট | সম্ভাব্য আউটপুট
------------- + + -----------------------------
[1,2,3] | 2 ± 0.5 ± 0.5                   
[-7, -3,1,21] | (1 ± 2) এক্স (3 ± 4)

টাউন টুর্নামেন্ট, 2015 এর পতনের একটি প্রশ্ন থেকে আইডিয়া নেওয়া হয়েছে ।


5
পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম চ্যালেঞ্জ! আমি মনে করি এটি আরও উত্তর আকর্ষণ করবে যদি এটি অন্যভাবে হয় (অভিব্যক্তিটি দেওয়া সেটটি খুঁজে বের করুন) কারণ মনে হয় এটি বেশ জটিল চ্যালেঞ্জ। তবুও ভাল চ্যালেঞ্জ!
হাইপারনিউট্রিনো

আবার স্বাগত জানাই! @ হাইপারনিউট্রিনোতে যোগ করার সাথে সাথে সম্ভবত কয়েকটি সেটগুলির একাধিক সমাধান হবে, যা কোনও সমস্যা হতে পারে, যখন সিদ্ধান্ত নেওয়ার কারণটি সংক্ষিপ্ততা না থাকে তবে কোন প্রশ্নটি "সেরা" তা সিদ্ধান্ত নেওয়ার সময়
ডেভিড আর্কিবাল্ড

@ হাইপারনিউটারিনো ধন্যবাদ! আমি এটিকে কিছুটা শক্ত হয়ে উঠতে পেরেছি, তবে আমি এখানে গল্ফারদের উচ্চতর ক্ষমতায় বিশ্বাস করি; আসুন দেখুন এটি কীভাবে সক্রিয় হয়। :)
আনকোগানিত

3
হ্যাঁ। এই সাইটের কিছু গল্ফারদের আশ্চর্যজনক পরাশক্তি রয়েছে এবং আমরা সন্দেহ করি যে কেউ কেউ গল্ফ বট করছে> _>: ডি
হাইপারনিট্রিনো

@ ডেভিডআর্চিবাল্ড হ্যাঁ, উদ্দিষ্ট আউটপুট হ'ল কোনও সমাধান যা কাজ করে।
আনকোগানিত

উত্তর:


11

পাইথন 2 , 56 বাইট

f=lambda h,*t:t and"(.5?.5)*(%s+%%s)+"%f(*t)%-h+`h`or`h`

এটি অনলাইন চেষ্টা করুন!

এর ?অর্থ দাঁড়ায় ±। ব্যবহারের উদাহরণ:

f(-3,5,20) ->
(.5?.5)*((.5?.5)*(20+-5)+5+3)+-3

ধারণাটি হ'ল আমরা একটি অভিব্যক্তি নিতে পারি Eএবং hএর মানগুলির সেটটিতে একটি নতুন মান সংযুক্ত করতে পারি (.5±.5)*(E+-h)+h


কেন +-h, এবং শুধু না -h? অর্থাৎ কেন না করতে +একটি -এবং অপসারণ -প্রোগ্রামে যে বর্তমানে?
isaacg

1
@ আইসাকগ অনুমানটি -এক্সপ্রেশনটিতে কোনও অপারেটরের জন্য অনুমতি দেয় না ।
xnor


5

হাস্কেল , 58 বাইট

ব্যবহার #জন্য ±, যেমন এক কম বাইট আছে।

f পূর্ণসংখ্যার একটি তালিকা নেয় এবং একটি স্ট্রিং প্রদান করে।

f[x]=show x
f(x:r)=show x++"+(.5#.5)x("++f((-x+)<$>r)++")"

ফলাফলটি সেই ফর্মের n+(.5#.5)x(rest), যেখানে nতালিকার প্রথম উপাদানটি এবং একে অপরের থেকে বিয়োগযুক্ত restঅন্যান্যদের প্রতিনিধিত্ব n

এটি অনলাইন চেষ্টা করুন!


5

জেলি , 29 বাইট

“(¤)”j.⁾+×j;”(
I;@Ḣj¢;”)ẋ⁸L¤¤

মুদ্রণ ভি + (০.০-০.৫) × (আমি + (০.০-০.৫) × ((আমি + (০.০-০.৫) × (... (আমি এন ) ...))) যেখানে ভি প্রথম স্থান ইনপুট অ্যারে এবং i n হ'ল ইনপুট অ্যারের উপাদানগুলির মধ্যে n বর্ধিত পার্থক্য।

এটি অনলাইন চেষ্টা করুন!

কিভাবে?

“(¤)”j.⁾+×j;”( - Link 1, adjoining list: no input
“(¤)”          - literal     ['(','¤',')']
      .        - literal     0.5
     j         - join        ['(',0.5,'¤',0.5,')']
       ⁾+×     - literal     ['+','×']
          j    - join        ['+',['(',0.5,'¤',0.5,')'],'×']
            ”( - literal     '('
           ;   - concatenate ['+',['(',0.5,'¤',0.5,')'],'×','(']

I;@Ḣj¢;”)ẋ⁸L¤¤ - Main link: list a               e.g. [-1,5,2]
I              - incremental differences(a)           [6,-3]
   Ḣ           - head(a)                              [-1]
 ;@            - concatenate (rev @rgs)               [-1,6,-3]
     ¢         - last link (1) as a nilad             ['+',['(',0.5,'¤',0.5,')'],'×','(']
    j          - join                                 [-1,['+',['(',0.5,'¤',0.5,')'],'×','('],6,['+',['(',0.5,'¤',0.5,')'],'×','('],-3]
             ¤ - nilad followed by link(s) as a nilad
            ¤  -     nilad followed by link(s) as a nilad
          ⁸    -         link's left argument, a
           L   -         length                       3
       ”)      -     literal ')'
         ẋ     -     repeat                           [')',')',')']
      ;        - concatenate                          [-1,['+',['(',0.5,'¤',0.5,')'],'×','('],6,['+',['(',0.5,'¤',0.5,')'],'×','('],-3,')',')',')']
               - implicit print                       -1+(0.5¤0.5)×(6+(0.5¤0.5)×(-3))

4

05 এ বি 1 ই , 25 বাইট

0¸«¥X;D"+(ÿ±ÿ)*("ý¹g<')×J

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

0¸«                        # prepend a 0 to input list
   ¥                       # calculate delta's
    X;D                    # push 0.5 twice
       "+(ÿ±ÿ)*("          # push this string and interpolate 0.5 where "ÿ" is
                 ý         # merge the list of delta's with this string as a separator
                  ¹g<')×J  # add the closing parenthesis

ডান দিক থেকে অভিব্যক্তি তৈরি করা দুর্ভাগ্যক্রমে একই বাইট গণনা সহ শেষ হয়
0¸«¥¤s¨RvX;Dy"ÿ+(ÿ±ÿ)*(ÿ)। সেটআপের জন্য ব্যবহৃত 8 টি বাইট এখানে বড় অপচয় waste



2

জাভাস্ক্রিপ্ট (ES6), 56 বাইট

f=([v,...a],x=v)=>x?x+`+(.5@.5)*(${f(a,a[0]-v)})`:0

@ জোনাথন অ্যালান এর সূত্রের ভিত্তিতে। @জন্য দাঁড়িয়েছে ±

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