বেশ কয়েকটি ঘাঁটি কিন্তু একই অঙ্কের দ্বিগুণ নয়


15

ইনপুট

ধনাত্মক পূর্ণসংখ্যার একটি খালি খালি অ্যারে।

কার্য

প্রতিটি পূর্ণসংখ্যাটি বাইনারি, অষ্টাল, দশমিক বা হেক্সাডেসিমালকে এমনভাবে রূপান্তর করুন যাতে প্রতিটি অঙ্ক ( 0 থেকে F ) একবারে ব্যবহৃত হয়।

আউটপুট

ধাঁধা সমাধান করতে ব্যবহৃত ঘাঁটির তালিকা।

বিস্তারিত উদাহরণ

[১ 16, ১]] এর প্রত্যাশিত আউটপুটটি হ'ল [অষ্টাল, দশমিক]

এখানে কেন:

  • উভয় সংখ্যার জন্য আমরা কেবলমাত্র দশমিক ব্যবহার করতে পারি না, কারণ তাদের উভয়টিতেই 1 থাকে
  • 16 বাইনারি রূপান্তরিত করা যায় না, কারণ এই বেসে এর প্রতিনিধিত্ব ( 10000 ) বেশ কয়েকটি 0 এর রয়েছে।
  • 17 কেও বাইনারি রূপান্তরিত করা যায় না, কারণ এই বেসে এর উপস্থাপনা ( 10001 ) বেশ কয়েকটি 0 টি এবং বেশ কয়েকটি 1 এর রয়েছে।
  • 17 হেক্সাডেসিমাল রূপান্তর করা যায় না, কারণ এই বেস ( 11 ) এর উপস্থাপনা দুটি 1 's নিয়ে গঠিত ।
  • আসুন বাকি সমস্ত সম্ভাবনা বিবেচনা করুন:

                   +---------+---------+--------+
                   | oct(16) | dec(16) | hex(16)|
                   | = 20    | = 16    | = 10   |
    +--------------+---------+---------+--------+
    | oct(17) = 21 | 20,21   | 16,21   | 10,21  |
    | dec(17) = 17 | 20,17   | 16,17   | 10,17  |
    +--------------+---------+---------+--------+
    

    একমাত্র সম্ভাব্য সমাধান হ'ল অষ্টাল ( 20 ) এ 16 রূপান্তর এবং 17 দশমিক ( 17 ) রাখা। এইভাবে, 0 , 1 , 2 এবং 7 সংখ্যাগুলি একবার ব্যবহার করা হবে।

ব্যাখ্যা এবং বিধি

  • ইনপুটটি অনন্য সমাধানের দিকে নিয়ে যাওয়ার গ্যারান্টিযুক্ত। আপনার কোডটিতে এমন অ্যারেগুলি সমর্থন করার কথা নয় যা বেশ কয়েকটি সমাধান দেয় বা কোনও সমাধান দেয় না।
  • আপনি যে কোনও যুক্তিসঙ্গত বিন্যাসে বেসগুলি আউটপুট করতে পারেন, যেমন ["বিন", "অক্ট", "ডিস", "হেক্স"] , ['বি', 'ও', 'ডি', 'এইচ'] , "বিওডিএইচ " , [2,8,10,16] , [0,1,2,3] ইত্যাদি কিন্তু এটা পরিষ্কারভাবে আপনার উত্তর ব্যাখ্যা করতে হবে।
  • আউটপুটে বেসগুলির ক্রম অবশ্যই ইনপুট পূর্ণসংখ্যার ক্রমের সাথে মেলে।
  • যদি এটি সহায়তা করে তবে আপনি ধরে নিতে পারেন যে ইনপুটটি নিম্ন থেকে সর্বোচ্চ, বা সর্বোচ্চ থেকে নীচে থেকে বাছাই হয়েছে।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

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

আপনাকে নীচে তালিকাভুক্ত রূপান্তর ফলাফলগুলি আউটপুট করতে হবে না। তারা নিখুঁত তথ্য।

Input                                  | Output          | Conversion result
---------------------------------------+-----------------+------------------------
[ 119 ]                                | O               | 167
[ 170 ]                                | D               | 170
[ 64222 ]                              | H               | FADE
[ 16, 17 ]                             | O/D             | 20/17
[ 14, 64, 96 ]                         | H/H/D           | E/40/96
[ 34, 37, 94 ]                         | O/D/H           | 42/37/5E
[ 2, 68, 82 ]                          | B/D/H           | 10/68/52
[ 22, 43, 96 ]                         | O/O/O           | 26/53/140
[ 3639, 19086, 57162 ]                 | H/D/H           | E37/19086/DF4A
[ 190, 229, 771 ]                      | O/H/O           | 276/E5/1403
[ 2, 44, 69, 99 ]                      | B/H/H/H         | 10/2C/45/63
[ 75, 207, 218, 357, 385 ]             | H/H/H/D/O       | 4B/CF/DA/357/601
[ 12, 28, 46, 78, 154, 188, 222, 240 ] | D/O/O/D/H/H/H/H | 12/34/56/78/9A/BC/DE/F0

কাঁচা ইনপুট তালিকাটি এখানে উপলব্ধ


আমাদের দক্ষতার কিছু দিক সম্পর্কে যত্ন নেওয়া উচিত? (যেমন অ্যারের দৈর্ঘ্য 1000 বা এর মতো কিছু হয়)
ড্যানিয়েলইন্ডি

3
@DanielIndie না, আপনার দরকার নেই। তদ্ব্যতীত, 1000 এন্ট্রিগুলির ধাঁধাতে প্রচুর নকল অঙ্ক অন্তর্ভুক্ত থাকবে, বেসগুলি যে ব্যবহৃত হয় তা বিবেচনা করে না, সুতরাং এটি সম্ভবত একটি বৈধ নয়। (এটি প্রথম বিধি অনুসারে না হওয়ার গ্যারান্টিযুক্ত))
আরনাউল্ড

হ্যাঁ, আপনি ঠিক বলেছেন ... আমাকে বোকা ... :)
ড্যানিয়েলইন্ডি

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

2
পছন্দ করুন :) ভাল চেষ্টা!
আর্নৌল্ড

উত্তর:


4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 192,155,154,152,151,145,136,113,99,92 90 বাইট

  • আমি [0,1,2,3] -> যা [2,8,10,16] 8 বাইট সাশ্রয় করেছে এবং উজ্জ্বল ধারণাটির জন্য (যা 23+ কমিয়ে আনতে সহায়তা করে) আমাকে স্মরণ করিয়ে দেওয়ার জন্য @ আর্নল্ডকে ধন্যবাদ জানাই বাইটস)
  • 1 কেট কমিয়ে দেওয়ার জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ
f=([c,...a],t="")=>c?[1,4,5,8].find(b=>T=!/(.).*\1/.test(n=t+c.toString(b*2))&&f(a,n))+T:a

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

ব্যাখ্যা:

[c,...a]- @ একবারে একটি আইটেম নেওয়ার জন্য আর্নল্ড ট্রিক c?***:" "-> সি যদি অপরিজ্ঞাত থাকে তবে আমরা শেষের ফলাফলটিতে পৌঁছাতে সক্ষম হয়েছি- [] - যদি আমি "" লাগিয়ে দিতাম তবে সেই বৈধতা বিবেচনা করা হত না। ([] + 5 = "5" জেএস এফটিডব্লু) [1,4,5,8].find প্রতিবার আমরা সঠিক বেসটি খুঁজে পাই (আউটপুটটি এই অ্যারের (1,4,5,8) -> (2,8,10,16) এর বৈধ হবে। এখন কীভাবে সন্ধান করে -> যদি এটি কিছু খুঁজে পায় তবে এটি উপাদানটি (1-8) ফেরায় এবং আমি তার থেকে অভ্যন্তরীণ সমাধানের ফলাফল যুক্ত করি it এটি যদি খুঁজে না পায় তবে এটি অপরিবর্তিত + টি এখন মিথ্যা -> NaN যা এতে রয়েছে প্যারেন্ট কল মিথ্যা হিসাবে বিবেচিত হবে

!/(.).*\1/.test(n=t+b) স্ট্রিংয়ের সদৃশ আছে কিনা তা নির্ধারণ করুন:

f(a,n)) নতুন স্ট্রিং (এন) সহ কেবল পরবর্তী নম্বরটি (a এখন অ্যারে.স্লাইস (1)) যান

আমরা ফলাফলটির টি (অস্থায়ী) এ ফলাফল অর্পণ করি কারণ এটি যখন খুঁজে পায় তখন স্টপগুলি খুঁজে পায় এবং তাই আমরা জানি যে শেষ ফলাফলটি চ () হবে যা ফল বি।


1
t="",B=""t="",B=tএকটি বাইট সংরক্ষণ করতে হবে।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন সমাধানটি আপডেট করেছেন, ধন্যবাদ :) (এবং আপনি
আরনাউল্ডকে

@ আরনাউল্ড আমি আপনার উজ্জ্বল ধারণা নিয়েছি এবং কিছু অবিচল করেছিলাম। এখনই সমাধানটি দেখুন
ড্যানিয়েলইন্ডি

@ আরনাউল্ড খাঁটি দুর্দান্ততা
ড্যানিয়েলইন্ডি

1
শান্ত! আসুন আরও 2 বাইট শেভ করে দিন (এবং আর দরকার trim()নেই)।
আরনাউল্ড


3

রুবি, 72 71 বাইট

->a{a.map{%w[b o d x]}.inject(&:product).find{|c|/(.).*\1/!~[p,c]*?%%a}}

আউটপুট ফর্ম্যাটটি এক ধরণের বিপরীত এস-এক্সপ্রেশন মনস্ট্রোসিটি:

f[[12, 28, 46, 78, 154, 188, 222, 240]]
=> [[[[[[["d", "o"], "o"], "d"], "x"], "x"], "x"], "x"]

পরিবর্তে এটি স্ল্যাশ-পৃথক করার জন্য আরও 3 টি বাইট লাগবে (সংযোজন) *?/ ) ।

এই ফর্ম্যাটটি লুপ স্ট্রাকচার থেকে আসে, আরও মুশকিলের চেয়ে সামান্য খাটো repeated_combination(a.size) , যা অক্ষরের অ্যারের অ্যারে তৈরি করে এবং পরে ক্রস-প্রোডাক্ট ফাংশনটিতে এটি হ্রাস করে।

সম্পাদনা করুন: লিনকে ধন্যবাদ 1 বাইট সংরক্ষিত।


2

পাইথ, 21 20 বাইট

f{Is.bjYNTQ^[8T2y8)l

সমস্ত ঘাঁটির সম্ভাব্য তালিকার একটি তালিকা ফেরত দেয় (যার সর্বদা দৈর্ঘ্য 1 থাকে)।
এখানে চেষ্টা করুন

ব্যাখ্যা

f{Is.bjYNTQ^[8T2y8)l
           ^[8T2y8)lQ  Get the tuples of bases of the same length as the input.
f                      Filter to get those...
    .bjYNTQ            ... where converting bases elementwise...
   s                   ... and joining together...
 {I                    ... has no repeats.


2

জেলি , 17 16 বাইট

⁴⁽%ʠḃṗL³bF⁼Q$ƲÐf

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

ঘাঁটির একটি তালিকা ফেরত দিন।

 == ব্যাখ্যা ==
Link% ʠḃṗL³bF⁼Q Main Main মূল লিঙ্ক।
 ⁽% ʠ একটি সংখ্যা।
    it এটি বাইজিক বেসে রূপান্তর করুন ...
। 16. ফলাফল [2,8,10,16]।
     ইনপুট দৈর্ঘ্যের দ্বারা CarL কার্টেসিয়ান শক্তি।
             ফিল্টার করুন, তাদের সন্তুষ্ট রাখুন ...
       । ইনপুট
        বি যে বেস রূপান্তর
         যখন সমতল হয় (\ এর সমস্ত অঙ্কে যোগ দিন)
                      একসাথে বিভিন্ন সংখ্যা)
          ⁼Q $ নিজেই সমান un


2

আমি 05AB1E জানি না, সুতরাং আমি এটি জিজ্ঞাসার আগে আপনি কোনও ব্যাখ্যা যোগ না করা পর্যন্ত আমার অপেক্ষা করা উচিত, তবে 8চরিত্রটির ফলাফল '8'এবং অন্য তিনটি কেন পূর্ণসংখ্যা হয়? যদিও +1, দীর্ঘতম পরীক্ষার কেসগুলি সহ ঠিকঠাক কাজ করবে বলে মনে হচ্ছে।
কেভিন ক্রুইজসেন 15

2
@ কেভিন ক্রুজসেন এটি "2žv8T" থেকে আসছে। সোর্স কোডের নম্বরগুলি 05AB1E তে অক্ষর হিসাবে ঠেলাঠেলি করা হয়, যখন žv (16) এবং টি (10) অন্তর্নির্মিত যা স্ট্যাকের উপর তাদের নিজ নিজ সংখ্যাগুলিকে ঠেলে দেয়। এটি সাধারণত অলক্ষিত হয় কারণ স্ট্যাকের শেষ উপাদানটির 05AB1E এর অন্তর্নিহিত প্রদর্শনটি সংখ্যায় রূপান্তর করে, তবে যেহেতু প্রদর্শিত ফলাফলটি উপাদানগুলির একটি অ্যারে, সেই উপাদানগুলি অচ্ছুত থাকে, তাই উদ্ধৃতিগুলি। দুটি চর উপাদানকে ints এ কাস্ট করতে The কমান্ড elements উদাহরণস্বরূপ ব্যবহার করা যেতে পারে)।
কালডো

@ কেভিন ক্রুজসেন আমার ব্যাখ্যাটির উদাহরণ: tio.run/##MzBNTDJM/f/fyPbQDtv//wE কোড: 2 টি চাপুন , মুদ্রণ করুন, একটি অ্যারেতে মুড়ে দিন , মুদ্রণ করুন।
কাল্ডো


1

কাস্তে , 19 বাইট

fȯS=UΣz`B¹πmDd1458L

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

ঘাঁটির তালিকা ফেরত দেয়

ব্যাখ্যা

fȯS=UΣz`B¹πmDd1458L  Implicit input
                  L  Length of input
          π          Cartesian power of
             d1458     The digits of 1458  [1,4,5,8]
           mD          Double the digits   [2,8,10,16]
fȯ                   Filter by
      z`B¹             Zip with input by converting to its base
     Σ                 Concatenate
  S=U                  Equal to itself with unique elements
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.