কোড গল্ফ: 6174 - কাপ্রেকারের পৌরাণিক ধ্রুবক


24

6174 সংখ্যাটি এত আকর্ষণীয় কেন? হিসাবে সংজ্ঞায়িত উইকিপিডিয়া

  1. কমপক্ষে দুটি পৃথক অঙ্ক ব্যবহার করে যে কোনও চার-অঙ্কের নম্বর নিন। (শীর্ষস্থানীয় শূন্যগুলি অনুমোদিত are)
  2. প্রয়োজনে অগ্রণী শূন্যগুলি যুক্ত করে, দুটি চার-অঙ্কের সংখ্যা পাওয়ার জন্য ক্রম বর্ধমান এবং পরে উত্থানের ক্রমে অঙ্কগুলি সাজান।
  3. বড় সংখ্যা থেকে ছোট সংখ্যাটি বিয়োগ করুন।
  4. ২ য় ধাপে ফিরে যান।

উপরের প্রক্রিয়াটি, যা কাপ্রেকারের রুটিন হিসাবে পরিচিত, সর্বদা সর্বাধিক ite টি পুনরাবৃত্তিতে 6174 এ পৌঁছে যাবে। একবার 6174 এ পৌঁছানোর পরে, প্রক্রিয়া এটির ফলন অব্যাহত রাখবে।

এমন একটি প্রোগ্রাম লিখুন যা প্রদত্ত চার অঙ্কের সংখ্যার (উপরে সংজ্ঞাটি দেখুন) রুটিনের প্রতিটি পদক্ষেপ মুদ্রণের বাইরে কাপুরেকের রুটিনকে চালায় runs

নিয়মাবলী:

  • জমা অবশ্যই সম্পূর্ণ প্রোগ্রাম হতে হবে।
  • ইনপুট অবশ্যই স্ট্যান্ডার্ড ইনপুট থেকে পড়তে হবে। প্রতিধ্বনি থেকে পাইপ করা ঠিক আছে।
  • ইনপুটটি সংখ্যা আকারে হওয়া উচিত।
  • নেতৃস্থানীয় শূন্যগুলি মুদ্রণের প্রয়োজন। (নীচে উদাহরণ দেখুন।)
  • শেষ লাইনে বলা উচিত যে কতগুলি পুনরাবৃত্তি প্রয়োজন ছিল। বিরামচিহ্ন প্রয়োজনীয়।

উদাহরণ:

> 2607
7620 - 0267 = 7353
7533 - 3357 = 4176
7641 - 1467 = 6174
Iterations: 3.

> 1211
2111 - 1112 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
Iterations: 5.

> 6174
7641 - 1467 = 6174
Iterations: 1.

যে কোনও প্রোগ্রামিং ভাষা স্বাগত। রহস্যজনকদের জন্য অতিরিক্ত পয়েন্ট + একটি ছোট অনুগ্রহ।

আপডেট 1 : ইতিমধ্যে একই ধরণের প্রশ্ন রয়েছে

আপডেট 2 : ইনপুট হিসাবে 6174 এর জন্য যুক্ত উদাহরণ। বিজ্ঞপ্তিটির জন্য পিটার টেলরকে ধন্যবাদ জানাই।


এটি আমার জন্য সংবাদ। কেউ একজন মডারেটরকে কল করুন ...

আহ ... "মাইগ্রেট" বাটন নেই?
ডাঃ রেবমু

একজন মডারেটরের স্থানান্তরিত করার জন্য আমি এটি পতাকাঙ্কিত করেছি। আমি কি পূর্ববর্তী 3-সংখ্যার সংস্করণের সাথে একমত হওয়ার জন্য ইনপুট আউটপুটে নিয়মাবলী পরিবর্তন করার পরামর্শ দিতে পারি? এবং প্রশ্নের মূল অংশে আগের সংস্করণটির সাথে সংযোগ স্থাপন করা।
ডিসেমেক

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

3
দয়া করে উদাহরণ হিসাবে 74১74 61 যোগ করুন যাতে আউটপুট কীভাবে বিন্যাস করা উচিত তা আমরা দেখতে পারি।
পিটার টেলর

উত্তর:


9

পার্ল - 147 143 134 130 129 126 129 128 126

for($_=<>;$_-6174+!$c;$c++){$_=reverse$d=join'',sort split//,"$_"
|$|x4;printf"$_ - $d = %04d\n",$_-=$d}die"Iterations: $c.\n"

সম্পাদনা: এখন কয়েকটি অক্ষরের ব্যয়ে 74১74৪ টি মামলার সাথে সম্মতি জানানো ... চালানো echo -n <number> | perl kaprekar.pl

সম্পাদনা: অবশেষে যেখানে আমি আগে ছিলাম: ডি


10

রুবি 1.9, 122 টি অক্ষর

puts"Iterations: #{(1..7).find{s=$_.chars.sort*"";puts [r=s.reverse,?-,s,?=,$_="%04d"%(r.to_i-s.to_i)]*" ";~/6174/}}."

অনুরোধের উদাহরণ:

$ echo 1211 | ruby -ln kaprekar.rb

আমি -lnপতাকাটিকে 4 টি অক্ষর হিসাবে গণনা করেছি (সাধারণ প্রার্থনা ruby kaprekar.rbএবং এর মধ্যে পার্থক্য ruby -ln kaprekar.rb)।


আমি এই স্ক্রিপ্টটি কেপ্রেকার.আরবি হিসাবে সংরক্ষণ করেছি এবং তারপরে এটি শুরু করেছি ruby -lp kaprekar.rb। একটি নম্বর প্রবেশ করানো হয়েছে এবং <প্রবেশ> টিপুন তবে আউটপুটটি হ'ল প্রবেশ সংখ্যা। স্পষ্টতই আমি কিছু মিস করছি ... দয়া করে স্ক্রিপ্টটি কীভাবে ব্যবহার করবেন সে বিষয়ে পরামর্শ দিন।
লুনোহোডভ

@ লুনোহোডভ: আমি একটি অনুরোধের যোগ করেছি। এটি এখন 6174ইনপুট হিসাবে সঠিক আউটপুটও উত্পন্ন করে , যা দুর্ভাগ্যক্রমে 128 টি অক্ষর পর্যন্ত এই সমাধান নিয়ে আসে।
ভেন্টোরো

ব্যবহার echo 1234 | ruby kaprekar.rbএকটি সতর্কতা উত্থাপন করে এবং একটি ত্রুটি দিয়ে শেষ হয় undefined method 'chars' for nil:NilClass (NoMethodError)। কার্যকর করা echo 1234 | ruby -lp kaprekar.rbকেবল একটি সতর্কতা ইস্যু করে এবং প্রত্যাশার মতো আচরণ করে। আউটপুটটি প্রত্যাশিত হিসাবে প্রত্যাশিত নয়, কারণ এতে একটি সতর্কতা বার্তা রয়েছেkaprekar.rb:3: warning: regex literal in condition
লুনোহোডভ

@ লুনোহোডভ: সতর্কতা এবং উদাহরণের অনুরোধ স্থির করে নিন।
ভেন্টোরো

7

পাইথন, 141 অক্ষর

n=input()
i=0
while n-6174:a=''.join(sorted("%04d"%n));b=a[::-1];n=int(b)-int(a);print"%s - %s = %04d"%(b,a,n);i+=1
print"Iterations: %d."%i

% 04d সহ স্লিক প্যাডিংয়ের জন্য +1। আমি আজ কিছু শিখেছি!
অ্যারেডেম

3
কয়েকটি পরামর্শ: ;গুলি ব্যবহার করে পুরো লুপটি এক লাইনে রাখুন । while n-6174printএবং উদ্ধৃতিটির মধ্যে কোনও স্থান নেই ।
কিথ র্যান্ডাল

@ কীথ-র্যান্ডাল: ধন্যবাদ, এখন এটি 141 এ নেমে এসেছে।
মার্টিন উডিং

6

গল্ফস্ক্রিপ্ট, characters৪ টি অক্ষর

);:|;{0):0;|$:§-1%" - "§" = ""0"4$~§~-+-4>:|n|6174`=!}do"Iterations: "0"."

5

Haskell,, 197 192 182 181 টি অক্ষর

import List
p=putStrLn.unwords
"6174"%k|k>0=p["Iterations:",shows k"."]
n%k=p[b,"-",a,"=",c]>>c%(k+1)where a=sort n;b=reverse a;c=take 4$shows(read b-read a)"0"
main=getLine>>=(%0)

ইনলাইনিং rএবং s2 টি অক্ষর সংরক্ষণ করে। এছাড়াও, "000" অপ্রয়োজনীয়। "0" যথেষ্ট। এটি আমাদের 188 টি অক্ষরে নিয়ে আসে। আমি অবাক হয়ে interactএখানে সাহায্য করি না । এটি সাধারণত হয়।
রোটসর

আরও 2 বাইট লাভের show x++sসাথে প্রতিস্থাপন করা shows x s। 186 এখন।
রোটসর

প্যাটার্ন গার্ড ( |k>0) ব্যবহার করে যে কেউ মুক্তি পেতে পারে f। আরও পুনঃনামকরনের gকরতে %182 অক্ষর আমাদেরকে পায়।
রোটসর

4

> <> - 268 308

</&4pff1
v>i86*-:n&1-:&?!
>ao&        v
<v&0pff+1gff
 >&1+:4=   ?v&:a%:}-a,
 v&8[4r::0}~<
 >&1-:?!v&:@@:@(?$}&:&3%1=?}
 v      >~:}}:}@:}$:}
 \:n}:n}:n}:n}' - 'ooo:n}:n}:n}:n}' = 'ooo
 \a*+a*+a*+}a*+a*+a*+-:0&\
 v?       =4&:+1&,a-}:%a:<
/\&~~rnnnnao:29777****=   ?v
voooooooooooo"Iterations: "/
\ffgna'.'oo;

গল্ফের প্রতিযোগী খুব বেশি নয়, তবে এটি মজাদার ছিল। :)

./fish.py kaprekar.fish -v <number>
সম্পাদনা সহ চালান : এখন এসটিডিইএন থেকে ইনপুট নেয়।


4

জাভাস্ক্রিপ্ট, 189 182 165 অক্ষর

ডকম্যাক্সকে ক্রেডিট:

for(n=prompt(i=o=e='');!i--|n-6174;o+=n+' - '+a+' = '+(n=(p=n-a+e)[3]?p:0+p)+'\n')
  b=n.split(e).sort(),n=b.reverse(a=b.join(e)).join(e);
alert(o+"Iterations: "+~i+'.')

মূল:

for(n=prompt(i=o=e='');n-6174;o+=(i++?n+"\n":e)+(n=(a=n.split(e).sort().join(e)).split(e).reverse().join(e))+' - '+a+' = ',n=n-a+e)while(!n[3])n=0+n
alert(o+n+"\nIterations: "+i+'.')

Ungolfed:

var i = 0;
var n = prompt();
var out = '';
while (n != 6174) {
    while ((n=''+n).length<4) n='0'+n // pad number
    if(i)out+=n+"\n"

    a = n.split('').sort().join('');
    n = a.split('').reverse().join('');

    out += n + ' - ' + a + ' = '
    n-=a
    i++;
}
console.log(out + "6174\nIterations: " + i + '.');

1
আমি মনে করি যে আপনি পরিবর্তন করতে পারেন n != 6174থেকে n-6174যেহেতু এটি শূন্য ফিরে আসবে, যা মিথ্যা (অন্তত সি এবং পাইথন মধ্যে)।
মার্টিন উডিং

কৃতিত্বটি কীথ-র্যান্ডালকে দেওয়া উচিত যারা আমার পাইথন সমাধানের জন্য এটি প্রস্তাব করেছিলেন।
মার্টিন ইউডিং

আপনি প্রতিস্থাপন 5 আরো অক্ষর সংরক্ষণ করতে পারবেন while(n.length<4)সঙ্গে while(!n[3])
ডকম্যাক্স

1
আমি এটার দিকে তাকাতে থামতে পারি না! নিম্নলিখিত ক) আউটপুটটি স্থির করে যখন এন = 6174, খ) n+'\n'শর্তসাপেক্ষে এড়াতে যুক্ত হওয়ার পরে পুনরায় ব্যবস্থা করা হয় এবং একটি অতিরিক্ত \n, গ) যোগ-বিভাজন-যোগদানের ক্রম এড়ানোর জন্য একটি টেম্প ব্যবহার করে, d) এই সত্যটির সুবিধা গ্রহণ করে যে আমরা প্যাডিংয়ের জন্য কেবল কখনও একক '0' যুক্ত for(n=prompt(i=0,o=e='');n-6174;i++,o+=(n=(b=n.split(e).sort(),a=b.join(e),b).reverse().join(e))+' - '+a+' = '+(n=('0'+(n-a)).slice(-4))+'\n');alert(o+"Iterations: "+i+'.')করতে হবে : এটি 172 অক্ষর হওয়া উচিত।
ডকম্যাক্স

1
চিত্তাকর্ষক! উপরের অনুমান অনুসারে যদিও এন = 6174, এটি কমপক্ষে একটি পুনরাবৃত্তির মধ্য দিয়ে যেতে হবে, তাই আমি i0 (+4) হয় কিনা তবে এটির সাথে মিলিত করে একটি চেক যুক্ত করেছি i++। দুর্ভাগ্যক্রমে, এটি এক ত্রুটি দ্বারা বন্ধ করে দেয়, তাই আমি বর্ধনটিকে হ্রাসে সরিয়ে নিয়েছি এবং তারপরে (-1) শেষে কিছুটা বিটওয়্যার ট্র্যাটারি ব্যবহার করেছি। তারপর আমি পরিবর্তিত i=0,o=e=''করতে i=o=e=''(-2), পুনঃবিন্যাস forলুপ অতিরিক্ত প্রথম বন্ধনী এড়াতে (-1), প্রসারিত (b=...,a=...,b)বিট (-2), এবং sneaked a=b.joinভিতরে reverse()কল (-1)। তাই 169, খারাপ না!
কেসি চু

3

পাওয়ারশেল, 125 128 130 131

for($a,$OFS=$input+'';$b-6174;++$i){$a=$b=+($c=''+($x="$a 000"[0..4]|sort)[4..0])-"$x"
"$c-$x = {0:d4}"-f$a}"Iterations: $i."

প্রশ্ন থেকে সমস্ত পরীক্ষার কেস পাস করে।


2

জাভাস্ক্রিপ্ট, 260 বাইট

function z(c){for(u=c+y;u.length<4;)u=0+u;return u}for(p=prompt(i=0,r=y="");;)
if(s=(p+y).split(y).sort(),t=s.concat().reverse(),a=s.join(y),b=t.join(y),q=a<b?b:a,
w=a<b?a:b,p=z(q-w),i++,r+=z(q)+" - "+z(w)+" = "+p+"\n",p==6174)break;alert(r+
"Iterations: "+i+".")

2

ক্লোজার, 256 টি অক্ষর

(let[i #(Integer/parseInt%)f #(format"%04d"%)a #(->>% f sort(apply str)i)d #(->>% f sort reverse(apply str)i)k #(let[u(d %)l(a %)n(- u l)](println(f u)"-"(f l)"="(f n))n)](while true(println"Iterations:"(count(take-while #(not=% 6174)(iterate k(read)))))))

2

স্কেলা ২.৯, 194 টি অক্ষর

object K extends App{var(c,s)=(0,args(0));do{var d=s.sorted;var e=d.reverse.toInt-d.toInt;s="%04d".format(e);println(d.reverse+" - "+d+" = "+s);c+=1}while(s!="6174");print("Iterations: "+c+".")}

স্কেলা ২.৯ থেকে অ্যাপের বৈশিষ্ট্যটি ব্যবহার করে।

সম্পাদনা: 6174 এর প্রাথমিক ইনপুটটির জন্য সঠিক আউটপুট দেয়।


2

পিএইচপি, 215 259 276 অক্ষর

<?php echo">";$n=str_split(str_pad(trim(fgets(STDIN)),4,0,0));for($k=0,$z=0;$k-6174;$z++){sort($n);$a=implode($n);$b=strrev($a);$k=str_pad($b-$a,4,0,0);echo"$b - $a = $k\n";$n=str_split($k);}echo"Iterations: $z\n";

Ungolfed:

<?php
echo ">";
$n = str_split(str_pad(trim(fgets(STDIN)),4,0,0));
for($k=0, $z=0; $k-6174; $z++) {
    sort($n);
    $a = implode($n);
    $b = strrev($a);
    $k = str_pad($b-$a,4,0,0);
    echo "$b - $a = $k\n";
    $n = str_split($k);
}
echo "Iterations: $z\n";

আমার তোমাকে দরকার মনে করি না abs, maxএবং minফাংশন, যেহেতু সাজানোর সবসময় মানে হবে এই যে $bচেয়ে বেশী $a। এটি আপনাকে 20 অক্ষর সংরক্ষণ করতে পারে। এছাড়াও, আমি মনে করি শীর্ষে লুপের ভিতরে বাছাইয়ের অর্থ এই হবে যে আপনার কোডটি একবারে এটি থাকা দরকার যা আপনাকে আবার 9. বাঁচাতে পারে
গ্যারেথ

বাহ, আমি অনুমান করি যে "বড় সংখ্যা থেকে ছোট সংখ্যাটি বিয়োগ করুন" নির্দেশনা দ্বারা আমি বিভ্রান্ত হয়ে পড়েছি। ধন্যবাদ।
রিন্টন

<?function k($c){echo"> $c\n";$n=str_split(str_pad($c,4,0,0));for(;$k-6174;$z++){sort($n);$a=join($n);$b=strrev($a);$k=str_pad($b-$a,4,0,0);echo"$b - $a = $k\n";$n=str_split($k);}echo"Iterations: $z\n";} আপনি আপনার forবিবৃতি পরিবর্তন করে , এটি একটি ফাংশন হিসাবে কল করে এবং এর joinপরিবর্তে ব্যবহার করে 12 টি অক্ষর সংরক্ষণ করতে পারেন implode
টুস্কোপসফগ পিগ

এছাড়াও, আমি মিনি-ডাউন ডাউনকে ঘৃণা করি।
টুস্কোপসফগ পিগ

2

কফিস্ক্রিপ্ট, 233 225 টি অক্ষর

o=e='';i=0;n=prompt()
while n!=6174
  n=e+n;q=(n='0'+n if !n[3]) for x in [0..2];n?=q;o+=n+"\n" if i;a=n.split(e).sort().join(e);n=a.split(e).reverse().join(e);o+=n+' - '+a+' = ';n-=a;i++
alert(o+"6174\nIterations: "+i+'.')

এখানে চেষ্টা করুন বা নির্দেশাবলী এখানে


আমার ব্রাউজার হিমশীতল - স্ক্রিপ্টটির সম্পাদন বাতিল করতে হয়েছিল।
লুনোহোডভ

আপনি কোন নম্বরটি প্রবেশ করেছেন? আমি এটি ফায়ারফক্স এবং ক্রোমে 4711 এবং 1 এবং আরও কয়েকজনের জন্য চেষ্টা করেছিলাম।
জোনাস এলফস্ট্রাম

ব্যবহার 0(যেমন প্রম্পট দ্বারা প্রস্তাবিত) অথবা বাতিল বোতামে ক্লিক সাফারি হিমায়িত করা হয়।
লুনোহোদভ

আমি জানি না কেন এটি পরামর্শ দিয়েছে। আপনাকে 1 এবং 9998 এর মধ্যে এমন একটি সংখ্যা লিখতে হবে যার অঙ্কগুলি সমস্ত অভিন্ন নয়। 0 0000 এর সমান এবং একটি অসীম লুপ তৈরি করে। দেখে মনে হচ্ছে বেশিরভাগ সমাধান অক্ষরের সংখ্যা কম রাখতে বৈধতা ইনপুট এড়িয়ে গেছে।
জোনাস এলফস্ট্রোম

I56.tinypic.com/bhhoqe.png দেখুন আপনার আউটপুটটিও " কাপুরেকের স্থির স্থানে পৌঁছাতে 5 টি পুনরাবৃত্তি লাগল" দিয়ে শেষ হয়। যা প্রয়োজনীয়তার সাথে সামঞ্জস্য করে না।
লুনোহোদভ

2

স্কালা 276

object o{var i=0;def a(v:String){val c=v.toList.sortWith(_>_).mkString;val b=c.reverse;val d=c.toInt-b.toInt;val e="0"*(4-(d+"").length)+d;val p=c+" - "+b+" = "+e;if(d!=6174){println(p);i=i+1;a(e)}else{println(p+"\nIterations: "+(i+1)+".")}};def main(s:Array[String])=a(s(0))}

স্কেলা 283

object o{var i=0;def a(v:String){val c=v.toList.sortWith(_>_).mkString;val b=c.reverse;val d=c.toInt-b.toInt;val e="0"*(4-(d+"").length)+d;val p=c+" - "+b+" = "+e;if(d!=6174){println(p);i=i+1;a(e)}else{println(p);println("Iterations: "+(i+1)+".")}};def main(s:Array[String])=a(s(0))}

পরিবর্তন:

else{println(p);println("Iterations: "+(i+1)+".")}};
// to
else{println(p+"\nIterations: "+(i+1)+".")}};

2

GAWK - 152 অক্ষর

এটি একটি জিএনইউ অ্যাডক সংস্করণ। এটি অন্যান্য অ-জিনু সংস্করণগুলির সাথে কাজ নাও করতে পারে।

{for(z=$1;z-6174+!c;++k){split(z,a,"");asort(a);for(b=c=i=0;i<4;z=c-b){c+=a[i+1]*10^i;b=b*10+a[++i]}printf c" - %.4d = "z"\n",b}print"Iterations: "k"."}

$ awk -f k.awk <<< 9992
2999 - 9992 = 6993
3699 - 9963 = 6264
2466 - 6642 = 4176
1467 - 7641 = 6174
Iterations: 4

আমি গ্রহণ awk: calling undefined function asort। ওওএক্স 10.6.7 এ অজস সংস্করণটি 20070501 চলছে। .পুনরাবৃত্তির সংখ্যার পরে ভুলে যাবেন না ।
লুনোহোদভ

লুনোহোডভ @: যোগ করা বিন্দু। এছাড়াও, আমি gnu awk (gawk) ব্যবহার করেছি এবং এটি অনুপস্থিত ফাংশনটি ব্যাখ্যা করতে পারে।
ড্যান অ্যান্ড্রেটা

বিয়োগ সংখ্যাগুলি ভুল উপায়ে: উদাহরণস্বরূপ হওয়া উচিত9992 - 2999 = 6993
ক্রিস ডিগেন



1

কে, 104

{b::();{b,:,k," = ",r:"0"^(-:4)$$. k:(x@>x)," - ",x@<x;r}\[$x];-1'c,,"Iterations: ",$#c:$[1=#b;b;-1_b];}

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

k){b::();{b,:,k," = ",r:"0"^(-:4)$$. k:(x@>x)," - ",x@<x;r}\[$x];-1'c,,"Iterations: ",$#c:$[1=#b;b;-1_b];}'2607 1211 6174;
7620 - 0267 = 7353
7533 - 3357 = 4176
7641 - 1467 = 6174
Iterations: 3
2111 - 1112 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
Iterations: 5
7641 - 1467 = 6174
Iterations: 1

1

ম্যাথামেটিকাল, 314 291 টি অক্ষর

এই প্রোগ্রামটি, কাপরেকার.এম: -

SetOptions[$Output,FormatType->OutputForm];
x=$ScriptCommandLine[[2]];
f[x_]:=(a=Characters@x;
b=Sort@ToExpression@a;
c=Sort[FromDigits/@{#,Reverse@#}&@b];
{c,{b,a}}=IntegerString[{#2-#&@@c,c},10,4];
Print[a," - ",b," = ",c];c)
x=f@x;
e=NestWhileList[f,x,#!="6174"&];
Print["Iterations: ",N@Length@e]

দৌড়ানোর আগে পথ নির্ধারণ করা: -

$ PATH=${PATH}:/Applications/Mathematica.app/Contents/MacOS ; export PATH

কার্যক্রম পরিচালনা: -

$ MathematicaScript -script kaprekar.m 2607
7620 - 0267 = 7353
7533 - 3357 = 4176
7641 - 1467 = 6174
Iterations: 3.
$ MathematicaScript -script kaprekar.m 1211
2111 - 1112 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
Iterations: 5.
$ MathematicaScript -script kaprekar.m 6174
7641 - 1467 = 6174
Iterations: 1.

0

পিএইচপি , 160 বাইট

function k($n,$d=1){$o=str_split($n);sort($o);echo$q=strrev($r=join($o))," - $r = ",$n=str_pad($q-$r,4,0,0),"
",$n==6174?"Iterations: $d.":k($n,++$d);}k($argn);

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

সম্পূর্ণ প্রোগ্রাম, ইনপুট হয় STDIN, দিয়ে চালানো php -nF

আউটপুট

> echo 2607|php -nF kap.php
7620 - 0267 = 7353
7533 - 3357 = 4176
7641 - 1467 = 6174
Iterations: 3.

> echo 1211|php -nF kap.php
2111 - 1112 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
Iterations: 5.

> echo 6174|php -nF kap.php
7641 - 1467 = 6174
Iterations: 1.

0

মরিচা - 375 বাইট

use std::io::{self,BufRead};fn main() {let mut x=io::stdin().lock().lines().next().unwrap().unwrap().parse::<i16>().unwrap();let mut n=0;println!("Iterations: {}.",loop {let mut v=[x/1000%10,x/100%10,x/10%10,x%10];v.sort();let j=v.iter().fold(0,|a,i|a*10+i);let k=v.iter().rev().fold(0,|a,i|a*10+i);x=k-j;n+=1;println!("{:04} - {:04} = {:04}",k,j,x);if x==6174{break n};});}

আমি এটিকে একটি সম্ভাব্য "ওপেন বাউন্ড" হিসাবে উপস্থাপন করছি, আমি কাউকে এমন একটি ভাষা খুঁজে বের করার জন্য চ্যালেঞ্জ জানাই যেখানে এর যুক্তিসঙ্গত বাস্তবায়ন আর দীর্ঘতর - কারণ এতে অতিরিক্ত অতিরিক্ত কিছু নেই, তবে এটি দূরবর্তী দিক থেকেও স্পষ্ট কিছু নয় যা এটিকে উল্লেখযোগ্যভাবে সঙ্কুচিত করবে। মরিচা সম্পর্কে জিনিসটি হ'ল স্টিডিন থেকে পড়তে এবং পূর্ণসংখ্যায় পার্স করতে প্রায় 120 টি অক্ষর লাগে। "ওহ তবে তারপরে কেবল স্ট্রিং প্রতিনিধিত্ব ব্যবহার করুন" ... তবে আমি 99% আত্মবিশ্বাসী যা আরও দীর্ঘতর হবে


0

পার্ল 6 -n পতাকা, 105 বাইট

say "Iterations: "~+.&{{{say $!=.flip~" - $_"," = ",($/=$!.EVAL.fmt("%04d"));$/}([~] .comb.sort)}...6174}

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

আমি অবশেষে আমার {}...*কৌশলটি ব্যবহার করতে পারি , যেহেতু আমাদের কমপক্ষে 74১74৪ এর জন্য কমপক্ষে একটি পুনরাবৃত্তি হওয়া দরকার I'm আমি নিশ্চিত না কেন আমাকে .&{ }ক্রমটির চারপাশে অতিরিক্ত মোড়কের প্রয়োজন কেন , কিন্ডা কীভাবে চুষে যায়।

ব্যাখ্যা:

    .&{                         } # Call a function on the input
       {                }...6174  # Create a sequence that goes until 6174
        {           }([~] .comb.sort) # Get the sorted digits of the number
         say $!=.flip~" - $_"," = "~($/=$!.EVAL.fmt("%04d"))  # Print the iteration
                        ;$/  # Return the result
say "Iterations: "~+.&{      }     # Print the number of iterations
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.