50,000 এর নিচে স্ন্যাকিং সংখ্যার একটি তালিকা তৈরি করুন


24

স্নেকিং নম্বর চ্যালেঞ্জ

আমি আশ্চর্য হয়েছি যে 1 থেকে 50,000 এর মধ্যে কতগুলি স্ন্যাকিং নম্বর রয়েছে?

একটি নোকিয়া সাপ

এই গেমটিতে স্নেকিং নাম্বারগুলি এমন একটি নম্বর যা একটি কী উপরে, নীচে, বামে বা ডানদিকে সরানোর মাধ্যমে একটি traditionalতিহ্যবাহী নম্বরপ্যাডে (নীচে বিন্যাসে) টাইপ করা যায়।

7 8 9
4 5 6
1 2 3
 0

উদাহরণস্বরূপ, আপনি যদি 5 নম্বরটি দিয়ে শুরু করেন তবে আপনি আপনার পরবর্তী বৈধ পদক্ষেপ হিসাবে 4, 6, 8, বা 2 নির্বাচন করতে পারেন - তবে বর্তমান কীটিতে 7, 3, 9 এবং 1 ত্রিভুজ হয়ে যাওয়ার কারণে তারা সীমার বাইরে রয়েছে । সুতরাং, আপনার যদি 5, তারপরে 2 থাকে তবে আপনার পরবর্তী সম্ভাব্য মূল পছন্দগুলি আবার 0, 1, 3 বা 5।

এই কোড গল্ফ অনুশীলনে, আপনাকে 1 এবং 50k এর মধ্যে সমস্ত ধনাত্মক স্নেকিং সংখ্যার একটি তালিকা আউটপুট করতে হবে এবং মানদণ্ডের সাথে মিলিত সমস্ত সংখ্যার চূড়ান্ত গণনা সহ।

বিধি

  1. নম্বরগুলি একটি জিরো দিয়ে শুরু করতে পারে না।
  2. নম্বরগুলি অবশ্যই সম্পূর্ণ ধনাত্মক পূর্ণসংখ্যার হতে হবে।
  3. বাম থেকে ডানে পাঠানো প্রতিটি একটানা সংখ্যা অবশ্যই নম্বরপ্যাডের চারপাশে "সাপ" দিতে হবে।
  4. সাপটি কীগুলির মধ্য দিয়ে তির্যকভাবে ভ্রমণ করতে পারে না
  5. 0 এবং 2 নম্বর দুটি থেকে অ্যাক্সেস করা যায়
  6. নম্বর যুক্ত করা যায় না (যেমন: 22)

বৈধ স্নাপিং নম্বরগুলির উদাহরণ:

12369
45201
1254
10102
1
12
987

অবৈধ সংখ্যার উদাহরণ

1238 - 8 is not connected
0001 - multiple leading 0s
0101 - leading 0
159  - snake cannot travel diagonally
4556 - duplicate 5

সাধারণ কোড গল্ফ অনুসারে, লক্ষ্যটি সর্বনিম্ন বাইট!

আমার গণিত এবং নিয়ম অনুসারে, আপনার তালিকায় আপনার 670 টি বৈধ স্নিংক নম্বর থাকা উচিত, শেষের হিসাবে 670 নিজেই মুদ্রিত হওয়া উচিত।


2
আউটপুট বাছাই করা উচিত? বা এটি কোনও আদেশে অনুমোদিত?
tsh

2
আপনি যখন আমাদের পূর্ণসংখ্যার একটি নির্দিষ্ট এবং সসীম সেট আউটপুট করতে বলছেন, তখন আমি এই তালিকাতে সম্পূর্ণ তালিকা সহ প্রস্তাব করব।
শেগি


4
এটি A215009 এর উপসেট ।
বিগিহসুয়ান

প্রথমে 670 মুদ্রণ করা কি ঠিক হবে ?
ডানা

উত্তর:


14

কে (এনএনজি / কে) , 60 57 বাইট

(x;#x:{*/1=3!5&+/x*x:+1_-':(+0 1,'2*!3 3)@10\x}#1+!50000)

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

!50000এর তালিকা 0..49999

1+ সবার সাথে 1 যুক্ত করুন

{ }# মধ্যে ফাংশন দিয়ে ফিল্টার { }

10\x আর্গুমেন্টের দশমিক সংখ্যা

( )@ সূচক হিসাবে ব্যবহার করুন ...

  • !3 3 তালিকার একজোড়া: (0 0 0 1 1 1 2 2 2;0 1 2 0 1 2 0 1 2)

  • 2* সমস্ত 2 দ্বারা গুণিত করুন

  • 0 1,'0প্রথম তালিকায় এবং 1দ্বিতীয়টিতে প্রিপেন্ড করুন

  • +স্থানান্তর (তালিকার জুড়ি -> জোড়ার তালিকা)। এটি আমাদের প্রায় বাটন কর্ডগুলি দেয়।

-':প্রতিটি জোড়া থেকে পূর্বের জোড়াটি বিয়োগ করুন। 0 0প্রথমটির আগে একটি কাল্পনিক উপাদান হিসাবে ব্যবহার করুন ।

1_ প্রথম ড্রপ

+ TRANSPOSE

x*x:বর্গ (নির্ধারিত xএবং দ্বারা গুণিত x)। xlistsxs এবং ∆ys - এর তালিকাগুলির একটি জুড়ি এখানে

+/ দুটি তালিকা যোগ করুন (উপাদান অনুসারে উপাদান)

5& 5 সঙ্গে মিনিট

3! Mod 3

1= বুলিয়ান তালিকা যেখানে এটি 1 এর সমান

*/ পণ্য (বুলিয়ান "এবং")

(x;#x: )ফলাফলের একটি জোড়া এবং ফলাফলের দৈর্ঘ্য ( #) করুন


9

জেলি ,  24  23 বাইট

5ȷ4µDo1.’d3ZIASĊ’ẸµÐḟṄL

একটি সম্পূর্ণ প্রোগ্রাম যা সমস্ত ফলাফলের তালিকা এবং তারপরে ফলাফলের সংখ্যা প্রিন্ট করে।

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

কিভাবে?

5ȷ4µDo1.’d3ZIASĊ’ẸµÐḟṄL - Main Link: no arguments
5ȷ4                     - 5*10^4 = 50000
   µ              µÐḟ   - filter discard those for which this is truthy:
                        -                  e.g.: 8520        ... or           4559 
    D                   -   decimal digits       [8,5,2,0]                    [4,5,5,9]
      1.                -   literal 1.5
     o                  -   logical OR           [8,5,2,1.5]                  [4,5,5,9]
        ’               -   decrement            [7,4,1,0.5]                  [3,4,4,8]
         d3             -   div-mod by 3         [[2,1],[1,1],[0,1],[0,0.5]]  [[1,0],[1,1],[1,1],[2,2]]
           Z            -   transpose            [[2,1,0,0],[1,1,1,0.5]]      [[1,1,1,2],[0,1,1,2]]
            I           -   deltas               [[-1,-1,0],[0,0,-0.5]]       [[0,0,1],[1,0,1]]
             A          -   absolute value       [[1,1,0],[0,0,0.5]]          [[0,0,1],[1,0,1]]
              S         -   sum (vectorises)     [1,1,0.5]                    [1,0,2]
               Ċ        -   ceiling              [1,1,1]                      [1,0,2]
                ’       -   decrement            [0,0,0]                      [0,-1,1]
                 Ẹ      -   any?                 0 (i.e. keep)                1 (i.e. discard)
                     Ṅ  - print and yield
                      L - length
                        - implicit print

আমি জানতে পারি যে এটি কীভাবে কাজ করে। কোনও সুযোগ আপনি একটি ব্রেকডাউন দিতে পারে?
মাইটবিউলন

1
@ মাইটবিউন পরে করবেন ...
জোনাথন অ্যালান

আমি কৌতূহলী, 1.মূল্যায়ন কিভাবে 1.5?
অজ্ঞতার

আঞ্চলিক অডিওজডটি আক্ষরিক অর্থে একটি অনুপস্থিত অঙ্কের পার্সিংয়ের সময়কালের পরে পাঁচ হিসাবে বিবেচিত হবে। ইন্টারপ্রেটার.পি
জোনাথন অ্যালান


7

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

print[n for n in range(1,50000)if all(`n`[i:i+2]in`0x20b33ec8bc49a10589e76b15`for i in range(4))],670

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

হেক্স নম্বরটি দশমিক 10120214525632365878969854741, যা প্রতিটি অর্ডারের সংখ্যাকে অঙ্ক করে যা একে অপরের সংলগ্ন প্রদর্শিত হতে পারে।


5

জাভাস্ক্রিপ্ট (ভি 8) ,  112 106  104 বাইট

@ নাহুয়েলফৌইলুলকে 2 বাইট সংরক্ষণ করা হয়েছে

একটি সম্পূর্ণ প্রোগ্রাম।

for(n=0;++n<5e4;)[...n+''].every(x=>'6589632145201478'.match(x+p+'|'+p+(p=x)),p='')&&print(n)
print(670)

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

অথবা আমরা যদি বিপরীত ক্রমে সংখ্যাগুলি আউটপুট করতে পারি তবে 96 বাইট :

for(n=5e4;n--;)[...n+''].every(x=>'6589632145201478'.match(x+p+'|'+p+(p=x)),p='')&&print(n||670)

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


শেষ সরিয়ে 336
ফেলতেও

পছন্দ করুন ধন্যবাদ!
আর্নল্ড

1
এছাড়াও 6589632145201478একটি বাইট সংক্ষিপ্ত
নাহুয়েল ফুইলুল

4

স্ট্যাক্স , 37 35 বাইট

ü╞╡~▄ⁿ♪eµïê◙ü╔ï▼ΔJr¥æ≤PH╟♀I♣Δz8─¶Γ╞Ç▓

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

এটি এত সুন্দর এবং সংক্ষিপ্ত ছিল, যতক্ষণ না এটি ছিল।

প্যাকযুক্ত (42 বাইট) এবং ব্যাখ্যা

49999{E2B{{om"#qYY>!(AFI"%A|E2B{{om-C_Qf%p
49999{                                 f      Filter range [1..49999]:
      E2B                                       All adjacent pairs of digits
         {{om                                   Each sorted
             "#qYY>!(AFI"%A|                    Literal 2012365478963258741
                            E2B{{om             Pairs of digits, each sorted
                                   -            Set difference
                                    C           Cancel block execution if any remain
                                     _Q         Print current value
                                        %p    Print length

2012365478963258741 কীপ্যাডকে এনকোড করে। সংলগ্ন অঙ্কের জোড়া দেখুন। সম্ভবত যদি আমি একটি শালীন সংক্ষিপ্ত বিকল্প পেতে পারি যা প্রতিটি জুটির উভয় দিকেই যায় তবে আমি আটটি বাইট কেটে ফেলতে পারি {{om

670 এর পিছনে ছাড়াই, একটি সহজ ফিল্টার যথেষ্ট হবে: f..!পরিবর্তে {..C_Qf%p। এই অনিয়ম সামলানোর আরও ভাল উপায় হতে পারে। উভয় ক্ষেত্রেই, এই ফিল্টার-রেঞ্জের আচরণটি নথিভুক্ত।


ডকুমেন্টেশন ফাঁকগুলি সম্পর্কে দুঃখিত। এফডাব্লুআইডাব্লিউ, এটি পরবর্তী প্রকাশে থাকবে, ১.১..7। আপনি stax.tomtheisen.com এ একটি পূর্বরূপ দেখতে পারেন , তবে এটি একটি গোপন বিষয় তাই কাউকে বলবেন না। ;)
পুনরাবৃত্তি

3

পিএইচপি , 145 বাইট

for(;$i++<5e4;$f&&print$i._)for($f=1,$l=b;''<$d=("$i")[$$i++];$l=$d)$f&=$l>a||strstr([12,240,1053,26,157,2468,359,48,579,68][$l],$d)>'';echo 670;

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

1 থেকে 50,000 পর্যন্ত প্রতিটি সংখ্যার জন্য, বাম থেকে ডানে সেই সংখ্যার প্রতিটি অঙ্ক পরীক্ষা করে দেখুন। সমস্ত অঙ্ক পূর্ববর্তী অঙ্কের বৈধ সংখ্যাগুলির তালিকায় থাকলে, সেই সংখ্যাটি মুদ্রিত হয়। শেষে একটি হার্ড কোডিং 670 প্রিন্ট করে এটি আসলে এটি গণনা করার চেয়ে কম বাইট নেয়।


3

1
আহ, মাত্র 3 বাইটে 50000 সংক্ষেপে স্মার্ট। আমি ব্যবহার করছিলাম ₄50*বা 4°5*যখন আমি আগে চেষ্টা করছিলাম তখন। এবং প্রথমে আমি বিভ্রান্ত হয়েছি কেন আপনি ন্যায়বিচারের €OPপরিবর্তে কেন ছিলেন OPতবে আমি বুঝতে পেরেছিলাম যে একক অঙ্কের সংখ্যাগুলি (এর পরে একটি খালি তালিকা হওয়া üα) এর [] → 0 → 0পরিবর্তে হবে [] → [] → 1। :)
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন আপনি কেন 4°5*পারবেন 5°;? আমি যদিও জাককে আরও পছন্দ করি। এবং হ্যাঁ, একক-অঙ্কের সংখ্যার ক্ষেত্রে এটি একটি ব্যথা।
গ্রিমি

3

পার্ল 5 ( -M5.01), 96 , 92 বাইট

-4 বাইট @ xcali ধন্যবাদ

$r=join"|",map$t++."[^$_]",12,240,1350,26,157,2648,359,48,579,68;map/$r/||say,1..5e4;say 670

Tio



ধন্যবাদ প্রকৃতপক্ষে, অতি জটিল কারণ প্রথম উত্তরটি ইতিবাচক ম্যাচ ছিল
নাহুয়েল ফিউইলুল

3

জাভাস্ক্রিপ্ট (স্পাইডারমনকি) , 179 173 151 129 বাইট

[12,240,1350,26,157,2468,359,48,579,68].map((_,i,l)=>i&&(f=(v,t)=>print(v)|v<5e3&&[...l[t]+''].map(k=>f(v+k,k)))(i,i)),print(670)

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

-২২ বাইট আরনাউল্ডকে ধন্যবাদ -২২ বাইট দানাকে ধন্যবাদ

ব্যাখ্যা:

[12,240,1350,26,157,2468,359,48,579,68] 
// an array where keys are current position and values, the possible destinations
.map((_,i,l)=>                    // loop over it
    i&&(                          // if key is not 0
        f=(v,t)=>                 // create a function
                 print(v)|        // which print the value
                          v<5e3&& // and if the limit is not attained
                                 [...l[t]+''].map(k=>f(v+k,k)) 
                    // recurcively call itself with for each destinations
                                                              )(i,i)),
                    // make the first call with each digit
print(670) // finally print 670

আমরা প্রথমে 670 মুদ্রণ করতে পারলে @ ডানা একটি 123 বাইট সমাধানও দিয়েছে

[21,420,5310,62,751,8642,953,84,975,86].map((_,i,a)=>(f=(v,t)=>print(i?v:640)|i&v<5e3&&[...a[t]+''].map(k=>f(v+k,k)))(i,i))

@ আর্নল্ড ধন্যবাদ আমি এই নিয়মটি ভুলে গেছি
জোনাতজানো



123 যদি 640 প্রথম মুদ্রণ করা যায়।
ডানা


2

স্ট্যাক্স , 28 26 বাইট

Δh┤♣É╦&·é╝n$K»à¶▲v═NÆ;↨m≥8

এটি চালান এবং এটি ডিবাগ করুন

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এমন দেখাচ্ছে।

G               Call to unbalanced trailing '}', then resume here
670P            Print 670
}               Call target
219J            219 squared (47961)
f               Filter 1-based range by the rest of the program; implicitly output
  $2B           Convert to string and get adjacent pairs; e.g. 213 -> ["21", "13"]
  O             Push 1 under list of pairs
  F             Iterate over pairs, using the rest of the program
    o           Order each pair; e.g. "21" -> "12"
    "{<f:[/T8Z" string literal with code points [123 60 102 58 91 47 84 56 90]
    $           concate as string i.e. "12360102589147845690"
    s#          How many times does the current pair appear in the constant string?
    *           Multiply this by running total.  Any zero will cause the result to be zero.

এটি চালান

গোপন সসটি স্ট্রিংতে আক্ষরিক "{<f:[/T8Z"। সমস্ত কোডপয়েন্ট একসাথে জ্যাম করার পরে, আপনি পাবেন 12360102589147845690। এই স্ট্রিংয়ের আরোহণের জোড়গুলি হ'ল বৈধ সাপের চাল।


1
15JJপরিবর্তে 219Jপাশাপাশি কাজ করবে, কিন্তু আমি মনে করি না যে 1 বাইট ধ্রুবক না থাকলে আপনি সেখান থেকে কোনও বাইট গল্ফ করতে পারেন 15
Arnauld

2

হাস্কেল , 118 বাইট

(filter(and.(zipWith elem.tail<*>map f).show)[1..50000],670)
f c=words"12 024 0135 26 157 2468 359 48 579 68"!!read[c]

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

একটি প্রথম পাস; আমি সংক্ষেপে ভাল নই।

s=গণনা করা হয় না, যেহেতু আমরা আসলে ফলাফলের জুড়তে অনুমতি প্রয়োজন হবে না।

Ungolfed কোড


1

কাঠকয়লা , 42 বাইট

≔ΦI…·¹×⁵⁰φ⬤ι№”)¶∧XRτ_ΠGêR⁵m⎇λ”✂ιμ⁺²μ¹θθILθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔ΦI…·¹×⁵⁰φ

থেকে সমেত পরিসীমা প্রক্রিয়া 1থেকে 50,000স্ট্রিং কাস্ট করুন।

⬤ι№”)¶∧XRτ_ΠGêR⁵m⎇λ”✂ιμ⁺²μ¹θ

সংক্ষিপ্ত স্ট্রিংয়ের মধ্যে নেই এমন জোড়া সংখ্যক রয়েছে এমনগুলি ফিল্টার করুন 01478963202125458565236987410

θILθ

অবশিষ্ট অ্যারে এবং তার দৈর্ঘ্য আউটপুট করুন।



1

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

{670,grep {[+&](:36<12HGX91H8VCL3MG0FDVQ>X+>m:ov/../)%2},1..5e4}

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

ব্যাখ্যা

{670,grep {...},1..5e4}  # Meet questionable output requirements

# Actual decision problem

     :36<12HGX91H8VCL3MG0FDVQ>  # Bit field of allowed transitions
                                # encoded in base 36
                                 m:ov/../  # All 2-digit substrings
                              X+>  # Right shift by each substring
                                   # (implicitly converted to an integer)
[+&](                                    )  # Binary and
                                          %2  # Modulo 2

এটি এখনও একটি আফসোস ~>বাস্তবায়িত হয়নি, অন্যথায় আপনি কেবল স্ট্রিং অপারেটরদের সাথে এটি করতে সক্ষম হবেন, বিট ফিল্ডটি স্ট্রিং হয়ে থাকবে
জো কিং

1

পাইথ , 68 65 45 বাইট

l
f.Am}dCtB+J`65874589632012541_PJCtB`TS50000

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

সংশোধিত লুকিংয়ের প্রক্রিয়াটির জন্য অনুপ্রেরণা খুলদ্র্যাসেঠ না'বাড়িয়ার স্ট্যাক্স উত্তর থেকে এসেছিল , তাদের উত্সাহ দিন!


সম্পাদনা 2: পূর্ববর্তী সংস্করণ একগুচ্ছ বাইট সংরক্ষণ করতে পুনর্লিখন:

l
f.Am}ed@c"12 024 0135 26 157 2468 359 48 579 68";shdCtB`TS50000

সম্পাদনা: স্ট্রিং লুকআপস, পূর্ববর্তী সংস্করণ ব্যবহার করে গল্ফড 3 বাইট

l
f.Am}ed@sMMc"12 024 0135 26 157 2468 359 48 579 68";hdCtBjT;S50000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.