ক্যান্টরের অবর্ণনীয় সংখ্যা


58

একটি অনির্বচনীয় সংখ্যা এমন একটি সংখ্যা যা সাতটি দ্বারা বিভাজ্য হয় বা এর একটি অঙ্ক হিসাবে সাতটি থাকে। একটি বাচ্চাদের গেমটি অবর্ণনীয় সংখ্যা বাদ দেওয়া গণনা করা হয়

1 2 3 4 5 6 ( ) 8 9 10 11 12 13 ( ) 15 16 ( ) 18 ...

গেমটির ক্যান্টরের সংস্করণটি ক্রমটি "1 2 3 4 5 6 () 8 ..." ক্রমটি উপরের ফাঁকাগুলিতে () ভরাট করে সংজ্ঞায়িত ক্রম।

1 2 3 4 5 6 1 8 9 10 11 12 13 2 15 16 3 18 19 20 4 22 23 24 25 26 5 6 29 30 31 32 33 34 1 36 8 38 ...

কমেন্টের অনির্বচনীয় নম্বর গেমের কমপক্ষে প্রথম 7 ^ 7 নম্বর মুদ্রণ / আউটপুট ...

সংজ্ঞাটি পুনরাবৃত্তভাবে দেওয়া হলেও আপনি কোডটিতে পুনরাবৃত্তি ব্যবহার করতে বাধ্য নন।

এটি , তাই সংক্ষিপ্ততম বাইট গণনা সহ প্রোগ্রামটি জয়ী!

দ্রষ্টব্য: 1 থেকে 7 ^ 7 এর সংখ্যার যোগফল 203511962727 that এই পরিসীমাটিতে শেষ 10 সংখ্যা 823534 823535 221563 108068 823538 823539 823540 823541 823542 221565।

প্রথম 1000 এর পেস্টবিন ডাম্প পুনরাবৃত্তি করে: http://pastebin.com/Ksiu9Svf


8
দয়া করে সেই অনুক্রমের প্রথম 7 ^ 7 নম্বর সরবরাহ করুন যাতে আমরা আমাদের সমাধানগুলি পরীক্ষা করতে পারি।
flawr


2
যদি কেহ আরো কিছু সংখ্যার ফলাফল তৈরী করা এবং তুলনা করতে চায়: ক্রমানুসারে প্রথম 7 ^ 77 সংখ্যার যোগফল 3336402440238885119980169136020683586413168645292341926482898521634332654984279162327502549917668322950744929983987545341421076028 হয়
Niklas বি

অবশ্যই, এই অনুক্রমের 1 এর সংখ্যা 22977, যার অর্থ আপনি যদি প্রথম 7 ^ 77 এর বাইরে কোনও উপাদান এলোমেলোভাবে বেছে নেন, আপনার কাছে এটির 1 হওয়ার সম্ভাবনা 2 * 10 ^ -61 রয়েছে
নিক্লাস বি

1
আপনি যদি আগ্রহী হন তবে এখানে বারবার সংখ্যার বৃদ্ধি দেখানোর জন্য একটি গ্রাফ দেওয়া হয়েছে: drive.google.com/file/d/0B71iQwGfNtw5NGladjdOZVhoNkk/…
নিক্লাস বি

উত্তর:


6

পাইথ , 25 23 22 বাইট

-২ বাইটের জন্য @ মাল্টেসেনকে ধন্যবাদ

.V1=+Y
?}7+PbjbT@Y~hZb

এমন একটি প্রোগ্রাম যা অসীম স্ট্রিম প্রিন্ট করে।

এটি অনলাইন চেষ্টা করুন! (অন্তরালে আউটপুট ফ্লাশ করা এবং 1 মিনিটে সময় বেরিয়ে যায়)

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

.V1=+Y
?}7+PbjbT@Y~hZb

Z = 0, Y = []    Implicit variable assignment
.V1              Infinite incrementing for loop with variable b, starting at 1:
   =+Y            Y = Y +
(newline)          (Implicitly print the result of the following:)
?                   If
 }7                  7 is in
    Pb                the prime factorisation of b
   +                  or
      jbT             the digits of b:
         @Y            Index into Y at index
             Z          Z
           ~h          (Increment Z)
                    else:
              b      b

1
23 বাইট । এটি কাজ করে কুউজ 7প্রাইম, সুতরাং বিভাজ্যতা প্রধান কার্যকারিতা যাচাইয়ের মাধ্যমে করা যেতে পারে, যা অন্যান্য চেকের সাথে ভাল
মানায়

আপনি এটি পোস্ট করতে পারেন, এটির নিজের প্রধান অংশ
মালটিসেন

1
এই প্রতিযোগিতা জয়ের জন্য অভিনন্দন। আমিও @ মাল্টেসেনের কৌশলটি পছন্দ করি!
mschauer

23

পাইথন 2, 77 75 74 70 বাইট

ধন্যবাদ সীমা এর পরামর্শ জন্য @MartinEnder করতে 9e5যা Ende পরিবর্তন পরে কাজ আপ ঘ।
অসীম প্রবাহের পরামর্শ দেওয়ার জন্য, 4 বাইট সংরক্ষণের জন্য @ এমএসচেয়ারকে ধন্যবাদ জানাই।

def f(n=0):
 i=f()
 while 1:n+=1;yield next(i)if'7'in`n`or n%7<1else n

এটি এমন একটি জেনারেটর যা সংখ্যার অসীম স্ট্রিম দেয়।


আপনি কি পুরোপুরি উপরের সীমাটি সরাতে পারবেন না?
mschauer

@ এমএসচেয়ার ধন্যবাদ, সেটির কথা ভাবেন নি।
পূর্বকুডারী

if n%7<1or'7'in`n`else nn%7<1স্ট্রিংটি যাচাই করার চেয়ে দ্রুত এবং orশর্ট সার্কিটের চেয়ে সামান্য দ্রুত (একই বাইট গণনা) হতে পারে । এটি খুব খারাপ যে yield[n,next(i)][n%7<1or'7'in`n`]কাজ করবে না।
mbomb007

@ mbomb007 আমি গতি এখানে সমস্যা বলে মনে করি না, তবে ধন্যবাদ। :)
পূর্কাকাডারী

10

পার্ল, 47 46 41 39 বাইট

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

say$_=$_%7*!/7/?$_:$a[$b++]for@a=1..1e6

এটি অনলাইন চেষ্টা করুন! টিআইও নেক্সাস, এখন পার্ল সমর্থন সহ! এটি একটি নির্দিষ্ট পয়েন্টের পরে আউটপুট কেটে যাবে, তবে আপনি যদি পার্ল ইনস্টল করেন তবে সম্পূর্ণ আউটপুট উত্পাদন করতে আপনি স্থানীয়ভাবে এটি চালাতে পারেন।

কোডটি পার্লের সিনট্যাক্সের কয়েক বিস্ময়কর ফ্যাশনের ব্যবহার করে, তাই আমি নীচে এটি কীভাবে কাজ করে তা ভাঙ্গা করব।

কোড ভাঙ্গন:

say$_=$_%7*!/7/?$_:$a[$b++]for@a=1..1e6
                              @a=1..1e6 #Assign the range (1..1,000,000) to the array @a
                           for          #and then loop through this list, with $_ as an alias for the list member.  As an alias, modifying $_ modifies @a.
      $_%7*!/7/?$_:$a[$b++]             #Ternary operation
      $_%7                              #Returns the residue modulo 7...
          *!/7/                         #...and multiplies it by the negation of whether or not there exists a 7 $_
                                        #Since % and * have the same operator precedence, it must be evaluated in this order
                                        #otherwise we would get (!/7/*$_)%7 instead of ($_%7)*!/7/
               ?$_                      #If the result is non-zero (i.e. truthy), then return $_
                  :$a[$b++]             #Otherwise, return the $b-th element of @a, and increment $b
   $_=                                  #Reassign the result back to $_, modifying @a
say                                     #Prints the result of the assignment, separated by newlines

1
say$a[@a]=$_=...আমি ভুল না হলে 2 বাইট জিততে।
দাদা

@ দাদা আসলে যেহেতু আমাকে অর্পণ করা থেকে $_বাঁচায়, এটি আমার 5 বাইট সংরক্ষণ করে। ধন্যবাদ!
গ্যাব্রিয়েল বেনামি

1
হ্যাঁ, আমি কেবল একটি তাত্ক্ষণিকভাবে নজর রেখেছি এবং মাঝখানে সেই অ্যাসাইনমেন্টটি লক্ষ্য করিনি .. ভাল কাজ :)
দাদা

এটি এই মুহুর্তে (এবং কেবলমাত্র এই মুহুর্তের!) বিবৃতিটি বুঝতে পেরেছি "পার্ল যথেষ্ট লেখার ভাষা হতে পারে"।
হানিফমুবারক

@ গ্রিমি দয়া করে অন্যের কোড সম্পাদনা করবেন না। আপনি যদি কোনও উত্তর উন্নতি করতে চান তবে উন্নতি সহ একটি মন্তব্য যুক্ত করুন বা নিজের উত্তর পোস্ট করুন। আপনি সম্ভবত কোনও মন্তব্যে ওপিতে পৌঁছাতে পারবেন না কেবল নিজের উত্তর পোস্ট করুন।
ovs

5

পিএইচপি, 80 (ওয়াহুকা) 57 54 বাইট

যদিও ধারণাটি ওয়াহুকার। আমি মনে করি আমার সংস্করণটি এটির একটি নিজস্ব উত্তর তৈরি করার পক্ষে যথেষ্ট আলাদা:

for(;;)echo$a[]=strpos(++$n,55)<-$n%7?"$n ":$a[+$b++];

5

হাস্কেল, 67 66 বাইট

i#x|mod x 7<1||'7'`elem`show x=f!!i:(i+1)#(x+1)|y<-x+1=x:i#y
f=0#1

f সংখ্যার অসীম তালিকা list

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

fএকটি নতুন পুনরাবৃত্তি শুরু করে 1এবং কোন সূচকটি 0 বাছাই করতে শুরু করে যখনই কোনও ফাঁক থাকে আমরা যখন একটি নতুন পুনরাবৃত্তি গ্রহণ করি তখন এটি একটি ithউপাদান বাছাই করে এবং বর্তমান পুনরাবৃত্তিটি চালিয়ে যান i+1। যদি কোনও ফাঁক না থাকে, আমরা বর্তমান নম্বরটি নিয়েছি xএবং না বাড়িয়েই চলি i

সম্পাদনা: -১ বাইট @ বিএমওকে ধন্যবাদ


4

এমএটিএল , 26 25 বাইট

9e5:`t7\yFYA!7-A*~s:2M(2M

এটি অনলাইন চেষ্টা করুন! 9e5প্রতিস্থাপন সহ 9e4, যাতে অনলাইন সংকলকের সর্বাধিক চলমান সময় এবং আউটপুট আকার অতিক্রম না হয়।

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

এটি পুনরাবৃত্তির পরিবর্তে পুনরাবৃত্তি ব্যবহার করে। (আসলে, এমএটিএলটির পুনরাবৃত্তি নেই)।

থেকে সংখ্যার একটি অ্যারে 1থেকে 9e5প্রথম উৎপন্ন হয় (কারণ এই, যথেষ্ট 9e5ছাড়িয়ে গেছে 7^7)। তারপর, সংখ্যা যে গুণিতক 7অথবা 7অঙ্ক হিসেবে চিহ্নিত, এবং প্রতিস্থাপিত হয় 1, 2... প্রক্রিয়া iterated করা হয় যতক্ষণ না কোন সংখ্যার প্রতিস্থাপিত করা প্রয়োজন আছে।

9e5:       % Generate array of numbers [1 2 ... 9e5]. This array will become the
           % output, after some numbers have been replaced
`          % Do...while
  t        %   Duplicate the array of numbers
  7\       %   Modulo 7. Gives zero for multiples of 7
  y        %   Duplicate the array of numbers
  FYA!     %   Matrix of decimal digits, with a column for each number
  7-       %   Subtract 7 to each entry of that matrix
  A        %   Array that contains "true" for columns that only contain nonzeros;
           %   that is, for numbers that do not have 7 as digit 
  *        %   Multiply. This corresponds to a logical "and" of the two conditions.
           %   A zero indicates that the number at that index needs to be replaced
  ~        %   Logical negate. Each "true" corresponds to a number to be replaced
  s        %   Sum. This is the amount of numbers to be replaced, say n
  :        %   Push array [1 2 ... n]
  2M       %   Push array of logical values again
  (        %   Replace the numbers at the positions indicated by the logical array
           %   by the values [1 2 ... n]
  2M       %   Push n again. This is used as loop condition, so if it is nonzero
           %   the next iteration will be executed. Note that this executes one
           %   too many iterations: the exit condition is that no replacing has
           %   been needed in the current iteration; but then the current iteration 
           %   (which will be the last) was not really necessary. This does not
           %   matter; the last iteration is useless but also harmless
           % End do...while implicitly. Display implicitly

3

টিসিএল , 121 বাইট

অসীম লুপ ব্যবহার করে তুচ্ছ সমাধান, অভিনব কিছুই না ..

set r 0;set n 0;while {[set r [expr $r+1]]} {if {![expr $r%7]||(7 in[split $r ""])} {puts [set n [expr $n+1]]} {puts $r}}

Ungolfed:

set r 0
set n 0
while {[set r [expr $r+1]]} {
  if {![expr $r % 7] || (7 in [split $r ""])} {
    puts [set n [expr $n+1]]
  } {
    puts $r
  }
}

আপনি ব্যবহার করতে পারেন incr। এবং যদি টিসিএল সংস্করণ> = 8.6, incrপ্রথম পুনরাবৃত্তিকে নতুন পরিবর্তনশীলের একটি বাড়তি ধরে নেওয়া 0হয় 1যদি সেই ভেরিয়েবলটি আগে সেট না করা হয়; যাতে আপনি প্রথম দুটি setনির্দেশনা থেকে মুক্তি পেতে পারেন ।
সার্জিওল

আমার দ্বারা গল্ফড - আমি কিছু অপ্রয়োজনীয় সাদা জায়গাও সরিয়েছি।
সার্জিওল

আমি আপনার জন্য আমার গল্ফিং পরামর্শগুলি যে পোস্ট করেছি সেগুলি সেগুলি
হারাতে পেরেছে

3

পিএইচপি, 106 80 বাইট

এর পরিবর্তে সময়সীমার সমাধান এবং সংক্ষিপ্ত লুপ কোডটি সাহায্যের জন্য ইসমাইল মিগুয়েলকে ধন্যবাদ জানাই।

পিএইচপিফিডাল এর 30 সেকেন্ডের সর্বোচ্চ রানটাইমের কারণে পুরো ক্রমের শেষ অংশগুলি যাচাই করতে পারেনি। ওপি কর্তৃক প্রদত্ত নমুনা আউটপুটের ভিত্তিতে কমপক্ষে 1 কে পর্যন্ত কাজ করা বলে মনে হচ্ছে।

গলফ:

for($n=1;;$n++)echo$a[]=!(strpos($n,"7")>-1||$n%7==0)?"$n ":array_shift($a)." ";

মূল গল্ফযুক্ত সংস্করণ :

$n=1;while(1){if(!(strpos($n,"7")>-1||$n%7==0)){echo$a[]=$n." ";}else{echo$a[]=array_shift($a)." ";}$n++;}

1
for($n=1;;$n++)echo$a[]=!(strpos($n,7)>-1||$n%7==0)?"$n ":array_shift($a)." ";আমি বাইট গণনা জানি না, তবে আমি নিশ্চিত এটি 106 বাইটের চেয়ে অনেক কম। এটি ব্যবহার করে দেখুন এবং এটি কার্যকর হয় কিনা দেখুন।
ইসমাইল মিগুয়েল

খুব সুন্দর, সাহায্যের জন্য ধন্যবাদ। আপনার কোডে একমাত্র পরিবর্তনটি ছিল প্রথম 7 টি কোটেশনগুলিতে রাখা যা আপনার 78te বাইট সংস্করণে দুটি বাইট যুক্ত করেছিল।
ওয়াহুকা

আপনি 3 বাইট বা আরও কিছু করে সংরক্ষণ করতে পারেন for($n=1;;$n++)echo$a[]=strpos($n,"7")>-1||$n%7==0?array_shift($a)." ":"$n ";। আমি নিশ্চিত আপনি প্রতিস্থাপন করতে পারেন নই $n%7==0সঙ্গে !$n%7কিন্তু এটা ব্যবহার করে দেখুন মূল্যহীন।
ইসমাইল মিগুয়েল

1
-6 বর্তা: $ N = 0 অনর্থক, "7" 7. হতে পারে
ক্রিপ্টো

1
শিফট কেন? for(;;)echo$a[]=strpos(++$n,55)<-1&&$n%7?"$n ":$a[++$b-1];(58 বাইট) ++$b-1কারণ$a[null] === null
ক্রিস্টোফ

3

জুলিয়া, 62 বাইট

x=[];j=0;for i=1:7^7;x=[x;i%7<1||('7' in "$i")?x[j+=1]:i]end;x

অভিনব কিছু না। ব্যবধানগুলির মধ্যে ক্রমটি হ'ল ক্রম নিজেই। কিছু বাইট সংরক্ষণ করতে অতিরিক্ত অ্যারে অনুলিপি তৈরি করে।


3

পার্ল 6 ,  74 57 54  53 বাইট

sub u{my@u;(1..*).map: {if $_%%7||.comb('7') {@u||=u;@u.shift} else {$_}}}
sub u{(1..*).map: {$_%%7||.comb('7')??(@||=u).shift!!$_}}
sub u{map {$_%%7||.comb('7')??(@||=u).shift!!$_},1..*}
sub u{map {$_%%7||.comb(~7)??(@||=u).shift!!$_},1..*}

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

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

sub u{
  map             # for each element transform using:

  { # bare block lambda with implicit parameter 「$_」

      $_ %% 7     # if it is divisible by 7
      ||          # or
      .comb(~7)   # contains the number 7 (implicit method call on 「$_」)

    ??            # then
      ( @ ||= u ) # store a new instance of the Seq into an unnamed state array if it is empty
                  # ( it is only empty the first time it is seen in this Seq instance )
      .shift      # pull one off of the front

    !!            # else
      $_          # return the value
  },

  1 .. *          # infinite range starting at one ( elements to be mapped over )
}

টেস্ট:

$ time perl6 -e'sub u{map {$_%%7||.comb(~7)??(@||=u).shift!!$_},1..*};put 203511962727 == sum u()[^7**7]'
True

real    2m45.744s
user    2m45.416s
sys     0m0.212s

দেখে মনে হচ্ছে আপনি ~7পরিবর্তে বলে একটি বাইট সংরক্ষণ করতে পারেন '7'
শান

2

সিলোন, 202 বাইট

object u satisfies{Integer*}{iterator()=>object satisfies Iterator<Integer>{variable value i=0;late Iterator<Integer>n;next()=>if(++i%7<1||'7'in"``i``")then(i<8then(n=iterator())else n).next()else i;};}

এটি কোনও ফাংশন নয়, তবে একটি অবজেক্ট ডিক্লেয়ারেশন অসীম সিকোয়েন্স (আইটেবল) প্রয়োগ করে। অবজেক্টটি সরাসরি মুদ্রণ করা যায়, print(u)এগুলি আউটপুট করে:

{ 1, 2, 3, 4, 5, 6, 1, 8, 9, 10, 11, 12, 13, 2, 15, 16, 3, 18, 19, 20, 4, 22, 23, 24, 25, 26, 5, 6, 29, 30, ... }

আরও মুদ্রণ করতে, ব্যবহার করুন printAll(u)। নিম্নলিখিত কোডটি নিউলাইনগুলি ব্যবহার করে এবং যোগফলগুলি (এবং উপরে দেখানো প্রথম 30 টি উপাদান) মুদ্রণ করে:

shared void run() {
    printAll(u.take(7^7), "\n");
    print(sum({0, * u.take(7^7)}));
    print(u);
}

এখানে অসম্পূর্ণ এবং মন্তব্য করা সংস্করণটি রয়েছে:

// Prints cantor's unspeakable numbers.
//
// Question:  http://codegolf.stackexchange.com/q/101231/2338
// My answer: http://codegolf.stackexchange.com/a/101297/2338

// this object u (which is like a singleton class with its single instance)
// implements the Iterable<Integer> interface.
object u satisfies {Integer*} {
    // That interface has just one formal method,
    // `shared formal Iterator<Integer> iterator()`.
    // Lets implement it by ...
    iterator()
    // ... providing for each call ...
            =>
                // ... a new (anonymous) object, which
                // implements the Iterator<Integer> interface.
                object satisfies Iterator<Integer> {
                    // This is the counter (the type `Integer`
                    // is longer than `value`, so we infer it).
                    // We start at 0.
                    variable value i = 0;
                    // This is a nested Iterator. It will be
                    // initialized when first needed, so we don't
                    // get an endless recursion when creating the
                    // first iterator.
                    late Iterator<Integer> n;
                    // `shared formal Integer next()` is the single method
                    // of Iterator which needs to be implemented.
                    next()
                    // each time it is called, the following
                    // expression will be evaluated.
                            =>
                                // increment the counter, then check if it
                                // is an unspeakable number.
                                if (++i % 7 < 1 || '7' in "``i``")
                                then
                                    // if so, take the nested iterator (and the
                                    //  first time, for i == 7, create it first),
                                    // and take its next element.
                                    (i < 8 then (n = iterator()) else n).next()
                                else
                                    // otherwise, just return i.
                                    i;
                };
}

2

রুবি, 80 বাইট

l=->x{x%7==0||x.to_s[/7/]};a=(1..100);b=a.reject &l p a.map{|x|!l[x]?x:b.shift}

প্রথম জমা, আমি নিশ্চিত এটি উন্নত করা যেতে পারে :)


1
পিপিসিজিতে আপনাকে স্বাগতম! এই কমপক্ষে 7 ^ 7 (অর্থাত 823543) উঠে যাই, এবং এটি সংখ্যার যা ধারণ জন্য দায়ী করে অঙ্ক 7, অর্থাত 17?
ETH প্রোডাকশনস

এটা নিশ্চিত না। এখনই স্থির। ভেবেছিল সমস্যাটি কিছুটা সহজ ছিল :)
ক্রিস্টোফার লেটস

চমৎকার, তবে আমি নিশ্চিত নই যে এটি এখনও যোগ্যতা অর্জন করেছে। পরে 34(যা 8বর্তমানে) সংখ্যাটি হওয়া উচিত 7, তবে 7একটি অনির্বচনীয় সংখ্যা হওয়ায় প্রোগ্রামটির তৃতীয় পুনরাবৃত্তি শুরু করা উচিত এবং পরিবর্তে মুদ্রণ করা উচিত 1
ETH প্রোডাকশনস

2

ডায়ালগ এপিএল , 39 বাইট

{(⍵⍴⍨⍴i)@(i←⍸('7'∊¨⍕¨⍵)∨0=7|⍵)⊢⍵}⍣≡⍳7*7

⍳7*71 1 3 ... 7 7

{ }⍣≡হয় নির্দিষ্ট বিন্দু অপারেটর - একটি ফাংশন বারংবার প্রয়োগ না হওয়া পর্যন্ত ফলাফলের স্থির রাখে

A@I⊢B সংশোধন অপারেটর - সূচকের এ উপাদান প্রতিস্থাপন Iমধ্যে Bদিয়েA

0=7|⍵ বিটমাস্ক যেখানে যুক্তিটি 7 দ্বারা বিভাজ্য

'7'∊¨⍕¨⍵ আর্গুমেন্টের দশমিক বিন্যাসে যেখানে 7 থাকে বিটমাস্ক

অথবা

উপরের বিটমাস্কগুলির মধ্যে কোনটি সূচককে সত্য?

i← ধার্য i

⍵⍴⍨⍴i উপাদানগুলির সংখ্যাটিতে যুক্তিটি পুনরায় আকার দিন i


এটা সুন্দর. আপনি কি বিটমাস্কের সাহায্যে *7 * 7 গুণাবেন এবং ক্রমটিতে শূন্যগুলি সংশোধন করার ফিক্সপয়েন্টটি গ্রহণ করেন তা কি সহায়তা করে?
mschauer

2

সি 157 155 বাইট

int c[999999],r;main(_,p){if(_){p=--_;c[_]=1;for(;;){printf("%d ",c[_]);main(0,++_+1);c[_]=r?_+1:c[p++];}}else!p?r=1:p%7?p%10-7?main(0,p/10):(r=0):(r=0);}

এটা ঠিক মনে হচ্ছে, আমি পুরোপুরি চেক করতে বিরক্ত করিনি 999999 পর্যন্ত যায় যা আপাতদৃষ্টিতে যথেষ্ট বড়।

অবরুদ্ধ সংস্করণ:

int cantor_n[1000000];

int cantor_n_safe(int x) {
    if (!x) return 1;
    if (x % 7 == 0) return 0;
    if (x % 10 == 7) return 0;
    return cantor_n_safe(x / 10);
}

int main(_, prev_index) {
    prev_index = --_;
    cantor_n[_] = 1;
    for(;;) {
        printf("%d ", cantor_n[_]);
        _++;
        if (!cantor_n_safe(_+1)) {
            cantor_n[_] = cantor_n[prev_index++];
        } else {
            cantor_n[_] = _+1;
        }
    }
    return 0;
}

আংশিকভাবে গল্ফ করা সংস্করণ:

int c[999999];int r;
safe(x){ 
    !x?
        r=1:
        x%7?
            x%10-7?
                safe(x/10):
                (r=0):
            (r=0);
}

main(_){
    int p;
    p=--_;
    c[_]=1;
    for(;;){
        printf("%d ",c[_]);
        safe(++_+1);
        if (!r) {
            c[_]=c[p++];
        } else {
            c[_]=_+1;
        }
    }
}

আপনার পরে ধনুর্বন্ধনী প্রয়োজন else?
জাকারি

আমি না, আপনাকে ধন্যবাদ। আমার (r=0)বেশিরভাগ সময় প্রযুক্তিগতভাবে ধনুর্বন্ধনী প্রয়োজন হয় না । তবে কিছু সংকলক পিক। আমি এখনই অনুমানটি পরীক্ষা করতে খুব অলস।
লাম্বদাবেটা

2

আর, 86 বাইট

x=1;while(T<7^7){T=T+1;x[T]=if(!T%%7|7%in%el(strsplit(c(T,""),""))){F=F+1;x[F]}else T}

আর এর Truthy বিল্ট-ইন ব্যবহার T(সক্রিয়া TRUE/ 1ক্রম এবং Falsy মান সংখ্যা গণনা করার জন্য) F(সক্রিয়া FALSE/ 0) unspeakables গণনা। প্রোগ্রামটি ব্যতীত প্রতিটি সংখ্যা সাতটি দ্বারা বিভাজ্য কিনা বা সংখ্যাটি রয়েছে কিনা তা সহজেই পরীক্ষা করে।


-4 বাইট 7%in%el(strsplit(c(T,""),""))দ্বারা প্রতিস্থাপন 55%in%utf8ToInt(paste(T))? (পরীক্ষিত নয়)
জয়সি 26'18

2

সি - 115 বাইট

s[99],r;g(x){return x%10-7&&(!x||g(x/10));};f(i){(r=++s[i])%7&&g(r)||f(i+1);}main(){for(;;f(0),printf("%d\n",r));}

সম্পাদনা: @ এমএসচাউয়ারকে ধন্যবাদ যে আমাকে নির্দেশ করেছে যে আমি কিছু জিনিস মিস করেছি।


চমৎকার পন্থা। দুটি মন্তব্য। r% 10-7 কেবলমাত্র পিছনের সাতটি ক্যাপচার করে এবং আপনার স্তূপকে দূষিত করবেন না: স্ট্যাকের গভীরতা বহুবচিকভাবে বৃদ্ধি পায় ... এর [99] নিরাপদ।
mschauer

2

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

n=[]
r=l=>(m=n[l]=++n[l]||1,!/7/.test(m)m%7?m:r(l+1))
for(;;)console.log(r(0))

যেহেতু কেবলমাত্র সর্বনিম্ন প্রয়োজনীয়তা রয়েছে তবে সর্বাধিক প্রয়োজনীয়তা নয়, এই সমাধান অনির্দিষ্টকালের জন্য আউটপুট অব্যাহত রাখে।

অ্যালগরিদমটি সঠিক কিনা তা যাচাই করতে আপনি একই কোডটি কেবলমাত্র শেষ 10 নম্বর এবং যোগফলটি সম্পাদন করতে পারেন:

n = []
r = l => (m = n[l] = ++n[l] || 1, !/7/.test(m) && m % 7 ? m : r(l + 1))
var tot = 0
for (i = 0; i + 1; i++) {
    v = r(0)
    tot += v
        if (i > Math.pow(7, 7) - 11) {
        console.log(v)
    }
    if (i === Math.pow(7, 7) - 1) {
        console.log(tot)
        break
    }
}



1

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

আসল (98 বাইট)

for(c=0,i=1;i<=Math.pow(7,7);i++)/7/.test(i)||i%7==0?(6==c?c=1:c++,console.log(c)):console.log(i);

Golfed

p=console.log;for(c=0,i=1;i<9e5;i++)/7/.test(i)||i%7==0?(6==c?c=1:c++,p(c)):p(i);

সাইটে স্বাগতম! আমি জাভাস্ক্রিপ্ট সম্পর্কে অনেক কিছু জানি না, তবে আপনি কি এমন কিছু করতে পারেন p=console.log;for(c=0,i=1;i<=Math.pow(7,7);i++)/7/.test(i)||i%7==0?(6==c?c=1:c++,p(c)):p(i);?
DJMcMayhem

ধন্যবাদ @ ডিআরএমসিমাইলেক্স, যা আরও কয়েকটি বাইট ফেলেছে। উন্নয়নের জন্য এখনও অবকাশ আছে সন্দেহ করি না।
রিচার্ড সিম

আমি সাহায্য করতে পেরে আনন্দিত! অন্য একটি জিনিস আমি শুধু উপলব্ধি, আপনি কি পারে 9e5পরিবর্তে Math.pow(7,7), যেহেতু চ্যালেঞ্জ বললঃPrint/output AT LEAST the first 7^7
DJMcMayhem

হ্যাঁ, দুর্দান্ত শট ডক! এটি আমাকে তুলনা অপারেটরের কাছ থেকেও সমতুল্য ছাড়তে দেয়।
রিচার্ড সিম 20

এটি প্রত্যাশিত যা করছে তা মনে হচ্ছে না। শূন্যস্থান পূরণ করার সময়, আপনাকে কেবল একটি কাউন্টার পুনরায় সেট করার পরিবর্তে আবার নিয়মগুলি প্রয়োগ করতে হবে (ক্রমের এই অংশটি দেখুন 34 1 36 **8** 38:)। কিন্তু কি এটি মূল্যহীন জন্য, বর্তমান সংস্করণটি আরো কিছু golfed করা যেতে পারে: for(c=i=0;++i<9e5;)console.log(!/7/.test(i)&&i%7?i:c++%6+1)
Arnauld

1

বেফুঞ্জ, 100 বা 156 বাইট

এই প্রথম সংস্করণটি দুটির বেশি পোর্টেবল, এটি নিজেকে 7-বিট মেমরি কোষে সীমাবদ্ধ করে, যা আপনি রেফারেন্স ইন্টারপ্রেটারে পান।

"O":0>\#09#:p#-:#1_v<0$.< 
9\*"~"g9+1:+1::p00:<+3$_^#g01$$<v"~":/"~"p9g00%"~"::+1+g9\*"~"+g
:#15#+5#g+#0%#17#\-#/!#+\#5:#5_^>%00g1+9p"~"/00g2+9p::7%!10>>p#0

দ্বিতীয় সংস্করণটি কেবল দোভাষীদের সাথে কাজ করে যার মধ্যে 32-বিট মেমরি কোষ রয়েছে এবং এটি বেফুঞ্জের সাথে কঠোরভাবে স্ট্যান্ডার্ড নয়, তবে এটি আমাদের সেলগুলিতে বিভাজন না করে মেমরির বৃহত্তর মান সংরক্ষণ করতে দেয়।

"O":0>\#09#:p#-:#1_v<0$.< 
%7::p9g00:+1g9:p00:<+1$_^#g01$$<v01!
:#15#+5#g+#0%#17#\-#/!#+\#5:#5_^>p#0

উভয় ক্ষেত্রেই প্রোগ্রামটি অনির্দিষ্টকালের জন্য চলতে থাকে তবে প্রথম সংস্করণটি 2 মিলিয়ন চিহ্নের ওপরে প্রবাহিত হবে এবং দ্বিতীয় সংস্করণটি সর্বাধিক মান (প্রায় 2 বিলিয়ন) পর্যন্ত পাওয়া উচিত।

আপনি এটি অনলাইনে চেষ্টা করতে পারেন তবে এটি চিরতরে চালানোর চেষ্টা থেকে বিরত রাখতে আপনার প্রক্রিয়াটি মারতে হবে।


1

Clojure, 130 বাইট

#(let[R(range(inc %))](rest((reduce(fn[[r s]i](if(or(=(mod i 7)0)((set(str i))\7))[(assoc r i(r s))(inc s)][r s]))[(vec R)0]R)0)))

বেসিক হ্রাস, ফলাফল ভেক্টরের সামগ্রীর উপর নজর রাখা এবং কতগুলি মান এড়ানো হয়েছে। গত 0কমে প্রথম উপাদান লাগে [r s], rest0-ইন্ডেক্স ফলাফলের প্রথম উপাদান ড্রপ।



1

Tcl , 64 বাইট

while 1 {puts [expr {[incr i]%7&&7ni[split $i ""]?$i:[incr s]}]}

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


চমৎকার! আমার থেকে অনেক খাটো…
hdrz

এটি "... 33 34 7 36 8 38 ..." এর পরিবর্তে "... 33 34 1 36 8 38 ..."
এমএসচায়ার

@ এমএসচেয়ার: ঠিক আছে, সময়
পেলে

@hdrz আমি আপনার সমাধানটি চেষ্টা করেছিলাম এবং এতে একই সমস্যা আছে এমএসচাউয়ার!
সার্জিওল

1

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

for(f=n=>!/7/.test(m=++n[0])*m%7?m:f(n.t=n.t||[0]);;)alert(f(f))

output=[];index=0;for(f=n=>!/7/.test(m=++n[0])*m%7?m:f(n.t=n.t||[0]);index<100;)output[index++]=f(f);console.log(output.join(','))


অন্যান্য কয়েকটি ( console.log) জাভাস্ক্রিপ্ট উত্তরের সাথে তুলনা করার জন্য PS , এটি 70 বাইট
l4m2

1

জাপট , 25 বাইট

[]L³õ@pX%7«/7/tX ?X:UgV°

যোগফল এবং শেষ 10 টি উপাদান পরীক্ষা করুন।

সিকোয়েন্সের প্রথম 1,000,000 এন্ট্রি তৈরি করে এবং সেগুলি মুদ্রণ করে। এক মিলিয়ন হ'ল 7**7 == 823543জাপটে সংক্ষিপ্ততম সংখ্যা ।

পেছনের নতুন লাইনটি তাৎপর্যপূর্ণ, কারণ এতে অন্তর্ভুক্ত কার্যটি সক্রিয় করা হয় U

তালিকা তৈরি করতে কেবল এক সেকেন্ড সময় লাগে, তবে পুরো অ্যারে আউটপুট করা আপনার ব্রাউজারকে ঝুলিয়ে রাখতে পারে।

আনপ্যাকড এবং কীভাবে এটি কাজ করে

[]L³õX{UpX%7&&!/7/tX ?X:UgV++

[]                            Assign empty array to U
  L³õX{                       Map over 1 to 1,000,000 inclusive...
         X%7&&                  If X is not divisible by 7 and
              !/7/tX            X does not have a digit 7
                     ?X:UgV++   then X, otherwise the next element already in U
       Up                       Push it to the end of U

                              Implicit print U

ইতিমধ্যে উত্পন্ন ক্রমটি দেখে পুনরাবৃত্ত সংজ্ঞাটি সমাধান করা যেতে পারে এমন বৈশিষ্ট্যটি ব্যবহার করে।

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