ডিজিটাঙ্গুলার সংখ্যা


20

একটি ত্রিকোণ সংখ্যা একটি সংখ্যা যে পরপর ধনাত্মক পূর্ণসংখ্যা এর সমষ্টি হিসাবে প্রকাশ করা যেতে পারে, 1. থেকে শুরু তারা সূত্র সঙ্গে প্রকাশ করা যেতে পারে n(n + 1) / 2, যেখানে nকিছু পূর্ণসংখ্যা ইতিবাচক হয়।

একটি সংখ্যার ডিজিটাঙ্গুলার কাউন্টার পার্ট নিম্নলিখিত উপায়ে গণনা করা হয়:

  1. একটি সংখ্যাকে এর অঙ্কগুলির একটি অ্যারেতে বিভক্ত করুন 613 => [6 1 3]
  2. অ্যারেতে প্রতিটি সংখ্যার জন্য, nত্রিভুজাকার সংখ্যাটি গণনা করুন ;[6 1 3] => [21 1 6]
  3. ফলাফল অ্যারে যোগফল; [21 1 6] => 28

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

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

23 => 9 45 25 18 37 34 16 22 6 21 4 10 1
72 => 31 7 28 39 51 16 22 6 21 4 10 1
55 => 30 6 21 4 10 1
78 => 64 31 7 28 39 51 16 22 6 21 4 10 1
613 => 28 39 51 16 22 6 21 4 10 1
8392 => 90 45 25 18 37 34 16 22 6 21 4 10 1
11111 => 5 15 16 22 6 21 4 10 1
8592025 => 117 30 6 21 4 10 1
999999999 => 405 25 18 37 34 16 22 6 21 4 10 1

1
আমরা কি ফলাফলের অ্যারেতে প্রথম হিসাবে মূল সংখ্যাটি অন্তর্ভুক্ত করতে পারি?
ঊরীয়েল

1
আমরা কীভাবে জানব যে এটি সর্বদা 1 এ নেমে যায়?
কেবল সুন্দর আর্ট

5
ধরা যাক যে একটি সংখ্যা এর চেয়ে বড় 141এবং তার nসংখ্যা রয়েছে। সর্বোচ্চ মান তার digitangular সহযোগীর থাকতে পারে 45nতাই হয়, digi-△(x) ≤ 45n < 45(1+log_10(x)), এবং x > 141, আমরা 45(1+log_10(x)) < x, অত digi-△(x) ≤ x-1জন্য x > 141, এবং একবার আমরা পাস 141সীমা, ভাল, আমরা প্রোগ্রামের মাধ্যমে প্রমাণ বাধ্য নরপশু।
কেবল সুন্দর আর্ট

1
আমার আউটপুট শেষে আমি কি 1 এর পিছনে যেতে পারি?
কেবল সুন্দর আর্ট

1
সম্পর্কিত: ডিজিটাঙ্গুলার সংখ্যা , এই অনুক্রমটি শেষ পর্যন্ত 1 এ যায় এমন বিকল্প প্রমাণ অনুসন্ধান করে।
কেবল সুন্দর শিল্প

উত্তর:



7

05 এ বি 1 ই , 6 5 বাইট

Δ=SLO

এটি অনলাইন চেষ্টা করুন! সম্পাদনা: @ ইমিগানাকে ধন্যবাদ 1 বাইট সংরক্ষিত ব্যাখ্যা:

Δ       Repeat until value doesn't change
 =      Print current value
  S     Split into characters
   L    Turn each character into range from 1 to N
    O   Sum

আপনি যদি এর সাথে প্রতিস্থাপন করেন তবে আপনি Sএকটি এড়িয়ে যেতে পারেন O
Emigna

@ এমিগনা ... Lএমনকি কেন এমন আচরণ করে?
নীল

আমি যদি সঠিকভাবে স্মরণ করি তবে এটি একটি বাগ ছিল যা কার্যকর হিসাবে প্রমাণিত হয়েছিল এবং এটি একটি বৈশিষ্ট্য হিসাবে থাকবে। আমি মনে করি এটি প্রথম পদ্ধতি যা ভেক্টরাইজড ছিল।
Emigna

4

জে, 20 19 বাইট

(1#.2!1+,.&.":)^:a:

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

মূল সংখ্যাটিও আউটপুট করে।

ব্যাখ্যা

(1#.2!1+,.&.":)^:a:
               ^:a:  Apply until input converges, storing all results in an array
(1#.2!1+,.&.":)      Digitangular sum
        ,.&.":         Split to digits
          &.":           Convert to string, apply left function, then undo conversion
        ,.               Ravel items (make array of singleton arrays of items)
                         This ensures that when cast back to integers, the digits are split.
      1+               Add 1 to each
    2!                 Compute (n choose 2) on each (nth triangular number)
 1#.                   Sum (debase 1)

1
[:+/-> 1#.মিয়া!
ফ্রাউনফ্রোগ

@ ফ্রাউনফ্রেগ একটি আসল কৌশল নয়, যদিও আমি যখন মনে করি তখন অবশ্যই আমি এটির যথেষ্ট ব্যবহার করি।
কোলে

4

এপিএল (ডায়ালগ) , 23 20 17 বাইট

3 বাইট সংরক্ষিত @ngn ধন্যবাদ

{⍵∪⍨+/∊⍳¨⍎¨⍕⊃⍵}⍣≡

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

কিভাবে?

⍵∪⍨ - বর্তমান অ্যারে প্রিপেন্ড করুন

+/ - সমষ্টি হল

- চ্যাপ্টা

⍳¨ - প্রতিটি রেঞ্জ

⍎¨⍕ - এর অঙ্ক

⊃⍵ - পূর্ববর্তী মান

⍣≡অভিমুখে না হওয়া পর্যন্ত (ইউনিয়ন) ব্যবহার নিশ্চিত করে যে প্রথম 1 যোগদানের পরে, পরবর্তীটি স্বতন্ত্রতার কারণে বাদ দেওয়া হবে এবং অ্যারেটি রূপান্তর করবে।


কৌতূহলের বাইরে আপনি যদি মূল মানটিকেও আউটপুট না দেওয়ার অনুমতি দেন তবে এটি আর কতদিন হবে?
ইয়ার

@ কায়ারডকোইনরিঙ্গিংহিং 2 বাইট - 1↓(প্রথম ড্রপ)
উরিল

@ ইউরিয়েল এখানে পাওয়ার সীমা (⍣≡) পুনরাবৃত্তির চেয়ে সংক্ষিপ্ত সমাধান দেয়: {⍵∪⍨ + / ∊⍳¨⍎¨⍕⊃⍵} ⍣≡ তবে এটি লজ্জার বিষয় এপিএল এর সমস্ত পুনরাবৃত্তি সংগ্রহ করার জন্য একটি সংক্ষিপ্ত উপায় নেই অভিসৃতি পর্যন্ত ফাংশন: ⍵ (f⍵) (f⍣2⊢⍵) (f⍣3⊢⍵) ...
ngn

@ ধন্যবাদ! আমি পাওয়ার অপারেটরটি ব্যবহার করার চেষ্টা করেছি, তবে 1 এর পরে রূপান্তরিত হওয়ার বিষয়টি সম্পর্কে আমি ভাবিনি didn't শীঘ্রই আপডেট হবে
উরিল

@ {+/∊⍳¨⍎¨⍕⎕←⍵}⍣≡সর্বশেষ 1 টি মুদ্রণ না করে কীভাবে ব্যবহার করবেন সে সম্পর্কে কোনও ধারণা ?
ঊরীয়েল

3

হাস্কেল, 51 47 46 বাইট

f 1=[1]
f x=x:f(sum$do d<-show x;[1..read[d]])

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

f 1=[1]                     -- if x == 1, return the singleton list [1]
f x=                        -- else
         do d<-show x       --  for each char 'd' in the string representation of x
                            --    (using the list monad)
           [1..read[d]]     --  make a list of [1..d]
                            --    (the list monad concatenates all those lists into a single list)
        sum                 --  sum those numbers
      f                     --  call f on it
    x:                      --  and put x in front of it 

সম্পাদনা করুন: @ এইচপিউইজ একটি বাইট সংরক্ষণ করেছেন saved ধন্যবাদ!



2

ওল্ফ্রাম ল্যাঙ্গুয়েজ (ম্যাথমেটিকা) , 43 41 বাইট

Echo@#>1&&#0[#.(#+1)/2&@IntegerDigits@#]&

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

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

এক্সপ্রেশনটি #.(#+1)/2&@IntegerDigits@#এর ডিজিটাঙ্গুলার কাউন্টার পার্ট দেয় #। আমরা Echoইনপুটটি, &&যদি পৌঁছে যাই তবে থামাতে সংক্ষিপ্ত-সার্কিট মূল্যায়ন ব্যবহার করি 1এবং অন্যথায় ডিজিটাঙ্গুলার অংশে পুনরাবৃত্তি করি।


-২ বাইটস .কৌতুকের জন্য মার্টিন ইন্ডারকে ধন্যবাদ : আমরা Trযদি #(#+1)/2ডট পণ্যটির দ্বারা গুণটি প্রতিস্থাপন করি তবে আমাদের অঙ্কগুলি যোগ করতে হবে না #.(#+1)/2


2
কেবলমাত্র এখন আপনার উত্তরটি দেখেছি। আপনি এড়াতে স্কেলার পণ্য কৌশল ব্যবহার করে আমার মারতে পারেন Tr:Echo@#>1&&#0[#.(#+1)/2&@IntegerDigits@#]&
মার্টিন এন্ডার

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

2

ওল্ফ্রাম ভাষা (গণিত) , 49 42 39 বাইট

3 বাইট বাঁচানোর জন্য মিশা লাভরভকে ধন্যবাদ জানাই।

#//.x_:>(y=IntegerDigits@Echo@x).++y/2&

এটি অনলাইন চেষ্টা করুন! (টিআইওর ++yকোনও কারণে চারপাশে প্রথম বন্ধনী প্রয়োজন my আমার স্থানীয় গণিতের ইনস্টলেশনতে এটি তাদের ছাড়া যেমন কাজ করা উচিত তেমনি কাজ করে))

প্রতিটি মান তার নিজস্ব লাইনে মুদ্রণ করে, এর আগে >>, এবং প্রারম্ভিক নম্বর অন্তর্ভুক্ত করে।


আপনি আমার উত্তরটি মারতে ফিরে যেতে পারেন #//.x_:>(y=IntegerDigits@Echo@x).++y/2&। (... হতে পারে। কোনও কারণে টিআইও এটি পছন্দ করে না তবে ম্যাথামেটিকার সাথে এটি ভাল?)
মিশা লাভরভ

ওয়েল, #//.x_:>(y=IntegerDigits@Echo@x).(++y)/2&41 বাইট এবং টিআইওতে কাজ করে। তবে আমার গাণিতিকের অনুলিপি মনে হয় না যে প্রথম বন্ধনী প্রয়োজনীয়।
মিশা লাভরভ

@ মিশা লাভরভ ধন্যবাদ হ্যাঁ, টিআইওর প্রথম বন্ধনী কেন দরকার সে সম্পর্কে কোনও ক্লু নেই, তবে স্ক্রিপ্ট ফাইলগুলিতে সিনট্যাক্স কখনও কখনও কিছুটা দুর্বল থাকে।
মার্টিন ইন্ডার

1

ওহম ভি 2 ,  9  7 বাইট

·Ω}#ΣΣu

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

ব্যাখ্যা

          Implicit input as a string
·Ω        Evaluate until the result has already been seen, pushing intermediate results
  }       Split digits
   #      Range from 0 to N
    ΣΣ    Sum
      u   Convert to string

uঅযথা নয় ?
নিক ক্লিফোর্ড

এটি প্রয়োজনীয় অন্যথায় }অঙ্কগুলি ভাগ করবে না
সিনাস্কি

হুঁ। এটি একটি বাগ হতে পারে। আমি তা চেক আউট করব.
নিক ক্লিফোর্ড

1

রেটিনা , 21 বাইট

;{:G`
.
$*1¶
1
$%`1
1

এটি অনলাইন চেষ্টা করুন! (পৃথক ক্ষেত্রে আউটপুটগুলি ভালভাবে আলাদা হয় না, তবে প্রতিটি আউটপুট একটি দিয়ে শেষ হয়1 ))

শুরুর নম্বর সহ প্রতিটি নম্বরকে তার নিজস্ব লাইনে মুদ্রণ করে।

ব্যাখ্যা

;{:G`

এটি প্রোগ্রামটির কিছু কনফিগারেশন। {ফলাফলটি পরিবর্তন করতে ব্যর্থ হওয়া অবধি প্রোগ্রামটি লুপ করে তোলে (যা আমরা একবার পেয়ে গেলে 1) :প্রতিটি পুনরাবৃত্তির আগে নম্বর প্রিন্ট করে এবং ;প্রোগ্রামের শেষে দু'বার মুদ্রণ থেকে চূড়ান্ত ফলাফলকে বাধা দেয়। Gকোন সমিতি মঞ্চে তৈরি করার শুধু আমার স্বাভাবিক উপায়।

.
$*1¶

প্রতিটি অঙ্ককে অ্যানারিতে রূপান্তর করুন এবং এটি নিজের লাইনে রেখে দিন।

1
$%`1

প্রতিটি লাইনের ত্রিভুজাকার সংখ্যাটি প্রতিটি 1উপসর্গের সাথে প্রতিস্থাপন করে গুণান। আমরা এখানেও ব্যবহার করতে M!&`1+পারি, যা আমাদের প্রতিটি লাইনের প্রত্যয় দেয়।

1

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


রেটিনা কি টিউরিং সম্পূর্ণ ভাষা?

@ পাইরেটবে হ্যাঁ
মার্টিন ইন্ডার

1

রুবি, 60 47 42 বাইট

@ জাস্টিনমারিনার -13 বাইট

@ জিবি দ্বারা 5 বাইট

->x{p x=x.digits.sum{|k|k*-~k/2}while x>1}

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


আপনি অ্যারে এবং স্প্ল্যাট ( [*...]) স্পট করতে পারেন এবং মোট 5 বাইট সংরক্ষণ করতে পরিবর্তন (k+1)করতে -~kপারেন: এটি অনলাইনে চেষ্টা করুন! অতিরিক্ত হিসাবে, আপনি একটি বেনাম ল্যাম্বদা ফাংশনে স্যুইচ করে আরও 8 টি সঞ্চয় করতে পারেন: এটি অনলাইনে চেষ্টা করুন!
জাস্টিন মেরিনার

হুঁ, আমি কেন ভেবেছিলাম .mapঅ্যারে নিতে পারছি না no
কেবল সুন্দর আর্ট

আপনি "মানচিত্র {... sum। যোগফল" এর পরিবর্তে "যোগফল {...}" ব্যবহার করতে পারেন এবং তারপরে "যখন" এর আগে স্থানটি সরিয়ে ফেলতে পারেন
জিবি






0

05 এ বি 1 ই , 20 12 বাইট

কেয়ারড কোইনারিংহিংকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে

ΔD,þ€iLO}O}}

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

ব্যাখ্যা

(পুরাতন রুপ)

Δþ€iD>*;}OD1›iD,}}1,  Main program
Δ                }    Repeat until there is no changes
 þ                    Push digits of the input number
  €i    }             Apply for each digit
    D>*;              Calculate the triangular number for given digit
         O            Sum all numbers
          D1›iD,}     Print if greater than 1
                  1,  Print 1 at the end



0

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

W⊖Iθ«≔IΣ⭆θΣ…·0κθθ⸿

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

   θ                Input
  I                 Cast to integer
 ⊖                  Decrement
W   «               Loop while not zero
         θ          Current value
        ⭆           Map over characters and concatenate
             0      Literal character 0
              κ     Current character
           …·       Inclusive range
          Σ         Concatenate
       Σ            Sum of digits
      I             Cast to string
     ≔         θ    Assign back to value
                θ   Output latest value
                 ⸿  Move to start of next line


0

কে , 19 বাইট

{+/(+/1+!"I"$)'$x}\

ইতিমধ্যে পোস্ট করা এপিএল এবং জে সমাধানগুলির মতোই অবিশ্বাস্য কাজ করে

               $x    cast x (implicit var of lambda) to string
   (         )'      apply composition (function train) to each character of string
    +/1+!"I"$        cast character to number, create list from 1 to n, sum it
 +/                  sum triangular numbers
{                }\  iterate lambda until result converges, appending each result

0

জেলি , 7 বাইট

DRFSµÐĿ

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

  • DRFSµÐĿ: সম্পূর্ণ প্রোগ্রাম / monadic লিঙ্ক।

  • ÐĿ: ফলাফলগুলি আর অনন্য না হওয়া পর্যন্ত লুপ (1 টির বাইরে অন্য কিছু যদি দু'বার ঘটে, তবে প্রদত্ত ইনপুটটির কোনও সংজ্ঞায়িত ফলাফল নেই, কারণ এটি কখনই 1 এ পৌঁছায় না)।

  • D: পূর্ণসংখ্যা থেকে দশমিক রূপান্তর করুন।

  • R: ব্যাপ্তি (1-সূচকযুক্ত)। Vectorizes।

  • F: সমতল এবং S: সমষ্টি ( µকেবল একটি নতুন মোনাদিক চেইন তৈরি করে)


0

ডিসি, 31 বাইট

[[I~d1+*2/rd0<m+]dsmxpd1<f]dsfx

ফাংশনটি mতার ইনপুটটির ডিজিটাঙ্গুলার ফাংশনটি গণনা করে;fফলাফলটি 1 না হওয়া পর্যন্ত এটি পুনরাবৃত্তি করে।

নোট করুন যে আমরা অঙ্কগুলি আনতে ইনপুট রেডিক্স ব্যবহার করি - এর অর্থ এটি দশমিক নয়, কোনও বেস সিস্টেমে কাজ করবে।

ডেমো

for i in 23 72 55 78 613 8392 11111 8592025 999999999
    do echo $i '=>' $(dc -e $i'[[I~d1+*2/rd0<m+]dsmxpd1<f]dsfx')
done
23 => 9 45 25 18 37 34 16 22 6 21 4 10 1
72 => 31 7 28 39 51 16 22 6 21 4 10 1
55 => 30 6 21 4 10 1
78 => 64 31 7 28 39 51 16 22 6 21 4 10 1
613 => 28 39 51 16 22 6 21 4 10 1
8392 => 90 45 25 18 37 34 16 22 6 21 4 10 1
11111 => 5 15 16 22 6 21 4 10 1
8592025 => 117 30 6 21 4 10 1
999999999 => 405 25 18 37 34 16 22 6 21 4 10 1


0

নিম , 8 বাইট

ͻ𝐂t𝕕𝐬D÷D

ব্যাখ্যা:

ͻ             Start infinite loop
 𝐂            Split top of stack into each of its characters
  t           Push infinite list of triangular numbers
   𝕕          For each of the characters, get the nth element in the above list.
    𝐬          Sum.
     D         Duplicate.
      ÷        If top of stack is equal to 1, break.
       D       Duplicate.
               Implicitly print all elements in the stack, concatenated.

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

ফর্ম্যাট করা আউটপুট



0

পিএইচপি, 71 + 1 বাইট

for(;1<$n="$s"?:$argn;print$s._)for($i=$s=0;$p--||~$p=$n[$i++];)$s+=$p;

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন । (এলভিস অপারেটরের জন্য পিএইচপি 5.3 বা তার পরে প্রয়োজন)


এলভিস অপারেটর কী?
এয়ারড কোইনারিংহিং

@ কায়ারডকোইনরিঙ্গিংহিং A?:B: যদি এ সত্যবাদী হয় তবে অন্য কোনও বি
টাইটাস

0

++ , 32 বাইট যুক্ত করুন

D,f,@,EDBFEREss
+?
y:1
W!,$f>x,O

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

প্রথম মান আউটপুট দেয় না

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

D,f,@,   - Create a monadic function, f.
         - Example argument: [613]
      ED - Digits;   STACK = [[6 1 3]]
      BF - Flatten;  STACK = [6 1 3]
      ER - Range;    STACK = [[1 2 3 4 5 6] [1] [1 2 3]]
      Es - Sum each; STACK = [21 1 6]
      s  - Sum;      STACK = [28]

           f calculates n's digitangular counterpart

+?       - Take input;     x = 613; y = 0
y:1      - Set y to 1;     x = 613; y = 1
W!,      - While x != y...
   $f>x, -   Call f;       x =  28; y = 1
   O     -   Print x;

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