মিলে যাওয়া মিলে যায় না এমন আইডি জেনারেটর


16

প্রদত্ত 2 ইনপুট (এম = সর্বনিম্ন আইডি , এন = আইডির সংখ্যা ), আইডির একটি ক্রমিক তালিকা তৈরি করুন,> = এম থেকে শুরু করে, 0-9 অঙ্কের সমন্বয়ে যেখানে কোনও 2 টি সংখ্যার সংখ্যা একই নয়, যেমন 1232 ঠিক আছে, 1233 নয় (2'3 একে অপরের পাশে থাকে)।

উদাহরণ

m = 985, n = 6 এর জন্য নীচে কী আইডি তৈরি করা হবে / এড়িয়ে যাওয়া হবে তা দেখায়

...
985 - ok, 1st
986 - ok, 2nd
987 - ok, 3rd
# skip 0988 (contains '88')
989 - ok, 4th
# Skip 099x (contains '99')
# Skip 100x (contains '00')
1010 - ok, 5th
# Skip 1011 (contains '11')
1012 - ok, 6th
...

আউটপুট

উপরের ক্রম হিসাবে প্রতিটি আইডি একটি নতুন লাইনে মুদ্রণ করা উচিত:

985
986
987
989
1010
1012

বিধি

স্ট্যান্ডার্ড কোড-গল্ফ নিয়ম, সর্বনিম্ন বাইট গণনা জয়


14
পিপিসিজিতে আপনাকে স্বাগতম! প্রতিটি আইডি একটি নতুন লাইনে মুদ্রিত হওয়া উচিত আমি খুব স্পষ্টভাবে নিরুত্সাহিত করি একটি নির্দিষ্ট বিন্যাসে আউটপুটকে সীমাবদ্ধভাবে সীমাবদ্ধ।
এরিক দি আউটগল্ফার

3
স্টাডআউটে মুদ্রণের পরিবর্তে আইডিগুলির একটি তালিকা (অর্থাত্‍ 1-D এর পূর্ণসংখ্যার অ্যারে) ফিরিয়ে দেওয়া কি ঠিক আছে?
JangHwan মিন

4
@ user202729 উত্তরগুলি এই ক্ষেত্রে অকার্যকর হবে না।
এরিক আউটগল্ফার

2
@ user202729 এটি উত্তরগুলিকে অবৈধ করে না ... যদি কিছু হয় তবে উত্তরগুলি স্থির হয়ে যাবে বা তারা কেবল পুরানো নিয়ম মেনে চলেছে।
সম্পূর্ণরূপে

3
গল্ফিং ভাষায় লেখা গুলির জন্য আরও আউটপুট ফর্ম্যাটগুলি প্রভাবিত করার জন্য নিয়ম পরিবর্তন করে। বাকিগুলির জন্য আপনি কেবল আউটপুট ফর্ম্যাটটি সীমাবদ্ধ নয় বলে মন্তব্য করতে পারেন।
ব্র্যাড গিলবার্ট বিবিগিল

উত্তর:


3

জেলি , 6 বাইট

DIẠµ#Y

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

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

DIẠµ # Y - সম্পূর্ণ প্রোগ্রাম। যুক্তি: দুটি পূর্ণসংখ্যা, এক্স এবং ওয়াই

   µ # - প্রথম Y এর পূর্ণসংখ্যার তুলনায় X এর চেয়ে বেশি বা তার সমান:
 আমি - ইনক্রিমেন্ট ...
ডি - ... তাদের বেস -10 সংখ্যার ...
  Ạ - ... সমস্ত অ -0 
     Y - নিউলাইন দ্বারা ফলাফল যোগদান করুন।

8

ব্র্যাচল্যাগ , 11 10 বাইট

{≤ṫẹ~ḅẉ}ᶠ⁾

ইনপুট দুটি সংখ্যার একটি তালিকা। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

বিল্ট-ইন একটি তালিকা বা স্ট্রিং মত লাগে "1000220"মতো, এবং এটি টুকরা সমান সন্নিহিত উপাদানের ব্লক মধ্যে ["1","000","22","0"]। এই প্রোগ্রামে, আমি ~এটিতে অপারেটরটি প্রয়োগ করি, সুতরাং এটি বিপরীতে কাজ করে: এটি স্ট্রিংগুলির একটি তালিকা নেয়, প্রতিটি স্ট্রিংয়ের একটি একক চরিত্রের পুনরাবৃত্তি থাকে এবং প্রতিবেশী স্ট্রিংগুলির আলাদা আলাদা অক্ষর থাকে এবং তালিকাটি তালিকায় রাখে। প্রিপিকেট ক্রমবর্ধমান ক্রমে প্রথম ইনপুট থেকে শুরু করে সংখ্যাগুলি গণনা করে এবং আমি তাদের উপর একটি শর্ত পরীক্ষা করি, এটিগুলি পূরণ করে এমনগুলি মুদ্রণ করে এবং যখন আমি যথেষ্ট পাই তখন থামি ping

{≤ṫẹ~ḅẉ}ᶠ⁾  Input is a pair, say [M=988,N=3].
{      }ᶠ⁾  Apply this predicate to M and compute the first N results.
 ≤          Take a number that is greater than or equal to M (first up is 988).
  ṫ         Convert it to string: "988"
   ẹ        Split it into substrings of length 1: ["9","8","8"]
     ~ḅ     Apply ḅ in reverse: fails, try next number.
       ẉ    If ḅ succeeds, print the resulting string and a newline.
            This counts as a result of the predicate.


4

জাভা 8, 83 বাইট

(m,n)->{for(;n>0;m++)if(!(m+"").matches(".*(.)\\1.*")){System.out.println(m);n--;}}

ব্যাখ্যা:

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

(m,n)->{                      // Method with two integer parameters and no return-type
  for(;n>0;                   //  Loop as long as `n` is larger than 0
      m++)                    //    After every iteration: increase `m` by 1
    if(!(m+"").matches(".*(.)\\1.*")){
                              //   If there are no repeated adjacent digits:
      System.out.println(m);  //    Print `m`
      n--;}}                  //    And decrease `n` by 1

খুব সুন্দর. কৌতূহলের বাইরে এই প্রশ্নটির উপযুক্ত ফোরামটি কোথায় থাকবে যেখানে চ্যালেঞ্জটি "বাইটস" না হয়ে "দক্ষতা" ছিল?
beirtipol

1
@beirtipol সর্বাধিক দক্ষতার দ্বারা আপনি দ্রুততম নির্বাহের সময় বলতে চান? সেক্ষেত্রে সম্ভবত ট্যাগগুলি কোড চ্যালেঞ্জ এবং দ্রুততম কোড সহ পিপিসিজিতে । যদিও এখন একই একই চ্যালেঞ্জ পোস্ট করা এবং কোড-
গল্ফকে

3

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

param($m,$n)for(;$n){if("$m"-notmatch"(.)\1"){$m;$n--}$m++}

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

অন্যান্য উত্তরগুলির সাথে মূলত একই রকম। লুপগুলি যতক্ষণ আমাদের মুদ্রণ ( for(;$n)) মুদ্রণের জন্য বাকি আছে , পরীক্ষা করে আমাদের একটি ডাবল-ডিজিটের সাথে একটি রেজিেক্স ম্যাচ আছে কিনা তা পরীক্ষা করে এবং যদি তা পাইপলাইনে রাখে এবং হ্রাস পায় $n। তারপরে আমরা ইনক্রিমেন্ট $mএবং আবার লুপ। উপাদানগুলি পাইপলাইন থেকে তুলে নেওয়া হয় এবং অন্তর্নিহিত Write-Outputআমাদের বিনামূল্যে একটি নতুন লাইনের দ্বারা পৃথক আউটপুট দেয়।


3

আর , 111 92 71 বাইট

function(m,n)while(F<n){if(!grepl("(.)\\1",m)){cat(m,'
');F=F+1}
m=m+1}

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

greplবারবার সংখ্যার জন্য অনুসন্ধান করতে ব্যবহার করে।



@ মিঃ এক্সকোডার আহ, ঠিক আছে, আমি লক্ষ্য করেছি এবং তারপরে ভুল সংস্করণটি অনুলিপি করে আটকানো হয়েছে :(
জিউসেপ



2

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

{.put for grep({none .comb Zeq.comb.skip},$^a..*)[^$^b]}

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

সম্প্রসারিত:

{  # bare block lambda with placeholder params $a $b

  .put for

  grep(

    {
      none          # create a none junction (True if all are False)

        .comb       # the input split into digits
        Zeq         # Zip using &infix:«eq» operator
        .comb.skip  # the input split into digits starting at second one
    },

    $^a .. *        # a Range starting at the first argument

  )[ ^ $^b ]        # take the first $b values
}

2

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

.0A`
"$+"{\/(.)\1/{`.+
*
)C`
.+
*

এটি অনলাইন চেষ্টা করুন! আলাদা লাইনে ইনপুট হিসাবে নেয় nএবং নেয় m। ব্যাখ্যা:

.0A`

স্বয়ংক্রিয় আউটপুট বন্ধ করুন এবং nকাজের বাফার থেকে মুছুন ।

"$+"{

একই পদ্ধতি পুনরাবৃত্তি করুন nবার।

\

mনিম্নলিখিত লুপযুক্ত গোষ্ঠীর শেষে মানটি মুদ্রণ করুন ।

/(.)\1/{`

সংক্ষিপ্ত সংখ্যা থাকা অবস্থায় লুপ।

.+
*

অ্যানারিতে রূপান্তর করুন।

)C`

খালি স্ট্রিংয়ের সংখ্যা গণনা করুন, যা অক্ষরের সংখ্যার চেয়ে আরও বেশি, এভাবে 1 যুক্ত করে এবং দশমিককে রূপান্তর করে। এটি অভ্যন্তরীণ লুপটি শেষ করে।

.+
*

মুদ্রিত হওয়ার পরে m, আবার একইভাবে 1 যুক্ত করুন। (শেষ লাইনের কোনও প্রয়োজন নেই C`কারণ এটি শেষ লাইনের জন্য ডিফল্ট ধরণের ধরণের।) বাইরের লুপটি স্পষ্টভাবে শেষ হয়েছে।

নোট করুন যে অ্যানারি ও দশমিক দশকে রূপান্তর করা কিছুটা ধীরে ধীরে; 39 বাইটের জন্য, এমন কোনও সংস্করণ যা কোনও রূপান্তর করে না:

.0A`
"$+"{\/(.)\1/+`.+
$.(*__
.+
$.(*__

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: $.(প্রকৃতপক্ষে এটিকে প্রসারিত না করে সুবিধাজনকভাবে বাকি বিকল্পগুলির দৈর্ঘ্য গণনা করে; যেহেতু দৈর্ঘ্য *_সুস্পষ্টভাবে মেলে মান এবং দৈর্ঘ্য _অবশ্যই 1 হয় এটি কেবল মানটিকে বাড়িয়ে তোলে।


2

পার্ল 5.10.0 + -n, 40 39 বাইট

for(;$i;$_++){!/(.)\1/&&$i--&&say}$i=$_

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

-1 বাইট Xcali ধন্যবাদ

দুটি লাইনে ইনপুট দিন, প্রথম এন, তারপরে মি। মিটার পরে কোনও নতুন লাইন নেই তা নিশ্চিত করুন:

(echo '6'; echo -n '985') | perl -nE 'for(;$i;$_++){!/(.)\1/&&$i--&&say}$i=$_'

1
আপনি একটি বাইট সংরক্ষণ করতে 'মি' মুছে ফেলতে পারেন।
এক্সকালি

@ এক্সকলি ধন্যবাদ, আমি কী ভাবছিলাম তা জানেন না ...
wastl

2

পার্ল 5 ,-ln 33 বাইট

STDIN এ 2 লাইন লিখুন, প্রথমে আইডি শুরু করুন তারপর গণনা করুন

#!/usr/bin/perl -ln
$n-=!/(.)\1/&&say,$_++while$n.=<>

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


আমি জানতাম না যে $n.=<>সেভাবে কাজ করেছিল, বিশেষ করে -=...
ডম হেস্টিংস

@DomHastings দুর্ভাগ্যবশত আমি এটা ফেরত রোল যেহেতু থাকবে $nযাবে 0তাদের করছেন দুজনে মিলে ভুল
টন Hospel


1

Haskell, , 70 বাইট

-19 বাইট ধন্যবাদ নিমিকে।

s#n=unlines$map show$take n$filter(and.(zipWith(/=)=<<tail).show)[s..]

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

নিউলাইনগুলি দ্বারা পৃথক করার জন্য 17 বাইট নিবেদিত।




@ মিঃ এক্সকোডার আঃ, ফিক্সিং ...
সম্পূর্ণরূপে

1
আপনি ব্যবহার করতে পারেন mapMএবং printএটি অনলাইন চেষ্টা করুন!
নিমি

1

স্ট্যাক্স , 9 8 বাইট সিপি 437

ç@F6╕↔┤ú

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

@ জনাব এক্সকোডারের আলগরিদমের সাথে তার জেলি উত্তরটি মিলবে to

@ রিচার্চ দ্বারা মন্তব্য -1 বাইট।

ব্যাখ্যা

ব্যাখ্যায় আনপ্যাক করা বিন্যাস ব্যবহার করে।

{$:-|A}gn
{     }gn    Generator, generate given number of values, using block as a filter
                 And implicit output, one element on a line.
             In Stax, only 0 and [] is falsy.

 $           Convert the number to string
  :-         Difference between contiguous digit
    |A       All of them are truthy (may use `:*` as well)

staxlang.xyz/… 8 বাইট দেয়। অন্তর্নিহিত eval একাধিক মানগুলিতে কাজ করে যতক্ষণ তারা স্ট্যান্ডার্ড ইনপুটটির প্রথম লাইনে থাকে।
পুনরাবৃত্তি

@ রিসার্সিভ আপনাকে ধন্যবাদ, এটি এমন কিছু যা আমি নথিভুক্ত করা সত্ত্বেও লক্ষ্য করি নি।
ওয়েইজুন চিউ

1

হাস্কেল , 94 93 91 বাইট

-1 বাইট লাইকনি
-2 বাইট ধন্যবাদ জাগারবকে ধন্যবাদ

import Data.List
a!0=[]
a!b|all(null.tail)$group$show a=show a++'\n':(a+1)!(b-1)|c<-a+1=c!b

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

প্রথম হাস্কেল গল্ফ


1
হাস্কেল গল্ফিংয়ে আপনাকে স্বাগতম! group(show a)হতে পারে group$show a
লাইকনি

2
(<2).lengthহতে পারেnull.tail
জাগারব





0

এডাব্লুকে , 90 বাইট

{for(j=$1;k<$2;j++){for(a=b=d;++b<=(n=split(j,A,""))&&a!=c=A[b];a=c);if(n<b&&++k)print j}}

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

এটি যেহেতু ভেবেছিল তা তার চেয়ে অনেক খারাপ। আমি আবিষ্কার করেছি যে AWKএটির পিছনে কেবলমাত্র বিকল্প রয়েছেgensub কার্যক্রমে যা এই অ্যাপ্লিকেশনটির জন্য এটি ব্যবহারের পক্ষে খুব দক্ষ নয়।

সুতরাং এটি একটি আইডি কাউন্টারকে বাড়িয়ে তোলার, প্রতিটি চরিত্রে কাউন্টারকে বিভক্ত করা, অক্ষরগুলির মধ্য দিয়ে লুপ করে দেখার জন্য যে কোনও অক্ষর পূর্ববর্তী চরিত্রের মতো একই। যদি কোনও পুনরাবৃত্তি অক্ষর না পাওয়া যায় তবে আইডি কাউন্টারটি মুদ্রণ করুন এবং মুদ্রিত আইডির সংখ্যা বৃদ্ধি করুন।

" AWKআরও দৃ regular় নিয়মিত অভিব্যক্তি করার দক্ষতা থাকা উচিত " এর ধারায় আমি কোনও বিবৃতি দেওয়া থেকে বিরত থাকার চেষ্টা করব , তবে এটি কঠিন হবে।




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