প্রত্যাশার সংখ্যা


14

টাস্ক

প্রিন্ট পূর্ণসংখ্যা এন, যেখানে 12 <= n <= 123456789, এবং n এর মধ্যে পর পরের সমস্ত সংখ্যার মধ্যে একই ধনাত্মক পার্থক্য রয়েছে (যেমন 2468 তবে 2469 নয়)।

কোন ইনপুট।

আউটপুট:

12
13
14
15
16
17
18
19
23
24
25
26
27
28
29
34
35
36
37
38
39
45
46
47
48
49
56
57
58
59
67
68
69
78
79
89
123
135
147
159
234
246
258
345
357
369
456
468
567
579
678
789
1234
1357
2345
2468
3456
3579
4567
5678
6789
12345
13579
23456
34567
45678
56789
123456
234567
345678
456789
1234567
2345678
3456789
12345678
23456789
123456789

বিধি

  1. স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
  2. কোনও ইনপুট নেই

সংক্ষিপ্ততম কোড জয়

অরাজকতা গল্ফ ক্রেডিট


8
এই সমস্যাটি অরাজকতা গল্ফ থেকে । আপনার এটিকে ক্রেডিট দেওয়া উচিত (এমনকি যদি আপনি এটি জমা দিয়েছিলেন
তবেই

5
সেগুলি কি মুদ্রণ করতে হবে?
এইচ.পি.উইজ

11
আমি এনাগলে এই সমস্যাটি জমা দিয়েছি :)
লিন

2
এই তালিকাতে কেন প্রতিটি পূর্ণসংখ্যা 0≤n <100 নয়?
ডনিএলএফ

3
@ ডনিএলএফ কারণ পূর্ণসংখ্যার 12 এর চেয়ে বড় বা সমান হতে হবে এবং কারণ সামনের পার্থক্যগুলি ইতিবাচক হতে হবে।
ডেনিস 21

উত্তর:


11

জেলি , 12 11 বাইট

9œcḊẎIE$ÐfY

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

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

9œcḊẎIE$ÐfY  Main link. No arguments.

9            Set the argument and return value to 9.
   Ḋ         Dequeue; yield [2, ..., 9].
 œc          Take all k-combinations of [1, ..., 9], for each k in [2, ..., 9].
    Ẏ        Concatenate the arrays of k-combinations.
        Ðf   Filter the result by the link to the left.
     IE$         Compute the increments (I) of the combination / digit list and
                 tests if all are equal (E).
          Y  Join the results, separating by linefeeds.

ìà Find fastest route between two points using Dykstra's Algorithm
নিল

7

পাইথন 2 , 81 বাইট

k=71
exec"k+=1;r=range(k/8%9+1,10,k%8+1)\nif r[k/72:]:print`r`[1:k/24+2:3]\n"*576

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

অরাজকতা গল্ফ থেকে আমার সমাধান । ধারণাটি হ'ল দৈর্ঘ্য, শুরুর মান এবং পদক্ষেপের সমস্ত ত্রিগুণে পুনরুক্তি করা, যা সাজানো আউটপুট দেয়। ট্রিপল একটি মান হিসাবে এনকোডেড হয়েছে rথেকে 72থেকে 647, এবং উপাদান হিসাবে নিষ্কাশিত হয় k/72, k/8%9এবং k%8kপর্যাপ্ত পরিমাণে আরম্ভ করা একক-সংখ্যা সংখ্যা আউটপুট হওয়া থেকে বিরত থাকে।

এক্সসট প্রতিস্থাপন করে এটি বন্ধ করে দুটি বাইট সংরক্ষণ করেছে savedrange স্ট্রিংয়ের'123456789'

এটি একটি দ্বিতীয় দ্বিতীয় রানটাইম সীমাবদ্ধতার সীমাবদ্ধতায় লেখা হয়েছিল। একটি ধীর কৌশল যা এগুলি তৈরি করার চেয়ে সংখ্যাগুলিকে ফিল্টার করে সংক্ষিপ্ত হতে পারে।


1
মজাদার ঘটনা: এই সমস্যাটি আসলে অরাজকতা গল্ফ রানটাইম সীমাটি "জন্য ডিজাইন" করা হয়েছিল, এজন্যই আমি এটি পিপিসি-তে জমা করিনি। ডান (সাজানো) ক্রমে সঠিক নম্বরগুলি উত্পন্ন করার জন্য কিছু চতুরতার সাথে উত্তরগুলি আসতে বাধ্য 1করার 123456789পরিবর্তে আমি সাবমিশনগুলি লুপিং থেকে অযোগ্য ঘোষণা করতে চেয়েছিলাম ।
লিন

6

সি, 166 152 বাইট

p,l,d,i=11;main(){for(char s[10];i<=1e9;){sprintf(s,"%d",++i);p=0;for(l=strlen(s);--l>0;){d=s[l]-s[l-1];if(!p)p=d;if(p^d|d<1)break;p=d;}if(!l)puts(s);}}

@ কেভিন ক্রুজসেনকে ধন্যবাদ 6 বাইট সংরক্ষিত!

8 জন বাইট সংরক্ষিত হয়েছে @ জোনাথানফ্রেচের জন্য ধন্যবাদ!

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

উপরের কোডটির সম্পূর্ণ ফর্ম্যাট সংস্করণটি নীচে দেখা যাবে।

#include <string.h>
#include <stdio.h>

int main( void )
{
int prev_diff, diff, len;
int num = 11;
char str[10];

while(num<123456789)
    {
    prev_diff = 0;
    sprintf(str,"%d",++num);
    len = strlen(str)-1;
    for( ; len > 0; len-- )
        {
        diff = str[len] - str[len-1];
        if( prev_diff == 0 )
            {
            prev_diff = diff;
            }
        if( prev_diff != diff || diff < 1 )
            {
            break;
            }
        prev_diff = diff;
        }
    if ( len == 0 )
        {
        puts(str);
        }
    }
}

আমি যদি কিছু মিস করছি while(i<123456789)তবে while(i<=123456789)তার পরিবর্তে চ্যালেঞ্জের পরিধি অনুযায়ী হওয়া উচিত নয় ? এছাড়াও, আপনি এটি 6 বাইট দ্বারা গল্ফ করতে পারেন:p,l,d,i=11;main(){for(char s[10];i<=123456789;){sprintf(s,"%d",++i);p=0;for(l=strlen(s);--l>0;){d=s[l]-s[l-1];if(p<1)p=d;if(p^d|d<1)break;p=d;}if(l<1)puts(s);}}
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন আমি সম্মত হব, যদিও কেউ সম্ভবত উচ্চতর মান বেছে নিয়ে ওয়ান-বাইট তুলনাটি চালিয়ে যেতে পারেন; i<1e9
জোনাথন ফ্রেচ

@ কেভিন ক্রুজসেন এছাড়াও, যদি আমি ভুল না করে থাকি তবে এটি কখনও l<1গতিতে হবে না !l, কারণ এটি lকখনও নেতিবাচক মানের কাছে পৌঁছায় না।
জোনাথন ফ্রেচ

সম্পর্কে @JonathanFrech গুড বিন্দু i<1e9। এবং !lকখন সিআই অনুমানের জন্য lসর্বদা >=0যুক্তিযুক্ত মনে হয় (আমি নিজে সি তে কখনও প্রোগ্রাম করি নি)।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন "আই" স্প্রিন্টফ () এ বৃদ্ধি পেয়েছে, যখন আমি == 123456788 এ এসে লুপটিতে প্রবেশ করতে পারি এবং 123456789 দিয়ে রেখে দেব I'll আমি লুপগুলির জন্য এই বহু-উদ্দেশ্য এবং যুক্ত করব (l == 0 ) -> (l <1) অপ্টিমাইজেশন ইন,
থ্যাঙ্কস

5

জেলি , 14 , 13 বাইট

DIµEȧ>0Ȧ
Ç77#

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

একটি বাইট সংরক্ষিত হয়েছে @ এমআরএক্সকোডারকে ধন্যবাদ!

এটি অত্যন্ত অদক্ষ, তাই এটি টিআইওর সময় শেষ হবে, তবে যদি এটি শেষ হয় তবে এটি সঠিক আউটপুট তৈরি করবে produce আপনি এখানে ছোট সংখ্যার সাহায্যে চেষ্টা করতে পারেন: এটি অনলাইনে চেষ্টা করুন!

ব্যাখ্যা:

            # Helper link:
            #
D           # The Digits of 'n'
 I          # The increments (deltas, differences) between digits
  µ         # Give that array as an argument to the rest of this link:
   E        # Are all elements equal?
    ȧ       #   AND
     >0     # Are all elements greater then 0?
       Ȧ    # And is there at least one element?
            # (in the differences, so that numbers < 10 are false)
            #
            # Main link:
            #
 77#        # Return the first 77 'n's for which
Ç           #   The helper link is truthy

1
বিতৃষ্ণা। আমাকে এটি মারধর। +1
ইয়ার এয়ারড কোইনারিংহিং

$আপনার সহায়ক লিঙ্কের শেষে আপনার দরকার নেই ।
মিঃ এক্সকডার

এটি করার একটি উপায় আরও সুস্পষ্ট উপায় হ'লDIµ>0ȦȧE¶Ç77#
এরিক দ্য আউটগল্ফার

4

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

•7=›ζ•FNS¥DËs0›PN11›&&–

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


•7=›ζ•এটি টিআইওতে শেষ করার জন্য 7000 দিয়ে প্রতিস্থাপন করুন বা সময় শেষ হওয়ার আগে "সমাপ্তি" বোতামটি চাপুন, ফলস্বরূপ সংখ্যাটি মুদ্রিত না হওয়া পর্যন্ত ফলস্বরূপ।


এটি ব্যবহার করার চেষ্টা করুন:žh
Okx

@ ওকএক্স আমি মনে করি না এটি কাজ করবে, এটি কেবলমাত্র একটি স্ট্রিংস নয় '0123456789', 1357উদাহরণস্বরূপ আপনার আউটপুট দেওয়ার জন্য একটি বৈধ সংখ্যাও।
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগল্ফার আমার অর্থ প্রতিস্থাপন •7=›ζ•
Okx

@ ওকক্স এটাই আমার কাছে মূলত ছিল তবে এটি কিছু অদ্ভুত জিনিস (?) তৈরি করে। কেন ধারণা নেই, তাই আমি এটি দিয়ে শেষ করেছি, যা ধারাবাহিকভাবে কাজ করে।
ম্যাজিক অক্টোপাস উরন

@ MagicOctopusUrn আপনি শুরুতে 0 টি অপসারণের চেষ্টা করছেন না কেন?
Okx

4

গণিত, 79 বাইট

Select[Range@123456789,Min[s=Union@Differences@IntegerDigits@#]>0&&Tr[1^s]==1&]

এটি অনলাইন চেষ্টা করুন! একটি কম সংখ্যার সাথে কারণ এটি খুব ধীর

এখানে অন্য পদ্ধতি যা 1 সিসিতে সমস্ত সংখ্যা তৈরি করে

গণিত, 123 বাইট tes

Union[FromDigits/@(F=Flatten)[Table[Partition[#,i,1],{i,2,9}]&/@Select[F[Table[Range[j,9,k],{j,9},{k,9}],1],Tr[1^#]>1&],2]]   


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


4

হুশ , 14 13 বাইট

ÖifȯεuẊ≠Ṗ…"19

নিউডলাইন-বিভাজিত নম্বরগুলি STDOUT এ মুদ্রণ করে। এটি অনলাইন চেষ্টা করুন!

এইচপিউইজের অনুপ্রেরণার কারণে -১ বাইট।

ব্যাখ্যা

ÖifȯεuẊ≠Ṗ…"19
         …"19  The string "19" rangified: "123456789"
        Ṗ      Powerset: ["","1","2","12","3",...,"123456789"]
  fȯ           Filter by function: (input is sublist, say "2469")
      Ẋ≠        Consecutive codepoint differences: [2,2,3]
     u          Remove duplicates: [2,3]
    ε           Is it a one-element list? No, so "2469" is dropped.
Öi             Sort the result by integer value, implicitly print separated by newlines.


3

এপিএল (ডায়ালগ) , 37 28 বাইট

x/⍨{1=≢∪2-/⍎¨⍕⍵}¨x11+⍳1E9

এটি অনলাইন চেষ্টা করুন! (সংক্ষিপ্ত পরিসীমা সহ, সময় শেষ হওয়ার কারণে)

কিভাবে?

x←11+⍳123456789- 11, 12... 1e9মধ্যেx

¨ - প্রতিটির জন্য

    ⍎¨⍕⍵ - সংখ্যায় বিভক্ত

    2-/ - পার্থক্য তালিকা পান

     - অনন্য উপাদান পান

    1=≢ - দৈর্ঘ্য == 1?

x/⍨ - এটি তৈরি রেঞ্জের মাস্ক হিসাবে ব্যবহার করুন

- এবং কলামিফাই করুন



3

ব্যাচ, 210 200 বাইট

কোনও অপ্টিমাইজেশন নেই, তাই খুব ধীর - 12345 অবধি প্রায় 25 সেকেন্ড সময় নেয়, সুতরাং সম্পূর্ণ আউটপুটের জন্য আপনাকে প্রায় 3 দিন অপেক্ষা করতে হবে।

@set z=@set/a
%z%c=12
:a
@echo %c%
:c
%z%c+=1&if %c%==123456790 exit/b
%z%n=c
%z%d=n%%10-n/10%%10
@if %d% leq 0 goto c
:d
%z%n=n/10
@if %n% leq 9 goto a
%z%e=n%%10-n/10%%10
@if %e%==%d% goto d
@goto c

3

জাভা 8, 169 168 145 বাইট

v->{byte[]a;for(int i=9,d,l;++i<1e9;System.out.print(l<1?i+"\n":""))for(a=(i+"").getBytes(),d=0,l=a.length;--l>0&&d*(d^(d=a[l]-a[l-1]))<1&d>0;);}

@ জ্যাকোবিনস্কি সি উত্তর বন্দর (আমি এটি কিছুটা গল্ফ করার পরে)।
-23 বাইট @ নেভায়ে ধন্যবাদ

ব্যাখ্যা:

এখানে চেষ্টা করুন। (এটি প্রান্তের কাছাকাছি কিছুটা ধীরে ধীরে, তাই টিআইওতে চূড়ান্ত সংখ্যাটি প্রিন্ট করে না It এটি স্থানীয়ভাবে প্রায় 20 সেকেন্ডে চূড়ান্ত সংখ্যাটি প্রিন্ট করে))

v->{                         // Method with empty unused parameter and no return-type
  byte[]a;                   //  Byte-array
  for(int i=9,               //  Index integer, starting at 9
          d,                 //  Difference-integer
          l;                 //  Length integer
      ++i<1e9;               //  Loop (1) from 10 to 1,000,000,000 (exclusive)
      System.out.print(      //    After every iteration: print:
        l<1?                 //     If `l` is 0:
         i+"\n"              //      The current integer + a new-line
        :                    //     Else:
         ""))                //      Nothing
    for(a=(i+"").getBytes(), //   Convert the current item as String to a byte-array
        d=0,                 //   Reset the previous integer to 0
        l=a.length;          //   Set `l` to the length of the byte-array
        --l>0                //   Inner loop (2) from `l-1` down to 0 (exclusive)
        &&d*(d^(d=a[l]-a[l-1]))<1
                             //    As long as the previous difference is either 0
                             //    or the current diff is not equal to the previous diff
        &d>0;                //    and the current diff is larger than 0
    );                       //   End of inner loop (2)
                             //  End of loop (1) (implicit / single-line body)
}                            // End of method

1
145 বাইট:v->{byte[]a;for(int i=9,p,l;++i<1e9;System.out.print(l<1?i+"\n":""))for(a=(i+"").getBytes(),p=0,l=a.length;--l>0&&p*(p^(p=a[l]-a[l-1]))<1&p>0;);}
নেভায়ে

@ নেভায়ে আমি জানতাম যে এটি breakকোনওভাবে ফেলে দেওয়া এবং ফোর -লুপ চেকটিতে যুক্ত করতে সক্ষম হওয়া উচিত , তবে এটি আমি নিজের সাথে প্রকাশ করতে পারতাম না। ;) ধন্যবাদ!
কেভিন ক্রুইজসেন

2

আমার কাছে যা ছিল তা ছাড়া 12žhŸʒS¥D0›PsË&, আমি স্থানীয়ভাবে এটি চালাতে পারি না। আপনি কি বাস্তবে এটি কার্যকর করতে পারেন?
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস ইউর্ন যদি আমি আগে সংখ্যাগুলি প্রতিস্থাপনের চেষ্টা করি তবে Ÿএটি ভাল কাজ করে
Okx

আমি আমার অন্য একজনকে নাম্বার না বদলে স্থানীয়ভাবে চালানোর জন্য পেয়েছি তবে এটি এখনও আমি পারছি না। আইডিক কেন, আমি সত্যিই এর চেয়ে আলাদা কী তা জানতে চাই।
ম্যাজিক অক্টোপাস উরন

2

পাইথন 2 , 103 97 95 বাইট

-২ বাইটস @ জোনাথনফ্রেচকে ধন্যবাদ

n=11
while n<1e9:
 n+=1;Q=`n`[1:]
 if`n`<Q>1==len({int(a)-int(b)for a,b in zip(`n`,Q)}):print n

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


108 বাইট বা একটি 106 বাইট যা স্মৃতি থেকে বেরিয়ে যায় তবে কম সংখ্যার সাথে পরীক্ষা করা যেতে পারে
রড

95 বাইট ; পুনরাবৃত্তি জন্য একটি পরিবর্তনশীল ব্যবহার `n`[1:]
জোনাথন ফ্রেচ


2

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 105 বাইট

document.write(`<pre>`+(

_=>[for(x of s=`123456789`)for(y of s)for(z of s)if(x*z<10-y)s.replace(/./g,c=>c<y|(c-y)%z|c-y>x*z?``:c)]

)().join`\n`+`</pre>`);

2 থেকে 10 পর্যন্ত দৈর্ঘ্যের উপর লুপ (এক্স শেষ অক্ষরের সূচক এবং সুতরাং দৈর্ঘ্যের তুলনায় 1 কম), 1 থেকে 9 পর্যন্ত অঙ্কগুলি শুরু করে এবং 1 থেকে 9 পদক্ষেপে, তারপরে শেষ অঙ্কের ফিল্টারগুলি 10 এর চেয়ে কম হবে এবং যদি সুতরাং অঙ্কের স্ট্রিং থেকে অঙ্কগুলি ফিল্টার করে ফলাফল উত্পন্ন করে।


"রান কোড স্নিপেট" একটি ত্রুটি বাড়ে:Uncaught SyntaxError: Unexpected token for
schnaader

2
@schnaader আপনি কি এটি ফায়ারফক্স 30+ এ চালাচ্ছেন? এই উত্তরটিতে অ-স্ট্যান্ডার্ড অ্যারে উপলব্ধি সিনট্যাক্স ব্যবহার করা হয় যা কেবল ফায়ারফক্স সমর্থন করে।
বিরজোলাক্সিউ

আহ, মন্তব্যটি দেখেনি, তার জন্য দুঃখিত। ক্রোমে চলছিল, ফায়ারফক্সে দুর্দান্ত চলছে
schnaader

1

Pyth , 21 বাইট

ডেনিসের বুদ্ধিমান পদ্ধতির পোর্ট ।

jjLkf!t{.+Tsm.cS9dtS9

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

পাইথ , 23 বাইট

j.f&!tl{K.+jZT*F>R0K77T

এটি অনলাইনে দোভাষীর বাইরে চলে গেছে, তবে পর্যাপ্ত সময় এবং মেমরি দেওয়া থাকলে তা কাজ করে।

কম সংখ্যার সাথে অনলাইনে চেষ্টা করে দেখুন



1

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

নীলের উত্তরের মতো প্রায় ছোট নয় , তবে আমি ভেবেছিলাম এটি পোস্ট করা এখনও উপযুক্ত।

'123456789'যেখানে সমস্ত মিল নেই এমন মিলগুলি প্রবেশের ছাঁটাই করে এবং উপসর্গযুক্ত 0, ফলাফলগুলি সংখ্যার ক্রমে বাছাই করে এবং কেবল relevant 77 টি প্রাসঙ্গিক রেখে একটি পাওয়ারসেট তৈরি করে কাজ করে ।

_=>[...'123456789'].reduce((a,x)=>[...a,...a.map(y=>y[1]-y[0]+(y.slice(-1)-x)?'0':y+x)],['']).sort((a,b)=>a-b).slice(-77)

ডেমো


1

সি (জিসিসি) , 106 বাইট

main(i,j,k,l){for(i=1;i<9;i++)for(j=8;j;j--)for(k=0;k<j/i;puts(""))for(l=0*k++;l<=i;)putchar(57-j+k*l++);}

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

অবারিত (পূর্বনির্ধারিত) সংস্করণ:

int main() {
  int length, start_with, max_step, step, nth;
  for (length = 2; length <= 9; length++) {
    for (start_with = 1; start_with < 9; start_with++) {
      max_step = (9 - start_with) / (length - 1);
      for (step = 1; step <= max_step; step++) {
        for (nth = 0; nth < length; nth++) {
          putchar('0' + start_with + step * nth);
        }
        puts("");
      }
    }
  }
  return 0;
}

1

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

সমস্ত সম্ভাব্য সংখ্যা উত্পন্ন করে কাজ করে: 8 থেকে 1 (ভেরিয়েবল i) থেকে প্রতিটি বর্ধনের মাধ্যমে লুপ, 8 থেকে 1 (ভেরিয়েবল ) থেকে প্রতিটি শুরু অঙ্কের মধ্য jদিয়ে লুপ, jএবং 10-i(ভেরিয়েবল k) এর মধ্যে প্রতিটি অঙ্কের মধ্য দিয়ে লুপ করে এবং বর্তমানকে tসংযোজন করে একটি স্ট্রিং উত্পন্ন করে । প্রতিটি পদক্ষেপে আউটপুট অ্যারে যুক্ত করা হয়।ktt

(o=[],i=9)=>{while(--i){j=9;while(k=--j){t=""+k;while(k<10-i)o.push(t+=k+=i)}}return o.sort((a,b)=>a-b)}

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

f=

(o=[],i=9)=>{while(--i){j=9;while(k=--j){t=""+k;while(k<10-i)o.push(t+=k+=i)}}return o.sort((a,b)=>a-b)}

;
console.log(f().join("\n"))




0

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

সামান্য যাদু সহ একটি সোজা-সামনের পদ্ধতির।

Array(123456790).fill().map((x,i)=>(''+i).split('')).map((a,i,d) => {d=a[1]-a[0];d>0&a.every((n,j)=>j<1||n-a[j-1]==d)?console.log(a.join('')):0})

স্নিপেট চালানো প্রচুর স্মৃতি গ্রাস করবে ...


0

পিএইচপি, 85 84 বাইট

for(;++$d<9||++$a<9*$d=1;sort($r))for($x=$y=$a+1;10>$y+=$d;)$r[]=$x.=$y;print_r($r);

অনলাইনে এটিকে পরখ করে

বাছাইয়ের ব্যয় 17 বাইট এই সংস্করণটি ফলাফলগুলি পৃথকভাবে প্রিন্ট করে:

while(++$d<9||++$a<9*$d=1)for($x=$y=$a+1;10>$y+=$d;)echo"
",$x.=$y;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.