এই নির্মিত নম্বরটির শুরুটি কী?


14

প্রচুর প্রোগ্রামিং ল্যাঙ্গুয়েজ বিদ্যমান সংখ্যার শেষে 'কনটেনটিং' এর মাধ্যমে বড় বড় পূর্ণসংখ্যা তৈরি করে। উদাহরণস্বরূপ, ল্যাবরেথ বা অ্যাডাপ্ট করুন । শেষ পর্যন্ত অঙ্কটি সংক্ষেপে, আমি বলতে চাইছি, বিদ্যমান সংখ্যা যদি 45 এবং , ফলাফলের সংখ্যাটি ।7457(45×10+7)

একটি নির্মিত সংখ্যা হ'ল এমন একটি সংখ্যা যা একক সংখ্যা সংখ্যার গুণকের ব্যবহারের মাধ্যমে এভাবে নির্মিত যেতে পারে: একে 9 টি এই 9 অনুক্রমের একটিতে একটি উপাদান:1,2,3,4,5,6,7,8,9

1,12,123,1234,12345,
2,24,246,2468,24690,
3,36,369,3702,37035,
4,48,492,4936,49380,
5,60,615,6170,61725,
6,72,738,7404,74070,
7,84,861,8638,86415,
8,96,984,9872,98760,
9,108,1107,11106,111105,

সিক্যুয়েন্সগুলি কীভাবে নির্মিত হয় তার উদাহরণ প্রদান করতে, এখানে নির্ধারিতভাবে a=3 এর ক্রমটি কীভাবে তৈরি করা হয়েছে :

u1=a=3=3u2=10×u1+2×a=30+6=36u3=10×u2+3×a=360+9=369u4=10×u3+4×a=3690+12=3702u5=10×u4+5×a=37020+15=37035u6=10×u5+6×a=370350+18=370368
সারিবদ্ধ} d vdots
u33=10×u32+33×a=37260+99=37359u34=10×u33+34×a=37359+102=373692

u33 U 34 এন × একটি 100 এবং প্রকট যখন অন্তর্ভুক্ত । একটি অনেক সংখ্যার স্থান জন্য ডটেড।u34n×a100

এই সিকোয়েন্সগুলি কীভাবে নির্মিত হয় তা এখনও পরিষ্কার নয়, সুতরাং সেগুলি বোঝার জন্য এখানে দুটি ভিন্ন উপায়:

  • প্রতিটি ক্রম একক অঙ্ক থেকে শুরু হয়। পরবর্তী শব্দটি সেই অঙ্কটির পরবর্তী একাধিকটি নিয়ে, পূর্ববর্তী শব্দটিকে দ্বারা গুণিত করে এবং একাধিক যুক্ত করে খুঁজে পাওয়া যায়। ক্রম শর্তাবলী:10

    un=10×un1+n×a,u1=a

    যেখানে একক অঙ্ক ( থেকে )a19


  • প্রত্যেকটি ক্রমানুসারে যেকোনো সময়ে উপাদান (নেওয়া উদাহরণস্বরূপ) এর গুণিতক থেকে থেকে , যেখানে দ্বারা সংস্থাপিত হয়9n=312319123un+1=10×un+n (1,12,123,,123456789,1234567900,12345679011,)

    সুতরাং প্রথম মানগুলি , দ্বিতীয়টি , তৃতীয় ইত্যাদি1×1,2,3,,8,912×1,2,3,,8,9123×1,2,3,,8,9

আপনার কাজটি হ'ল ইনপুট হিসাবে একটি নির্মিত নম্বর নেওয়া এবং এটি নির্মাণের জন্য ব্যবহৃত প্রাথমিক অঙ্কটি আউটপুট করা। আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা একটি নির্মিত সংখ্যা হবে এবং এটি চেয়ে বেশি হবে । এটি একক অঙ্ক হতে পারে, যা নিজেই মানচিত্র করে।0

আপনি অঙ্কের তালিকা হিসাবে স্ট্রিং ইত্যাদির মতো কোনও যুক্তিসঙ্গত পদ্ধতিতে ইনপুট নিতে পারেন এটি গ্রহণযোগ্য (যদিও প্রস্তাবিত নয়) অনারীতে ইনপুট নেওয়া বা আপনার পছন্দসই অন্য কোনও ভিত্তিতে গ্রহণযোগ্য।

এটি একটি তাই সংক্ষিপ্ততম কোডটি জয়ী!

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

       u_n        => a
 37035            => 3
 6172839506165    => 5
 5                => 5
 246913580244     => 2
 987654312        => 8
 61728395061720   => 5
 1111104          => 9
 11111103         => 9
 111111102        => 9
 2469134          => 2
 98760            => 8
 8641975308641962 => 7

বা দুটি তালিকা হিসাবে:

[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]

আমি যখন এই চ্যালেঞ্জটি পোস্ট করেছি তখন আমি বুঝতে পারি নি যে গ্রিমির উত্তরে ব্যবহৃত পদ্ধতিটি এতটা সরল করা যেতে পারে , এবং তাই উত্তরগুলিতে খুব আগ্রহী হবে যেগুলি একটি 'অঙ্ক' না দিয়ে বরং সমাধানের ক্ষেত্রে আরও গাণিতিক পদ্ধতির গ্রহণ করবে কৌশল (স্পষ্টতই সমস্ত বৈধ উত্তরগুলি সমানভাবে বৈধ, আমি যা দেখতে আগ্রহী তা হ'ল)।


স্যান্ডবক্স পোস্ট । জেলিতে আমার একটি 9 বাইট সমাধান রয়েছে, যদি কেউ এটিকে চ্যালেঞ্জ করতে চায়।
সিয়ার্ড কোইনারিংহিংহ

উত্তর:


26

05 এ বি 1 ই , 7 5 4 বাইট

>9*н

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

>            # input + 1
 9*          # * 9
   н         # take the first digit

6
হুম, এই চ্যালেঞ্জটির পক্ষে এটি খুব ভাল হবে না যদি এটিকে সহজেই সহজ করা যায়
Caird coinheringaahing

9
আপনার কাছে চ্যালেঞ্জ ব্যাখ্যার 800 বাইটের কোডের প্রায় 1 বাইট রয়েছে। : পি
আর্নল্ড

1
আপনি কীভাবে সমাধানটি নিয়ে আসবেন এবং কেন এটি সঠিক?
জোয়েল

7
@ জোয়েলটি (এন -1) এর সাথে শুরু হওয়া সিকোয়েন্সের তম পদটি রয়েছে a * (((10**n - 1) / 9 - n) / 9)। এটি 9 দ্বারা গুণিত করুন এবং যোগ করুন a*nএবং আপনি পেয়ে a * ((10**n - 1) / 9)যাবেন, অঙ্কটি বারবার n বার বার করুন। a*nN = 1 এর জন্য কাজের পরিবর্তে 9 যোগ করে বেরিয়ে আসে এবং বৃহত্তর n এর জন্য ধনাত্মক বৃদ্ধির পাশে ধ্রুবক পার্থক্য নগণ্য।
গ্রিমি

3
@ গ্রিমি ব্যাখ্যাটির জন্য অনেক ধন্যবাদ। হতে পারে আপনি এটি আপনার পোস্টে রাখতে পারেন।
জোয়েল

3

ম্যাথগল্ফ , 6 বাইট

)9*▒├Þ

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

দুর্ভাগ্যক্রমে, headম্যাথগল্ফে কোনও অপারেশন নেই , সুতরাং স্ট্রিংতে ▒├Þরূপান্তর করতে, বাম থেকে পপ করতে হবে এবং স্ট্যাকের শীর্ষস্থানীয় ব্যতীত সমস্ত ত্যাগ করতে হবে।





2

কাঠকয়লা , 7 বাইট

§I×⁹⊕N⁰

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। @ গ্রিমির পদ্ধতি অবশ্যই। এখানে একটি 27 বাইট গাণিতিক পদ্ধতির:

NθW¬№Eχ×κ↨υχθ⊞υLυI⌕Eχ×ι↨υχθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। অবৈধ ইনপুটগুলিতে ক্রাশ। ব্যাখ্যা:

Nθ

নির্মিত নম্বরটি ইনপুট করুন।

W¬№Eχ×κ↨υχθ

থেকে সব সংখ্যা দ্বারা বেস 10 একটি নম্বর হিসাবে তালিকা ব্যাখ্যা সংখ্যাবৃদ্ধি, 0করতে 9, এবং নির্মাণ সংখ্যা প্রদর্শিত হবে কিনা দেখুন।

⊞υLυ

তালিকার দৈর্ঘ্য নিজেই চাপ দিন। তালিকা সুতরাং ফর্ম হয়ে যায় [0, 1, 2, ..., n]

I⌕Eχ×ι↨υχθ

নির্মিত সংখ্যা পুনরুদ্ধার করুন কিন্তু এবার ইনপুট নম্বরটি উপস্থিত হয়েছিল এমন সূচিটি সন্ধান এবং আউটপুট করুন।


2

ল্যাবরেথ ,  28 22  20 বাইট

9 10/;!@
? _ :
)*"""

গ্রিমি দ্বারা বর্ণিত অঙ্কিত -ভিত্তিক পদ্ধতিটি বারবার পূর্ণসংখ্যা বিভাগ দ্বারা দশ দ্বারা শূন্য না পাওয়া পর্যন্ত প্রয়োগ করে ।

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


2

হোয়াইটস্পেস , 108 বাইট

[S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve_input][S S S T    N
_Push_1][T  S S S _Add][S S S T S S T   N
_Push_9][T  S S N
_Multiply][S S S T  N
_Push_1][N
S S N
_Create_Label_LOOP][S S S T S T S N
_Push_10][T S S N
_Multiply][S N
S _Duplicate][S T   S S S T S N
_Copy_0-based_2nd]S N
T   Swap_top_two][T S S T   _Subtract][N
T   T   S N
_If_neg_jump_to_Label_PRINT][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    S T S N
_Push_10][T S T S _Integer_divide][T    S T S _Integer_divide][T    N
S T _Output_top_as_number]

বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন-লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।

@ গ্রিমির 05AB1E উত্তরটির বন্দর , এ ছাড়া আমার কাছে প্রথম অঙ্ক পাওয়ার জন্য কোনও বিল্টিন নেই। ;)

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইন সহ)।

সিউডো-কোডে ব্যাখ্যা:

Integer i = STDIN as integer
i = i + 1
i = i * 9
Integer t = 1
Start LOOP:
  t = t * 10
  If(i - t < 0):
    Call function PRINT
  Go to next iteration of LOOP

function PRINT:
  t = t / 10
  i = i / t    (NOTE: Whitespace only has integer-division)
  Print i as integer to STDOUT

2

পাইথন 3 , 22 বাইট

lambda i:str(-~i*9)[0]

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

পোর্ট অফ ময়লা এর 05AB1E উত্তর


পাইথন 3 , 74 বাইট

f=lambda i,j=1,k=2,l=1:l*(i==j)or f(i,*(10*j+k*l,l+1,k+1,2,l,l+1)[i<j::2])

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

ব্যাখ্যা

পুনরাবৃত্তি ফাংশন। প্রতিটি অঙ্কের ক্রমের উপর দিয়ে lশুরু করে 1। যদি ইনপুটটি iবর্তমান পুনরাবৃত্তির সমান হয় jতবে সংশ্লিষ্ট অঙ্কটি lফিরে আসবে। অন্যথায়, যদি jসিকোয়েন্সের বর্তমান মান ইনপুট মানটি অতিক্রম করে i, তবে এটি অঙ্কটি বৃদ্ধি করবে lএবং আবার শুরু হবে। যুক্তি kগুণক গুণককে বাড়ানোর জন্য ব্যবহৃত হয়।


1

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

পূর্ববর্তী সংস্করণটির সাথে আমার 32-বিট প্রতিবন্ধকতাটি উত্তোলনের জন্য @ গ্রিমিকে ধন্যবাদ জানাই।

গ্রিমির যাদুকরী জ্বলন ব্যবহার করা । স্ট্রিং হিসাবে ইনপুট নেয়।

n=>(n*9+9+n)[0]

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


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

নিষ্পাপ নিষ্ঠুর বল পদ্ধতির।

n=>(g=(k,x=i=0)=>x>n?g(k+1):x<n?g(k,++i*k+10*x):k)(1)

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


-~n*9হতে পারে n*9+9, যা একই বাইটকাউন্ট তবে আমি সঠিকভাবে বুঝতে পারলে 32-বিট সীমাবদ্ধতা থেকে মুক্তি পাওয়া উচিত।
গ্রিমি

বর্বর বাহিনী একটি> = 10 এর জন্য কাজ করে14808
নাহুয়েল ফুইলুল

1
@ নাহুয়েলফৌইলুল যদি আমরা>> ১০ কে বিবেচনা করি তবে উত্তরটি আর অনন্য হবে না (১৪৮০৮ হয় একটি = ১২ এর চতুর্থ পদ, বা একটি = 14808 এর প্রথম শব্দ) হতে পারে। যদি এর কোনওটির আউটপুট করার অনুমতি দেওয়া হয় তবে n=>nসমস্ত ইনপুটগুলির জন্য কাজ করে।
গ্রিমি

1

জাভা 8, 23 বাইট

n->(n*9+9+"").charAt(0)

@ গ্রিমির 05AB1E উত্তরটির পোর্ট , সুতরাং তাকে উর্ধ্বতন দেওয়ার বিষয়ে নিশ্চিত হন!

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

তবে @CairdCoinheringaahing এর জন্য আমার খারাপ লাগার কারণ , এখানে আরও কিছুটা সাশ্রয়ী ( 83 বাইট ) সহকারে একটি ব্রুট-ফোর্স অ্যাপ্রোচ :

n->{long r=n,a=0,u,k;for(;++a<10;r=u>n?r:a)for(k=2,u=a;u<n;)u=u*10+k++*a;return r;}

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

ব্যাখ্যা:

n->{                 // Method with long as both parameter and return-type
  long r=n,          //  Result, starting at the input in case it's already a single digit
       a=0,          //  The digit to start the sequence with
       u,            //  The last number of the sequence we're building for digit a
       k;            //  Multiplier which increments each iteration
  for(;++a<10;       //  Loop in the range [1,9] (over each digit):
      r=u>n?         //    After ever iteration: if `u` is larger than the input:
            r        //     Keep the result the same
           :         //    Else:
            a)       //     Change the result to `a`
    for(k=2,         //   Reset `k` to 2
        u=a;         //   Reset `u` to the current digit `a`
        u<n;)        //   Inner loop as long as `u` is smaller than the input
      u=             //    Change `u` to:
        u*10         //     10 times the current `u`
            +k++*a;  //     With `k` multiplied by `a` added
                     //     (after which `k` increases by 1 with `k++`)
  return r;}         //  And after we iterated over each digit, return the result


0

জেলি , 8 বাইট

RRḌ÷@fⱮ9

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

একটি পূর্ণাঙ্গ প্রোগ্রাম যা একটি পূর্ণসংখ্যা নেয় এবং স্টারটার অঙ্কটি প্রিন্ট করে। গ্রিমির চালাক পদ্ধতি ব্যবহার করে না! বৃহত্তর ইনপুট জন্য মারাত্মকভাবে অদক্ষ। নিম্নলিখিত সংস্করণটি সমস্ত পরীক্ষার কেস পরিচালনা করে তবে এটি একটি বাইট দীর্ঘতর:

জেলি , 9 বাইট

DJRḌ÷@fⱮ9

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



0

কেগ -rr , 4 বাইট

⑨9*÷

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

অবশ্যই, 05AB1E উত্তরের মতো একই পদ্ধতির ব্যবহার করে। নতুন -rr(বিপরীত ও মুদ্রণ কাঁচা) পতাকাও ব্যবহার করে।

প্রতিস্থাপন:

from KegLib import *
from Stackd import Stack
stack = Stack()
printed = False
increment(stack)
integer(stack, 9)
maths(stack, '*')
item_split(stack)
if not printed:
    reverse(stack)
    raw(stack)

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