নম্বরগুলি সন্ধান করুন এবং আউটপুট গণনা করুন


22

উদ্দেশ্য

এর একটি ইনপুট তালিকা দেওয়া 6স্বতন্ত্র সংখ্যা, 3 নম্বর খুঁজে a, bএবং cযেমন যে a × b = cসঙ্গে, a2 ডিজিটের হচ্ছে b1 অঙ্ক থাকার এবং c3 সংখ্যার হচ্ছে। আরও ভিজ্যুয়াল উপায়ে আপনার প্রোগ্রামকে অবশ্যই এই চিত্রটির বাক্সগুলিতে সেই 6 ডিজিটের ব্যবস্থা করতে হবে:

এখানে চিত্র বর্ণনা লিখুন

যদি একাধিক সমাধান বিদ্যমান থাকে তবে আপনি সেগুলির কোনও আউটপুট করতে পারেন।

ইনপুট

6 স্বতন্ত্র সংখ্যা। আপনি আপনার ভাষার জন্য যেকোন যুক্তিসঙ্গত উপায়ে নিতে পারেন।

আউটপুট

3 নম্বর a, bএবং c। আউটপুট ফর্ম্যাটটি অপেক্ষাকৃত বিনামূল্যে, যতক্ষণ না 3 টি সংখ্যা পৃথক হয় এবং সর্বদা একই ক্রমে মুদ্রিত হয় (তবে প্রয়োজনীয়ভাবে ক্রমে নয় a, b, c)।

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

1, 2, 3, 4, 5, 6 -> 54,3,162  
2, 3, 4, 5, 6, 7 -> 57,6,342 or 52,7,364

স্কোরিং

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


1
@ দাদার চ্যালেঞ্জটি দেখে আমি প্রথম চিন্তা করেছিলাম ... আমি এটি পোস্ট করার আগে কিছুটা প্রতিক্রিয়া জানাতে স্যান্ডবক্সে রাখার পরামর্শ দিচ্ছি :-)
স্টিভি গ্রিফিন

1
ইনপুটটি কি কোনও সমাধানের ফলে গ্যারান্টিযুক্ত?
অ্যাডমবর্কবার্ক

1
আমি আপনার চ্যালেঞ্জটির শব্দটি একেবারে পরিষ্কার করার জন্য কিছুটা সম্পাদনা করেছি (আমার মতে)। নিশ্চিত করুন যে আমি চ্যালেঞ্জের লক্ষ্যটি পরিবর্তন করি নি।
16:58

1
আমি আরও মনে করি যে চ্যালেঞ্জটির আরও সুস্পষ্ট শিরোনাম প্রয়োজন, তবে আমি এখনই ধারণার বাইরে আছি।
ফ্যাটালাইজ করুন

1
0,1,2,3,4,5ফলাফলের একটি ইনপুট হওয়া উচিত 13,4,052; কোন সমাধান নেই; বা কোন আচরণ ঠিক আছে?
জোনাথন অ্যালান

উত্তর:


8

ব্র্যাচল্যাগ (2), 10 বাইট

p~c₃o.k×~t

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

যুক্তিসঙ্গত দৈর্ঘ্যে চালানো খুব ধীর (ব্র্যাকল্যাগ দোভাষী খুব ধীর সীমাবদ্ধ সমাধানকারী ব্যবহার করে খালি স্ট্রিং, ৪-সংখ্যার সংখ্যা, নেতিবাচক সংখ্যা ইত্যাদিতে বহু গুণে ব্যয় করে)। টিআইও লিঙ্কটি কেবলমাত্র 3 টি সংখ্যার একটি ইনপুট ব্যবহার করে (এই প্রোগ্রামটি সংখ্যার সংখ্যার সাথে ইনপুট পরিচালনা করতে পারে)। এটি এমন একটি ফাংশন যার ইনপুটটি এমন সমস্ত সংখ্যার সমন্বিত একটি সংখ্যা (যেমন 234567) - ইনপুটটিতে নকলের অভাবের অর্থ আপনি একটি সর্বদা 0শূন্য এড়াতে সর্বশেষে কোনও স্থানে রাখতে পারেন - এবং যার আউটপুটটি একটি তালিকা অর্ডার [b, a, c](উদা। [6, 57, 342])

ব্যাখ্যা

p~c₃o.k×~t
p           Permute the digits of the input
 ~c₃        Split them into three groups
    o       Sort the three groups
     .      to produce the output, which must have the following property:
      k     all but the last group
       ×    when multiplied together
        ~t  produces the last group

তাহলে গ্রুপগুলিতে 2, 1, এবং 3 ডিজিটের প্রয়োজনীয়তা কোথায় গেল? ঠিক আছে, আমরা জানি ইনপুটটিতে 6 টি সংখ্যা রয়েছে এবং গোষ্ঠীগুলি সাজানো ক্রমে থাকে। সুতরাং তাদের কাছে কেবলমাত্র সম্ভাব্য মাপগুলি হ'ল [1, 1, 4], [1, 2, 3], বা [2, 2, 2]। প্রথম কেসটি অসম্ভব (শেষ সংখ্যাটি যেমন আপনি 9 × 9 কেবল 81 তাই 4 টি সংখ্যার সংখ্যা তৈরি করতে আপনি দুটি 1-সংখ্যার সংখ্যাকে গুণ করতে পারবেন না), আপনি দুটি 2-সংখ্যার সংখ্যাকে আরও গুণতে পারবেন না একটি 2-সংখ্যার সংখ্যা উত্পাদন করুন, এমনকি 10 × 10 100 উত্পাদন করে)। সুতরাং, প্রত্যাবর্তনের মানগুলি [b, a, c]অবশ্যই 1, 2 এবং 3 সংখ্যার লম্বা হবে যাতে ক্রমানুসারে, a2 সংখ্যা হয়, b1 cডিজিট হয় এবং অনুরোধ অনুসারে 3 ডিজিট হয়।


2
ভাল ... আমি আত্মসমর্পণ করছি
16:32

8

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

6 ডিজিটের অ্যারে হিসাবে ইনপুট নেয়। কোনও সম্ভাব্য সমাধান (যেমন describ'54*3==162' ) বা 'খুব বেশি পুনরাবৃত্তি' ত্রুটি সহ প্রস্থান করে যদি (এবং শুধুমাত্র যদি) সমাধান না হয়।

f=(a,k=1)=>eval(s='01*2==345'.replace(/\d/g,n=>a[n],a.sort(_=>(k=k*2%3779)&2)))?s:f(a,k)

কিভাবে এটা কাজ করে

এটি একটি নির্মাতারা অ্যালগরিদম।

প্রাইমস P=2এবংQ=3779 এমনভাবে বাছাই করা হয়েছিল যাতে (k = k * P % Q) & 2সময়ের সাথে ইনপুট অ্যারের সমস্ত 720 সম্ভাব্য ক্রম উত্পন্ন করার জন্য বাছাই করা কলব্যাকের নিশ্চয়তা দেওয়া হয়। আরও স্পষ্টভাবে, সমস্ত ক্রম 2798 প্রকারের পরে areেকে দেওয়া হয় - যা সমস্ত ব্রাউজারগুলির পুনরাবৃত্তি সীমাতে থাকা উচিত।

আমরা প্রতিটি অভিব্যক্তি প্রকাশের জন্য ইঞ্জেকশন করি 01*2==345অ্যারেতে সংশ্লিষ্ট এন্ট্রিগুলিতে অঙ্কগুলি ম্যাপিং করে ।

আমরা এই অভিব্যক্তিটি মূল্যায়ন করি এবং এটি সত্য না হওয়া পর্যন্ত পুনরাবৃত্ত কলগুলি করি।

পরীক্ষা


আউটপুট ফর্ম্যাটটি এখনও বৈধ বলে ধরে নিচ্ছি, বাইট সংরক্ষণ করতে -পরিবর্তে ==(এবং বিপরীতে ?:) ব্যবহার করুন।
নিল

1
@ নীল আসলে, আমি জ্যাপেলিনকে একই পরামর্শ দিয়েছি। আমার সম্ভবত এটি আরও কিছুটা গল্ফ করা উচিত, তবে আমার অবশ্যই স্বীকার করতে হবে যে আমি বর্তমান আউটপুট ফর্ম্যাটটি পছন্দ করি।
আর্নৌল্ড

আপনি 3379 খুঁজে বের করার জন্য ব্রুটফোর্স করেছেন, বা আপনি গাণিতিক যুক্তি ব্যবহার করেছেন? যদি তা হয় তবে এটির সন্ধানের উপায়টি কী সরবরাহ করতে পারবেন? :)
ইয়াতসি

@ টুকুএক্সএক্স এখানে সত্যিই অভিনব কিছু নেই। আমি কেবল এটিই ভঙ্গ করেছিলাম, আমার মাপদণ্ড 1) পি এবং কিউ এবং 2 এর জন্য যতটা সম্ভব কম সংখ্যক) যত কম সংখ্যক সাজানোর পুনরাবৃত্তি সম্ভব।
আর্নৌল্ড

6

ব্র্যাচল্যাগ , 17 বাইট

p~c[Ċ,I,Ṫ]cᵐ.k×~t

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

ব্যাখ্যা

p                   Try a permutation of the Input
 ~c[Ċ,I,Ṫ]          Deconcatenate it; the result must be a list of the form [[_,_],_,[_,_,_]]
          cᵐ.       Output is the list of integers you get when mapping concatenate on the
                      previous list
             k×~t   The first two ints of the Output, when multiplied, result in the third
                      int of the Output

3

05 এ বি 1 ই , 15 ই 13 বাইট

এমিগিনার কাছে দুটি বাইট সংরক্ষণ করা !

œJvy3L£Â`*Qi,

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

œ                 # Get all permutations of the input
 J                # Join them to get the numbers
  vy              # For each element in the list..
    3L            #   Push the list [1, 2, 3]
      £           #   Pops a and pushes [a[0:1], a[1:3], a[3:6]]
       Â`         #   Bifurcate and flatten
         *        #   Multiply the top two elements in the stack
          Qi      #   If equal to the third element..
            ,     #     Print the array

আপনি প্রতিস্থাপন করতে পারেন 213Sসঙ্গে 3Lযেমন অর্ডার হতে হবে তা নয় হয়নি 2,1,3চশমা অনুযায়ী।
Emigna

জেনে রাখা ভাল যে £জমে থাকাভাবে ভেক্টরাইজ হয় ... যদি এটি বলার সঠিক উপায় হয়।
ম্যাজিক অক্টোপাস উরন

3

বাশ + কোর্টিলস, 70

for((b=1;b;));{
a=`shuf -ze $@`
b=${a:0:2}*${a:2:1}-${a:3:3}
}
echo $b

সমস্ত ক্রিয়াকলাপ উত্পন্ন করার জন্য বিশেষ কোনও সহজ উপায়। পরিবর্তে এলোমেলোভাবে ক্রম বিভাজন উত্পন্ন করুন এবং যতক্ষণ না আমরা কোনও ভাল পাই until

আউটপুট ফর্মটিতে রয়েছে A*B-C- অর্থাত অভিব্যক্তি যা শূন্যকে মূল্যায়ন করবে যখন আমাদের সঠিক অনুগতি হবে।

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



2

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

lambda s:[(x[0],x[1:3],x[3:])for x in permutations(s)if eval('%s*%s%s==%s%s%s'%x)]
from itertools import*

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

আরও নমনীয় আউটপুট সহ 88 বাইট সমাধান

lambda s:[x for x in permutations(s)if eval('%s*%s%s==%s%s%s'%x)]
from itertools import*

এটি অনলাইন চেষ্টা করুন!
যেখানে আউটপুট হবে ['6', '5', '7', '3', '4', '2'] পরিবর্তে '6', '57', '342'


2
আপনি importনিজের শীর্ষে রাখেন নি ... মাথা
কাঁপুন

@ mbomb007 টিআইও work \ _ (ツ) _ / ¯ এ কাজ করতে হবে
রড

আপনি প্রথম ব্যক্তি যিনি আমি দেখেছি যিনি আসলে শিরোনামটি রেখেছিলেন f=। এটি একটি বড় চুক্তি না.
mbomb007

2

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

এটি সেখানে পৌঁছে যাবে ... অবশেষে ...

<?$v=$argv;unset($v[0]);do shuffle($v)&[$a,$b,$c,$d,$e,$f]=$v;while("$a$b"*$c!="$d$e$f");echo"$a$b $c $d$e$f";

Ungolfed:

<?
$v=$argv;
unset($v[0]);
do
  shuffle($v);
  [$a,$b,$c,$d,$e,$f]=$v;
while("$a$b"*$c!="$d$e$f");
echo"$a$b $c $d$e$f";

2

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

for(;;)eval(strtr('0.*1-"428"||die("0.,1,428");',1/7,str_shuffle($argv[1])));

স্ট্রিং হিসাবে ইনপুট নেয়।


1

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

অঙ্কগুলির একটি অ্যারে গ্রহণ করে (স্ট্রিং), একটি 3-উপাদান অ্যারে [A,B,C]=> প্রদান করে C=A*B

Golfed

R=(w,[a,b,c,d,e,f]=w)=>f*(d+=e)^(a+=b+c)?R(w.sort(_=>Math.random()-.5)):[a,d,f]

সম্পাদনাগুলি:

  • পুনরায় ব্যবহার করে dএবং a, এবং এর থেকে মুক্তি পেয়ে আরও 3 টি বাইট সংরক্ষণ করেছেন ==(ধন্যবাদ @ আর্নাউল্ড!)
  • ডেস্ট্রাকচারিং অ্যাসাইনমেন্ট ব্যবহার করে 3 বাইট সংরক্ষণ করা হয়েছে

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

R=(w,[a,b,c,d,e,f]=w)=>f*(d+=e)^(a+=b+c)?R(w.sort(_=>Math.random()-.5)):[a,d,f];

function generate(A) {
   console.log(R([...A]));
}
<input type="text" id="A" value="123456"/><button onclick="generate(A.value)">GENERATE</button>


আপনি কি গ্যারান্টি দিতে পারবেন যে আপনার এলোমেলো বাছাই আসলে সমস্ত আদেশকে কভার করবে?
নিল

@Neil, আপনি যদি এই কঠোর আনুষ্ঠানিক প্রমাণ জন্য, আমি মনে করি না আমি এক সঙ্গে আপনি প্রদান করতে পারেন না, কিন্তু প্রায়োগিক এটা একাধিক বিন্যাসন একটি প্রায় কাছাকাছি অভিন্ন বিতরণে ফলাফলের আছে।
জেপেলিন

1

পিপ , 18 বাইট

কোডের 17 বাইট, -Sপতাকার জন্য +1 ।

$/_=1FI_^@3,5MPMa

কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে অঙ্কের স্ট্রিং হিসাবে ইনপুট নেয়। আউটপুট সি, বি, ক ক্রমে রয়েছে। এটি অনলাইন চেষ্টা করুন!

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

ব্যাখ্যা

                   a is 1st cmdline arg (implicit)
              PMa  Compute all permutations of a
             M     To each, map this function:
          3,5       Range(3,5)--contains values 3 and 4
       _^@          Split the function argument at those indices
                    This transforms a string like 342657 into a list [342; 6; 57]
     FI            Now filter the list of split permutations on this function:
$/_                 Fold on division: takes 1st element and divides it by the rest
   =1               Compare the quotient with 1
                    This keeps only the permutations where the first number is the product
                    of the other two
                   Autoprint the list (implicit), with each sublist on a separate line
                   and space-separated (-S flag)

1

রুবি, 60 বাইট

->x{x.permutation{|a|(eval a="%d%d*%d==%d%d%d"%a)&&puts(a)}}

সমস্ত সমাধান "a * b == c" হিসাবে মুদ্রণ করে

উদাহরণ:

->x{x.permutation{|a|(eval a="%d%d*%d==%d%d%d"%a)&&puts(a)}}[[1,2,3,4,5,6]]
54*3==162

->x{x.permutation{|a|(eval a="%d%d*%d==%d%d%d"%a)&&puts(a)}}[[2,3,4,5,6,7]]
52*7==364
57*6==342

1

ব্যাচ, 305 বাইট

@echo off
set/pd=
for /l %%i in (0,1,719)do set n=%%i&call:c
exit/b
:c
set t=%d%
set s=
for /l %%j in (6,-1,1)do set/ap=n%%%%j,n/=%%j&call:l
set s=%s:~0,2%*%s:~2,1%-%s:~3%
set/an=%s%
if %n%==0 echo %s%
exit/b
:l
call set u=%%t:~%p%%%
call set s=%%s%%%%u:~,1%%
call set t=%%t:~,%p%%%%%u:~1%%

স্ট্রিন হিসাবে STDIN এ ইনপুট নেয় [1-9]{6}এবং dd*d-dddবিন্যাসে সমস্ত সমাধান আউটপুট করে। স্ট্রিং ম্যানিপুলেশনে ব্যাচ খুব ভাল নয় তাই 720 ক্রমান্বয়ে তৈরি করা কিছুটা বিশ্রী।

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