সংক্ষিপ্ত সংখ্যা


23

আসুন স্বাভাবিক সংখ্যার উপর একটি ফাংশন নির্ধারণ , বেস হিসেবে লেখা 10 সংখ্যার , নিম্নরূপ:ndkdk1d1d0

didi1 equal ; d_ {i-1 equal সমান সংলগ্ন অঙ্কগুলি যতক্ষণ না থাকে , তাদের যোগফল di+di1 left দ্বারা বাম থেকে ডানে প্রতিস্থাপন করুন । যদি এরকম কোনও অঙ্ক থাকে তবে একই পদ্ধতিটি পুনরাবৃত্তি করুন।

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

উদাহরণ

উদাহরণস্বরূপ 9988 নেওয়া যাক :

  1. সমান প্রথম সংলগ্ন অঙ্কগুলি হ'ল দুটি 9
  2. সুতরাং আমরা 9 + 9=18 by দ্বারা প্রতিস্থাপন করি যা আমাদের \ টেক্সটট {1888 gives দেয়1888
  3. যেহেতু আমরা এখনও প্রথম বাম-ডান ট্র্যাভার্সাল এবং এখনও দুটি 8 গুলি ছিল আমাদের প্রথমে এগুলি প্রতিস্থাপন করা দরকার
  4. সুতরাং আমরা পাই1816
  5. কিছু পরিবর্তন হয়েছে, সুতরাং আমাদের আরেকটি পুনরাবৃত্তি করা দরকার
  6. তবে এরকম কোনও সংখ্যা নেই, তাই আমরা থামি

সুতরাং সেই অনুক্রমের সংখ্যাটি ।9988th1816

চ্যালেঞ্জ

প্রথম 200 শর্তাবলী:

0,1,2,3,4,5,6,7,8,9,10,2,12,13,14,15,16,17,18,19,20,21,4,23,24,25,26,27,28,29,30,31,32,6,34,35,36,37,38,39,40,41,42,43,8,45,46,47,48,49,50,51,52,53,54,10,56,57,58,59,60,61,62,63,64,65,12,67,68,69,70,71,72,73,74,75,76,14,78,79,80,81,82,83,84,85,86,87,16,89,90,91,92,93,94,95,96,97,98,18,10,101,102,103,104,105,106,107,108,109,20,21,4,23,24,25,26,27,28,29,120,121,14,123,124,125,126,127,128,129,130,131,132,16,134,135,136,137,138,139,140,141,142,143,18,145,146,147,148,149,150,151,152,153,154,20,156,157,158,159,160,161,162,163,164,165,4,167,168,169,170,171,172,173,174,175,176,24,178,179,180,181,182,183,184,185,186,187,26,189,190,191,192,193,194,195,196,197,198,28

আপনার কাজটি হ'ল এই ক্রমটি তৈরি করা

  • প্রদত্ত , সেই অনুক্রমের return সংখ্যাটি ফিরিয়ে দিন ,nnth
  • প্রদত্ত , সেই অনুক্রমের প্রথম সংখ্যাগুলি ফেরত দিনnn
  • বা অনির্দিষ্টকালের জন্য ক্রম উত্পাদন।

আপনি আপনার জমাটি - বা সূচকগুলি ব্যবহার করতে বেছে নিতে পারেন তবে দয়া করে কোনটি নির্দিষ্ট করুন।01

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

আপনি উপরের প্রদত্ত শর্তাদি ব্যবহার করতে পারেন, তবে এখানে কিছু বৃহত্তর শর্ত রয়েছে:

222 -> 42
1633 -> 4
4488 -> 816
15519 -> 2019
19988 -> 2816
99999 -> 18189
119988 -> 21816
100001 -> 101
999999 -> 181818

উত্তর:




5

জেলি , 11 বাইট

DŒg+2/€FVµ¡

এটি একটি অপ্রয়োজনীয় ধীর, সম্পূর্ণ প্রোগ্রাম।

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

বিকল্প সংস্করণ, 12 বাইট

DŒg+2/€FVµƬṪ

এক বাইট দীর্ঘ, তবে আরও দ্রুত। প্রোগ্রাম বা একটি ফাংশন হিসাবে কাজ করে।

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

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

DŒg+2/€FVµƬṪ  Main link. Argument: n (integer)

         µ    Combine the previous links into a chain. Begin a new one.
D               Decimal; yield n's digit array in base 10.
 Œg             Group adjacent, identical digits into subarrays.
   +2/€         Map non-overlapping, pairwise sum over the subarrays.
                If there is an odd number of digits in a subarray, the
                last digit will remain untouched.
       F        Flatten; dump all sums and digits into a single array.
        V       Eval; turn the result into an integer.
          Ƭ   Execute the chain 'til the results are no longer unique.
              Return all unique results.
           Ṫ  Tail; extract the last result.

ছাড়া আর লিংক আহ্বান 11-বাইট সংস্করণ, একই আছে এন ইনপুট জন্য বার এন , এর পরিবর্তে এটি কলিং পর্যন্ত একটি নির্দিষ্ট বিন্দু উপনিত হয়েছে।


3
এটি অপ্রয়োজনীয় নয় যদি এটি 1 বাইট সংরক্ষণ করে :-)
লুইস মেন্ডো

4

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

until((==)=<<f)f
f(a:b:c)|a==b=show(2*read[a])++f c|1<2=a:f(b:c)
f a=a

ইনপুটটি স্ট্রিং হিসাবে নেওয়া হয়।

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


এটি এখন অবধি আপনার কোনও কিছু বাঁচায় না, তবে একই দৈর্ঘ্যের সাহায্যে আপনি দ্বিতীয় ধারাটি |x<-b:c=a:f xবা তার সাথে প্রতিস্থাপন করতে পারেন f(a:c)=a:f c, যদি এক বা অন্যটি আসলে উন্নতি করতে পারে :)
flawr

4

জাভাস্ক্রিপ্ট, 48 47 46 বাইট

স্ট্রিং হিসাবে ইনপুট এবং আউটপুট। ফেরত পাঠায় nthক্রম পরিভাষা।

f=s=>s-(s=s.replace(/(.)\1/g,x=>x/5.5))?f(s):s

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

  • 1 বাইট আরনাউল্ডকে ধন্যবাদ রক্ষা করেছে
  • 1 টি বাইট সাশ্রয় করে tsh ধন্যবাদ

1
x[0]*2->x/5.5
tsh

ধন্যবাদ, @ এস। ভেবে দেখতেন না।
শেগি

3

পার্ল 6 , 37 বাইট

{($_,{S:g[(\d)$0]=2*$0}...*==*)[*-1]}

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

এটি একটি ফাংশন যা অনুক্রমের নবম পদটি উত্পন্ন করে, তার আর্গুমেন্ট হিসাবে এন দেওয়া হয়েছে।

($_, { ... } ... * == *)বন্ধনযুক্ত এক্সপ্রেশন (একটি সাধারণ রেজেক্স সাবস্টিটিউশন) দ্বারা উত্পন্ন এবং ইনপুট সংখ্যার ধারাবাহিক পরিবর্তনের ক্রম এবং যখন * == *ক্রমের শেষ দুটি সংখ্যা সমান হয় তখন থামানো stop তারপরে [*-1]রিটার্নের মান হিসাবে সেই ক্রমের চূড়ান্ত উপাদানটি নেয়।


আপনি সরিয়ে বাইট সংরক্ষণ করতে পারবেন ==*এবং প্রতিস্থাপন *-1সঙ্গে $_, সবসময় কম যেহেতু nএকটি সংখ্যা জন্য প্রতিস্থাপন n33 বাইট
জো কিং

3

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

+`(.)\1
$.(2*$1*

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

+`

ইনপুট পরিবর্তন হওয়া বন্ধ হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

(.)\1

সংলগ্ন অঙ্কগুলির জোড়া প্রতিস্থাপন করুন ...

$.(2*$1*

... দ্বিগুণ অঙ্ক সহ ( $1*একটি স্ট্রিং উত্পন্ন $1 _এস, 2*অনুরূপ, এবং $.(দৈর্ঘ্য লাগে। আসলে, অক্ষিপট ইঞ্জিন এবং মাত্র ডাবলস চেয়ে cleverer হয় $1।)


3

সি # (.নেট কোর) , 231 , 203 , 200 , 196 , 192 বাইট

সম্পাদনা: ফাংশনটি এখন 185 বাইট প্লাস 18 এর জন্য using System.Linq;

বিএমওকে (1> 0 টি সঠিক প্লাস নিউলাইন সরানোর সমান হওয়ার জন্য) এবং মিঃ এক্সকোডারকে (f =! F স্টেটমেন্টের জন্য) ধন্যবাদ!

সম্পাদনা 2: using System.Linqকিছু গল্ফ টিপস ভাগ করে নেওয়ার জন্য দানা ধন্যবাদ 182 বাইট নিচে 18 !

সম্পাদনা 3: ইনট [] -> ভার, শর্ট সার্কিট অপসারণ && -> &, এবং ToArray -> টোললিস্টে আপ করার জন্য অজ্ঞতার মূর্ত প্রতিচ্ছায় ধন্যবাদ! (178 বাইট + 18 ব্যবহার করছে)

এডিআইটি 4: অজিনার প্রতিমূর্তি একটি অ্যাসাইনমেন্ট পরিবর্তন করে 4 বাইট বাদ পড়েছে। আমাকে ডামি গুনতে হবে! আবারও ধন্যবাদ: ডি

p=>{var f=1>0;while(f){var t=p.Select(n=>n-48).ToList();p="";f=!f;for(var j=0;j<t.Count;j++){if(j<t.Count-1&t[j]==t[1+j]){p+=t[j]+t[++j];f=!f;continue;}p+=t[j];}};return p;};

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




2

জাপট ভি 2.0a0 -h, 15 14 বাইট

ফেরত পাঠায় nthক্রম পরিভাষা।

Æ=s_r/(.)\1/ÏÑ

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

এটি 10 ​​বাইটের জন্য কাজ করা উচিত তবে জাপটের পুনরাবৃত্তি প্রতিস্থাপন পদ্ধতিতে একটি বাগ রয়েছে বলে মনে হচ্ছে।

e/(.)\1/ÏÑ


2

05 এ বি 1 , 11 বাইট

Δγε2ôSO}˜J

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Δ             # Continue until the (implicit) input no longer changes:
 γ            #  Split the integer in chunks of the same adjacent digits
              #   i.e. 199999889 → [1,99999,88,9]
  ε     }     #  Map each to:
   2ô         #   Split it into parts of size 2
              #    i.e. 99999 → [99,99,9]
     S       #   Split each part into digits
              #    i.e. [99,99,9] → [[9,9],[9,9],[9]]
       O      #   And take the sum of each part
              #    i.e. [[9,9],[9,9],[9]] → [18,18,9]
         ˜    #  Flatten the list
              #   i.e. [[1],[18,18,9],[16],[9]] → [1,18,18,9,16,9]
          J   #  Join everything together
              #   i.e. [1,18,18,9,16,9] → 118189169
              # (And output the result implicitly at the end)
              #  i.e. output = 28189169

2

ওল্ফ্রাম ভাষা 108 বাইট

ToExpression[""<>ToString/@Total/@Flatten[Partition[#,UpTo@2]&/@Split@IntegerDigits@#,1]]&~FixedPoint~#&

ব্যাখ্যা

IntegerDigits ইনপুট নম্বরটিকে তার অঙ্কগুলির তালিকায় রূপান্তর করে।

Split ধারাবাহিকভাবে পুনরাবৃত্তি সংখ্যা।

Partition[#, UpTo@2]&/@ সর্বাধিক, দৈর্ঘ্যের 2 এর তালিকাগুলির মতো রানগুলি ভাঙা।

Flatten[...,1] মাঝে মাঝে অত্যধিক নেস্টেড ধনুর্বন্ধনীগুলি মুছে ফেলে - যেমন {{2,2}} {2,2} হয়

Total/@জোড় সংখ্যার যোগফল। বিচ্ছিন্ন অঙ্কগুলি সংখ্যার দরকার নেই need

ToString মোট (এবং বিচ্ছিন্ন অঙ্ক) স্ট্রিংগুলিতে রূপান্তর করে।

""<> তালিকার সমস্ত স্ট্রিংগুলিতে যোগদান করে।

ToExpression ফলাফলটিকে পূর্ণসংখ্যায় রূপান্তর করে।

...~FixedPoint~#& ফলাফল পরিবর্তন হওয়া অবধি ফাংশনটি প্রয়োগ করে।


2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) পতাকা /u:System.Text.RegularExpressions.Regex, 70 বাইট সহ

s=>{for(;s[0]!=(s[0]=Replace(s[0],@"(.)\1",m=>m.Value[0]*2-96+"")););}

ইনপুট পরিবর্তন করে আউটপুট। ইনপুট জন্য একটি স্ট্রিং ধারণকারী একটি তালিকাতে লাগে।

পুরো 23 বাইট গল্ফ করার জন্য @ ডানাকে ধন্যবাদ!

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


95 + 34 - 33 + 1 কমান্ডলাইন আর্গগুলিতে আপনার অতিরিক্ত স্থানের প্রয়োজন, iirc
ASCII- কেবল

রিকার্সিভ বেনামে ফাংশনগুলি প্রথমে সংজ্ঞায়িত করতে হয় এবং সংজ্ঞাটি বাইট গণনাতে অন্তর্ভুক্ত থাকে।
অজ্ঞতার

ওহ, এটি পুনরাবৃত্ত
এএসসিআইআই-

1
নিস! আমি নিচে একটি বিট আরো এটা পেতে পারি
অজ্ঞতা প্রতিমূর্তি

এটি সি # :) বিবেচনা করে এটি বেশ ভাল স্কোর
ডানা

1

পরিষ্কার , 118 বাইট

import StdEnv,Data.List
$[a,b:t]|a==b=[1,(a*2)rem 10]%(1-a/5,1)++ $t=[a: $[b:t]]
$l=l

limit o iterate$o map digitToInt

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

ভেঙে যাওয়ার প্রক্রিয়াটির একক ধাপ সম্পাদন করে একটি ল্যাম্বডায় limitঅ্যাপ্লিকেশনগুলির অসীম তালিকা ( ) থেকে প্রথম বারবার মান ( ) নেয় iterateakes ইনপুট হিসেবে নিয়ে যাওয়া [Char]


1

লাল , 84 83 80 বাইট

func[n][if parse s: form n[to some change[copy d skip d](2 * do d)to end][f s]s]

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

ফেরত পাঠায় nthক্রম পরিভাষা।

ব্যাখ্যা:

Red[]
f: func [ n ] [
    if parse s: form n [  ; parse the input converted to a string
        to some change [  ; find and change one or more
            copy d skip   ; digit (in fact any character, no predefined character classes)
            d             ; followed by itself
        ] (2 * do d)      ; with its doubled numeric value 
        to end            ; go to the end of the string
    ] [ f s ]             ; call the function with the altered string if parse returned true
    s                     ; finally return the string 
]


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 111 বাইট

s=>{var t=s;do{s=t;t="";for(int i=0;i<s.Length;)t+=s[i]%48*(s[i++]!=(s+0)[i]?1:2*++i/i);}while(t!=s);return t;}

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

@ এসসিআইআইই কেবলমাত্র olf 30 গল্ফ করার জন্য credit

-2 এম্বোডিমেন্টঅফজ্ঞানের জন্য ধন্যবাদ!

কম গল্ফ কোড ...

// s is the input as a string
s=>{
  // t is another string used
  // to hold intermediate results
  var t=s;
  // the algorithm repeatedly
  // processes s and saves the
  // result to t
  do{
    // copy the last result to s
    // and blank out t
    s=t;
    t="";
    // iterate over s
    for(int i=0;i<s.Length;)
      // append either 1 or 2 times
      // the current digit to t
      t+=s[i]%48*
        // compare the current digit
        // to the next digit. to prevent
        // an out-of-bounds exception,
        // append a 0 to s which either
        // gets ignored or collapses
        // to 0
        (s[i++]!=(s+0)[i]
          // if they are different, then
          // the multiplier is 1
          ?1
          // if they are the same, then
          // the multiplier is 2, and we
          // have to increment i
          :2*++i/i);
  }
  // continue this until the input
  // and output are the same
  while(t!=s);
  return t;
}



@ এএসসিআইইনালি - শুভ পদক্ষেপ :) (s[i++]-48)*2=>s[i++]*2-96
দানা


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