আপনার ডাব একসাথে পান


24

4chan এ, একটি জনপ্রিয় খেলা পাওয়া যায়। সাইটের প্রতিটি পোস্ট একটি ক্রমিক পোস্ট আইডি পায়। যেহেতু আপনি এগুলিকে প্রভাবিত বা নির্ধারণ করতে পারবেন না, লোকেরা সাধারণত তাদের প্রথম সংখ্যাটি নিজের পোস্ট নম্বর (কমপক্ষে একটি অংশ) অনুমান করার চেষ্টা করে। গেমের আর একটি সংস্করণকে ডাব বলা হয় এবং এটির সংখ্যাটি শেষে (অর্থাত 1234555) পুনরাবৃত্তি সংখ্যাগুলি পাওয়া।

আপনার কাজটি যদি আপনি এটি গ্রহণ করতে চান তবে একটি প্রোগ্রাম লিখতে হবে যা কোনও পোস্ট আইডি ইনপুট হিসাবে গ্রহণ করে (মানক পূর্ণসংখ্যা, আপনি 2 ^ 32 এর নীচে ধরে নিতে পারেন) এবং কতগুলি পুনরাবৃত্তি সংখ্যা শেষে রয়েছে তা ফেরত দেয়।

বিধি

  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়
  • প্রোগ্রামটি কোনও ফাংশন, পুরো প্রোগ্রাম, আরপিএল কমান্ড হতে পারে, যাই হোক না কেন এটি কার্যকর হয়, যতক্ষণ না এটি চালানোর জন্য কোনও বাহ্যিক আনসক্টেড কোড / আর্গুমেন্টের প্রয়োজন হয় না।
  • ইনপুট এসটিডিআইএন, ফাংশন আর্গুমেন্ট, কমান্ড লাইন আর্গুমেন্ট, ফাইল, আপনার উপযুক্ত অনুসারে আসতে পারে।

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

Input: 14892093
Output: 1

Input: 12344444
Output: 5

Input: 112311
Output: 2

Input: 888888
Output: 6

Input: 135866667 //Post number I got on /pol/ few days ago, rip
Output: 1

1
আমরা স্ট্রিং হিসাবে ইনপুট নিতে অনুমতি দেওয়া হয়?
মৃত পসসাম

6
@ ডেডপসাম আমি এটি অনুমোদিত বলে ধরে নিব, যেহেতু আপনি STDIN, কমান্ড-লাইন আর্গুমেন্ট বা ফাইল (যা সমস্ত স্বীকৃত ইনপুট পদ্ধতি) এর ইনপুটটি পড়েন তবে আপনি স্ট্রিং পান।
মার্টিন ইন্ডার

1
আমরা কি ধরে নিতে পারি যে ইনপুটটি 0 এর চেয়ে বেশি হবে?
মার্টিন ইন্ডার

1
@ মার্টিনএন্ডার হ্যাঁ
sagiksp

2
ডাবস গেমের জন্য উপভোট করুন! Check'em!
জম্বিচৌডার

উত্তর:


19

গণিত, 29 বাইট

একটি গাণিতিক সমাধান সম্পর্কে কীভাবে?

IntegerExponent[9#+#~Mod~10]&

আমি এই দেখে সরাসরি সন্তুষ্ট হলাম যে এটি সরাসরি-গণিতের গণিতের পদ্ধতির প্রহার করে।

ব্যাখ্যা

কোড নিজেই নির্ণয় 9 * এন + N% থেকে 10 এবং তারপর সর্ববৃহৎ শক্তি খুঁজে বের করে 10 যে ভাগ ইনপুট, বা অন্য কথায়, চিহ্ন শূন্য গণনা করে। N কে কে পুনরাবৃত্ত অঙ্কগুলিতে শেষ হয় কিনা তা দেখাতে হবে , সেই 9 * n + n% 10 কে কে ট্রেলিং জিরো রয়েছে।

রিপাবলিক-সংখ্যা সবচেয়ে সহজে মত একটি সংখ্যা বিভাজক দ্বারা গাণিতিকভাবে প্রকাশ করা হয় 99999 (যা 10 5 -1 দ্বারা) 9 এবং তারপর পুনরাবৃত্তি অঙ্ক দ্বারা বংশ বিস্তার করেন। সুতরাং আমরা লিখতে পারি এন = মি * 10 + D * (10 -1) / 9 , যেখানে মি ≢ ঘ (গেলিক ভাষার 10) , তা নিশ্চিত করার জন্য এন সমাপ্ত হয় না আরো তুলনায় পুনরাবৃত্তি ডিজিটের। নোট করুন যে d = n% 10

আসুন এটি আমাদের সূত্র 9 * n + n% 10 এ প্লাগ করুন । আমরা 9 * মি * 10 কে + ডি * (10 কে -1) + ডি পেয়েছি শেষে বাতিল করা হয়েছে, তাই আমরা অবশিষ্ট করছি: 9 * মি * 10 + D * 10 = (9 * M + ঘ) * 10 । তবে 9 ≡ -1 (Mod 10) , তাই 9 * মি + ডি ≡ ডি - এম (10 মডি) । তবে আমরা দৃ m়ভাবে জানিয়েছি যে এম ≢ ডি (মড 10) এবং তাই ডি - এম ≢ 0 (মোড 10)

অন্য কথায়, আমরা দেখানো করেছি যে 9 * M + ঘ দ্বারা বিভাজ্য নয় 10 এবং সেইজন্য, বৃহত্তম শক্তি 10 যে ভাগ 9 * এন + N% থেকে 10 = (9 * M + ঘ) * 10 হয় , পিছনে পুনরাবৃত্ত সংখ্যাগুলির সংখ্যা।

একটি বোনাস হিসাবে, এই সমাধান ছাপে সঠিক ফলাফল, ইনপুট জন্য, 0


1
এটি এমন বারের মতো হয় যে আমি এই সাইটটি ম্যাথজ্যাক্সকে সমর্থন করি; গা bold় সূত্রগুলি টাইপসেটগুলির মতো দুর্দান্ত নয়। এটি দুর্দান্ত যে আপনি যদিও এক্সপোশনগুলি সুপারস্ক্রিপ্ট লিখতে সময় নিয়েছিলেন।
wizzwizz4

1
@ wizzwizz4 আমি কোড ফর্ম্যাটিং ব্যবহার করতাম, তবে আমি দেখতে পেয়েছি যে সাহসী (যা সাধারণত ডেনিস ব্যবহার করেন) এর চেয়ে কিছুটা বেশি পঠনযোগ্য। তবে সম্মত, এটি ম্যাথজ্যাক্সের মতো সুন্দর নয়।
মার্টিন ইন্ডার

13

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

&`(.)\1*$

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

ওভারল্যাপিং মিলগুলির সংখ্যা গণনা করে (.)\1*$যার মধ্যে একটি রেইজেক্স যা অভিন্ন চরিত্রের প্রত্যয়টির সাথে মেলে।


2
এটি অবশ্যই একটি মেম হতে হবে: আপনি এবং আপনার রেজেক্স
ক্রিস্টোফার

আমাকে এই সমস্ত সংশোধকগুলি শিখতে হবে - আমি কেবল এর জন্য যেতে পারতাম (.)(?=\1*$)
নীল

1
@ ডাউনচ্রিস্টোফার তিনি আক্ষরিকভাবে একটি রেজেক্স-ভিত্তিক ভাষা তৈরি করেছেন, এটি মেমের উপাদান ছাড়িয়ে যায় সি:
রড

1
@ নীল যদি এটি কোনও সান্ত্বনা থাকে তবে আমার প্রথম চেষ্টাটি ছিল (?=(.)\1*$)(তাই মূলত আপনার মতো)।
মার্টিন ইন্ডার

1
হ্যাঁ, ধন্যবাদ!
নীল

9

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

ẹḅtl

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

ব্যাখ্যা

ẹ       Elements: split to a list of digits
 ḅ      Blocks: group consecutive equal digits into lists
  t     Tail: take the last list
   l    Length: Output is the length of that last list

যদি সরাসরি পূর্ণসংখ্যার উপর কাজ করা হয় (এবং আমি নিশ্চিত না কেন আমি এটি প্রয়োগ করি নি কেন এটি এটি করে) তবে এটি কেবল 3 বাইট হবে কারণ এটির প্রয়োজন হবে না।


9

পাইথন 2 , 47 41 বাইট

lambda s:len(`s`)-len(`s`.rstrip(`s%10`))

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

36 বাইট - আরও নমনীয় ইনপুট জন্য

lambda s:len(s)-len(s.rstrip(s[-1]))

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


কি দারুন. আমি বিল্টিনগুলি আরও মনোযোগ সহকারে শিখতে চাই। +1
মৃত পসসাম

2
@ ডেডপসসাম dir(object)আমাদের বন্ধু সি:
রোড

বিটিডব্লিউ আমাদের ইনপুট হিসাবে স্ট্রিং নিতে অনুমোদিত নয়। "যদি আপনার ইনপুট পদ্ধতিটি স্বয়ংক্রিয়ভাবে স্ট্রিংগুলি ফেরত দেয় তবে নিশ্চিত, তবে আপনি অনুমান করতে পারবেন না যে ইনপুটটি স্ট্রিং হিসাবে সরবরাহ করা হবে।" : সি
ডেড পসসাম

1
@ ডেডপসসাম আমি মনে করি যে লেখক সে সম্পর্কে তার মন পরিবর্তন করেছেন। মন্তব্যটি মুছে ফেলা হয়েছে বলে মনে হয়।
ব্রায়ান ম্যাকচ্যাচন

8

জাভাস্ক্রিপ্ট (ES6), 55 52 32 30 বাইট

a=>a.match`(.)\\1*$`[0].length
  • সংরক্ষিত 19 Regex প্রতিস্থাপন @MartinEnder ধন্যবাদ বাইট
  • সংরক্ষিত 2 বাঁধা টেমপ্লেট লিটারেল ব্যবহার @ user81655 ধন্যবাদ বাইট

শেষ অঙ্কের শেষ গোষ্ঠীর সাথে মিলে যাওয়ার জন্য একটি রেজেক্স ব্যবহার করে

দ্রষ্টব্য: প্রথমবারের পোস্টিং। মন্তব্য করতে দ্বিধা করবেন না।

f=a=>a.match`(.)\\1*$`[0].length


console.log(f("14892093"));//1
console.log(f("12344444"));//5
console.log(f("112311"));//2
console.log(f("888888"));//6
console.log(f("135866667 "));//1

পিপিসিজিতে আপনাকে স্বাগতম! আপনি পুনরাবৃত্ত অক্ষরটি ম্যানুয়ালি পূরণ করার পরিবর্তে ব্যাক রেফারেন্স ব্যবহার করে প্রচুর বাইট সংরক্ষণ করতে পারেন:/(.)\1*$/
মার্টিন এন্ডার

এছাড়াও, নামবিহীন ফাংশনগুলি সম্পূর্ণ সূক্ষ্ম (যদি না আপনার উদাহরণগুলির জন্য পুনরাবৃত্ত কলগুলির নাম প্রয়োজন হয়) তবে আপনি এতে দুটি বাইট সংরক্ষণ করতে পারেন f=
মার্টিন ইন্ডার

ভাল করেছ! এটি নিশ্চিতভাবে পর্যালোচনা পাস করে তবে এটি গল্ফ করা যেতে পারে
ক্রিস্টোফার

টুইটারে আমাকে এখনও গল্ফ শিখতে হবে
উইডোজ

ডাউনলোডডাউন ক্রিসটফার ধন্যবাদ! আমি পরের বার আরও ভাল করার চেষ্টা করব
উইডোজ


7

পিএইচপি, 47 45 40 বাইট

while($argn[-++$i]==$argn[-1]);echo$i-1;

সাথে চালাও echo <n> | php -nR '<code>

আমার প্রথম উত্তরের চেয়ে লুপটি এখনও ছোট। কেবল শেষের সমান বর্ণগুলি গণনা করুন। এটি পিএইচপি 7.1 এর নেতিবাচক স্ট্রিং অফসেট ব্যবহার করে ।

টাইটাস -5 বাইট । ধন্যবাদ!


পুরানো উত্তর:

<?=strlen($a=$argv[1])-strlen(chop($a,$a[-1]));

ডান থেকে সরানো প্রতিটি অক্ষর ডান থেকে সর্বাধিক অক্ষরের সাথে মেলে এবং দৈর্ঘ্যের পার্থক্যের গণনা করে।


-Rএবং $argn5 বাইট সংরক্ষণ করতে পারে।
তিতাস





6

সি (জিসিসি) , 32 29 বাইট

f(x){x=x%100%11?1:-~f(x/10);}

এটি আমার পাইথন উত্তরের একটি বন্দর ।

এটি জিসিসি নিয়ে কাজ করে তবে একটি returnবিবৃতি না দেওয়ার বিষয়টি অপরিজ্ঞাত আচরণ।

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


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

2
সমস্ত returnবিবৃতি ইএএক্স-এ রিটার্ন মান সংরক্ষণ করছে। জিসিসি সহ, এটি একটি ভেরিয়েবলকে নির্ধারণ করা একই জিনিসটি ঘটায়। পয়েন্টার গাণিতিক হিসাবে, আপনি যখন কোনও ইনট পয়েন্টারে 1 যুক্ত করেন, এটি পরবর্তী বাইট নয়, পরবর্তী ইনট এ চলে যায়।
ডেনিস

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

@ বিজন সি সংকলনকারীরা সর্বদা প্রশ্নে আদিমের কোনও পরমাণুর আকারের সাথে সরাসরি মেমরি অ্যাক্সেসটিকে সারিবদ্ধ করে - আমি মনে করি না এটি স্ট্যান্ডার্ডে রয়েছে কিনা, যদিও
বিড়াল


5

সি # , 63 62 বাইট


Golfed

i=>{int a=i.Length-1,b=a;while(a-->0&&i[a]==i[b]);return b-a;}

Ungolfed

i => {
    int a = i.Length - 1,
        b = a;

    while( a-- > 0 && i[ a ] == i[ b ] );

    return b - a;
}

অসম্পূর্ণ পাঠযোগ্য

i => {
    int a = i.Length - 1, // Store the length of the input
        b = a ;           // Get the position of the last char

    // Cycle through the string from the right to the left
    //   while the current char is equal to the last char
    while( a-- > 0 && i[ a ] == i[ b ] );

    // Return the difference between the last position
    //   and the last occurrence of the same char
    return b - a;
}

সম্পূর্ণ কোড

using System;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
         Func<String, Int32> f = i => {
            int a = i.Length - 1, b = a;
            while( a-- > 0 && i[ a ] == i[ b ] );
            return b - a;
         };

         List<String>
            testCases = new List<String>() {
               "14892093",
               "12344444",
               "112311",
               "888888",
               "135866667"
            };

         foreach( String testCase in testCases ) {
            Console.WriteLine( $" Input: {testCase}\nOutput: {f( testCase )}\n" );
         }

         Console.ReadLine();
      }
   }
}

রিলিজ

  • v1.1 - - 1 byte - কেভিনের মন্তব্যে ধন্যবাদ ।
  • v1.0 -  63 bytes- প্রাথমিক সমাধান।

নোট

কিছুই যুক্ত করার নেই


+1 আপনি এটি 1 বাইট দ্বারা গল্ফ করতে পারেন, যদিও। এটি পছন্দ করুন:i=>{int a=i.Length-1,b=a;while(a-->0&&i[a]==i[b]);return b-a;}
কেভিন ক্রুইজসেন


4

MATL , 6 5 বাইট

@ লুইসকে ধন্যবাদ 1 বাইট সংরক্ষিত

&Y'O)

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

ব্যাখ্যা

        % Implicitly grab input as a string
&Y'     % Perform run-length encoding on the string but keep only the second output
        % Which is the number of successive times an element appeared
O)      % Grab the last element from this array
        % Implicitly display

আমি ভুলে গিয়েছিলেন যে &হয়নি যে Y':-D কেন একটি স্ট্রিং উদ্ধৃতির মধ্যে ঘিরা এবং পরিত্রাণ পেতে হিসাবে ইনপুট নিতে j?
লুইস মেন্ডো

@ লুইস মেন্ডো আমি নিশ্চিত ছিলাম না যে আমি এটি করতে পারি কিনা যেহেতু চ্যালেঞ্জটি স্পষ্টভাবে বলেছিল যে ইনপুটটি একটি "পূর্ণসংখ্যা" ছিল
স্যুভার

আমি মার্টিনের মন্তব্য এবং পূর্বনির্ধারিত নিয়মগুলি থেকে এটি ধরে নিয়েছি , যা এটির অনুমতি দেয়। তবে আমি সত্যিই নিশ্চিত নই
লুইস মেন্ডো

@ লুইস মেন্ডো আহ ওকে তার মন্তব্যটি দেখেনি। আপডেট হবে!
সুয়েভার

4

কিউবিক্স, 24 19 বাইট

)uO)ABq-!wpUp)W.@;;

বিঃদ্রঃ

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

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

ব্যাখ্যা

প্রথমে কিউবটি প্রসারিত করা যাক

    ) u
    O )
A B q - ! w p U
p ) W . @ ; ; .
    . .
    . .

মৃত্যুদন্ড কার্যকর করার পদক্ষেপগুলি তিনটি পর্যায়ে বিভক্ত করা যেতে পারে:

  1. ইনপুট পার্স করুন
  2. অক্ষরের সাথে তুলনা করুন
  3. মুদ্রণ ফলাফল

পর্ব 1: ইনপুট

প্রথম দুটি অক্ষর কার্যকর করা হয় Aএবং হয় BAসমস্ত ইনপুট পড়ে এবং স্ট্যাকের জন্য অক্ষর কোড হিসাবে এটি পুশ করে। নোট করুন যে এটি বিপরীতে করা হয়েছে, প্রথম অক্ষরটি স্ট্যাকের শীর্ষে শেষ হয়, শেষ চরিত্রটি প্রায় নীচে থাকে। একেবারে নীচে, -1( EOF) স্থাপন করা হয়েছে, যা স্ট্রিংয়ের শেষে টানা অক্ষরের পরিমাণের জন্য একটি কাউন্টার হিসাবে ব্যবহৃত হবে। যেহেতু আমাদের শেষ দুটি অক্ষর ধারণ করতে স্ট্যাকের শীর্ষের প্রয়োজন, তাই লুপটি প্রবেশের আগে আমরা স্ট্যাকটি বিপরীত করি। নোট করুন যে স্ট্যাকের উপরের অংশটি এখন দেখায়:..., C[n-1], C[n], -1

কিউবে আইপি'র স্থানটি যেখানে রয়েছে Eএবং এটি ডানদিকে নির্দেশ করছে। যে সমস্ত নির্দেশাবলী এখনও কার্যকর করা হয়নি, তাদের কোনও বিকল্পগুলি (পুরো স্টপস) দ্বারা প্রতিস্থাপন করা হয়েছিল।

    . .
    . .
A B E . . . . .
. . . . . . . .
    . .
    . .

দ্বিতীয় ধাপ: চরিত্রের তুলনা

স্ট্যাকটি হ'ল ..., C[a-1], C[a], counter, counterযখন দুটি অক্ষর ( C[a]এবং C[a-1]) সমান পরীক্ষা করার জন্য বাড়ানোর পাল্টা । আইপি প্রথমে এই লুপটি Sঅক্ষরে প্রবেশ করে ডানদিকে চলেছে। Eচরিত্র অবস্থান যেখানে আইপি শেষ হবে (ডান ইশারা) যখন হয় C[a]এবং C[a-1]একই মান, যার মানে বিয়োগ হবে না C[a]থেকে C[a-1]দেয় না 0, যে ক্ষেত্রে নির্দেশনা নিম্নলিখিত !এড়ানো হবে (যা একটি হল w)।

    . .
    . .
. S q - ! w E .
p ) W . . ; ; .
    . .
    . .

একটি পূর্ণ লুপ চলাকালীন কার্যকর করা নির্দেশাবলী এখানে:

q-!;;p) # Explanation
q       # Push counter to the bottom of the stack
        #     Stack (counter, ..., C[a-1], C[a])
 -      # Subtract C[a] from C[a-1], which is 0 if both are equal
        #     Stack (counter, ..., C[a-1], C[a], C[a-1]-C[a])
  !     # Leave the loop if C[a-1]-C[a] does not equal 0
   ;;   # Remove result of subtraction and C[a] from stack
        #     Stack (counter, ..., C[a-1])
     p  # Move the bottom of the stack to the top
        #     Stack (..., C[a-1], counter)
      ) # Increment the counter
        #     Stack (..., C[a-1], counter + 1)

এবং তারপরে এটি লুপ হয় ops

তৃতীয় ধাপ: মুদ্রণের ফলাফল

যেহেতু আমরা লুপ তাড়াতাড়ি চলে আসা, স্ট্যাক সৌন্দর্য এটি পছন্দ: counter, ..., C[a-1]-C[a]। কাউন্টারটি মুদ্রণ করা সহজ, তবে আমাদের কাউন্টারটি একবার বাড়িয়ে নিতে হবে কারণ আমরা লুপের শেষ পুনরাবৃত্তিতে এটি করি নি এবং আরও একবার কারণ আমরা এর -1পরিবর্তে গণনা শুরু করেছি 0। ঘনক্ষেত্রের পথটি দেখে মনে হচ্ছে S, ডান দিকে নির্দেশ করে , শুরু হচ্ছে । আইপি দ্বারা সম্পাদিত দুটি নো-অপসগুলি আইপিটির দিক নির্দেশিত তীর দ্বারা প্রতিস্থাপিত হয়।

    ) u
    O )
. B . . . S p U
. ) . . @ . . .
    > >
    . .

নির্দেশগুলি নিম্নলিখিত ক্রমে কার্যকর করা হয়। মনে রাখবেন যে B)শেষের দিকনির্দেশগুলি স্ট্যাকটি পরিবর্তন করে তবে প্রোগ্রামটিকে প্রভাবিত করে না, যেহেতু আমরা এটি শেষ করতে চলেছি এবং আমরা স্ট্যাকটি আর ব্যবহার করব না।

p))OB)@ # Explanation
p       # Pull the counter to the top
        #     Stack: (..., counter)
 ))     # Add two
        #     Stack: (..., counter + 2)
   O    # Output as number
    B)  # Reverse the stack and increment the top
      @ # End the program

আলেয়া আইকটা এস্ট।


3

ব্যাচ, 91 বাইট

@set s=-%1
@set n=1
:l
@if %s:~-2,1%==%s:~-1% set s=%s:~,-1%&set/an+=1&goto l
@echo %n%

-প্রতিরোধ স্ট্রিং এর শুরু বন্ধ চালু করা থেকে পরীক্ষা।


3

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

f=(n,p)=>n%10-p?0:1+f(n/10|0,n%10)

রেজেক্স সমাধানের চেয়ে কম নয়।

রিকার্সিভ ফাংশন যা ডান থেকে বাম থেকে অঙ্কগুলি মূল্যায়ন করে, যখন অন্য কোনও অঙ্কের মুখোমুখি হয় তখন থামছে। ফলাফলটি পুনরাবৃত্তির সংখ্যা। pহয় undefinedপ্রথম পুনরাবৃত্তির, যার মানে উপর n%10-pআয় NaN(falsy)। এর পরে, pআগের অঙ্কটির সাথে সমান n%10। যখন বর্তমান অঙ্ক ( n%10) এবং পূর্ববর্তী ( p) আলাদা হয়, লুপটি শেষ হয়।


3

রাদা , 12 বাইট

{count|tail}

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

এটি একটি বেনামে ফাংশন যা প্রত্যাশা করে যে ইনপুট স্ট্রিংয়ের প্রতিটি অক্ষর প্রবাহে ধাক্কা খায় (আমি মনে করি এটি সাম্প্রতিক মেটা প্রশ্নের উত্থানে বৈধ? )।

এটি দুটি বিল্টিন ব্যবহার করে: countএবং tail:

  1. count স্ট্রিম থেকে মানগুলি পড়ে এবং ধারাবাহিক উপাদানের সংখ্যাকে প্রবাহে ধাক্কা দেয়।
  2. tail প্রবাহের শেষ মানটি প্রদান করে।

3

টি-এসকিউএল, 238 214 বাইট

declare @ varchar(max) = '' declare @i int=0, @e int=0, @n int=right(@,1), @m int while (@i<=len(@)) begin set @m=(substring(@,len(@)-@i,1)) if (@n=@m) set @e=@e+1 else if (@i=0) set @e=1 set @i=@i+1 end select @e

বা:

declare @ varchar(max) = '12345678999999'
declare 
    @i int = 0,
    @e int = 0,
    @n int = right(@,1),
    @m int

while (@i <= len(@))
begin
    set @m = (substring(@,len(@)-@i,1))
    if (@n = @m) set @e = @e + 1
    else
    if (@i) = 0 set @e = 1
    set @i = @i + 1
end
select @e


2

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

for($n="$args";$n[-1]-eq$n[-++$a]){};$a-1

কোনও চর স্ট্রিংয়ের শেষ চরের সাথে মেলে না হওয়া পর্যন্ত সোজা লুপ পিছনের দিকে, সেই চর -1 এর সূচকটি ফেরত দিন।

-3 অ্যাডমবর্কবার্ককে ধন্যবাদ - কিছু সময়ের পরিবর্তে লুপের জন্য ব্যবহার করা।


2

গণিত, 33 30 বাইট

3 বাইট সংরক্ষণের জন্য গ্রেগ মার্টিনকে ধন্যবাদ।

Tr[1^Last@Split@Characters@#]&

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

দশমিক অঙ্ক (অক্ষরের আকারে) পায়, তাদেরকে অভিন্ন উপাদানগুলির রানে বিভক্ত করে, শেষ রান পান এবং ভেক্টরের সমষ্টি নেওয়ার মানক ট্রিকের সাথে দৈর্ঘ্যটি গণনা করেন 1^list


Charactersএর বদলে IntegerDigits?
গ্রেগ মার্টিন

@ গ্রেগমার্টিন আহা হ্যাঁ, আমি অনুমান করি। ধন্যবাদ।
মার্টিন ইন্ডার

আপনি এখনও এই প্রশ্নের জন্য অন্য বুদ্ধিমান ম্যাথমেটিকা ​​গল্ফারকে পরাজিত করেন না ;)
গ্রেগ মার্টিন

@ গ্রেগমার্টিন কি লজ্জাজনক। :)
মার্টিন ইন্ডার


2

জাভাস্ক্রিপ্ট (ES6), 39 38 37 27 বাইট

f=n=>n%100%11?1:1+f(n/10|0)

রেজেক্স-ভিত্তিক সমাধানের চেয়ে সংক্ষিপ্ত নাও হতে পারে, তবে আমি গাণিতিকের উপর ভিত্তি করে কোনও সমাধান লিখতে বাধা দিতে পারিনি। কৌশলটি বারবার n % 100 % 1110 টি দ্বারা নেওয়া এবং ফলাফলটি শূণ্য না হওয়া পর্যন্ত ভাগ করা, তারপরে পুনরাবৃত্তিগুলি গণনা করুন। এটি কাজ করে কারণ শেষ দুটি সংখ্যা যদি একই হয় তবে n % 100 % 11তা হবে 0


আহ, তুমি ঠিক আমার আগে শেষ করেছ হা হা! আমি অন্য উত্তর পোস্ট করব কিনা তা সম্পর্কে নিশ্চিত নই, যেহেতু তারা সম্ভবত গল্ফ করার পরে একত্রিত হবে, তবে এখানে 34 টি বাইট ব্যবহার করে আমার সমাধানটি দেওয়া হয়েছে:f=(n,p)=>n%10-p?0:1+f(n/10|0,n%10)
ইউজার81655

@ user81655 এটি দুর্দান্ত, এটি পোস্ট করতে নির্দ্বিধায়। আমার মনে হয় না যে আমার সম্পূর্ণ পরিবর্তন ব্যতিরেকে
এটিতে


2

আর, 35 বাইট

rle(rev(charToRaw(scan(,''))))$l[1]

সংক্ষিপ্ত বর্ণনা

                  scan(,'')         # get input as a string
        charToRaw(         )        # convert to a vector of raws (splits the string)
    rev(                    )       # reverse the vector
rle(                         )$l[1] # the first length from run length encoding

2

বেফুঞ্জ -98 , 19 বাইট

01g3j@.$~:01p-!j$1+

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

আমি কেবল স্ট্যাকটি ব্যবহার করতে সক্ষম হলে এটি আরও ছোট করা যেতে পারে made

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

01g3j@.$~:01p-!j$1+
01g                 ; Get the stored value (default: 32)                 ;
   3j               ; Skip to the ~                                      ;
        ~           ; Get the next character of input                    ;
         :01p       ; Overwrite the stored value with the new char       ;
             -!     ; Compare the old value and the new                  ;
               j$   ; Skip the $ when equal, else pop the counter        ;
                 1+ ; Increment the counter                              ;

; When the input runs out, ~ reflects the IP and we run: ;
   @.$
     $              ; Pop the extraneous value (the stored value) ;
   @.               ; Print the number and exit                   ;

2

পাইথন 3 - 50 44 বাইট

সম্পূর্ণ প্রোগ্রাম (পাইথন 3 এ, input()একটি স্ট্রিং দেয়, ইনপুট কোনও বিষয় নয়):

g=input();print(len(g)-len(g.rstrip(g[-1]))) 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.