সাহায্য করুন! আমার ক্যালকুলেটর ত্রুটি!


28

ভূমিকা

আমার ক্যালকুলেটরটি অদ্ভুত আচরণ করছে। কখনও কখনও যখন আমি এটি টাইপ করি তখন 8এটি প্রদর্শিত হয় 2। এবং কখনও কখনও যখন আমি এটি টাইপ করি তখন 6এটি প্রদর্শিত হয় +। কিছু বোতাম মিশ্রিত হয়!
কেউ কি আমাকে নির্ধারণ করতে সহায়তা করতে পারে?

চ্যালেঞ্জ:

ইনপুট: সঠিক ফলাফল সহ ভুল সমীকরণের তালিকা ।

আউটপুট: অদলবদল করা দুটি বোতাম।

উদাহরণস্বরূপ:
একটি ইনপুট হতে পারে:

123    = 3
8423   = 252
4+4    = 8
4*7-10 = 417
9/3    = 3
42-9   = -36

যার জন্য প্রত্যাশিত ফলাফলগুলি: 2এবং *

কেন? কারণ আমরা 2 এবং * এর অদলবদল করলে সমস্ত সমীকরণগুলি সঠিক হবে:

1*3    = 3
84*3   = 252
4+4    = 8
427-10 = 417
9/3    = 3
4*-9   = -36

চ্যালেঞ্জ বিধি:

  • ইনপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে থাকতে পারে। স্থান সীমিত সহ একটি একক স্ট্রিং হতে পারে; একটি স্ট্রিং-তালিকা বা-অ্যারে; সমীকরণ সহ একটি তালিকা এবং সঠিক ফলাফল সহ অন্য একটি তালিকা। আপনার কল আপনি কোন ইনপুট ফর্ম্যাটটি ব্যবহার করেছেন দয়া করে তা জানান!
    দ্রষ্টব্য: এর অর্থ এইও হয় যে আপনি পরীক্ষার কেস -5--15হিসাবে -5- -15বা ইনপুট করার অনুমতি পেয়েছেন -5 - -15। যাইহোক, ফলাফল হিসাবে সংখ্যার --হয় হয় ফাঁকা ছাড়াই বা প্রতিটি সংখ্যার মধ্যে একটি ফাঁক দিয়ে ইনপুট করা উচিত। সুতরাং পরীক্ষার 9119কেসটির মতো 9119বা ইনপুট করা যায় 9 1 1 9(কারণ 91 19অনুমোদিত নয় কারণ আপনি অনুসন্ধানের জন্য স্থান দ্বারা পরিচালিত হতে পারেন - -)। সুতরাং স্পেসগুলি (কিছুটা) alচ্ছিক এবং অনুমোদিত।
  • আউটপুট ফর্ম্যাটটি যে কোনও যুক্তিসঙ্গত বিন্যাসেও হতে পারে। দুটি চরিত্র হতে পারে; একক দ্বি-চরিত্রের স্ট্রিং; দুটি অক্ষর সমন্বিত একটি স্ট্রিং-তালিকা। আপনার কল আবার, দয়া করে আপনি কোন আউটপুট ফর্ম্যাটটি ব্যবহার করেছেন তা জানান!
  • আপনাকে মানচিত্রটিতে যে কোনও পৃথক 14 আউটপুট ব্যবহার করার অনুমতি দেওয়া হয়েছে 0123456789+-*/। সুতরাং আপনি চাইলে দুটি স্বতন্ত্র পূর্ণসংখ্যার আউটপুট দেওয়ারও অনুমতি দেওয়া হয় (আবার, দয়া করে আপনার ব্যবহৃত ম্যাপিং নির্দিষ্ট করুন, যদি থাকে) if
  • আপনাকে কেবল পূর্ণসংখ্যার সমর্থন করতে হবে। সুতরাং 1/8=0.125বা এর মতো কোনও পরীক্ষার মামলা হবে না 1/8=0
  • গাণিতিক অপারেশনগুলিতে আপনাকে সমর্থন করতে হবে: সংযোজন ( +); বিয়োগ ( -); গুণ ( *বা ×বা ·); বিভাগ ( /বা ÷)। (দ্রষ্টব্য: প্রথম বন্ধনী মধ্যে অক্ষর শুধুমাত্র স্পষ্টকরণ হিসাবে যুক্ত করা হয়।)
  • আপনাকে নেতিবাচক সংখ্যাগুলি সমর্থন করতে হবে। এই অর্থটি -সমীকরণে গাণিতিক অপারেন্ড বা নেতিবাচক সূচক উভয় হিসাবে ব্যাখ্যা করা যেতে পারে।
  • আপনি প্রদত্ত ভুল সমীকরণ এবং সঠিক সমীকরণগুলি সর্বদা বৈধ বলে ধরে নিতে পারেন (সুতরাং এখানে 4-/2বা 9+-+8উদাহরণের মতো জিনিস থাকবে না )।
  • ভুল ইনপুট-সমীকরণগুলিতে 0 দ্বারা বিভাজন থাকতে পারে, তবে সংশোধিত এবং প্রত্যাশিত সমীকরণগুলি কখনই 0 দ্বারা বিভাজন ধারণ করে না।
  • আপনি ইচ্ছিত বোতামগুলি আবার অদলবদল করলেও ভুল ইনপুট-সমীকরণগুলি ইতিমধ্যে সঠিক হতে পারে।
  • একটি প্রদত্ত ইনপুট সমীকরণ swap 'র জন্য (যেমন বোতামের জন্য অপ্রাসঙ্গিক হতে পারে 4+4=8এবং 9/3=3সমীকরণ, অদলবদল বোতাম সঙ্গে 2এবং *)।
  • আপনি ধরে নিতে পারেন যে সর্বদা কেবলমাত্র একটি সম্ভাব্য অদলবদল দেওয়া থাকবে যা প্রদত্ত পরীক্ষার কেসগুলি দিয়ে তৈরি করা যেতে পারে।
  • অদলবদল করতে উভয় বোতাম সর্বদা ভুল সমীকরণের একটিতে উপস্থিত থাকবে।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজন হলে একটি ব্যাখ্যা যোগ করুন।

পরীক্ষার কেস:

Input:
123    = 3
8423   = 252
4+4    = 8
4*7-10 = 417
9/3    = 3
42-9   = -36

Output: 2 *

Input:
4/2   = 6
3/0   = 3
0/8+2 = 4
95-5  = 90
4+2   = 2

Output: + /

Input:
7+4    = 11
5-15   = 46
212-23 = -2121

Output: 1 -

Input:
4+8/2-9*1 = -5
99/3-13   = 20
1+2+3+4   = 10
4-3-2-1   = -6

Output: 2 4

Input:
18/18  = 1
98-8   = 90
55*88  = 4840
-5--15 = 10

Ouput: 5 8

Input:
9119    = 18
5-3     = 513
8*-9    = 152
13116/3 = -1

Output: 1 -
code-golf  number  arithmetic  integer  code-golf  math  number  geometry  code-golf  grid  code-golf  math  number  sequence  primes  code-golf  sequence  kolmogorov-complexity  code-golf  string  ascii-art  alphabet  code-golf  math  sequence  integer  code-golf  number-theory  integer  natural-language  code-golf  date  code-golf  function  code-golf  ascii-art  code-golf  math  number-theory  primes  classification  code-golf  array-manipulation  decision-problem  matrix  code-golf  number  code-golf  code-golf  ascii-art  matrix  code-golf  string  code-golf  sequence  base-conversion  code-golf  code-golf  math  number-theory  combinatorics  integer-partitions  code-golf  integer  binary  base-conversion  code-golf  integer  base-conversion  palindrome  code-golf  code-golf  integer-partitions  code-golf  math  ascii-art  matrix  code-golf  number  sequence  number-theory  matrix  code-golf  interpreter  code-golf  graph-theory  code-golf  ascii-art  decision-problem  code-golf  division  code-golf  array-manipulation  primes  code-golf  string  ascii-art  code-golf  primes  counting  code-golf  matrix  unicode  code-golf  source-layout  code-golf  grammars  code-golf  string  cops-and-robbers  regular-expression  obfuscation  string  code-challenge  cops-and-robbers  regular-expression  code-golf  kolmogorov-complexity  game  card-games  code-golf  kolmogorov-complexity  code-golf  array-manipulation  matrix  code-challenge  cops-and-robbers  code-challenge  decision-problem  cops-and-robbers  code-golf  permutations 

2
"রিয়েল ডিভিশন" মানে কি আমাদের ফ্লোটকে সমর্থন করতে হবে?
এরিক আউটগলফার

@ এরিকথিউটগলফার ওফস .. এটি আমার আগের পাটিগণিত চ্যালেঞ্জ থেকে অনুলিপি করেছেন। সরানো হয়েছে এবং আপনার প্রশ্নের উত্তর হিসাবে আপনাকে কেবলমাত্র পূর্ণসংখ্যার সাথে ডিল করতে হবে না।
কেভিন ক্রুইজসেন

1
আমি একটি পরীক্ষার কেস প্রস্তাব করব যেখানে সঠিক সমীকরণ থাকে --। উদাহরণস্বরূপ 1991 = 2, -/3 = 3। (অনেক ভাষা এটিকে হ্রাস অপারেটরের সাথে বিভ্রান্ত করে))
১of

1
সমস্যাটি হ'ল 91 19সমাধানের ক্ষেত্রে একটি স্থান যুক্ত করা এবং পরীক্ষার কেসগুলি তৈরি করার সময় সমাধানটির সমাধানের বিষয়ে জ্ঞান থাকা দরকার থাকলে 9--9কোনও স্থান নেই । যদি এটি অনুমোদিত হয় তবে আমি কেবল অদলবদল করা অক্ষরগুলির আগে কেবল একটি স্থান যুক্ত করতে পারতাম এবং পরীক্ষার কেস থেকে সমাধানটি তাত্ক্ষণিকভাবে পাওয়া যায়। 91199229
nwellnhof

1
মূল্যায়ন কি বাম থেকে ডান, বা *এবং /আগে +এবং বাইনারি হয় -?
aschepler

উত্তর:


5

পার্ল 6 , 132 113 বাইট

জো কিং -19 বাইট জন্য ধন্যবাদ।

->\e,$r {first {($!=e.trans($_=>.flip))ne e&&try "all {$!.&{S:g/\-/- /}} Z==$r".EVAL},[X~] (|^10,|<+ - * />)xx 2}

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

ইনপুট হল সমীকরণের কমা-বিচ্ছিন্ন স্ট্রিং এবং কমা দ্বারা পৃথক হওয়া ফলাফলের স্ট্রিং (আশা করি এটি ঠিক আছে)। আউটপুট একটি স্বরূপযুক্ত দুটি বোতামযুক্ত স্ট্রিং।

সঠিকভাবে পরিচালনা করে --। যথাসাধ্য পণ্যের মিথ্যা positives জন্য ---, ++, **, অথবা //, কিন্তু আমি আপ একটি পরীক্ষা ক্ষেত্রে আসতে পারে।


আপনি হ্যান্ডেল করতে হবে না ---; ++; **; //; বা অন্যান্য জিনিস *+ইত্যাদির মতো আপনাকে কেবলমাত্র ডাবল সংলগ্ন অ-অঙ্কই সমর্থন করতে হবে --। এছাড়াও, যদি আমি আপনার কোডটি সঠিকভাবে বুঝতে পারি তবে আপনার প্রয়োজন হবে না .subst('-','- ', যেহেতু -5--15কোনও স্থানের মাধ্যমে পরীক্ষার কেসটি ইনপুট করার অনুমতি রয়েছে। প্রোগ্রামিংমেজিকভাবে এই স্পেসটি যুক্ত করার জন্য আপনি কোড যোগ করার ক্ষেত্রে প্রথম নন, তাই আমি চ্যালেঞ্জের বর্ণনায় এটি আরও স্পষ্টভাবে নির্দিষ্ট করব।
কেভিন ক্রুইজসেন

2
@ কেভিন ক্রুজসেন আমাকে এই জাতীয় জিনিসগুলি হ্যান্ডেল করতে **হতে পারে কারণ পার্ল 6 এর মতামত হিসাবে তাদের একটি অর্থ রয়েছে এবং এটি মিথ্যা ইতিবাচক কারণ হতে পারে। উদাহরণস্বরূপ 1992 = 1হতে পারে 1**2 = 1বা হতে পারে 1//2 = 1। এটি substএমন ক্ষেত্রে রয়েছে যেখানে সঠিক সমীকরণ রয়েছে --, উদাহরণস্বরূপ আপনি যুক্ত হওয়া নতুন পরীক্ষার কেস।
nwellnhof

আপনার উত্তরটি বর্তমানে ন্যূনতম পরিমাণে বাইট সহ একটি, তাই আমি আপাতত এটি গ্রহণ করব। যদি কেউ ছোট কিছু নিয়ে আসে তবে চেকটি আবার স্থানান্তরিত হতে পারে।
কেভিন ক্রুজসেন


11

জাভাস্ক্রিপ্ট (ES7), 159 158 বাইট

সম্পাদনা করুন: নতুন সংস্করণ আপডেট করা নিয়ম মেনে চলার জন্য --
সংরক্ষিত 1 বাইট @ শ্যাগিকে ধন্যবাদ

বাক্য বাক্য গঠন ইনপুট নেয় (e)(r)যেখানে সমীকরণের অ্যারে এবং r প্রত্যাশিত ফলাফলের অ্যারে হয়। একটি অক্ষরের অ্যারে প্রদান করে।

e=>r=>(l=[...2**29+'4+-*/']).filter(x=>l.some(y=>eval("try{eval((S=(s=`[${e}]`).replace(/./g,c=>c==x?y:c==y?x:c)).split`--`.join`+`)+''==r&S!=s}catch(e){}")))

পরীক্ষার মামলা

ফর্ম্যাট এবং মন্তব্য

e => r =>                                  // given e and r
  (l = [...2 ** 29 + '4+-*/'])             // generate l = [...'5368709124+-*/']
  .filter(x =>                             // for each character x of l
    l.some(y =>                            // for each character y of l
      eval("try {                          // we need to 'try', because we don't know
        eval(                              // whether the following expression is valid
          (S = (s = `[${e}]`).             // s = list of equations coerced to a string
            replace(/./g, c =>             // S =
              c == x ? y : c == y ? x : c  //   s with x and y exchanged
            )                              // end of replace()
          ).split`--`.join`+`              // replace '--' with '+'
        ) + '' == r                        // does the resulting list match r?
        & S != s                           // and was at least one character modified?
      } catch(e){}")                       // if we try, we oughta catch
    )                                      // end of some()
  )                                        // end of filter()

1
আমার মনে হয় আপনি একটি বাইট সংরক্ষণ করতে পারবেন evaling try / catch: codepen.io/anon/pen/rzRrLp
শেগি

@ শেগি আহ্ হ্যাঁ, দুর্দান্ত one ধন্যবাদ!
আর্নল্ড

এটা দেখে মনে হচ্ছে এই 139 বাইট জন্য যথাসাধ্য হবে।
শেগি

হ্যাঁ, আমি একটি সম্পূর্ণ পরীক্ষার স্যুট চালিয়েছি এবং এটি স্পট করেছি।
শেগি

জন্য কাজ করে না 1991 = 2। সমাধানটি 1--1 = 2সাথে থাকা 9এবং -অদলবদল করা উচিত ।
14

4

পাইথন 2 , 204 , 199 , 193 , 173 , 165 বাইট

  • 199 বাইট থেকে 193 বাইট মিঃ এক্সকোডকে ধন্যবাদ
  • 193 বাইট থেকে 173 বাইট থেকে হালভার্ড হুমেলকে ধন্যবাদ
s=input()
r=str.replace
t=set(''.join(zip(*s)[0]))
for i in t:
 for j in t:
	try:
	 if all(eval(r(r(r(e,i,'$'),j,i),'$',j))==v*(i<j)for e,v in s):print i,j
	except:0

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



@ মিঃ এক্সকোডার মন্তব্যটির জন্য থ্যাঙ্কস, আমি এটি ঠিক করে দিচ্ছি ..
এমদাহমৌনে

1
@ মিঃ এক্সকোডারটি এখানে সংশোধিত সংস্করণটি দিয়েছেন
এমডাহ্মোনে



4

ওরাকল এসকিউএল এবং পিএল / এসকিউএল, 458 বাইট

ইনপুট যে কোনও যুক্তিসঙ্গত বিন্যাসে থাকতে পারে। [...] সমীকরণ সহ একটি তালিকা এবং সঠিক ফলাফল সহ অন্য একটি তালিকা।

পিএল / এসকিউএল ফাংশন (210 বাইট) সংকলন করুন:

CREATE FUNCTION f(x CHAR,y CHAR)RETURN NUMBER IS o NUMBER;BEGIN EXECUTE IMMEDIATE 'BEGIN :1:='||REPLACE(x,'--','- -')||';END;'USING OUT o;RETURN CASE o WHEN y THEN 1 END;EXCEPTION WHEN OTHERS THEN RETURN 0;END;

এসকিউএল চালান (248 বাইট):

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM T,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM T)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

Tপরীক্ষার ডেটা সহ একটি সারণী তৈরি করার পরে :

CREATE TABLE T(X,Y) AS
  SELECT '123',    3     FROM DUAL UNION ALL
  SELECT '8423',   252   FROM DUAL UNION ALL
  SELECT '4+4',    8     FROM DUAL UNION ALL
  SELECT '4*7-10', 417   FROM DUAL UNION ALL
  SELECT '9/3',    3     FROM DUAL UNION ALL
  SELECT '42-9',   -36   FROM DUAL

আউটপুট:

V V_1
- ---
2 *
* 2

পূর্ববর্তী সংস্করণ :

স্ট্রিং ইনপুট ধরে নেওয়া যেমন '123 = 3':

একই পিএল / এসকিউএল ফাংশন এবং এসকিউএল (322 বাইট):

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15),y(x,y)AS(SELECT REGEXP_SUBSTR(t,'[^=]+'),REGEXP_SUBSTR(t,'-?\d+$')FROM T)SELECT r.v,s.v FROM y,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM T)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

Tপরীক্ষার ডেটা সহ একটি সারণী তৈরি করার পরে :

CREATE TABLE T(T) AS
  SELECT '123    = 3'   FROM DUAL UNION ALL
  SELECT '8423   = 252' FROM DUAL UNION ALL
  SELECT '4+4    = 8'   FROM DUAL UNION ALL
  SELECT '4*7-10 = 417' FROM DUAL UNION ALL
  SELECT '9/3    = 3'   FROM DUAL UNION ALL
  SELECT '42-9   = -36' FROM DUAL;

আউটপুট:

V V_1
- ---
2 *
* 2

আপডেট - পরীক্ষা :

এসকিউএল ফিডল

ওরাকল 11 জি আর 2 স্কিমা সেটআপ :

CREATE FUNCTION F(x CHAR,y CHAR)RETURN NUMBER IS o NUMBER;BEGIN EXECUTE IMMEDIATE 'BEGIN :1:='||REPLACE(x,'--','- -')||';END;'USING OUT o;RETURN CASE o WHEN y THEN 1 END;EXCEPTION WHEN OTHERS THEN RETURN 0;END;
/

CREATE TABLE A(X,Y) AS
  SELECT '123',    3     FROM DUAL UNION ALL
  SELECT '8423',   252   FROM DUAL UNION ALL
  SELECT '4+4',    8     FROM DUAL UNION ALL
  SELECT '4*7-10', 417   FROM DUAL UNION ALL
  SELECT '9/3',    3     FROM DUAL UNION ALL
  SELECT '42-9',   -36   FROM DUAL
/

CREATE TABLE B(X,Y) AS
  SELECT '4/2',    6     FROM DUAL UNION ALL
  SELECT '3/0',    3     FROM DUAL UNION ALL
  SELECT '0/8+2',  4     FROM DUAL UNION ALL
  SELECT '95-5',   90    FROM DUAL UNION ALL
  SELECT '4+2',    2     FROM DUAL
/

CREATE TABLE C(X,Y) AS
  SELECT '7+4',    11    FROM DUAL UNION ALL
  SELECT '5-15',   46    FROM DUAL UNION ALL
  SELECT '212-23', -2121 FROM DUAL
/

CREATE TABLE D(X,Y) AS
  SELECT '4+8/2-9*1', -5 FROM DUAL UNION ALL
  SELECT '99/3-13',   20 FROM DUAL UNION ALL
  SELECT '1+2+3+4',   10 FROM DUAL UNION ALL
  SELECT '4-3-2-1',   -6 FROM DUAL
/

CREATE TABLE E(X,Y) AS
  SELECT '18/18',  1     FROM DUAL UNION ALL
  SELECT '98-8',   90    FROM DUAL UNION ALL
  SELECT '55*88',  4840  FROM DUAL UNION ALL
  SELECT '-5--15', 10    FROM DUAL
/

CREATE TABLE G(X,Y) AS
  SELECT '9119',    18   FROM DUAL UNION ALL
  SELECT '5-3',     513  FROM DUAL UNION ALL
  SELECT '8*-9',    152  FROM DUAL UNION ALL
  SELECT '13116/3', -1   FROM DUAL
/

প্রশ্ন 1 :

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM A,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM A)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

ফলাফল :

| V | V |
|---|---|
| 2 | * |
| * | 2 |

প্রশ্ন 2 :

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM B,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM B)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

ফলাফল :

| V | V |
|---|---|
| + | / |
| / | + |

প্রশ্ন 3 :

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM C,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM C)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

ফলাফল :

| V | V |
|---|---|
| 1 | - |
| - | 1 |

প্রশ্ন 4 :

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM D,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM D)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

ফলাফল :

| V | V |
|---|---|
| 2 | 4 |
| 4 | 2 |

প্রশ্ন 5 :

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM E,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM E)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

ফলাফল :

| V | V |
|---|---|
| 5 | 8 |
| 8 | 5 |

প্রশ্ন 6 :

WITH r(v)AS(SELECT SUBSTR('1234567890-+*/',LEVEL,1)FROM DUAL CONNECT BY LEVEL<15)SELECT r.v,s.v FROM G,r,r s WHERE r.v<>s.v GROUP BY r.v,s.v HAVING SUM(f(TRANSLATE(x,r.v||s.v,s.v||r.v),y))=(SELECT COUNT(1)FROM G)AND SUM(INSTR(x,r.v)+INSTR(x,s.v))>0

ফলাফল :

| V | V |
|---|---|
| 1 | - |
| - | 1 |

কোনও প্রয়োজন নেই ||REPLACE(x,'--','- -')||, ইনপুট / আউটপুট ফর্ম্যাটটি নমনীয়, যাতে আপনি -5--15যেমন -5- -15চান তেমন ইনপুট দেওয়ার অনুমতি দেওয়া হয়। এছাড়াও, সমস্ত পরীক্ষার কেসগুলি কাজ করে যাচাই করার জন্য আমার পক্ষে সবচেয়ে সহজ উপায় কী হবে, বিশেষত শেষটি? টিআইও-লিঙ্কটি কি কোনওভাবে সম্ভব?
কেভিন ক্রুইজসেন 16

বা ||REPLACE(x,'--','- -')||আমি যুক্ত হওয়া শেষ পরীক্ষার মামলার মতো কোনও প্রত্যাশিত সঠিক সমীকরণের জন্য ব্যবহৃত হয়?
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসন --এসকিউএল-তে একটি মন্তব্য শুরু করেছেন, সুতরাং পরীক্ষার কেসগুলি প্রণয়ন করা দরকার যাতে --সমীকরণে কখনই এটি ঘটে না (এর প্রতিস্থাপন করা - -) অথবা এর জন্য জঙ্গীকরণের জন্য কিছু প্রতিরক্ষামূলক কোডিং দরকার।
এমটি 0

তাই শেষ টেস্ট ক্ষেত্রে জন্য 13116/3 = -1হিসেবে লেখা যেতে করতে হবে 131 16/3 = -1যে কল মুছে ফেলার জন্য REPLACE
এমটি0

আহ ঠিক আছে, সুতরাং প্রতিস্থাপনটি সত্যই প্রত্যাশিত সঠিক সমীকরণের জন্য ব্যবহৃত হয়। আমার কাছ থেকে এসকিউএল ফিডাল যোগ করার জন্য ধন্যবাদ।
কেভিন ক্রুইজসেন

2

পাওয়ারশেল, 222 209 192 বাইট

param($x)1..13|%{0..(($i=$_)-1)|%{$a,$b='+-*/0123456789'[$i,$_]
$a+$b|?{!($x|%{$e,$r=$_-split'='
try{$r-(-join$(switch($e|% t*y){$a{$b}$b{$a}default{$_}})-replace'-',' -'|iex)}catch{1}}|gu)}}}

পরীক্ষার স্ক্রিপ্ট এবং ব্যাখ্যা:

$f={

param($x)                               # array of strings with equations
1..13|%{                                #
    0..(($i=$_)-1)|%{                   # $i and $_ contains unique couples of different indecies
        $a,$b='+-*/0123456789'[$i,$_]  # $a and $b contains buttons to swap
        $g=$x|%{                        # for each equation from array
            $e,$r=$_-split'='           # split incorrect expression and correct result
            $e=-join$(switch($e|% t*y){ # swap buttons for each symbol in the expression
                $a{$b}
                $b{$a}
                default{$_}
            })
            $e=$e-replace'-',' -'       # insert a space before each '-'.
                                        # It need to work with negative numbers.
                                        # For example, '4--1' throws an exception, '4 - -1' returns '5'
            try{$r-($e|iex)}catch{1}    # Try to calc $e as powershell expression
                                        # return 0 if the expression result equal to the result of the calculation
                                        # return non zero integer otherwise
        }|gu                            # Get-unique of calculation for each equation
        if(!$g){                        # if $g is 0 or $null
                                        # then all calculations returns true
            $a+$b                       # Ok, return the couple of buttons
        }
    }
}

}

@(
    ,('2*','123=3','8423=252','4+4=8','4*7-10=417','9/3=3','42-9=-36')
    ,('/+','4/2=6','3/0=3','0/8+2=4','95-5=90','4+2=2')
    ,('1-','7+4=11','5-15=46','212-23=-2121')
    ,('42','4+8/2-9*1=-5','99/3-13=20','1+2+3+4=10','4-3-2-1=-6')
    ,('1-','9119=18','5-3=513','8*-9=152','13116/3=-1')
) | % {
    $e,$x=$_
    $r=&$f $x
    "$($e-eq$r): $r : $x"
}

আউটপুট:

True: 2* : 123=3 8423=252 4+4=8 4*7-10=417 9/3=3 42-9=-36
True: /+ : 4/2=6 3/0=3 0/8+2=4 95-5=90 4+2=2
True: 1- : 7+4=11 5-15=46 212-23=-2121
True: 42 : 4+8/2-9*1=-5 99/3-13=20 1+2+3+4=10 4-3-2-1=-6
True: 1- : 9119=18 5-3=513 8*-9=152 13116/3=-1

0

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

SÙãʒË_}ʒ¹s‡„--'+:.EQ

দুটি তালিকা হিসাবে ইনপুট করুন, প্রথমটি সমীকরণ এবং দ্বিতীয়টি ফলাফল। উভয় ঘোরার (যেমন [["2","*"],["*","2"]]) এর জোড়গুলির ফিল্টার তালিকা হিসাবে আউটপুট ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন । (দ্রষ্টব্য: টিআইও-তে 05AB1E এর উত্তরাধিকার সংস্করণ ব্যবহার .Eকরা হয়েছে , কারণ টিআইও-তে নতুন সংস্করণে অক্ষম করা হয়েছে that এর কারণে একটি অতিরিক্ত ï(পূর্ণসংখ্যায় কাস্ট করা) যুক্ত করা হয়েছে, কারণ 05 লেবেলীয় সংস্করণে 05AB1E 1.0এবং 1অভ্যন্তরের তালিকাগুলি সমান ছিল না ।)

ব্যাখ্যা:

S              # Convert the (implicit) input-list of equations to a list of characters
               # (which implicitly flattens)
               #  i.e. ["18/18","98-8","55*88","-5--15"]
               #   → ["1","8","/","1","8","9","8","-","8","5","5","*","8","8","-","5","-","-","1","5"]
 Ù             # Only leave all unique characters
               #  → ["1","8","/","9","-","5","*"]
  ã            # Cartesian product with itself; creating each possible pair of characters
               #  → [["1","1"],["1","8"],["1","/"],["1","9"],["1","-"],["1","5"],["1","*"],["8","1"],["8","8"],["8","/"],["8","9"],["8","-"],["8","5"],["8","*"],["/","1"],["/","8"],["/","/"],["/","9"],["/","-"],["/","5"],["/","*"],["9","1"],["9","8"],["9","/"],["9","9"],["9","-"],["9","5"],["9","*"],["-","1"],["-","8"],["-","/"],["-","9"],["-","-"],["-","5"],["-","*"],["5","1"],["5","8"],["5","/"],["5","9"],["5","-"],["5","5"],["5","*"],["*","1"],["*","8"],["*","/"],["*","9"],["*","-"],["*","5"],["*","*"]]
    ʒ  }       # Filter it by:
     Ë_        #  Where both characters are unique
               #   i.e. → [["1","8"],["1","/"],["1","9"],["1","-"],["1","5"],["1","*"],["8","1"],["8","/"],["8","9"],["8","-"],["8","5"],["8","*"],["/","1"],["/","8"],["/","9"],["/","-"],["/","5"],["/","*"],["9","1"],["9","8"],["9","/"],["9","-"],["9","5"],["9","*"],["-","1"],["-","8"],["-","/"],["-","9"],["-","5"],["-","*"],["5","1"],["5","8"],["5","/"],["5","9"],["5","-"],["5","*"],["*","1"],["*","8"],["*","/"],["*","9"],["*","-"],["*","5"]]
    ʒ          # Then filter the pairs again by:
     ¹         #  Push the first input-list with equations
      s        #  Swap to take the pair we're filtering
       Â       #  Bifurcate it (short for Duplicate and Reverse)
              #  Transliterate; replacing the characters at the same indices in the input-list
               #   i.e. ["18/18","98-8","55*88","-5--15"] and ["8","5"]
               #    → ["15/15","95-5","88*55","-8--18"]
               #   i.e. ["9119","5-3","8*-9","13116/3"] and ["1","-"]
               #    → ["9--9","513","8*19","-3--6/3"]
      „--'+:  '#  Then replace all "--" with a "+"
               #   → ["15/15","95-5","88*55","-8+18"]
               #   → ["9+9","513","8*19","-3+6/3"]
      .E       #  And evaluate the strings with Python eval
               #   → [1.0,90,4840,10]
               #   → [18,513,152,-1.0]
        Q      #  And then check if this evaluated list is equal to the (implicit) second input
               #   i.e. [1.0,90,4840,10] and [1,90,4840,10] → 1 (truthy)
               #   i.e. [18,513,152,-1.0] and [18,513,152,-1] → 1 (truthy)
               # (and output the result implicitly)
               #   i.e. [["8","5"],["5","8"]
               #   i.e. [["1","-"],["-","1"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.