দুই-শূন্য-এক-পাঁচ ধাঁধা


13

পটভূমি

এই ধাঁধাটি চারটি চার ধাঁধা (নিজেই একটি অতীত প্রশ্নের বিষয় )) এই ধাঁধার মতো, লক্ষ্যটি হ'ল চারটি অঙ্ক এবং নির্দিষ্ট কিছু গাণিতিক অপারেটর ব্যবহার করে বিভিন্ন সম্পূর্ণ সংখ্যার জন্য গাণিতিক এক্সপ্রেশন খুঁজে পাওয়া। এই ক্ষেত্রে, তবে অনুমোদিত অঙ্কগুলি কেবল 2, 0, 1 এবং 5 । প্রতিটি সমাধান এবং সঠিক ক্রমে অবশ্যই একবারে উপস্থিত হতে হবে। আশ্চর্যজনকভাবে পুরো পুরো সংখ্যাটি এভাবে উপস্থাপন করা যায়। সমাধানগুলি প্রথমে হাত দিয়ে সমাধান করার চেষ্টা করতে উত্সাহিত করা হয়, কারণ এটি আশ্চর্যজনকভাবে উপভোগযোগ্য।

বিধি

একক বা একাধিক সংখ্যা থেকে ধ্রুবকগুলি নির্মিত হতে পারে:

  • পূর্ণসংখ্যা: যেমন 2, 0, 15 ইত্যাদি
  • দশমিক: যেমন .2, .01, 1.5। ইত্যাদি 1.5
  • দশমিক পুনরাবৃত্তি : যেমন .2 ~ (= 0.222 ...), .15 ~ (= 0.1555 ...), 20.15 ~~ (= 20.1515 ...)

নিম্নলিখিত unary অপারেশন অনুমোদিত:

  • একত্রী অবহেলা: -x
  • স্কোয়ার রুট: স্কয়ার্ট (এক্স)
  • পূর্ণসংখ্যার ফ্যাক্টরিয়াল: এক্স!

নিম্নলিখিত বাইনারি অপারেশন অনুমোদিত:

  • স্ট্যান্ডার্ড পাটিগণিত অপারেটরগুলি: x + y, xy, x * y এবং x / y
  • নির্বিচারে এক্সপেনশনেশন: x ^ y
  • নির্বিচারে শিকড়: rt [x] (y) (= x'th এর মূল)

কার্য

আপনার প্রোগ্রামটি 0 এবং 100 এর মধ্যে যতটা পূর্ণসংখ্যার পূর্ণ সংখ্যার জন্য এক্সপ্রেশনগুলি মুদ্রণ করবে এবং তারপরে এটি প্রকাশ করেছে তার সংখ্যাটি আউটপুট।

  • সমাধানগুলি অবশ্যই n = [expr] ফর্ম্যাটে মুদ্রণ করতে হবে।
  • এক্সপ্রেশন অবশ্যই প্রতিটি ক্রম 2, 0, 1, 5 সমস্ত অঙ্ক ব্যবহার করা উচিত।
  • এক্সপ্রেশন অবশ্যই উপরে বর্ণিত স্বরলিপি ব্যবহার করে মুদ্রণ করা উচিত। অপ্রয়োজনীয় বন্ধনীগুলি অনুমোদিত তবে প্রয়োজন নেই, যেমনটি শ্বেত স্পেস। অপারেটর অগ্রাধিকারের ক্রমটি হ'ল অ্যানারি অবহেলা, ফ্যাকটোরিয়াল, এক্সফোনেনটিেশন, গুণা / বিভাগ এবং সংযোজন / বিয়োগফল।
  • প্রোগ্রামটির সমস্ত সংখ্যার জন্য সমাধানগুলি ফেরত দেওয়ার দরকার নেই। একটি প্রোগ্রাম যা কেবল 0 আউটপুট করে তাই বৈধ; তবে নীচের স্কোরিং বিভাগটি দেখুন।
  • একটি আধুনিক কম্পিউটারে প্রোগ্রামটি 15 মিনিটেরও কম সময়ে চলতে হবে।

আপনি কোনও প্রোগ্রাম বা ফাংশন লিখতে পারেন। এক্সপ্রেশনগুলি STDOUT (বা নিকটতম বিকল্প) এ মুদ্রিত করা উচিত। এক্সপ্রেশন সংখ্যা STDOUT এ মুদ্রিত বা পূর্ণসংখ্যার হিসাবে ফিরে আসতে পারে। স্ট্যান্ডার্ড কোড গল্ফ বিধিনিষেধগুলি প্রযোজ্য।

উদাহরণ আউটপুট

0=2*0*1*5
10=20*1*.5
42=((2+0!)!+1)!/5!
100=20*1*5
4

স্কোরিং

আপডেট : @ অরলপ স্কোরিং সিস্টেমে একটি ত্রুটি চিহ্নিত করেছে। কীভাবে বা এটি ঠিক করা উচিত তা নিয়ে আলোচনার জন্য http://meta.codegolf.stackexchange.com/questions/5106/way-of-salvaging-two-zero-one-five-p ਬੁেলান-চ্যানেলে দেখুন ।

সমাধানগুলি তাদের উত্পাদিত সংখ্যার দ্বারা প্রথমে এবং তারপরে তাদের কোড দৈর্ঘ্যের দ্বারা বাইটে স্কোর করা হয় । সুতরাং, ৮০ টি ফলাফল তৈরি করে এমন একটি 1000 বাইট প্রোগ্রাম 100 টি বাইট প্রোগ্রামকে পরাজিত করবে যা কেবলমাত্র 79 টি উত্পাদন করে (যদিও পরবর্তীটি সহজেই অনুপস্থিত ফলাফলগুলি অন্তর্ভুক্ত করার জন্য বাড়ানো যেতে পারে)।

যারা একটি অনুপ্রেরণামূলক লক্ষ্য চান, তাদের নীচে নীচের অংশে প্রতিনিধিত্ব করা যেতে পারে এমন ভাবের সংখ্যার উপর একটি নীচে আবদ্ধ। আমি কোনও এন্ট্রি জমা দেওয়ার পরিকল্পনা করি না, তাই কম দিয়ে জেতা সম্ভব!

কমপক্ষে 85 (101 এর মধ্যে), যদিও এটি ভাল হতে পারে।

স্কোরবোর্ড

অতিরিক্ত উত্সাহ হিসাবে, এখানে স্কোর অগ্রগতির সংক্ষিপ্তসার রইল। আপনি যখনই সর্বোচ্চ স্কোরকে পরাজিত করবেন, নিজেকে নির্বিঘ্নে টেবিলের শীর্ষে যুক্ত করুন (বা অন্য কাউকে বলুন)।

  • 0 টি এক্সপ্রেশন, 1 বাইট (পাইথ): বাস্তবায়ন যা কেবল 0 কে আউটপুট করে

.20 একটি অনুমোদিত ধ্রুবক?
লুক

1
@ লুক: হ্যাঁ, যদিও এটি (.2 + 0) হিসাবেও উপস্থাপন করা যেতে পারে তাই এটি প্রকাশ করে না
উরি গ্রান্টা

1
@ অরলপ নোট করুন যে শূন্যের চেয়ে বড় জিরো এবং ভগ্নাংশ কোনও অভিব্যক্তি যোগ করে না: যেমন 015 = 0 + 15 এবং 1.5 = 1 + .5।
উরি গ্রান্ট

1
@ mbomb007 এটি অত্যন্ত জটিল। এখানে আমি একটি দ্রুত ব্যাখ্যা লিখেছি: gist.github.com/orlp/e92b3b7d26ad9b11378e
orlp

2
@ উরিজারফাতী তারপরে ধীরে ধীরে 99 টি স্বতন্ত্র দরকারী সেট রয়েছে: gist.github.com/orlp/eb997e49e41878c76d0a
orlp

উত্তর:


9

85, 00 2400 বাইট

আমি কিছুটা দু: খিত এটি একটি কোড গল্ফ চ্যালেঞ্জ, কারণ আমার মনে হয় যে আমার আগের সমস্ত প্রচেষ্টা বরং অপ্রয়োজনীয় যে আমি এটি পোস্ট করব:

  0 = ((2*0)^15)
  1 = ((2^0)^15)
  2 = (2-(0^15))
  3 = (20*.15)
  4 = (20*(1/5))
  5 = (20-15)
  6 = ((.20+1)*5)
  7 = ((20*.1)+5)
  8 = (2*((0-1)+5))
  9 = ((.20/.1~)*5)
 10 = (20/(1/.5))
 11 = ((((2-0)+1))!+5)
 12 = (20*(.1+.5))
 13 = ((-(2)-0)+15)
 14 = (20-(1+5))
 15 = ((2*0)+15)
 16 = ((2^0)+15)
 17 = ((2-0)+15)
 18 = (20-(1/.5))
 19 = (20-(1^5))
 20 = (20^(1^5))
 21 = (20+(1^5))
 22 = (20+(1/.5))
 23 = (((2-0)/.1~)+5)
 24 = ((20-1)+5)
 25 = ((20^1)+5)
 26 = ((20+1)+5)
 27 = (rt[.2](((0)!+1))-5)
 28 = (2*(-((0)!)+15))
 29 = ((((2+(0)!)+1))!+5)
 30 = ((2-0)*15)
 31 = (20+sqrt((1+(5)!)))
 32 = ((20*.1)^5)
 33 = ((.2^-((0)!))/.15~~)
 34 = (2+(((0)!+1)^5))
 35 = (20+15)
 36 = (20*(1/.5~))
 37 = (rt[.2](((0)!+1))+5)
 38 = ((20-1)/.5)
 39 = (-((2^0))+(sqrt(.1~)*(5)!))
 40 = (20*(1/.5))
 41 = (((.2~^-((0)!))/.1~)+.5)
 42 = ((20+1)/.5)
 43 = (-(2)+(((0)!/.1~)*5))
 44 = (20+((-(1)+5))!)
 45 = (20/(1-.5~))
 46 = ((.2+((0)!/.1~))*5)
 47 = (2+(((0)!/.1~)*5))
 48 = (2*(((0-1)+5))!)
 49 = ((((2+(0)!))!/.1~)-5)
 50 = (((2^0)/.1)*5)
 51 = ((.2+((0)!/.1))*5)
 52 = (2+(((0)!/.1)*5))
 54 = (((2+(0)!)/.1)/.5~)
 55 = ((2+((0)!/.1~))*5)
 56 = (((.2-(0)!)+sqrt(.1~))*-((5)!))
 58 = (-(2)+sqrt((((((0)!/sqrt(.1~)))!)!*5)))
 59 = ((((2+(0)!))!/.1~)+5)
 60 = (20/(.1~^.5))
 62 = (2*(-((0)!)+sqrt(rt[-(.1)](.5))))
 64 = ((2-0)^(1+5))
 65 = ((20/sqrt(.1~))+5)
 66 = ((-(((2+(0)!))!)/.1~)+(5)!)
 67 = (((((2+(0)!))!)!*.1)-5)
 69 = ((2^(((0)!/sqrt(.1~)))!)+5)
 70 = (((.2^-((0)!))/-(.1))+(5)!)
 72 = ((2+(0)!)*((-(1)+5))!)
 75 = ((.2^-((0)!))*15)
 76 = (rt[(-(2)^-((0)!))](.1~)-5)
 77 = (((((2+(0)!))!)!*.1)+5)
 78 = (2*(-((0)!)+(sqrt(.1~)*(5)!)))
 80 = (-(20)*(1-5))
 81 = (201-(5)!)
 82 = (2*((0)!+(sqrt(.1~)*(5)!)))
 84 = (((.2-(0)!)+.1)*-((5)!))
 85 = (((((2+(0)!))!)!*.1~)+5)
 86 = (rt[(-(2)^-((0)!))](.1~)+5)
 88 = (rt[.2]((-((0)!)-1))+(5)!)
 90 = ((20/.1~)*.5)
 93 = (((2+(0)!)/-(.1~))+(5)!)
 95 = ((20-1)*5)
 96 = ((.20-1)*-((5)!))
 98 = (-(20)*(.1-5))
 99 = ((-(20)-1)+(5)!)
100 = (20/(1/5))
85

এখান থেকে এটি কেবল একটি সংক্ষেপণ চ্যালেঞ্জ। আমি পরে প্রতিযোগিতা করব, সম্ভবত আমি করব না। আমার জন্য বেশিরভাগ মজা ছিল সবচেয়ে সূত্রগুলি খুঁজে বের করার চ্যালেঞ্জের মধ্যে।

যারা solver লেখার জন্য লড়াই করছেন তাদের ইঙ্গিত - রানটাইম কোনও সমস্যা হওয়া উচিত নয়। আশাবাদী সমাধান এবং নকলগুলি ছুঁড়ে ফেলার জন্য আপনার যদি আরও অনেক সূত্রের পরীক্ষা করতে হয় তবে আরও ভাল হিউরিস্টিকস দরকার। পাইথনের উপরের রানগুলি ~ 5 সেকেন্ডে আমি উপরের রানগুলি তৈরি করতে লিখেছিলাম।


rt [.1] (-। 5) -0.5 এর 0.1 ম মূল, 0.1 এর -0.5 তম মূল নয়।
উরি গ্রান্টা

এছাড়াও, আমি সন্দেহ করতে শুরু করি যে বিজয়ী সংক্ষিপ্ত পাঠ্য আউটপুট হতে পারে। এটি এড়ানোর জন্য আরও ভাল পদ্ধতির কথা ভাবা উচিত ছিল :-(
উরি গ্রান্টা

@ উরিজারফাতী ওহ, আমি আমার কোডটিতে এটি ঠিক করে দেব এবং আবার রান করব, আমাকে এক সেকেন্ড দিন।
orlp

প্রোগ্রামের আকারের সাথে তুলনায় কত বড় আউটপুট হবে তা আমি গুরুত্ব সহকারে বিবেচনা করেছি। স্বল্প পরিসরে অক্ষর এবং অতিরিক্ত অতিরিক্ত বন্ধনী দেওয়া, আমি অনুমান করছি সমাধানটি আসলে খুব ভালভাবে সংকোচিত হবে।
উরি গ্রান্টা

1
@ mbomb007 আমি এটিকে পরিষ্কার করার জন্য কোনও চেষ্টা করি নি এবং আমি মনে করি বর্তমান অবস্থার কোডটি ভেঙে গেছে - কিছু জিনিসকে অসন্তুষ্ট করার চেষ্টা করুন: gist.github.com/orlp/878da16b5b7c650ebd09
orlp
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.