196 অ্যালগরিদম কোড গল্ফ


35

196-অ্যালগোরিদমের জন্য একটি ছোট প্রোগ্রাম লিখুন । অ্যালগোরিদম একটি পূর্ণসংখ্যা থেকে শুরু হয়, তারপরে প্যালিনড্রোম পৌঁছানো পর্যন্ত তার বিপরীতে এটি যুক্ত করে।

যেমন

input = 5280
5280 + 0825 = 6105
6105 + 5016 = 11121
11121 + 12111 = 23232
output = 23232

ইনপুট

একটি পূর্ণসংখ্যা, যা লিরচ্রেল সংখ্যা নয় (এটি শেষ পর্যন্ত অসীমভাবে চালিয়ে যাওয়ার চেয়ে এই অ্যালগরিদমের অধীনে একটি প্যালিনড্রোম দেয়)

আউটপুট

প্যালিনড্রোমে পৌঁছেছে।


6
কারণ আপনার প্রশ্নটি সম্ভবত একমাত্র 196 আলগোরিদিমকে জড়িত। একক-ব্যবহারের জন্য ট্যাগ তৈরি করা কার্যকর নয়।
ক্রিস জেস্টার-ইয়ং

2
আমি কি বোঝানো হয়েছিল, আপনার প্রশ্নের শুধুমাত্র এক হতে পারে কি কখনো এমনকি 2 বছর 'সময়, এই বিষয়ে জড়িত। :-)
ক্রিস জেস্টার-ইয়ং

1
@ ক্রিস: ঠিক আছে, ১৯6--অ্যালগোরিদম বেশ জনপ্রিয় একটি, এটি বিভিন্ন নাম দিয়ে চলেছে। ঠিক নিশ্চিত হওয়া সত্ত্বেও, আমি 2 বছর-সময়
বিরতির

1
@ গিগা ওয়াটও, আপনার মুঠির প্রশ্নটি আমি ছড়িয়ে দিয়েছি :) কেবল এ023108 এর ক্ষেত্রে বিরক্ত করবেন না।
এলেভেক্স

1
@ জোয়েল, যেমন A023108 এর মতো, কেবল তাদের উপেক্ষা করুন (আপনি তাদের সম্পর্কে জানেন না এমন আচরণ করুন); আমরা জানি না যে কোনওভাবেই আছে কি না।
ইয়েলেক্স ২x

উত্তর:


10

এপিএল (22 টি অক্ষর)

{a≡⌽a←⍕(⍎⍵)+⍎⌽⍵:a⋄∇a}⍞

এটি ডায়ালগ এপিএলে কাজ করে। ডান থেকে বামে এখানে একটি ব্যাখ্যা রয়েছে:

  • { ... }⍞: অক্ষর ( ) হিসাবে ব্যবহারকারীর কাছ থেকে ইনপুট পান এবং এটি আমাদের ফাংশনে ( { ... }) দিন।
  • সরাসরি ফাংশনের মধ্যে ( বিবৃতিগুলি পৃথক করে, তাই আমরা এগুলি বাম থেকে ডানে দেখি):
    • a≡⌽a←⍕(⍎⍵)+⍎⌽⍵ : a: সঠিক আর্গুমেন্টের ( ) বিপরীত ( ) মূল্যায়ন ( ) করুন এবং এটি সঠিক যুক্তির নিজেই মূল্যায়িত সংস্করণে যুক্ত করুন। তারপরে, ফলাফলটি ফর্ম্যাট করুন ( ; উদাহরণস্বরূপ, এর চরিত্রের উপস্থাপনা দিন), ( ) যা ভেরিয়েবলকে নির্ধারণ করুন aএবং শেষ পর্যন্ত aএর বিপরীতটি a(যদি aপ্যালিনড্রোম হয়?) এর সমান হয় তবে পরীক্ষা করুন । যদি সত্য হয়, ফিরে আসুন a; অন্যথায় ...
    • ∇a: aআমাদের ফাংশনে ফিরে ফিড (অন্তর্ভুক্ত স্ব-রেফারেন্স)।

উদাহরণ:

      {a≡⌽a←⍕(⍎⍵)+⍎⌽⍵:a⋄∇a}⍞
412371
585585

2
সংখ্যার ইনপুট ব্যবহার করতে এটি কয়েকটি অক্ষর সংরক্ষণ করে। {⍵=A←⍎⌽⍕⍵:⍵⋄∇A+⍵}⎕। আপনি ধনুর্বন্ধনী, একটি বিপরীত এবং একটি eval সংরক্ষণ করুন।
মেরিনাস

10

গল্ফস্ক্রিপ্ট, ২৯ টি চর

~]{{.`.-1%.@={;0}{~+1}if}do}%

নির্বাচিত ভাষ্য

প্রোগ্রামের মাংস doঅবশ্যই লুপ হয় । সুতরাং আমি কেবল এটি আবরণ করব।

  1. .` নম্বরটি অনুলিপি করে এবং স্ট্রিংফাইজ করে।
  2. .-1% স্ট্রিং সংস্করণটি অনুলিপি করে এবং এটির বিপরীত হয়।
  3. .@ বিপরীত সংস্করণটি অনুলিপি করে এবং আসল অ-বিপরীত সংস্করণটিকে সামনে এনে দেয়।

সুতরাং, বলুন, সংখ্যা 5280. এই পর্যায়ে রয়েছে, স্ট্যাক হল: 5280 "0825" "0825" "5280"। মঞ্চ তুলনার জন্য সেট করা হয়। (তুলনার পরে, স্ট্যাকটি 5280 "0825"যাই থাকুক না কেন --- তুলনা করার আইটেমগুলি পপ করা হয়েছে been)

  1. যদি স্ট্রিং এবং বিপরীতগুলি একই হয়, আমরা বিপরীত স্ট্রিংয়ের বিষয়ে চিন্তা করি না, সুতরাং এটি কেবল পপ অফ করুন ( ;) এবং 0 ( doলুপ শেষ করতে) ফিরে আসুন।
  2. যদি তারা মেলে না, তবে ~বিপরীত স্ট্রিংটি মূল্যায়ন করুন ( এটি একটি সংখ্যা তৈরি করতে), +মূল সংখ্যায় ( ) যোগ করুন এবং 1 ( doলুপটি অবিরত রাখতে ) ফিরে আসুন।

4
আপনি কি নিশ্চিত যে আপনি আপনার কীবোর্ডে এলোমেলো কী টিপেন নি? দেখে মনে হচ্ছে ...

1
@ এম 28: গল্ফস্ক্রিপ্ট পার্লের চেয়ে লাইন শোরের মতো আরও বেশি দেখাচ্ছে, তাই না? ;-)
ক্রিস জেস্টার-ইয়াং

আমি আপনার জন্য দুঃখ বোধ করছি, কোডটি অবশ্যই বেদনাদায়ক হবে

@ এম 28: লুহান অ্যালগরিদমের জন্য আমি যে সমাধানটি লিখেছিলাম, ততটা কষ্টদায়ক ছিল না । শুধু এটি সম্পর্কে চিন্তা করুন। :
ক্রিস জেস্টার-ইয়াং

আপনার পরিবার আপনাকে নিয়ে চিন্তিত

10

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

JPvdMerwe পরামর্শ অনুসরণ:

n=input()
while`n`!=`n`[::-1]:n+=int(`n`[::-1])
print n

পাইথন 2, 62:

n=raw_input()
while n!=n[::-1]:n=`int(n)+int(n[::-1])`
print n


2
দিকে তাকিয়ে n: int হিসাবে আপনি 6 অক্ষর দ্বারা খাটো করতে পারেন, কোড জন্য চেক meta.codegolf.stackexchange.com/q/75/62
JPvdMerwe

দেখে মনে হচ্ছে আমি দুর্ঘটনাবশত আমার লাইনে আমার ফাইলের শেষের দিকে স্নিগ্ধভাবে যুক্ত হওয়া নতুন লাইনটি অন্তর্ভুক্ত করেছি। আসল গণনা 55.
JPvdMerwe

7

রুবি - 56 অক্ষর

x,r=gets
x="#{x.to_i+r.to_i}"until x==r=x.reverse
puts x

7

কোনও গুরুতর প্রতিযোগী নয়, কেবল আমার পাইথ দক্ষতা প্রয়োগ করুন

পাইথ, 16 বাইট

L?bqb_by`+vbi_bTyz

পাইথন 3 এর সমতুল্য:

y=lambda b:b if b==b[::-1] else y(str(eval(b)+int(b[::-1],10)))
print y(input())

ইতিমধ্যে কিছু পুরানো চ্যালেঞ্জ চেষ্টা করছি, ইতিমধ্যে জবাব দেওয়া হয়েছে, তাই গুরুতর প্রতিযোগী নয়।
স্বতঃস্ফীতি

1
কিছু চ্যালেঞ্জ লেখক যদি সংক্ষিপ্ত সমাধান আসে তবে গৃহীত উত্তরটি আপডেট করবেন, সুতরাং আমি মনে করি যে ওপিকে অবহিত করা উচিত, এটি প্রযুক্তিগতভাবে বৈধ জমা নয়। (আমাকে ভুল করবেন না, আমি মজাদার জন্য সিজেএমের সাথেও পুরানো চ্যালেঞ্জগুলির জবাব দিতে চাই - এবং আমি কয়েক মিনিট আগে করেছি I'm আমি কেবল বলছি, আপনি যদি করেন তবে একটি নোট রেখে দিন, ভাষাটি নতুনের চেয়ে নতুন চ্যালেঞ্জ.)
মার্টিন এন্ডার

আসলে "একজন গুরুতর প্রতিযোগী না হওয়া" একটি উত্তর মুছে ফেলার বিষয় হিসাবে তৈরি করে - তবে এটিকে কোনও গুরুতর প্রতিযোগী হিসাবে বিবেচনা করার কোনও কারণ আমি দেখছি না।
পিপ্পারি


6

সিজেম, 22 21 বাইট

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

r{__W%:X=0{~X~+s1}?}g

ব্যাখ্যা:

r{                 }g    "Read the input number as string and enter a while-do loop";
  __                     "Make 2 copies of the string number";
    W%:X                 "Reverse the second and store it in X";
        =                "Check if the number is already palindrome";
         0{      }?      "Put 0 on stack if it is palindrome, else, run the code block";
           ~             "Convert the string to int";
            X~           "Put the reverse string on stack and convert it to int too";
              +s         "Add the two numbers and covert back the result to string";

মূল যুক্তিটি হ'ল প্রতিটি করণীয় পুনরাবৃত্তিতে আপনি প্রথমে প্যালিনড্রোম অর্জন করেছেন কিনা তা পরীক্ষা করে দেখুন। যদি তা না হয় তবে সংখ্যার সাথে বিপরীত যুক্ত করুন। অ্যালগরিদম কি খুব সুন্দর!

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


5

এটি আসল প্রতিযোগী, যেহেতু জে প্রায় দশক ধরে রয়েছে।

জে (16 বাইট)

(+^:~:|.&.":)^:_

এটি একটি ক্রিয়াপদ, সুতরাং এটি একটি জে অধিবেশনে একটি পরিবর্তনশীল বরাদ্দ করা যেতে পারে এবং এর মতো ব্যবহার করা যেতে পারে:

   f =. (+^:~:|.&.":)^:_
   f 5280
23232

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

(+^:~:|.&.":)^:_
 +^:~:           add if unequal
      |.&.":     reverse under string format
 +^:~:|.&.":     add reverse unless a palindrome
(           )^:_ repeat until unchanged




4

জেএগএল আলফা 1.2 - 19, 21 স্টিডিন সহ

বিতর্ক নয় , কেবল আমার ভাষার সাথে কিছু অভিজ্ঞতা
অর্জন করা স্টিডিনের কাছ থেকে একটি সংখ্যা প্রত্যাশা করে

T~d{DddgCi+dgdC=n}uSP

ব্যাখ্যা

T~                       Get a line of input, and eval to an integer
  d                      Duplicate (for first round)
   {Ddd                  Drop last and duplicate twice
       gCi               Convert to string, reverse, and convert back to integer
          +d             Add to original and duplicate
            gdC          Convert to string, duplicate, reverse
               =n}       If it isn't a palindrome, keep going
                  uSP    Run until palindrome reached, then print output number

সম্পাদনা করা হয়েছে। @ অপ্টিমাইজার
বিশ্বব্যাপী

সামান্য সম্পাদনাগুলির জন্য দয়া করে আপনার সমস্ত জমাগুলি একবারে সম্পাদনা করবেন না (সংস্করণ সংখ্যার মতো), কারণ এটি অকারণে প্রথম পৃষ্ঠাটিকে বিশৃঙ্খলা করে। আপনি যদি একবারে 2 বা 3 টি করেন তবে এটি ঠিক আছে, তবে আরও নিয়মিত পদ্ধতিতে সম্পাদনা করার আগে কয়েক ঘন্টা অপেক্ষা করুন।
মার্টিন এন্ডার

ভুলে গেছি যে এটি প্রথম পৃষ্ঠায় ঠেলে দেবে, আমার খারাপ। @ মার্টিনব্যাটনার
গ্লোবাল

4

05 এ বি 1 ই , 7 বাইট (প্রতিযোগী নয়)

অ-প্রতিদ্বন্দ্বী , যেহেতু ভাষা চ্যালেঞ্জ পোস্ট করে।

কোড:

[DÂQ#Â+

ব্যাখ্যা:

[        # Infinite loop.
 DÂ      # Duplicate and bifurcate (which duplicates it and reverses the duplicate).
   Q#    # If the number and the number reversed are equal, break.
     Â+  # Add the reversed number to the initial number.

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


দ্বিখণ্ডন প্রক্রিয়া সম্পর্কে আপনি আরও কিছু ব্যাখ্যা করতে পারেন?
কনার ও'ব্রায়েন

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ উদাহরণস্বরূপ, স্ট্যাকের উপর স্ট্রিং hello। দ্বিখণ্ডনটি মূল স্ট্রিংটি রাখবে এবং স্ট্রিংটিকে বিপরীত দিকে ঠেলে দেবে। এটি সদৃশ এবং বিপরীতে সংক্ষিপ্ত ।
আদনান

আচ্ছা বুঝলাম. শান্ত! ধন্যবাদ
কনার ও'ব্রায়ান

4

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

↔?|↔;?+↰

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

ব্র্যাচল্যাগ প্রবর্তন ভিডিও থেকে প্রথম ব্র্যাচিয়েলগ প্রোগ্রামগুলির মধ্যে একটির মতোই আমি দেখেছি এবং আগ্রহী হয়েছিলাম ।

?↔?.|↔;?+↰.  (initial ? and the .s are implicit)

?↔?          % If the input and its reverse are the same,
   .         %   then the input is the output
    |↔;?+↰   % Or, add the input and its reverse, and call this predicate recursively
          .  % The result of that is the output

3

পিএইচপি - 54 48 টি অক্ষর

<?for($s=`cat`;$s!=$r=strrev($s);$s+=$r);echo$s;

টেস্ট:

$ php 196.php <<< 5280
23232

আমি $str = ভবিষ্যতের গল্ফিংয়ের জন্য বিড়াল জিনিসটি মনে রাখতে চাই। হেক ব্যবহারের চেয়ে অনেক বেশি ভাল STDINএবং এখনও তার চেয়ে ভাল $argv[0]
মিঃ ল্লামা

@ গিগাওয়াট: $ s = 'এম 4' এও কাজ করা উচিত।
নিনজালজ

3

বাশ ()৪)

X=`rev<<<$1|sed s/^0*//`;[ $1 = $X ]&&echo $1||. $0 $(($1+$X))

কল করুন: ব্যাশ <ফাইলী> <নাম্বার>


<ফাইল নাম> কিসের জন্য?
ইয়েলেক্স

2
@ ইলেভেক্সের স্ক্রিপ্টটি নিজেকে কল করতে হবে যাতে আপনার এটি কোনও ফাইলে সংরক্ষণ করা উচিত।
মেরিনাস

3

সি # - 103 99 টি চর

public int P(int i)
{
    var r = int.Parse(new string(i.ToString().Reverse().ToArray())));
    return r == i ? i : P(i + r);        
}

গ # গল্ফ কখনই খুব ভাল করে না। মার্জিত, কিন্তু ভার্বোস।


1
আপনি এটি আরও সহজে গল্ফ করতে পারেন। "" পরিবর্তে। "ব্যবহার করুন। স্ট্রাস্টিং করুন এবং কিছু স্থান থেকে মুক্তি পান।
জ্যাকব

3

প্রশ্নে (39 অক্ষর)

f:{while[x<>g:"I"$reverse -3!x;x+:g];x}

নমুনা ব্যবহার:

q)f 5280
23232

সম্পাদনা:

এখন 34 এর নিচে, একই ব্যবহার:

{while[x<>g:"I"$(|) -3!x;x+:g];x} 5280


3

জেলি , 9 বাইট (প্রতিযোগী নয়)

খুব সহজ উত্তর, কেবল কোডিং এবং গোপনীয় ভাষায় চ্যালেঞ্জের জন্য।

ṚḌ+µŒḂ¬$¿

ṚḌ        : take the argument, reverse (and vectorize) it
  +µ      : add both
    ŒḂ¬$¿ : while the result isn't a palindrome

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

এই উত্তরটি যদি কোনও স্তরের অস্পষ্ট বা ভুল হতে পারে তবে এটিকে নির্দ্বিধায় উল্লেখ করুন।

এই প্রথম ছোট টুকরো কোডটি আমাকে সাহায্য করার জন্য ডেনিসকে ধন্যবাদ।


বাহ, প্রত্যেকেই তাদের প্রথম পোস্টে জেলি ব্যবহার করে না।
নিসা

এসপিওরজিক ভাষা ব্যবহার করে পিপিসিজিতে উত্তর পোস্ট করা আমার করণীয় তালিকায় ছিল। জেলি প্রথম
বলেছিল

2

পাইথন। 85 টি অক্ষর:

s,i=str,int;rs=lambda q:s(q)[::-1];n=i(input());
while rs(n)!=s(n):n+=i(rs(n));print n

আপনি যদি প্রতিটি পুনরাবৃত্তির উপর আউটপুট না চান:

s,i=str,int;rs=lambda q:s(q)[::-1];n=i(input());
while rs(n)!=s(n):n+=i(rs(n))
print n

(একটি কম চরিত্র)


কার্য বিবরণে বলা হয়েছে যে কেবল চূড়ান্ত প্যালিনড্রোম মুদ্রণ করা উচিত।
জোয়ি

2

উইন্ডোজ পাওয়ারশেল (63)

for($a=+"$input";-join"$a"[99..0]-ne$a){$a+=-join"$a"[99..0]}$a

আমি এখনও এটি ঘৃণা করি যে স্ট্রিংটি বিপরীত করার কোনও সহজ উপায় নেই।


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

2

হাস্কেল 89 87 টি চর

r=read.reverse.show
main=getLine>>=print.head.filter(\x->x==r x).iterate(\x->x+r x).read

কিছুটা পঠনযোগ্য সংস্করণ:

myFind p = head . filter p
rev = read . reverse . show
isPalindrome x = x == rev x
next x = x + rev x
sequence196 = iterate next
palindrome196 = myFind isPalindrome . sequence196

main = getLine >>= print . palindrome196 . read

গল্ফযুক্ত সংস্করণটি ম্যানুয়াল ইনলাইনিং করে অবশিষ্ট ফাংশনগুলিকে একক অক্ষরের নাম পরিবর্তন করে তৈরি করা হয়েছিল।


1
আপনি প্রিলিওড untilথেকে আন্ডারউসড ফাংশনটির সুবিধা গ্রহণের পাশাপাশি xএবং বাইনারি অপারেটর প্রয়োগ করার ধরণটি বের করে এবং এটি কিছুটা ছোট করতে পারেন r x। এছাড়াও, এর readLnপরিবর্তে getLineএবং ব্যবহার করুন read। ফলাফলটি 20 টি অক্ষর সংরক্ষণ করে:f%x=f x$read.reverse.show$x;main=readLn>>=print.until((==)%)((+)%)
হামার

@ হ্যামার: আপনি মনড ফাংশনটি ব্যবহার করতে পারেন এবং আরও অনেক কিছু সংরক্ষণ করতে পারেন: সংজ্ঞায়িত করুন r=(=<<read.reverse.show)এবং কেবল ব্যবহার করুন r(==)`until`r(+)। সেই সঞ্চয়টি বাদে, এটি একটি সম্পূর্ণ প্রোগ্রাম হওয়ার দরকার নেই, একটি বৈধ জমা আগে থেকেই নামহীন ফাংশন হতে পারে। এটি আপনাকে 41 বাইটে নামিয়েছে: এটি অনলাইনে চেষ্টা করুন!
31

2

befunge, 57 বাইট

"KCTS"4(&:0\v
\T\a*+\:0`jv>:a%\a/
0:+_v#-TD2$<^\
  @.<

যদিও কোডটি 4x19 গ্রিডে স্থান রয়েছে, তাই এটি কল করতে পারে 76।

  • প্রথম লাইনটি আরম্ভ করা হচ্ছে এবং ইনপুট নম্বরটি পড়ছে
  • দ্বিতীয় লাইনটি স্ট্যাকের প্রথম সংখ্যাটিকে বিপরীত করে এবং দ্বিতীয় স্ট্যাকের অবস্থানে রাখে।
  • এবং তৃতীয় লাইনটি যদি কোনও সংখ্যা প্যালিনড্রোম হয় কিনা তা পরীক্ষা করে।

2

সি ++ টিএমপি (256 টি অক্ষর)

#include<cstdio>
#define Y(A,B,C,D)template<int N>struct A<C,D>{enum{v=B};};
#define Z(A)template<int N,int M>struct A{enum{v=
#define n 5194
Z(R)R<N/10,M*10+N%10>::v};};Y(R,N,0,N)Z(S)S<N+M,R<N+M,0>::v>::v};};Y(S,N,N,N)main(){printf("%d",S<n+R<n,0>::v,0>::v);}

এই সংস্করণটি কিছুটা ছোট করা যেতে পারে তবে একটি 256-অক্ষরের উত্তর পাস করা শক্ত। এখানে একটি অ-গল্ফ করা সংস্করণ:

#include <iostream>

template<size_t N>
class Reverse
{
    template<size_t M, size_t R>
    struct Inner
    {
        enum { value = Inner<M/10, R*10 + M%10>::value };
    };

    template<size_t R>
    struct Inner<0, R>
    {
        enum { value = R };
    };

public:
    enum { value = Inner<N, 0>::value };
};

template<size_t N>
class OneNineSix
{
    template<size_t M, size_t R=Reverse<M>::value>
    struct Inner
    {
        enum { value = OneNineSix<M + R>::value };
    };

    template<size_t M>
    struct Inner<M, M>
    {
        enum { value = M };
    };

public:
    enum { value = Inner<N + Reverse<N>::value>::value };
};

int main()
{
    const size_t N = 4123;

    std::cout << OneNineSix<N>::value << std::endl;
}


2

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

L,BDbRBv
D,f,@,1]A+
D,g,@,1]A=
D,h,@,{f}A{g}Q{h}
L,{h}2/i

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

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

L,	; Create a function 'lambda 1'
	; Example argument:   [5280]
    BD	; Digits;     STACK = [[5 2 8 0]]
    bR	; Reverse;    STACK = [[0 8 2 5]]
    Bv	; Undigits;   STACK = [825]

D,f,@,	; Define a monadic function 'f'
	; Example argument:         [5280]
    1]	; Call 'lambda 1';  STACK = [825]
    A+	; Add the argument; STACK = [6105]

D,g,@,	; Define a monadic function 'g'
	; Example argument:          [5280]
    1]	; Call 'lambda 1';   STACK = [825]
    A=	; Equal to argument; STACK = [0]

D,h,@,	; Define a monadic function 'h'
	; Example argument:  [5280]
   {f}	; Call 'f';  STACK = [6105]
   A{g}	; If 'g'...
   Q	;   Return
   {h}	; Else call 'h'

L,	; Define a function, 'lambda 2'
	; Example argument: [5280]
   {h}	; Call 'h'; STACK = [46464]
   2/i	; Halve;    STACK = [23232]

2

পাওয়ারশেল, 63 62 বাইট

-1 বাইট @ অ্যাডমবার্কবার্ককে ধন্যবাদ

param($m)for(;$m-$s;$m=-join"$s"[-1..-"$s".Length]){$s+=$m};$s

পরীক্ষার স্ক্রিপ্ট:

$f = {
param($m)for(;$m-$s;$m=-join"$s"[-1..-"$s".Length]){$s+=$m};$s
}

&$f 5280

1
আপনার ;মাঝে param($m)এবং এর মধ্যে দরকার নেই for
অ্যাডমবর্কবার্ক

2

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

জিএনইউ ডিসি প্রয়োজন, মিনিট সংস্করণ 1.4 ( Rকমান্ডের জন্য )।

[O~3RO*+rd0<R]sR[+lfx]sg[ddO~rd0<R+d3R!=g]dsfx

ইনপুট এবং আউটপুট যথারীতি শীর্ষে থাকে। ডিসিতে ডিজিটগুলি বিপরীতে আনতে এক বিস্ময়কর কোড লাগে (যদি না আমি কিছু অনুপস্থিত না করি যা অসম্ভব থেকে দূরে)। এটির মতো ইনপুটগুলি (যা 32-বিট স্বাক্ষরবিহীন গাণিতিককে উপচে পড়বে, উদাহরণস্বরূপ) এর সাথে ভাল আচরণ করার জন্য এটির সংখ্যার পরিসীমা রয়েছে:

  • 89 ⇒ 8,813,200,023,188
  • 8997 ⇒ 16,668,488,486,661
  • 10677 ⇒ 4,668,731,596,684,224,866,951,378,664

ব্যাখ্যা

# Reverse digits, starting after first digit extracted
[O~3RO*+r d0<R]sR

# Recursion helper - add and recurse
[+ lfx]sg

# Main recursive function
[dd O~r d0<R+ d3R !=g]dsfx


এটি নির্দিষ্ট করতে চায় যে এটি কেবল জিএনইউ ডিসি 1.4 এবং এর পরে কাজ করে, কারণ এটি নতুন Rকমান্ড ব্যবহার করে । ভাল সমাধান, যদিও!
সোফিয়া ল্যাটারের

আমি সম্পূর্ণ ভিন্ন পদ্ধতির উপর কাজ করছি তবে নিশ্চিত নয় যে এটি আরও ছোট হবে।
সোফিয়া ল্যাটারার

ধন্যবাদ সোফিয়া - আমি বুঝতে পারি নি যে Rএটি নতুন ছিল। আপনার পদ্ধতি দেখার জন্য অপেক্ষা!
টবি স্পিড

আহ, না ... আমি বাইরের লুপটি সাজানোর জন্য ভিন্ন পদ্ধতির চেষ্টা করেছি তবে এটি প্রায় পাঁচ বাইট বৃহত্তর এবং কোনও প্রেটিয়ারের সাথে শেষ হয়নি। তুমি জিতেছ. =)
সোফিয়া ল্যাটারে

2

আর , 193 109 105 বাইট

-৮৪ বাইট জিউসেপ্পিকে ধন্যবাদ! -4 বাই বাই জ্যাকিকে ধন্যবাদ!

function(x){"-"=utf8ToInt
S=strtoi
"!"=rev
while({z=paste(S(x)+S(intToUtf8(!-x),10));any(-z!=!-z)})x=z
z}

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


1
আপনি স্ট্রিং ম্যানিপুলেশনের চেয়ে এটি করার আলাদা পদ্ধতি বেছে নিতে পারেন (এবং হওয়া উচিত) তবে আপনি যে পদ্ধতিটি বেছে নিয়েছেন তার জন্য এখানে কিছু গল্ফিং টিপস দেওয়া strsplit(x,"")হচ্ছে : এর চেয়ে সংক্ষিপ্ত strsplit(x,NULL), এবং এর el(L)চেয়েও খাটো L[[1]]as.doubleতুলনায় খাটো as.numericএবং strtoiউভয় চেয়ে খাটো হয়; সেট tকরার পরিবর্তে এটি সরাসরি আপনার ifবিবৃতিতে ব্যবহার করুন । আমি ভুল না হলে এটি একটি পুনরাবৃত্ত ফাংশনও তাই আপনাকে f=আপনার জমা দেওয়ার অংশ হিসাবে রাখা দরকার ।
জিউসেপে

@ জিউসেপ বুঝে উঠল টিপস জন্য ধন্যবাদ। আমি এ নিয়ে কাজ চালিয়ে যাব। আমার পক্ষে কেবল এমন কিছু পাওয়া সহজ যা কাজ করে তারপরে ফিরে আসুন এবং অনুকূলিত হন।
রবার্ট এস 16

1
হেইহে, কোন চিন্তা নেই। যদি আপনি স্ট্রিংগুলি ব্যবহার করতে নারাজ হন (বা সমস্যার দ্বারা বাধ্য হয়ে থাকেন) তবে utf8ToIntঅঙ্কগুলিতে রূপান্তর করতে এবং intToUtf8ফিরে রূপান্তর করতে বিবেচনা করুন । এটি একটি বড় বাইট সঞ্চয় হবে!
জিউসেপে


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