শুধু চারটি বাউন্ডার ধাঁধা নয়


11

চারটি চৌম্বক ধাঁধার এই রূপটিতে আপনার x x'sসংখ্যাটি (এবং অন্য কোনও সংখ্যা নয়) এবং প্রতিটি সংখ্যাকে 0 থেকে 100 পর্যন্ত পৌঁছানোর জন্য একটি সংজ্ঞায়িত ক্রিয়াকলাপ x = 4ব্যবহার করা উচিত then তবে আপনি যদি চারটি পর্যন্ত ব্যবহার করতে পারেন 4sএবং এই প্রশ্নটি ক্লাসিক চারটি চারে পরিণত হয় ধাঁধা (আপনি ঠিক চারটি ব্যবহার না করে চারটি পর্যন্ত ব্যবহার করতে পারেন ব্যতীত) uzzle আমরা ধরে নিই 1 < x <= 9

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

  • সংযোজন ( +), বিয়োগ ( -), গুণ ( *), বিভাগ ( /)। নোট করুন এটি আসল বিভাগ, যাতে 5/2 = 2.5
  • ক্ষুদ্রাকর্ষণ (উদাহরণস্বরূপ 4 ^ 4) এটি হাত দ্বারা সাধারণভাবে লেখা থাকলে কোনও অতিরিক্ত চিহ্ন জড়িত না।
  • আপনি সম্মতি দিয়ে নতুন পূর্ণসংখ্যার তৈরি করতে পারেন xs। যেমন আপনি পূর্ণসংখ্যা তৈরি করতে পারেন 4, 44, 444, 4444

অপারেটরদের মূল্যায়নের ক্রম নিয়ন্ত্রণ করার জন্য আপনি গ্রুপ নম্বরগুলিতে প্রথম বন্ধনী ব্যবহার করতে পারেন। আপনি উদাহরণস্বরূপ সংক্ষিপ্তকরণের সাথে প্রথম বন্ধনীগুলি একত্রিত করতে পারবেন না (4/4)(4/4) = (1)(1) = 11

অন্য কোনও চিহ্ন ব্যবহার করা যাবে না এবং অপারেশনগুলির মানক ক্রম প্রযোজ্য।

তোমার প্রোগ্রাম উৎপন্ন করা উচিত, একটি প্রদত্ত xসংজ্ঞায়িত সীমার মধ্যে এবং একটি nমধ্যে 0এবং 100সমেত, যে ইনপুট জন্য একটি সঠিক সমাধান যদি উপস্থিত থাকে। অন্যথায় আপনার কোডকে এমন কোনও সমাধানের অস্তিত্ব প্রমাণ করতে কোনও কিছু আউটপুট করতে হবে।

আপনি এর কোনো ইনপুট মানের জন্য আপনার মেশিনে সমাপ্তির আপনার জমা চালাতে পারবেন হওয়া আবশ্যক xএবং nঅনুমতি সীমার মধ্যে। এটি কোড গল্ফ, তাই সংক্ষিপ্ততম সমাধানটি জয়লাভ করে।

এই পুরানো সম্পর্কিত প্রশ্নটি আরও বেশি অপারেটর (এবং কেবল 4s) ব্যবহার করে এবং তাই 0 থেকে 100 পর্যন্ত সমস্ত সংখ্যা সমাধানযোগ্য যা এই চ্যালেঞ্জের জন্য সত্য হবে না।

ইনপুট এবং আউটপুট

আপনার কোডটি দুটি পূর্ণসংখ্যার xএবং nইনপুট হিসাবে নেয় এবং যে কোনও মানব পাঠযোগ্য বিন্যাসে আপনি সুবিধাজনক বলে কোনও সমাধান (বা কোনও সমাধান নেই এমন ইঙ্গিত) আউটপুট করা উচিত। ইনপুটটির 4 6অর্থ "চার 4s অবধি ব্যবহার করে 6 নম্বর করুন" উদাহরণস্বরূপ। সুতরাং ইনপুট 4 6হলে আউটপুট হতে পারে (4+4)/4+4



2
প্যারেনসকে কী একত্রে যুক্ত করা যেতে পারে? যেমন `(4/4) (4/4) = (1) (1) = 11?
ডিজিটাল ট্রমা 15'18

1
প্রথম বন্ধনী যুক্ত করা (এবং প্রথম বন্ধনী + সম্মিলনকে অস্বীকার করা) এটি উল্লেখযোগ্যভাবে আরও শক্ত করে তোলে
ড্রাকোনিস

2
Exponentiation অপারেটর এবং বার অঙ্কের আইএমও কিছু অ তুচ্ছ উপর জুড়বেন না ব্যবহার করা হয় সঠিক সংখ্যা নিয়ে একটি বাইরের লুপ যোগ করার পদ্ধতি codegolf.stackexchange.com/q/82884/194
পিটার টেলর

2
@ পিটারটেলর প্যারেন্টেজেসগুলি বেশ কিছুটা পার্থক্য নিয়েছে বলে মনে হচ্ছে। আমি পারলে পুনরায় খুলতে ভোট দেব।
ফেলিপা

উত্তর:


4

পাইথন 3 , 265 বাইট

def f(x,n):
 for e in g(x,x-(x>7)):
  try:
   if eval(e)==n:return e
  except:1
g=lambda x,d:{str(x)*-~i for i in range(d)}|{s%(a,b)for a in g(x,d-1)for b in g(x,d-a.count(str(x)))for s in'%s**%s (%s/%s) (%s+%s) (%s-%s) %s*%s %s/%s'.split()['**'in a+b:]}if d else{}

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

ইঞ্জিনিয়ার টোস্ট দ্বারা সংযুক্ত রেফারেন্সে সমস্ত সংখ্যার জন্য কাজ করে।

আপ চালায় x=8Tio উপর, x=9আমার মেশিনে কয়েক মিনিট সময় লাগে।


ফাংশন gসর্বাধিক সঙ্গে সব সমাহারের একটি সেট ফেরৎ xসংখ্যা xএর। fতারপরে লুপ করে এবং প্রথমটি প্রদান করে যা সংখ্যায় মূল্যায়ন করে n

প্রত্যেকটির জন্য আমি যে সম্ভাব্য মান খুঁজে পেয়েছি তা হ'ল x:

x  possible numbers
------
2  5
3  17
4  35
5  56
6  83
7  101
8  101
9  101

সকল সংখ্যার উপরে থেকে উত্পন্ন করা যেতে পারে (a+b), (a-b), (a+b), a*b, a/b, (a/b), এবং a^ba+bএবং a-bআরও নম্বর দেবেন না।

a^b এছাড়াও শুধুমাত্র একবার ব্যবহৃত হয়, অন্যথায় বিশাল সংখ্যা তৈরি করা হয় (এটি উপরোক্ত রেফারেন্স ডকুমেন্টেও যাচাই করা হয়)


একটি বিকল্প সংস্করণ যা শর্ট সার্কিটগুলি এর সমাধান খুঁজে পাওয়ার সাথে সাথেই (গল্ফযুক্ত নয়):

এটি যত দ্রুত x=7..9সমস্ত সংখ্যা তৈরি করা যায় তত দ্রুত ।

পাইথন 3 , 338 289 বাইট

def f(x,n,d=-1):
 d=[d,x][d<0];X=str(x);r=set()
 for E in{X*-~i for i in range(d)}|{s%(a,b)for a in[0]*d and f(x,n,d-1)for b in f(x,n,d-a.count(X))for s in'%s**%s (%s/%s) (%s+%s) (%s-%s) %s*%s %s/%s'.split()['**'in a+b:]}:
  try:e=eval(E)
  except:e=-1
  if e==n:exit(E)
  r|={E}
 return r

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


এটি খুব সুন্দর উত্তর! আমি ভেবেছিলাম আপনি সর্বদা এক্স (এক্স এর বিপরীতে) সঠিকভাবে (4/4**(4-4))ব্যবহার করছেন 4তবে এটি প্রমাণিত হয় যে এটি ক্ষেত্রে নয়।
আনুশ

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