বোরিং নম্বর পেতে গল্ফ


22

যদি কোনও পূর্ণসংখ্যার মধ্যে অঙ্কের একটি অঙ্ক / ক্রম থাকে যা ধারাবাহিকভাবে পুনরাবৃত্তি করে (আপনি বুঝতে পারবেন কেন আমি "ধারাবাহিক" কেন বললাম) 5 বা ততোধিক বার, আমরা এটিকে "বোরিং" বলি।

উদাহরণস্বরূপ, 11111বোরিং, যদিও 12345তা নেই।

নির্দেশনা

ইনপুট হিসাবে একটি পূর্ণসংখ্যা গ্রহণ করুন

পূর্ণসংখ্যা বিরক্তিকর হলে সত্যবাদী মান এবং যদি পূর্ণসংখ্যা বোরিং না হয় তবে একটি মিথ্যা মান আউটপুট দেয়

উদাহরণ

11111=> trueবা 1(1 পুনরাবৃত্তি 5 বার)

12345=> falseবা0

1112111=> falseবা0

4242424242=> trueবা 1(42 বার পুনরাবৃত্তি হয়েছে)

-11111=> trueবা1

3452514263534543543543543543876514264527473275=> trueবা 1(543 পুনরাবৃত্তি 5 বার)

আপনি যদি অন্য ধরণের "সত্য" এবং "মিথ্যা" ব্যবহার করেন তবে এটি নির্দিষ্ট করুন।

বিধি

বেসিক বিধি প্রযোজ্য।

শুভকামনা!


হয় 1112111বিরক্তিকর?
লিকি নুন

1
হয় 4242424242বিরক্তিকর?
33 তে মারামারি করুন

4242424242 বিরক্তিকর হয় .1212111 হয় না।

22
আমার ধারণা আজ সংখ্যাগুলির দিনটি কেউ পছন্দ করে না। :)
সেমস

12
কঠোরভাবে বলতে গেলে, সমস্ত সংখ্যা বিরক্তিকর, কারণ এগুলি সমস্ত নেতৃস্থানীয় জিরোগুলির একটি স্বেচ্ছাসেবী সংখ্যায় লেখা যেতে পারে। :-)
celtschk

উত্তর:


13

05 এ বি 1 ই , 8 বাইট

কোড:

Œv¹y5×åO

ব্যাখ্যা:

Œ         # Compute all substrings from the input.
 v        # For each substring.
   y5×    # Repeat the substring 5 times (42 × 5 = 4242424242).
  ¹   å   # Check if it's in the input string.
       O  # Sum up the result. Non-boring numbers should give 0.

সত্যবাদী অ-শূন্য এবং মিথ্যা শূন্য। সিপি -1222 এনকোডিং ব্যবহার করে ।

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


1
নিস মিশ্রন ব্যবহার Œসঙ্গে ×
এমিগানা

1
@ আদনান সুন্দর কাজ! সি =

23

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

(.+)\1{4}

সমস্ত টেস্টকেস যাচাই করুন! (সমস্ত টেস্টকেস একবারে চালানোর জন্য সামান্য পরিবর্তিত)


4
অপেক্ষা করুন, লোকেরা কি এটি দ্রুত করছে?

আমি এই পোস্ট করতে উপায় খুব ধীর ছিল। জানতেন রেটিনা এই চ্যালেঞ্জটি পছন্দ করবে :)
এমিগিনা

@ এমিগনা দুঃখিত xd
লিকি নুন

1
@ লুইসমেন্দো কি একইরকম হয় না তা নির্বিশেষে 5+ এর সাথে কোনও মিলছে না? উদাহরণস্বরূপ এটি মিলবে12345
Emigna

4
@ লুইস মেন্ডো (.+){5}প্রসারিত হওয়ার (.+)(.+)(.+)(.+)(.+)পরে (.+)\1{4}প্রসারিত হয় (.+)\1\1\1\1
লিকি নুন

7

জাভা 8, 52 বাইট

s->s.matches(".*(.+)\\1{4}.*")

Outgolfed এই জাভা 8 উত্তর সরাসরি সঙ্গে String#matches

ব্যাখ্যা:

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

s->              // Method with String parameter and boolean return-type
  s.matches(     //  Return whether the entire String matches the following regex:
    ".*          //   0 or more leading characters
     (.+)\\1{4}  //   group of 1 or more characters, repeated 5 times
     .*")        //   0 or more trailing characters


4

লুয়া, 35 বাইট

আচ্ছা, লুয়ার নিদর্শনগুলি দিয়ে কীভাবে আরও ভাল করা যায় তা আমি দেখছি না! nilমিথ্যা মামলার ক্ষেত্রে ইনপুট এবং আউটপুট হিসাবে কমান্ড-লাইন আর্গুমেন্ট গ্রহণ করে এবং সত্যের ক্ষেত্রে পুনরাবৃত্তি সংখ্যা।

print((...):match("(%d+)%1%1%1%1"))

4

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

নোড.জেজে (by০ বাইট)

process.stdin.on('data',t=>console.log(/(.+)\1{4}/.test(t)))

ইনপুট / আউটপুটটিতে এক টন বাইট নষ্ট করা ।

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

alert(/(.+)\1{4}/.test(prompt()))

আবার ইনপুট / আউটপুট বাইট নষ্ট।

অগ্রাধিকার হিসাবে, একটি বেনাম ফাংশন হিসাবে (22 বাইট)

n=>/(.+)\1{4}/.test(n)

বা আরও ছোট ( 16 বাইট )

/(.+)\1{4}/.test

আমার ভুলগুলি নির্দেশ করার জন্য @ বিজনেসগেটকে ধন্যবাদ


1
এর /(.+)\1{4}/.test(n)পরিবর্তে আপনি matchকয়েকটি বাইট সংরক্ষণ করে ব্যবহার করতে পারেন । এটি দেখে মনে হচ্ছে এটি আসলে কিছু আউটপুট করবে।
বিড়াল বিড়াল

@ বিজনেসগেট আপনি একদম ঠিক বলেছেন, আমার ধারণা আমি এই প্রশ্নটিতে মিস করেছি। পরামর্শের জন্য ধন্যবাদ.
Charredgrass

আপনার স্ট্যান্ডার্ড ইনপুট নেওয়ার দরকার নেই, আপনি ফাংশন আর্গুমেন্টগুলি ব্যবহার করতে পারেন
বিড়াল

2
Uncaught TypeError: Method RegExp.prototype.test called on incompatible receiver undefined। আমি নিশ্চিত না যে প্রযুক্তিগতভাবে একটি সঠিক উত্তর হিসাবে গণনা করা হয়, এটির মতো কিছু হওয়ার দরকার নেই /./.test.bind(/(.+)\1{4}/)?
প্যাট্রিক রবার্টস

প্রশ্নটিতে বলা হয়েছে যে "5 বা ততোধিক বার পুনরাবৃত্তি করা কোনও সংখ্যা " বোরিং।
টুথব্রাশ

3

পাইথন 3.5, 49 43 বাইট:

( -6 বাইটস মার্টিন এন্ডারের টিপসকে ধন্যবাদ ! )

import re;lambda u:re.search(r'(.+)\1{4}',u)

যতক্ষণ না ক্রমাগত 5 বা ততবার বার পুনরাবৃত্তি হয় ততক্ষণ অক্ষরের সমস্ত পুনরাবৃত্তি ক্রমগুলি মেলানোর জন্য একটি নিয়মিত অভিব্যক্তি ব্যবহার করে। কোনও reম্যাচ <_sre.SRE_Match object; span=(0, 10), match='4242424242'>সত্যবাদী মান হিসাবে পাওয়া গেলে এবং কিছুই বা মিথ্যা মান হিসাবে পাওয়া যায় না এমন কোনও ম্যাচ অবজেক্ট (যেমন ) প্রদান করে None

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


3
আহ, সর্বশক্তিমান রেজেক্স।

2
{4,}দ্বারা প্রতিস্থাপন {4}?
ফাঁস নুন

@ লেকিউন হ্যাঁ, এটিও কার্যকর।
আর কাপ,

\1রেগেক্স গ্রুপের পরে কী করবে ?
স্পিড প্লেন

@ স্পিডপ্লেন গ্রুপ থেকে ম্যাচের পরবর্তী কোনও ঘটনার সাথে মেলে।
আর কাপ,

2

পার্ল, 17 15 বাইট

$_=/(.+)\1{4}/

+ pপতাকা।

(সাথে চালানো) perl -pe '$_=/(.+)\1{4}/' )

(.+)পরিবর্তে এর জন্য ডোম হেস্টিংকে ধন্যবাদ(\d+)

প্রয়োজনে ব্যাখ্যা: (.+)সংখ্যার যে কোনও অংশের সাথে মিলবে, এবং \1{4}$এটি যদি 4 বার অভ্যাসগত পুনরাবৃত্তি করা হয় তবে অনুসন্ধান করে।


ভাল, তবে সেখানে আরও ভাল গল্ফার রয়েছে। এটি এখনও ভাল।

4
আমি নিশ্চিত নই যে পার্ল এর চেয়ে আরও ভাল কিছু করতে পারে ... এবং আমি এখনও একটি পার্ল সমাধান জমা দিতে চেয়েছিলাম, সুতরাং এটি এখানে।
দাদা

আপনি একটি ব্যাখ্যা যোগ করতে পারেন?

আমি মনে করি বোরিংয়ের $_=/(\d+)\1{4}/পরিবর্তে আপনার প্রয়োজন হতে পারে 111112তবে এটি এটি ধরবে না। এমনকি আপনি /./রেটিনা উত্তর অনুসারে ব্যবহার করতে সক্ষম হতে পারেন ।
ডম হেস্টিংস

1
হ্যাঁ, আপনি ঠিক বলেছেন, আমি খুব বিরক্তিকর সংখ্যার সাথে মেলে যাচ্ছিলাম যখন কেবল বোরিংগুলি যথেষ্ট ছিল
দাদা

1

সি # - 93 38 বাইট

s=>new Regex(@"(.+)\1{4}").IsMatch(s);

একটি স্ট্রিং নেয়, পূর্ণসংখ্যা ফেরত দেয়।

প্রচুর বাইট সংরক্ষণের জন্য অ্যালোসডিজকে ধন্যবাদ !


আপনি যুক্তিটিকে স্ট্রিং হিসাবে নিতে পারেন যদিও এটি আপনাকে কিছু বাইট সংরক্ষণ করতে পারে।
লিকি নুন

1
@"(.+)\1{4}"পাশাপাশি রেজেক্স হিসাবে কাজ করবে না ? কমপক্ষে আমার সি # পরিবেশে করে।
এমিগনা

আপনি একটি ল্যাম্বডা ব্যবহার করতে পারেন। এটা অনুমোদিত. s=>Syst...
অ্যালোইসডজি বলেছেন মনিকা পুনরায় ইনস্টল করুন

@ এমিগনা - এটি অবশ্যই সি # পরিবেশ নির্বিশেষে কার্যকর হবে। টানা 5 টি অক্ষরের সাথে যে কোনও কিছুই ঠিক পরপর 5 টি অক্ষরের জন্য কাজ করবে।
charredgrass

1
এছাড়াও, আমি মনে করি যে আমরা লিখতে করতে সক্ষম হওয়া উচিত s=>new Regex(@"(.+)\1{4}").IsMatch(s);কারণ আমরা (যা তার আমাদের stdlib) .NET থাকতে এবং আমরা জন্য গণনা কখনো using System.Linq;বা using System.Collections.Generic
অ্যালোইসডজি বলেছেন মোনিকা

1

পাইথ , 9 8 বাইট

1 বাইট মাল্টেসেনকে ধন্যবাদ।

ছাঃ} * 5dQ .:
চ} * 5TQ .:

সত্যবাদী মানটি একটি শূন্য খালি অ্যারে।

মিথ্যা মান হ'ল [](খালি অ্যারে)।

পরীক্ষা স্যুট.

f}*5TQ.:   input as a string stored in Q
f}*5TQ.:Q  implicit arguments
        Q  input
      .:   all substrings of.
f   T      filter for this condition, keep those returning true:
  *5           repeat five times
 }   Q         in Q? (True/False)

যোগফল প্রতিস্থাপন mকরে fএবং বের করে 8 বাইট পান
মালটিসেন

1

গণিত, 46 40 36 বাইট

b=a__;StringContainsQ[b~~b~~b~~b~~b]

ফাংশন। ইনপুট এবং আউটপুট হিসাবে স্ট্রিং নেয় Trueবা False। এক্সপ্রেশনটির বিরুদ্ধে টেস্ট স্ট্রিং a__~~a__~~a__~~a__~~a__, যা একই অক্ষরের ক্রমটি 5 বার পুনরাবৃত্তি করে represents রেফারেন্সের জন্য, একটি রেজেক্স ব্যবহার করে সংক্ষিপ্ততম সমাধানটি 45 বাইট দীর্ঘ:

StringContainsQ@RegularExpression@"(.+)\1{4}"

অভিশাপ আপনি নিয়মিত এক্সপ্রেশন!


প্যাটার্ন মিলের দুর্দান্ত ব্যবহার।
মাইল 23

1

পিএইচপি, 37 33 বাইট

নুন ইশহিরকে ধন্যবাদ, আমি ভুলে গেছি <?=

পিএইচপি <5.4 এর জন্য প্রোগ্রাম, 1বোরিং নম্বরগুলির জন্য প্রিন্টগুলি 0অন্যথায়

<?=preg_match('/(.+)\1{4}/U',$n);

ব্যবহার:

  • সেট register_globals=1মধ্যে php.iniপিএইচপি-CGI জন্য
    তারপর কলphp-cgi <filename> n=<number>;echo""
  • পিএইচপি> = 5.4 জন্য, প্রতিস্থাপন $nসঙ্গে$_GET[n]

নন-রেজিপ্সপ সলিউশন, 152 147 140 বাইট

<?for($e=$n+1;--$e;)for($f=$e;$f--;)for($a=str_split(substr($n,$f),$e),$k=$c='';strlen($v=array_pop($a));)$c-$v?$k=0&$c=$v:($k++<3?:die(1));
  • বোরিং নম্বরগুলির জন্য প্রস্থান কোড 1 প্রদান করে, অন্য 0 এর সাথে
    প্রতিস্থাপন করুন এবং পরিবর্তে মুদ্রণের জন্য যুক্ত করুনdie(1)die(print 1)echo 0;
  • উপরের মতো একই ব্যবহার, তবে short_open_tags=1অক্ষম থাকলে সেটও করুন
  • বাইরের লুপ golfing একটি অযৌক্তিক প্রারম্ভিক মান পেয়েছি, প্রতিস্থাপন $n+1সঙ্গে ceil(strlen($n)/5)+1বা অন্তত সঙ্গে strlen($n)পরীক্ষার জন্য বা এটা সব সময় প্রবেশ করুন মত লুপ হতে পারে।

1
<?=preg_match... কয়েকটি চর সংক্ষিপ্ত
ননওনিহলে

1

হাস্কেল, 80 (63?)

কোনও আমদানির বিবৃতি না থাকলে এটি 63 হবে।

import Data.List
f x=or$tail[isInfixOf(concat$replicate 5 b)x|b<-subsequences x]

ব্যবহার

f "11111211"
f "11111"
f "12345" 
f "1112111"
f "4242424242"
f "-11111"
f "3452514263534543543543543543876514264527473275"

যাইহোক, ধারাবাহিকতা আমাকে ক্রমাগতের চেয়ে আরও বেশি বোঝায়

(দুঃখিত, আমি এখনও মন্তব্য করতে পারি না।)


1
আমি আশা করি আমার উক্তিটি নিজেকে মন্তব্য করতে সক্ষম করতে সহায়তা করেছে।

0

ম্যাটল্যাব, 26 বা 13 বাইট

s=int2str(i);all(s==s(1))

এটি পূর্ণসংখ্যার ভেরিয়েবল 'i' নেয়। একটি স্ট্রিং কেবল শেষ অংশ:

all(s==s(1))

আমি নিউলাইনটিকে একটি চরিত্র হিসাবে গণনা করেছি।


আপনাকে ইনপুট নির্দিষ্ট করতে হবে, যেমন। এটি সাথে নিয়ে যান i=input('')বা পুরো জিনিসটিকে একটি ফাংশন করে তোলে (উদা। @(i)...)। বিটিডাব্লু, আমি মনে করি ইতিমধ্যে পূর্ণসংখ্যাটিকে স্ট্রিং হিসাবে গ্রহণ করা খুব বেশি প্রসারিত হবে। পিএস আমি মনে করি এটি শেষ পরীক্ষার ক্ষেত্রে ব্যর্থ হয় এবং সাধারণও 211111
pajonk

যে কেউ প্রশ্নটি সম্পাদনা করেছেন: এটি করবেন না। যদি ওপি কিছুক্ষণ পরে (যেমন আগামীকাল) সাড়া না দেয় তবে আপনি সম্পাদনা করার চেষ্টা করতে পারেন। এছাড়াও, এটি মুছতে হবে, প্রতিযোগী হিসাবে রাখা হবে না।
Rɪᴋᴇʀ

0

টিএসকিউএল, 151 বাইট

Golfed:

DECLARE @t varchar(99)='11111'

,@z bit=0,@a INT=1,@ INT=1WHILE @a<LEN(@t)SELECT @z=IIF(@t LIKE'%'+replicate(SUBSTRING(@t,@a,@),5)+'%',1,@z),@=IIF(@=20,1,@+1),@a+=IIF(@=1,1,0)PRINT @z

Ungolfed:

DECLARE @t varchar(99)='11111'

,@z bit=0,
@a INT=1,
@ INT=1
WHILE @a<LEN(@t)
  SELECT
    @z=IIF(@t LIKE'%'+replicate(SUBSTRING(@t,@a,@),5)+'%',1,@z),
    @=IIF(@=20,1,@+1),
    @a+=IIF(@=1,1,0)

PRINT @z

বেহালা


0

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

$args[0]-match"(.+)\1{4}"

আমি কোনও উপায়েই একজন রেগেক্স মাস্টার নই, সুতরাং এর জন্য অন্যান্য উত্তরে ক্রেডিট।


0

ক্লোজার, 24 বাইট

#(re-find #"(.+)\1{4}"%)

ক্লোজারের nil/ falseএবং সত্যের মানগুলির মিথ্যা মানগুলি সমস্ত কিছুর জন্য ব্যবহার করে। বিশেষত, nilযখন কোনও মিল মিথ্যা []হিসাবে পাওয়া যায় না, এবং 11111 এর মতো কোনও ম্যাচ পাওয়া গেলে সত্যের জন্য একটি অ্যারের ["11111" "1"]সত্য হয়।


0

রেগেক্সেস ছাড়াই জেএস, 166

b=s=>{for(let i=0;i<s.length-4;i++){for(let n=1;n<=Math.floor((s.length-i)/5);n++){if([1,2,3,4].every(k=>s.slice(i,i+n)==s.slice(i+n*k,i+n*(k+1))))return 1}}return 0}

নন

// test any start pos, and length
var b = s => {
    for (let i = 0; i <= s.length - 5; i++) {
        for (let n = 1; n <= Math.floor((s.length - i) / 5); n++) {
            // test if s is boring at position i, with length n
            if ([1, 2, 3, 4].every(k => s.slice(i, i + n) === s.slice(i + n * k, i + n * (k + 1)))) {
                return 1;
            }
        }
    }
    return 0;
};

console.log(b('11111'));
console.log(b('12345'));
console.log(b('1112111'));
console.log(b('-11111'));
console.log(b('3452514263534543543543543543876514264527473275'));

1
হাই, এবং পিপিসিজিতে আপনাকে স্বাগতম! তবে, এটি সত্যিই আরও গল্ফ করা যেতে পারে। আপনি আরও সংক্ষিপ্ত কোডের জন্য অতিরিক্ত অতিরিক্ত সাদা স্থান সরিয়ে ফেলতে পারেন। দয়া করে হয় এটি আরও গল্ফ করুন বা মুছুন।
Rɪᴋᴇʀ

আমি রেজেক্স এড়ানোর ধারণা পছন্দ করি। প্রতিস্থাপন করুন (['বিরক্তিকর', 'আসুন', 'মিথ্যা', 'সত্য'] ['বি', '', '0', '1']; যা 20 টি অক্ষর
কেটেছিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.