পণ্ডিতল দ্বিগুণ


14

এই সিএমসি দ্বারা অনুপ্রাণিত

0 এর চেয়ে বড় ধনাত্মক পূর্ণসংখ্যা দেওয়া, এটিতে নিম্নলিখিত ক্রিয়াকলাপটি সম্পাদন করুন:

  • সমস্ত দশটি একক অঙ্ক ( 1234567890) যদি কমপক্ষে একবারে সংখ্যায় থাকে তবে গণনা আউটপুট করুন এবং প্রোগ্রামটি থেকে প্রস্থান করুন
  • অন্যথায়, সংখ্যাটি দ্বিগুণ করুন এবং পুনরাবৃত্তি করুন, কাউন্ট বাড়িয়ে দিন।

গণনা 0 থেকে শুরু হয় এবং ইনপুট দ্বিগুণ হওয়ার পরিমাণ। উদাহরণস্বরূপ, যদি ইনপুটটি 617283945 হয়, তবে এটি একবার দ্বিগুণ করা দরকার কারণ 1234567890 এর মধ্যে সমস্ত 10 অঙ্ক রয়েছে।

এটি একটি তাই সংক্ষিপ্ততম কোডের জয়। আপনি চাইলে ইনপুটটিকে স্ট্রিং হিসাবে নেওয়া যেতে পারে।

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

input => output

617283945 => 1
2 => 67
66833 => 44
1234567890 => 0
100 => 51
42 => 55

আমরা কি স্ট্রিং হিসাবে ইনপুট নিতে পারি?
স্টিফেন

@ স্টেফেন আপনি স্ট্রিং হিসাবে ইনপুট নিতে পারেন।
কেয়ার্ড কোইনারিংহিং

3
এটা যে নিশ্চিত কোন Is nঅস্তিত্ব আছে কিছু kযেমন যে nkPandigital হয়? আমি একটি প্রমাণ দেখতে চাই।
shooqie

1
@ ফোফোনইন চ্যাট মিনি চ্যালেঞ্জ
কায়ারড কোইনারিঙ্গিংহিং

3
@ শুকী প্রুফ! যে কোনও এন এর জন্য 10 এর কপিরাইট হয়, এটি 10 ​​^ 10 এও কপিরাইট হয়, এবং তাই কিছু কেও উপস্থিত থাকে যে এন কে 1 মোড 10 ^ 10 হয়। তারপরে 1234567890 * এন কে = 1234567890 মড 10 ^ 10, সুতরাং প্রতিটি অঙ্ক অগত্যা কমপক্ষে একবার উপস্থিত হয়। যদি তা না হয় তবে 10, দিয়ে সর্বশেষ অ-শূন্য অঙ্কের কপিরাইট তৈরি করতে প্রয়োজনীয় 2, 5, বা 25 দিয়ে গুণ করুন এবং উপরের প্রমাণের একটি বৈকল্পিক (আনুষ্ঠানিকভাবে, এন = 10 ^ এম * পি, যেখানে পি উপরের শর্তটিকে সন্তুষ্ট করে) , তারপরে 1234567890 * পি * কে উপরের মতো প্যান্ডিজিটাল, সুতরাং 1234567890 * পি * কে * 10 ^ মি = 1234567890 * কে * এন)। :)
বি মেহতা

উত্তর:



4

জে , 24 23 বাইট

(]1&(+$:)2**)10>#@~.@":

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

ব্যাখ্যা

(]1&(+$:)2**)10>#@~.@":  Input: integer n
                     ":  Format as string
                  ~.@    Unique
                #@       Length
             10>         Less than 10
           *             Multiply, gives n if previous was true, else 0
         2*              Multiply by 2
 ]                       Get the previous condition
  1&(   )                Execute this if true on 2n, else return 0
      $:                   Recurse
  1  +                     Add 1

খুশী হলাম। আমি ফলাফল সংগ্রহ করতে আটকে ছিলাম, পুনরাবৃত্তির এই জাতীয় ফাংশনটি ব্যবহার করার বিষয়ে ভাবি নি।
কনর ও'ব্রায়েন

4

05 এ বি 1 ই , 11 10 বাইট

স্কটনেট -1 বাইট ধন্যবাদ

[D9ÝåË#·]N

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

[          // Start infinity loop
 D         // Duplicate current value (or input)
  9Ý       // Push [0,1,2,3,4,5,6,7,8,9]
    å      // Does each exist in the current value
     Ë#    // Break if all equal (if every digit exists)
       ·   // Else double the current value
        ]N // End loop and print the number of times through the loop


@ স্কটিনেট ধন্যবাদ! আমি জানি না যে আমি কীভাবে মিস করেছি।
রিলে

@ অরিলি বলতে যাচ্ছিল use xকিন্তু এটিও 10 টি ... চমৎকার উত্তর। চিন্তাভাবনা থেকে xমুক্তি মিলবে D, তবে এটি একই ধারণা।
যাদু অক্টোপাস উর্ন

3

পার্ল 6 ,31 ২৮ বাইট (২ cha টি অক্ষর)

-3 বাইটস @ জোশুয়া ধন্যবাদ

{($_,2×*...*.comb.Set>9)-1}

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

ব্যাখ্যা: এখনও পুনরাবৃত্তভাবে তালিকা উত্পন্ন করার জন্য একই নির্মাণ const প্রথম উপাদানটি প্রদত্ত সংখ্যা ( $_), প্রতিটি পরবর্তী উপাদান পূর্ববর্তী 2 গুণ হয় ( 2×*- আমরা × ব্যবহার করি কারণ 2 বাইট চরিত্র যদিও এটি এখনও 1 বাইটের চেয়ে কম সস্তা 2 * *), এবং শেষ শর্তটি *.comb.unique>9সন্তুষ্ট না হওয়া পর্যন্ত আমরা এটি করি do অর্থাত্ যখন সংখ্যায় 9 টিরও বেশি অনন্য অক্ষর থাকে। (প্রযুক্তিগতভাবে, আমরা অক্ষরের সাথে তালিকায় স্ট্রিংটি ভেঙে ফেলি .comb, এটির সাথে একটি সেটে জোর করে .Set(অবশ্যই, প্রতিটি উপাদানগুলি কেবল একবারে অন্তর্ভুক্ত থাকে)) এবং 9 এর সাথে তুলনা করি, যা সেটটিকে সংখ্যার প্রেক্ষাপটে জোর করে, যা ফলস্বরূপ দেয় এর উপাদান সংখ্যা।)

অবশেষে, আমরা এই তালিকা থেকে 1 টি বিয়োগ করি। আবার তালিকাটি সংখ্যাগত প্রসঙ্গে জোর করা হয়েছে, সুতরাং আমরা কী ফিরে আসব সেই তালিকার দৈর্ঘ্যের চেয়ে 1 কম।


আপনি 3 বাইট সংরক্ষণ করার .Setপরিবর্তে ব্যবহার করতে পারেন .unique
জোশুয়া

@ জোশুয়া, ভাল কথা! ধন্যবাদ. আমি কখনই এ নিয়ে ভাবিনি।
Ramillies

3

জাভাস্ক্রিপ্ট (ES6) + big.js , 84 74 73 70 বাইট

ধন্যবাদ @ ConorO'Brien প্রস্তাবনা করে 10 বাইট সংরক্ষণের জন্য big.js bignumber.js পরিবর্তে
ধন্যবাদ @Rick হিচককের জন্য -1 বাইট
ধন্যবাদ @Shaggy জন্য -3 বাইট

f=n=>[..."4"+2**29].every(d=>RegExp(d).test(c=Big(n)))?0:1+f(c.mul(2))

স্ট্রিং হিসাবে ইনপুট নেয়; বিন্দুটি অতিক্রম করে স্বয়ংক্রিয় বৈজ্ঞানিক স্বরলিপি রূপান্তরকরণের কারণে প্রায় 2 69 পর্যন্ত সমর্থন করে ।

পরীক্ষার স্নিপেট

f=n=>[..."4"+2**29].every(d=>RegExp(d).test(c=Big(n)))?0:1+f(c.mul(2))

;[617283945, 2, 66833, 1234567890, 100, 42].forEach(t=>console.log(`f(${t}) = `+f(t)))
<script src="https://cdn.rawgit.com/MikeMcl/big.js/c6fadd08/big.min.js"></script>

অসীম পরিসর, 106 88 87 84 বাইট

সংখ্যাগুলিকে স্ট্রিংয়ে রূপান্তর করার সময় বৈজ্ঞানিক স্বরলিপি কার্যকরভাবে অক্ষম করতে কনফিগারেশন বিকল্পটি ব্যবহার করে আমাদের প্রায় অসীম পরিসর থাকতে পারে।


সম্ভবত আপনি বিগ.জেএসBigNumber ব্যবহার করে কিছুটা ছোট করতে পারেন ?
কনর ও'ব্রায়েন

@ কনরোও ব্রায়েন এটি অবশ্যই সহায়তা করবে, বিশেষত কারণ এটির মধ্যে alচ্ছিক new। আপডেট হবে, ধন্যবাদ!
জাস্টিন মেরিনার

সাথে একটি বাইট সংরক্ষণ করুন f=n=>[..."0123456789"].every(d=>RegExp(d).test(c=Big(n)))?0:1+f(c.mul(2))
রিক হিচকক

আমাদের বড় ইন্টিজারগুলি হ্যান্ডেল করার দরকার নেই যাতে আপনি চাইলে big.js বাদ দিতে পারেন, আপনাকে 61 বাইটে নামিয়ে আনতে। আর আপনার সাথে ডিজিটের স্ট্রিং প্রতিস্থাপন 3 বাইট সংরক্ষণ করতে পারবেন "4"+2**29: tio.run/##BcGxDkAwEADQb2GQO41LNBZDbX7AKgbhKkSu0jZSX1/...
রোমশ

2

জেলি , 12 , 11 বাইট

QLn⁵
ḤÇпL’

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

অতি দ্রুত যেতে!

ব্যাখ্যা:

        # Helper link, takes one argument 'z'
Q       # The unique digits of 'z'
 L      # Length
  n     # Does not equal
   ⁵    # 10
        #
        # Main link
  п    # While <condition> is true, run <body> and return all intermediate results
        # Condition:
 Ç      #   The helper link
        # Body:
Ḥ       #   Double the input
        # Now we have a list of all the 'z's that we passed to the helper link
    L   # Return it's length
     ’  # minus one



2

জে , 43 বাইট

f=:(,$:@+:@{.)`[@.(9<[:#@~.10&#.inv)
<:@#@f

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

একটি বেনামী ফাংশন সংজ্ঞায়িত করে। বেশ suboptimally ফলাফল সংগ্রহ। পরীক্ষা করে দেখুন এখানে মাইল এর উচ্চতর উত্তর!


পুনরাবৃত্তি করার প্রয়োজন নেই, ব্যবহার করুন ^:a::1#@}.+:^:(10>#@~.@":)^:a:
ফ্রাউনফ্রগ

2

হাস্কেল, 44 বাইট

until(\c->all(`elem`show(n*2^c))['0'..'9'])(+1)0

2

ক্লোজার, 115 89 82 বাইট

-26 অক্ষরের তালিকার প্রতিনিধিত্ব করার জন্য কেবল একটি স্ট্রিং ব্যবহার করে বাইট (ডুহ, রেট্রোস্পেক্টে), এবং পুনরাবৃত্তিটি ব্যবহার করে পরিবর্তিত হয়েছে loop, যা আমাকে বেশ কয়েকটি অপ্টিমাইজেশান তৈরি করার অনুমতি দিয়েছে।

কল থেকে মুক্তি পেয়ে -7 বাইট bigint। স্পষ্টতই আমাদের কেবল ইনপুট হ্যান্ডেল করা দরকার যা কোনও অতিরিক্ত প্রবাহের কারণ হবে না।

#(loop[n % c 0](if(empty?(remove(set(str n))"1234567890"))c(recur(* 2 n)(inc c))))

Pregolfed:

(defn pan [num]
  (loop [n num
         cnt 0]

    ; Remove all the characters from the stringified input
    ;  that are numeric. If the result is an empty list, all
    ;  the numbers were present.
    (if (empty? (remove (set (str n)) "1234567890"))
      cnt
      (recur (* 2 n) (inc cnt)))))

ব্যবহার করে আপনি 7 বাইট সংরক্ষণ করতে পারবেন every?পরিবর্তে empty? (remove …:#(loop[n % c 0](if(every?(set(str n))"1234567890")c(recur(* 2 n)(inc c)))))
bfontaine

ওফ, আপনি ঠিক বলেছেন! ধন্যবাদ। আমি পরে এটি ঠিক করব। ধন্যবাদ।
কারসিজিনিট

2

অক্ষিপট , 85 বাইট

^\d*
$&¶$&
D`.(?=.*¶)
\d{10}¶\d+|\d*¶

[5-9]
#$&
T`d`EE
T`_d#`d_`\d#
#
1
}`\d\b
$&@
@

এটি অনলাইন চেষ্টা করুন!লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। রান সময় জন্য সামান্য অপ্টিমাইজড। ব্যাখ্যা:

^\d*
$&¶$&

ইনপুট নম্বরটি সদৃশ করুন।

D`.(?=.*¶)

প্রথম অনুলিপিতে অঙ্কগুলি নকল করুন।

\d{10}¶\d+|\d*¶

যদি 10 সংখ্যা থাকে, উভয় নম্বর মুছুন, অন্যথায় কেবল প্রথম অনুলিপিটি মুছুন। নোট করুন যে উভয় সংখ্যা মুছে ফেলার ফলে বাকী লুপটি নো-ওপিকে করে।

[5-9]
#$&

স্থাপন একটি #বড় অঙ্কের আগে ।

T`d`EE

প্রতিটি অঙ্ক দ্বিগুণ করুন।

T`_d#`d_`\d#

বহন যোগ করুন।

#
1

একটি নেতৃস্থানীয় বাহন সঙ্গে ডিল।

}`\d\b
$&@

@সমস্ত 10 ডিজিট না পাওয়া পর্যন্ত একটি এবং লুপ যুক্ত করুন ।

@

যুক্ত হওয়া সংখ্যা মুদ্রণ করুন @


2

এপিএল (ডায়ালগ ইউনিকোড) , 19 + 2 = 21 বাইট

0∘{∧/⎕D∊⍕⍵:⍺⋄⍺+12×⍵}

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

এই dyadic হয় Dfn( irect unctio এন ), 0 তার বাম যুক্তি এবং ডান যেমন পূর্ণসংখ্যা হিসাবে গ্রহণ। যেহেতু ইনপুটটি কেবলমাত্র পূর্ণসংখ্যা হিসাবে বিবেচিত হবে, তাই আমি 0∘বাইট গণনাতে যুক্তির জন্য 2 বাইট যুক্ত করেছি ।

f←বাইট গণনায় অন্তর্ভুক্ত নয়, যেহেতু এটি প্রয়োজনীয় নয় । এটি কেবল পরীক্ষার কেসগুলি তৈরি করা সহজ করে তোলে।

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

শিরোনাম: এপিএল ঘরে কিছু চ্যাট করার পরে আমি সেইগুলিকে বাইট গণনা থেকে সরিয়েছি, যেহেতু ফাংশনটি যা করার কথা বলে তা করে এবং ফলাফলগুলি কেবলমাত্র এপিএলের আরপিএল এর ডিফল্ট সেটিংসের কারণে ভুল are

⎕FR←1287সেট এফ loat আর 128-বিট দশমিক করার epresentation (7 APL এর REPL মধ্যে দশমিক কোড) হয়। ⎕PP←34সেট পি দ্রণ পি 34 সংখ্যায় পর্যবসিত recision। এগুলি উভয়ই প্রয়োজনীয়, যেহেতু বড় সংখ্যার জন্য এপিএল-এর ডিফল্ট উপস্থাপনা তাদেরকে বৈজ্ঞানিক স্বরলিপিতে রূপান্তরিত করে (উদাহরণস্বরূপ 3.14159265359E15) যা কোডটি বড় সময় ব্যর্থ করে দেয়।

0∘{∧/⎕D∊⍕⍵:⍺⋄⍺+12×⍵}  Dyadic Dfn
0                      Fixes 0 as the left argument  
          :             If
     D                 String representation of all digits [0, 9]
                       "is in"
        ⍕⍵              String representation of the input
   ∧/                   AND-reduction. Yields 1 (true) iff all digits are in the right argument.
                       return the left argument
                       Else
                 2×⍵    Double the right arg
             ⍺+1        increment the left arg
                       Recursively call this function with the new arguments.

2

জাভা 8, 132 110 87 74 বাইট

n->{int c=0;for(;(n+"").chars().distinct().count()!=10;n*=2)c++;return c;}

-57 ধন্যবাদ বাইট @ OlivierGrégoire

ব্যাখ্যা:

এখানে চেষ্টা করুন। (দ্রষ্টব্য: পরীক্ষার 2কেসটি অক্ষম করা হয়েছে কারণ এটি 2 68 এ থামানো উচিত , তবে এর আকার long2 63 -1 এর মধ্যে সীমাবদ্ধ )

n->          // Method with long parameter and integer return-type
  int c=0;   //  Count-integer, starting at 0
  for(;(n+"").chars().distinct().count()!=10;
             //  Loop (1) as long as the unique amount of digits in the number are not 10
    n*=2)    //    After every iteration: multiply the input by 2
   c++;      //   Increase the count by 1
             //  End of loop (1) (implicit / single-line body)
  return c;  //  Return the counter
}            // End of method

পুরানো 132 বাইট উত্তর Stringএবং ইনপুট ব্যবহার করে :

n->f(n,0)int f(String n,int c){String t="";for(int i=0;i<10;t+="(?=.*"+i+++")");return n.matches(t+".*")?c:f(new Long(n)*2+"",c+1);}

এখানে চেষ্টা করুন। (দ্রষ্টব্য: এর জন্য পরীক্ষার 2কেসটি অক্ষম করা হয়েছে কারণ এটি কিছুটা অত্যধিক পুনরাবৃত্তির কারণে স্ট্যাকওভারফ্লো এক্সেক্সেশন সৃষ্টি করে))

স্ট্রিংটিতে সমস্ত 9 টি সংখ্যক রয়েছে কিনা তা যাচাই করার জন্য মোট রেজেক্স ^(?=.*0)(?=.*1)(?=.*2)(?=.*3)(?=.*4)(?=.*5)(?=.*6)(?=.*7)(?=.*8)(?=.*9).*$, যা পুরো স্ট্রিংয়ের জন্য ইতিবাচক চেহারা ব্যবহার করে।


1
111 বাইট (হ্যাঁ, বাইট গণনাটি একটি "ইউনি-ডিজিটাল" ;-)
অলিভিয়ের গ্রাগোয়ার

নোট করুন যে 2 কখনই কাজ করবে না কারণ আমরা 2^68প্রথম পন্ডিত সংখ্যা হিসাবে প্রত্যাশা করি , তবে জাভাতে দীর্ঘস্থায়ী হয়ে থাকে 2^63-1
অলিভিয়ার

1
87 বাইট । ধন্যবাদ reduce\ o /
অলিভিয়ার

1
74 বাইট । এখানে থামছে ;-)
অলিভিয়ার

1
@ কেভিন ক্রুজসেন আমি জানি আপনি আপনার পুরানো পদ্ধতিটি বিলুপ্ত করেছেন, তবে কেবল এটিই উল্লেখ করতে চান যে আপনি সমস্ত 10 টি সংখ্যার সাথে মেলে নীচের (?:.*?(\d)(?!.*\1)){10}
রেজেক্সটি


1

গণিত, 59 48 47 46 38 বাইট

-9 বাইট জেনি_ম্যাথিকে ধন্যবাদ।

If[!FreeQ[DigitCount@#,0],#0[2#]+1,0]&

ম্যাথিক্স ব্যবহার করে এটি অনলাইনে ব্যবহার করে দেখুন!


2
46 বাইট: যদি [টিআর [1 ^ ইউনিয়ন @ ইন্টিজার ডিজিটস @ #] <10, # 0 [2 #] + 1,0] এবং
জে 212161217

গাণিতিক অজ্ঞাত পুনরাবৃত্তি ফাংশনগুলির জন্য অনুমতি দেয়। : হে ধন্যবাদ!
সম্পূর্ণরূপে

2
৩৮ বাইট: যদি [! ফ্রিকিউ [ডিজিটকাউন্ট @ #, 0], # 0 [2 #] + 1,0] এবং
J42161217

ধন্যবাদ! বিটিডাব্লু, `code কোডের জন্য ব্যবহার করা যেতে পারে তবে নেতৃস্থানীয় হোয়াইটস্পেসের অনুমতি নেই। aকাজ করবে কিন্তু `a` করবে না।
সম্পূর্ণরূপে

নিশ্চিত! Print/@f/@{617283945,2,66833,1234567890,100,42}
বিটিডাব্লু

1

আর , 74 বাইট

function(x){while(!all(0:9%in%el(strsplit(c(x,""),"")))){F=F+1;x=2*x};F*1}

এটি অনলাইন চেষ্টা করুন! দ্রষ্টব্য যে f(2)ভাষা কীভাবে বৃহত পূর্ণসংখ্যার সঞ্চয় করে তার সীমাবদ্ধতার কারণে ভুল উত্তর দেয় give

ব্যাখ্যা: প্যান্ডিগিটিলিটির পরীক্ষার জন্য, খালি স্ট্রিংয়ের সাথে যুক্ত হয়ে একটি অক্ষর ভেক্টরের সাথে ইনপুটটি জোর করা হয় এবং তারপরে স্বতন্ত্র অঙ্কগুলিতে বিভক্ত হয়। তারপরে আমরা 0: 9 এর সমস্তটি ফলাফল ভেক্টরে উপস্থিত কিনা তা পরীক্ষা করে দেখি; যদি না হয়, আমরা কাউন্টারটি বাড়িয়ে দেব, ইনপুটটিকে দ্বিগুণ করব এবং পুনরাবৃত্তি করব।

কাউন্টারে F ব্যবহার করে যা FALSE হিসাবে আরম্ভ করে। এটি সংখ্যায় জোর করা হয়েছে তা নিশ্চিত করার জন্য, আমরা ফিরে আসার আগে একটি করে গুণ করেছিলাম।


ব্যবহার c(x,"")করা একটি ঝরঝরে কৌশলel(strsplit(...))
জিউস্পেপ

1

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

for($n=[bigint]$args[0];([char[]]"$n"|group).count-le9;$n*=2){$i++}$i

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

(পাইথন উত্তর হিসাবে প্রায় দ্বিগুণ দীর্ঘ: - \)

ইনপুট নেয় $args[0], এটিকে কাস্ট করে [bigint], এটিকে সংরক্ষণ করে $n। একটি forলুপ প্রবেশ করে । প্রতিটি পুনরাবৃত্তির আমরা বিরুদ্ধে কিনা পরীক্ষা $nআমভের একটি তাহলে একটি স্ট্রিং রূপান্তর char-array যখন Group-Object'একসঙ্গে ডি, টি .count -lবা তার চেয়ে কানা অনুলিপি করুন eগণদেবতা করতে 9। অর্থ, এটি 10 ​​টির সমান একমাত্র উপায় হ'ল যদি প্রতিটি সংখ্যার কমপক্ষে একটি অঙ্ক 1234567890উপস্থিত থাকে। যদি হ্যাঁ, আমরা লুপটি প্রস্থান করি। যদি না হয় তবে আমরা $n*=2এবং চালিয়ে যাচ্ছি । লুপের ভিতরে প্রতিটি পুনরাবৃত্তি, আমরা কেবল বাড়িয়ে দিই $i। যখন আমরা লুপটি প্রস্থান করি, আমরা কেবল আউটপুট করি $i

নোট করুন যে 1234567890প্রতিটি অঙ্কের ইতিমধ্যে যেখানে হিসাব করা হয়েছে সেখানে ইনপুটের জন্য এটি কোনও কিছুই আউটপুট দেয় না, যা পাওয়ারশেলের একটি মিথ্যা মান এবং এটি 0হিসাবে কাস্ট করার সময় সমান [int]। যদি এটি ঠিক না থাকে তবে আমরা সহজেই একটি পূর্ণসংখ্যা হিসাবে এটি +আউটপুটটির সামনে রেখে দিতে পারি simply$i

রোল্যান্ড হিথকে একটি বাইট ধন্যবাদ সংরক্ষণ করা।


আপনি ne10 এর পরিবর্তে le9 ব্যবহার করতে পারেন? আমি পাওয়ারশেলের সাথে পরিচিত নই, তবে এটি একটি বাইট সংরক্ষণ করতে পারে।
রোল্যান্ড হিথ

পুনঃটুইট ভাল কল. ধন্যবাদ!
অ্যাডমবর্কবার্ক



0

পার্ল, 43 + 1 বাইট

for$x(0..9){$_*=2,++$\,redo LINE if!/$x/}}{

-pপতাকা ব্যবহার । এটি উপরে Xcali দ্বারা সরবরাহিত সমাধানটির উপর ভিত্তি করে।


0

সুইফট 4 , 111 বাইট

func p(_ x:Int,_ c:Int=0)->Int{if !(String(Set(String(x)).sorted())=="0123456789"){return p(x*2,c+1)};return c}

দ্রষ্টব্য: অতিরিক্ত প্রবাহের কারণে x = 2 এর জন্য কাজ করবে না।

ব্যাখ্যা - ইনপুট এক্স প্রথম স্ট্রিং এ টাইপকাস্ট করা হয়। তারপরে সেট () পুনরাবৃত্তি করা অক্ষরগুলি সরিয়ে দেয়। তারপরে ফলাফলটি মিলে বাছাই করা হয়। যদি এটি মেলে না, x ডাবল এবং কাউন্টার বৃদ্ধি করা হয়।


1
এটি জাগবে না কারণ ভার .৪ বিট। একই সমস্যা সহ আরও অনেক উত্তর রয়েছে।
নরেশ


যদি আপনি মনে করেন এটির অনুমতি দেওয়া উচিত, তবে এটি ওপি সহ আনতে হবে। এটি সাধারণ অনুশীলন হতে পারে তবে ওপি বিশেষত এটির অনুমতি দেয় নি এবং
টেস্টক্যাসগুলি

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


0

জাপট , 15 বাইট

LÆ*2pXÃbì_â Ê¥A

চেষ্টা করে দেখুন


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U

LÆ    Ã

থেকে পূর্ণসংখ্যার একটি অ্যারের তৈরি করুন 0থেকে 99এবং একটি ফাংশন যেখানে মাধ্যমে একে পাস Xবর্তমান উপাদান।

*2pX

Uএর শক্তিতে উত্থাপিত 2 দ্বারা গুণিত X

b

নিম্নলিখিত ফাংশনটি পাস করার পরে প্রথম উপাদানটির সূচকটি সত্য পান Get

ì_â

অঙ্কগুলির একটি অ্যারেতে বিভক্ত করুন এবং সদৃশগুলি সরান।

Ê¥A

অ্যারের দৈর্ঘ্য পান এবং এর সাথে সাম্যের জন্য পরীক্ষা করুন 10


বিকল্প, 15 বাইট

@*2pX)ìâ sÊ¥A}a

চেষ্টা করে দেখুন


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U

@            }a

0প্রথমটি দিয়ে , প্রথম নম্বরটি ফিরে আসুন Xযা বর্তমান নম্বর হিসাবে নিম্নলিখিত ফাংশনটির মধ্য দিয়ে গেলে সত্য হয় ।

*2pX)

উপরের হিসাবে, Uএর শক্তিতে 2 দিয়ে গুণ করুন X

ìâ

অঙ্কগুলির একটি অ্যারেতে বিভক্ত করুন, সদৃশগুলি সরান এবং একটি পূর্ণসংখ্যায় পুনরায় যোগদান করুন।

স্ট্রিংয়ে রূপান্তর করুন, দৈর্ঘ্যটি পান এবং পূর্ণসংখ্যায় ফিরে রূপান্তর করুন।

¥A

সঙ্গে সমতা জন্য পরীক্ষা করুন 10


0

কিউবিআইসি , 48 বাইট, এনসি

{q=1[z|q=q*instr(!:$,!a-1$)]~q>0|_Xp\p=p+1┘b=b*2

তাত্ত্বিকভাবে এটি কাজ করা উচিত। তবে, বাস্তবে এটি ব্যর্থ হয়েছে কারণ কিউব্যাসিক দশ-অঙ্কের সংখ্যা (কমপক্ষে সমস্ত অঙ্ক পাওয়ার জন্য প্রয়োজন) বৈজ্ঞানিক স্বরলিপিতে কাস্ট করেছেন ... এর কারণে আমি এটিকে প্রতিযোগিতামূলক হিসাবে চিহ্নিত করেছি marked

ব্যাখ্যা

{             DO ad infinitum
q=1           set q to 1
[z|           FOR a = 1 to 10
q=q*instr     multiply q by the position
(!:$             - in 'b' (read from cmd line at start) cast to string (! ... $)
,!a-1$)          - of the number a-1 [0-9] cast to string
]             NEXT
~q>0          IF any character was not found, instr gave a 0. If q != 0 all digits were present
|_Xp          THEN quit, printing  p (is 0 at start)
\p=p+1        ELSE increase step counter p
┘b=b*2        and double 'b'

0

জিএনইউ ডিসি, 61 বাইট

ইনপুট স্ট্যাকের শীর্ষ থেকে অনুলিপি করা হয়েছে (যা অন্যথায় খালি থাকতে হবে); আউটপুট স্ট্যাকের শীর্ষে ধাক্কা দেওয়া হয়।

[I~1r:ad0<s]ss[d1+r;a1=p]sp[d2*lfx]sh[0Sadlsxlpx11!=h]dsfxz1-

ব্যাখ্যা

আমরা অ্যারে ভেরিয়েবল ব্যবহার a, একটি 1 সংরক্ষণকারী a[d]যদি অঙ্ক dসেখানে 0 উপস্থিত থাকলে, অন্যথায় পতনশীল ফিরে। আমরা জিএনইউ এক্সটেনশনটি ~একটি একক আদেশে ভাগফল এবং বাকী অংশ পেতে ব্যবহার করি ।

# populate a[0-9] from the digits
[I~1r:ad0<s]ss

# check pandigit
# return 1 more than lowest unset element of a[]
# start with stack=0
[d1+r;a1=p]sp

# Test for pandigit; double and repeat if needed
[dd+lfx]sh
[0Sadlsxlpx11!=h]dsfx

# We left one value on the stack for each doubling, plus the original
z1-

একটি বোনাস হিসাবে, এটি স্বেচ্ছাসেবী সংখ্যা বেসগুলিতে কাজ করবে (কেবলমাত্র দশমিক নয়): প্রয়োজন অনুসারে সহজভাবে ইনপুট রিক্সিক সেট করুন (সংখ্যার ভিত্তিতে 11সংজ্ঞাটির ধ্রুবকটি fপড়তে হবে, সুতরাং স্বয়ংক্রিয়ভাবে সঠিক)।

পরীক্ষা

for i in 617283945 2 66833 1234567890 100 42
do
    printf '%s => ' $i
    dc -e $i \
       -e '[I~1r:ad0<s]ss[d1+r;a1=p]sp[dd+lfx]sh[0Sadlsxlpx11!=h]dsfxz1-' \
       -e p
done
617283945 => 1
2 => 67
66833 => 44
1234567890 => 0
100 => 51
42 => 55

0

রেক্সএক্স, 57 বাইট

arg n
do b=0 while verify(0123456789,n)>0
  n=n*2
  end
say b

0

q / kdb + , 33 বাইট

সমাধান:

(#)1_{x*2 1 min!:[10]in 10 vs x}\

উদাহরণ:

q)(#)1_{x*2 1 min!:[10]in 10 vs x}\[100]
51
q)(#)1_{x*2 1 min!:[10]in 10 vs x}\[1234567890]
0
q)(#)1_{x*2 1 min!:[10]in 10 vs x}\[42]
55

ব্যাখ্যা:

সমস্ত বাইটস সাম্যতায় রয়েছে, সম্ভবত এটি আরও কিছুটা নীচে গল্ফ করতে সক্ষম হবে। কিউ এর scanঅ্যাডভারব ব্যবহার করে:

count 1_{x*2 1 min til[10] in 10 vs x}\ / ungolfed solution
        {                            }\ / scan over this lambda until it yields same result
                              10 vs x   / convert to base 10
                           in           / left list in right list, returns boolean list
                   til[10]              / range 0..9
               min                      / return the minimum of the list, 0 or 1
           2 1                          / list (2;1) indexed into with 0 or 1
         x*                             / return x multiplied by either 2 or 1
      1_                                / 1 drop, drop one element from front of list
count                                   / count the length of the list

মন্তব্য:

যদি আমরা kপ্রম্পটে ছেড়ে যাই তবে আমাদের কাছে 25 বাইট সমাধান থাকতে পারে। সংখ্যাটিকে অক্ষরের তালিকায় রূপান্তর করে:

q)\
  #1_{x*2 1@&/($!10)in$$x}\[100]
51
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.