একটি শব্দ সমীকরণ solver লিখুন [সদৃশ]


17

ভূমিকা

নিম্নলিখিত উদাহরণ বিবেচনা করুন:

  CODE
+ GOLF
——————
 GREAT

এটি এমন একটি সমীকরণ যেখানে প্রতিটি অক্ষর দশমিক অঙ্ক উপস্থাপন করে এবং শব্দগুলি প্রাকৃতিক সংখ্যা উপস্থাপন করে (অনুরূপ বর্ণগুলি একই অঙ্ককে উপস্থাপন করে এবং বিভিন্ন বর্ণগুলি বিভিন্ন অঙ্ক উপস্থাপন করে)। কাজটি হ'ল প্রতিটি অক্ষরকে তার অঙ্কের মানের সাথে মেলে যাতে সমীকরণটি সঠিক হয়। উপরের সমীকরণের জন্য একটি সমাধান:

  9265
+ 1278
——————
 10543

তোমার কাজ

আপনার কাজটি এমন কোনও প্রোগ্রাম বা একটি ফাংশন লিখুন যা উপরের মতো সমীকরণগুলি সমাধান করতে পারে।

ইনপুট

ইনপুটটি নিম্নলিখিত বিন্যাসে একটি স্ট্রিং:

[A-Z]+\+[A-Z]+=[A-Z]+

উদাহরণ:

  1. CODE+GOLF=GREAT
  2. AA+BB=CC

স্পেসগুলি বাদ দেওয়া হয়েছে এবং কেবলমাত্র মূলধন A এবং Z এর মধ্যে অক্ষর ব্যবহার করা হবে (কোনও বিশেষ বা ছোট বর্ণ নেই)।

এই স্ট্রিংটি স্ট্যান্ডার্ড ইনপুট থেকে, কোনও ফাইল থেকে বা কোনও ফাংশন প্যারামিটার হিসাবে পড়া যায়।

আউটপুট

আউটপুট বিন্যাসের জন্য আপনার কাছে নিম্নলিখিত দুটি বিকল্প রয়েছে:

  1. অঙ্কগুলির সাথে মূল সমীকরণটি প্রতিস্থাপিত হয়
  2. অক্ষর এবং তাদের মান তালিকা

যদি একাধিক সমাধান থাকে তবে সেগুলির মধ্যে যে কোনও একটি (তবে কেবল একটি) ফেরত দেওয়া উচিত। যদি কোনও সমাধান না হয় তবে প্রোগ্রামটির একটি খালি স্ট্রিং বা নাল ফিরে পাওয়া উচিত। আউটপুটটি স্ট্রিং হিসাবে ফিরে আসতে পারে, স্ট্যান্ডার্ড আউটপুট বা কোনও ফাইলে লেখা যেতে পারে।

উদাহরণ:

  1. 9265+1278=10543
  2. A=1 B=2 C=3 (আপনি যে কোনও ডিলিমিটার ব্যবহার করতে পারেন)

বিধি

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

আমার 179 টি অক্ষর ব্যবহার করে কিছুটা হ্যাকিশ সমাধান রয়েছে। যদি কিছু পরিষ্কার না হয় তবে দয়া করে আমাকে মন্তব্যগুলিতে জিজ্ঞাসা করুন।


আমি মনে করি অনুকূল উত্তরটি "সবকিছু 0"। আপনি এটি বিশেষভাবে নিষিদ্ধ করতে চাইতে পারেন।
আন্ডারগ্রাউন্ডোমোনাইল

1
আপনি 0 এর অর্থ কি? বিভিন্ন অক্ষরে বিভিন্ন সংখ্যা বোঝাতে হয়।
ডেভিড ফ্র্যাঙ্ক

মিস করেছেন, কিছু নয়)
আন্ডারগ্রাউন্ডোমোনাইল

If there are no solutions, the program should return an empty string or null.অসীম লুপগুলি এখনও আউটপুট কিছুই না ... আমি পারি?
তিতাস

1
এই চ্যালেঞ্জের সমস্ত বিজয়ী উত্তর কার্যকরভাবে হোয়াইটস্পেস স্কোরিং নিয়মকে কাজে লাগিয়ে নেমে আসে, তাই সদৃশ হিসাবে নৈকট্যপূর্ণ ভোটদান।
পিপ্পারি

উত্তর:


11

পাইথন - 48 টি অক্ষর

exec("".join(map(chr,map(len,'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             '.split("    ")))))

হোয়াইটস্পেস নিয়মটি আপত্তিজনকভাবে ব্যবহার করা হচ্ছে।

প্রথমে আমি সিএসিয়ামলাইফ জ্যাকেটের প্রতিটি চরিত্রকে তার ASCII মানটির উত্তরে রূপান্তরিত করেছি (আমি নিজের লেখা লিখতে পারতাম তবে আমি অলস, এবং এটি চূড়ান্ত স্কোরকে প্রভাবিত করতে পারে না)। আমার সমাধানের দীর্ঘ স্ট্রিংটি সেই সমস্ত ASCII মানগুলির প্রত্যেকটির জন্য একটি স্থান এবং ট্যাবগুলি সেগুলি পৃথক করে। ট্যাবগুলিতে বিভক্ত করুন, দৈর্ঘ্যগুলি সন্ধান করুন, অক্ষরে ফিরে রূপান্তর করুন এবং সম্পাদন করুন।

এসই ট্যাবগুলিকে প্রতিটি 4 টি স্পেসে রূপান্তর করে, তাই কপিপাস্টিং কাজ করবে না। আপনাকে শুধু আমাকে বিশ্বাস করতে হবে :)


1
আপনি কি আদর্শের একটি লিঙ্ক, বা আপনার কোডের একটি হেক্স ডাম্প সরবরাহ করতে পারেন?
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
এছাড়াও: Exec একটি শব্দ হয়, তাহলে আপনি প্রথম ও শেষ বন্ধনী সরিয়ে 2 অক্ষর সংরক্ষণ করতে পারিনি
ɐɔıʇǝɥʇuʎs

4

রুবি 2.0, 122 টি অক্ষর

ব্রুট ফোর্স বদল + ইওল! এটি এখনও নাল / খালি স্ট্রিং ফেরার মানদণ্ড পূরণ করে না যখন কোনও সমাধান নেই; এটি কেবল অসীমভাবে লুপ করে। যদি এটি million 300 মিলিয়ন পুনরাবৃত্তির পরে কোনও ফলাফল খুঁজে না পায় তবে তা শূন্য হবে। খুব কাছাকাছি?

f=->s{d=*0..9
d.shuffle!&&$.+=1until$.>9**9||z=eval((r=$_.tr(s.scan(/\w/).uniq*'',d*'')).gsub(/\b0/,'').sub ?=,'==')
z&&r}

এটি ইনপুটটিতে সমস্ত অনন্য অক্ষর সন্ধান করে, তারপরে বারবার 0-9 অঙ্কগুলি পরিবর্তন করে এবং অক্ষরগুলির সাথে মিলিয়ে দেওয়ার চেষ্টা করে যতক্ষণ না এটি কাজ করে এমন একটি কনফিগারেশন না খুঁজে পাওয়া যায়।

কোডটি একটি ফাংশন হিসাবে উপস্থাপিত হয় fযা উপরের আউটপুট বিকল্প 1 এর মতো প্রতিস্থাপিত সংখ্যাগুলির সাথে একটি স্ট্রিং প্রদান করে। ব্যবহারের উদাহরণ:

puts f["AA+BB=CC"]
 #=> 22+44=66
puts f["CODE+GOLF=GREAT"]
 #=> 8673+0642=09315

CODE+GOLF=GREATআমার মেশিনে উদাহরণস্বরূপ চলমান সময়টি তাত্ক্ষণিক থেকে প্রায় 6 সেকেন্ডের মধ্যে পরিবর্তিত হয় - আপনি কীভাবে ভাগ্য বদলের উপর নির্ভর করেন তার উপর নির্ভর করে!

আমি gsub(/\b0/,'')নেতৃস্থানীয় শূন্যগুলি অপসারণ করার জন্য বিটটির সাথে বিশেষত অসন্তুষ্ট তবে এটি কেবলমাত্র আমি কেবলমাত্র evalসংখ্যাটিকে অক্টাল ইনট হিসাবে ব্যাখ্যা করা থেকে বিরত রাখতে ভাবতে পারি ।

( বোনাস : যেহেতু এটি ওয়াল ব্যবহার করে, এটি কেবল সংযোজন নয়, নির্বিচারে রুবি এক্সপ্রেশনগুলির জন্য কাজ করে!)


আমি এটি পড়ার সময় আমারও একই ধারণা ছিল তবে আমি of 170 ডলার কোড পেয়েছি, তাই খুব ভাল। 0..9 দশটি সংখ্যা, সুতরাং সীমা 10 ** 10 হওয়া উচিত নয়? আপনি সম্ভাব্য ম্যাপিংগুলিকে লুপ করতে অ্যারে # পারমিটেশন ব্যবহার করতে পারেন তবে কোডটি আরও দীর্ঘায়িত হতে পারে।
ব্লুঞ্জরঞ্জ

@ ব্লুটোরেঞ্জ আমি কেবল 9 ** 9 টি বেছে নিয়েছি কারণ এটি কয়েকটি সংখ্যক অক্ষর দিয়ে আপনি লিখতে পারেন এমন একটি বড় সংখ্যা ছিল। আমার মনে হয় যে কোনও যুক্তিসঙ্গত পরীক্ষার ক্ষেত্রে এটি যথেষ্ট পরিমাণে হওয়া উচিত! আমি এর উপর ভিত্তি করে কোনও সংস্করণ চেষ্টা করি নি permutation, তবে আপনি যেমন বলেছিলেন, আমি প্রাথমিকভাবে কোড দৈর্ঘ্যের সাথে উদ্বিগ্ন ছিলাম।
পল প্রেসিডেজ

4

লাইভস্ক্রিপ্ট (179 অক্ষর)

এটিতে নির্বিচারে এবং অপেক্ষাকৃত দ্রুত চলমান সময় রয়েছে এবং অন্যান্য অপারেটরগুলির সাথেও (+, -, *) কাজ করে।

f=(s)->                     # define function that takes parameter s
  c=s.replace /[^A-Z]/g ''  # remove all the non-letters
  if c                      # if any letters remain
    for i from 0 to 9       # loop from 0 to 9
       if s.indexOf(i)<0&&a=f s.split(c.0).join i  # if i is not present in the number, replace the first letter with i and call the function recursively
         return a           # if there is a solution, return it
  else                      # if there are no letters left
    if eval s.replace(/(^|\D)0+(\d)/g,'$1$2').replace \= \==  # if the expression is correct (we need to remove leading 0, because javascript interprets numbers with leading 0 as octal)
       return s  # return solution



f("CODE+GOLF=GREAT")

2

পাইথন, 256 213 অক্ষর

ভয়াবহ চলমান সময়, আরও উন্নত করার চেষ্টা করবে:

q='='
e=input()
v=set(e)-set([q,'+'])
for x in __import__('itertools').permutations(range(10),len(v)):
    t=e
    for l,n in zip(v,x):t=t.replace(l,str(n))
    try: 
        if eval(t.replace(q,q*2)):print(t);break
    except:pass

2

জাভাস্ক্রিপ্ট 138

for(s=prompt(p='1');eval(p.replace('=','!='));)for(p=s,i=64;i++<90;)p=p.replace(new RegExp(String.fromCharCode(i),'g'),10*Math.random()|0)

র্যান্ডম ব্রুটফোর্স।
কিছুক্ষণ সময় নিতে পারে (আমার সেরা শটটি CODE+GOLF=GREAT3 সেকেন্ডের, আমার নিকৃষ্টতম 3 মিনিট)।
একটি সাধারণ মত প্রকাশের মাধ্যমে এটি চেষ্টা করুনA+B=C


2

হাস্কেল, 222

import Data.List
z=(\(b,(_:c))->b:z c).span Data.Char.isUpper
j(Just g)=g
main=interact$(\d@[a,b,c]->show$take 1[e|e<-map(zip$nub$d>>=id)$permutations['0'..'9'],(\f->f a+f b==(f c::Int))(read.map(j.(`lookup`e)))]).take 3.z

পাশবিক বল. এটি খুঁজে না পাওয়া বা এটির সবগুলি ব্যবহার শেষ করার পরেও প্রতিটি সম্ভাব্য মিলের চেষ্টা করে। আমি আউটপুট নিয়ম প্রসারিত করেছি: [[('C','3'),('O','8'),('D','6'),('E','7'),('G','0'),('L','5'),('F','2'),('R','4'),('A','1'),('T','9')]]সমাধানের জন্য এমন কিছু মুদ্রণ করে এবং যদি কিছু না থাকে তবে মুদ্রণ করে []। আমার যদি এটি পরিবর্তন করতে হয় তবে আমাকে জানান।


আমি মনে করি, এই আউটপুট গ্রহণযোগ্য।
ডেভিড ফ্র্যাঙ্ক

2

সিজোম - 17

"





























































































































































































































































































































    ""  
"f#3b127b:c~

মোট 975 টি অক্ষর, তবে এর মধ্যে 960 টি 2 টি অনুচ্ছেদে সাদা স্থান রয়েছে, সুতরাং যারা 2 টি অক্ষর হিসাবে গণনা করা হয় এবং অন্য 15
টির সাথে একত্রে আমরা 17 পাই 9975 দেখতে অনেকটা মনে হতে পারে তবে নোট করুন যে আন্ডারগ্রাউন্ডোমোরাইলের অজগরটির দ্রবণটিতে 18862 টি অক্ষর রয়েছে, তারা 'শুধু একটি এক লাইনে :)

আপনি এটি সংক্ষিপ্ত শব্দের জন্য http://cjam.aditsu.net/ এ চালাতে পারেন , তবে আপনার সম্ভবত জাভা ইন্টারপ্রেটারটি দীর্ঘতর শব্দগুলির জন্য ব্যবহার করা উচিত। আমার ল্যাপটপে জাভা সহ, SEND+MORE=MONEY30-40 সেকেন্ড এবং CODE+GOLF=GREATপ্রায় 3 মিনিটে চলে। এটি 0 দিয়ে শুরু নম্বরগুলি গ্রহণ করে না (কারণ এটি দুর্দান্ত নয়)।

এখানে একটি প্রোগ্রাম যা উপরের প্রোগ্রামটি উত্পন্ন করে (স্ট্যাকএক্সচেঞ্জ সঠিকভাবে হোয়াইট স্পেস না দেখায় তাও সহায়তা করে):

"{L__&=}:U;
{L!!{L))_9>{;:L;I}{+:L;}?}*}:I;
{{U!_{I}*}g}:M;
{L,N<L,g&}:K;
{I{K{L0+:L;}*MK}g}:G;
{{C#L=}%si}:R;
{XRYR+ZR=PRAb0#0<&}:F;
l'+/~'=/~:Z;:Y;:X;
[X0=Y0=Z0=]:P;
XYZ++_&:C,:NB<{0a:L;{F0{GL}?}g}*
L{XR'+YR'=ZR}{L}?"
127b3b[32 9 A]:cf='"\'"_32c9cAc"\"f#3b127b:c~"

প্রথম 11 টি লাইনগুলিতে একটি স্ট্রিংয়ে মূল প্রোগ্রামটি (আসলেই গল্ফড নয়) থাকে এবং শেষ লাইনটি রূপান্তর করে এবং ডিকোডিং অংশ যুক্ত করে।


0

পাওয়ারশেল, 137 বাইট

লাইভস্ক্রিপ্ট পোর্ট

$f={param($s)if($c=$s-replace'[^A-Z]'){0..9|?{$s-notmatch$_}|%{&$f ($s-replace$c[0],$_)}|Select -f 1}elseif($s-replace'=','-eq'|iex){$s}}

অসম্পূর্ণ পরীক্ষা স্ক্রিপ্ট:

$f={

param($s)                           # parameter string
$c=$s-replace'[^A-Z]'               # remove all the non-letters
if($c){                             # if any letters remain
    0..9|?{                         # loop from 0 to 9
        $s-notmatch$_               # if $s is not contains current number
    }|%{
        &$f ($s-replace$c[0],$_)    # replace the first letter with current number and call the function recursively
    }|Select -f 1                   # seelct first non-null value (break if found)
}
elseif($s-replace'=','-eq'|iex){    # else if evaluated value if the expression is $true
    $s                              # return $s as solution
}

}

&$f "AA+BB=CC"
&$f "A+AB=A"            # empty because it has no solution
&$f "CODE+GOLF=GREAT"

আউটপুট:

11+22=33
2846+0851=03697

0

পিএইচপি, 118 113 বাইট

for(;;)eval(strtr($argn,"=".$w=substr(count_chars($argn,3),2),"-".$n=str_shuffle(1234567890))."||die('$w
$n');");

চিঠিগুলির নীচে অঙ্কগুলি মুদ্রণ করে প্রোগ্রামটি প্রস্থান করে; অবিশ্বাস্য হলে অসীম লুপগুলি। পাইপ হিসাবে চালান -nr

ভাঙ্গন

for(;;)
    eval(                               # 6. evaluate
        strtr($argn,                    # 4. translate letters to digits, "=" to "-"
            "=".$w=substr(              # 2. remove non-letters
                count_chars($argn,3)    # 1. get characters used in the argument
                ,2),
            "-".$n=str_shuffle(1234567890)  # 3. shuffle digits
        )."||die('$w\n$n');"            # 5. if falsy (`A+B-C==0`), print translation and exit
    )
;

0

পিএইচপি, 145 বাইট

function f($s){for(;$i<10*preg_match("/[A-Z]/",$s,$m);)strpos(_.$s,++$i+47)||f(strtr($s,$m[0],$i-1));$i||eval(strtr($s,"=","-")."||die('$s');");}

পুনরাবৃত্তি ফাংশন, মুদ্রণ সমাধান সমীকরণ এবং প্রস্থান প্রোগ্রাম; NULLঅবিশ্বাস্য হলে ফিরে আসে ।

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

ভাঙ্গন

function f($s)
{
    for(;
        $i<10                   # loop $i from 0 to 9
        *preg_match("/[A-Z]/",$s,$m)    # find a letter; if not found: $i<10*0 == falsy
        ;
    )
        strpos(_.$s,++$i+47)            # find $i in string
        ||f(strtr($s,$m[0],$i-1));      # if not found, replace letter with $i, recurse
    $i||                        # no letter found ($i is unset):
        eval(                   # evaluate:
            strtr($s,"=","-")       # replace "=" with "-"
            ."||die('$s');"         # if falsy (A+B-C==0), print equation, exit program
        );
    # else implicitly return NULL
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.