সিঁড়ি নম্বর


29

একটি সিঁড়ি সংখ্যাটি ইতিবাচক পূর্ণসংখ্যার x এর মতো যে এর n তম সংখ্যা (একটি সূচককে সর্বনিম্ন উল্লেখযোগ্য অঙ্ক দিয়ে শুরু করা) x% (n + 1) এর সমান । কিছুটা মুখের কথা তাই একটি উদাহরণ তাকান। 7211311 নিন , যদি আমরা 2-8 পরিসীমাতে 7211311 এর মডিউলার অবশিষ্টাংশ গ্রহণ করি তবে আমরা নিম্নলিখিতটি পাই:

7211311 % 2 = 1
7211311 % 3 = 1
7211311 % 4 = 3
7211311 % 5 = 1
7211311 % 6 = 1
7211311 % 7 = 2
7211311 % 8 = 7

এগুলি হল 7211311 এর সংখ্যা ! সুতরাং 7211311 একটি সিঁড়ি নম্বর।

কার্য

লিখন কোড যখন ইনপুট হিসাবে একটি ধনাত্মক সংখ্যা দেওয়া লাগে যে, উইল আউটপুট দুটি স্বতন্ত্র মান এক যদি সংখ্যা হয় একটি সিঁড়ি সংখ্যা এবং অন্যান্য যদি না হয় তাহলে।

এটি একটি প্রতিযোগিতা তাই আপনার উত্স কোডে বাইটের সংখ্যা হ্রাস করা আপনার লক্ষ্য হওয়া উচিত।

পরীক্ষার মামলা

এখানে প্রথম 13 সিঁড়ি নম্বর রয়েছে:

1, 10, 20, 1101, 1121, 11311, 31101, 40210, 340210, 4620020, 5431101, 7211311, 12040210

নয় 0একটি সিঁড়ি নম্বর? উত্তর অনেক মনে হয়।
Okx

3
@ ওএক্সএক্স টাস্কটি হ'ল ধনাত্মক সিঁড়ি সংখ্যাগুলির চেয়ে ধনাত্মক সিঁড়ি সংখ্যাগুলি পৃথক করা, সুতরাং আচরণটি 0 এবং negativeণাত্মক সংখ্যার জন্য অপরিবর্তিত।
পাওলো ইবারম্যান

উত্তর:


10

হাস্কেল, 55 57 বাইট

f m|let n#x=n==0||n`mod`10==m`mod`x&&div n 10#(x+1)=m#2

অন্যান্য হাস্কেল সমাধানের চেয়ে আলাদা পদ্ধতির।

2 বাইট সংরক্ষণের জন্য xnor ধন্যবাদ।


4
আপনি এই টিপটি ভাবটি সংক্ষিপ্ত করতে ব্যবহার করতে পারেন let
xnor

একটি পৃথক, খাটো পদ্ধতির। সাবাশ! +1
qfwfq

9

ব্র্যাচল্যাগ , 25 21 16 14 বাইট

{it+₂;?↔%}ᶠ↔c?

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

প্রথম ব্র্যাচিয়েলগ জমা: ডি সম্ভবত খুব অসম্পূর্ণ ... উত্সাহ এবং ফ্যালালাইজকে উত্সাহ দেওয়ার জন্য এবং 25 থেকে পুরো 14 পর্যন্ত নীচে গল্ফ করতে সহায়তার জন্য ফ্যাটালাইজকে অনেক ধন্যবাদ :) :) :)


7

জাভাস্ক্রিপ্ট, 42 41 39 38 বাইট

-4 বাইটস @ শ্যাগি এবং @ ইটিপি প্রডাকশনগুলিকে ধন্যবাদ

s=>[...s].some(d=>s%i++^d,i=~s.length)

এটি সংখ্যাটিকে স্ট্রিং হিসাবে গ্রহণ করে এবং falseযদি সংখ্যাটি সিঁড়ি নম্বর এবং trueঅন্যথায় ফিরে আসে।

কোড স্নিপেট উদাহরণ:

f=
s=>[...s].some(d=>s%i++^d,i=~s.length)

function update() {
  o.innerText = f(document.getElementById("i").value)
}
<input id="i" type="number">
<button onclick="update()">Test</button>
<p id="o">


2
!আপনার চ্যালেঞ্জটি স্পষ্টভাবে নির্দিষ্ট করে দেয় না যে আপনাকে trueসত্য এবং falseমিথ্যা হিসাবে প্রত্যাবর্তন করতে হবে, কেবল আপনাকে 2 স্বতন্ত্র মানগুলি ফিরিয়ে দিতে হবে বলে আপনি ড্রপ করতে সক্ষম হবেন ।
শেগি

2
এটি খুব ভাল গল্ফড, ভাল সম্পন্ন হয়েছে। আমি মনে করি আপনি iনিজেকে গণনা করলে আপনার আরও দুটি বাইট বের করতে সক্ষম হওয়া উচিত :s=>[...s].some(d=>s%i--^d,i=s.length+1)
ETH প্রোডাকশনগুলি

2
প্রকৃতপক্ষে, ~x == -(x+1)পূর্ণসংখ্যার উপর এবং এই x%-y == x%ys=>[...s].some(d=>s%i++^d,i=~s.length)
ধারণাটি কাজে লাগিয়ে


6

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

সংখ্যা হিসাবে একটি int হিসাবে গ্রহণ করে

x n|s<-show n=reverse s==(rem n.(+1)<$>[1..length s]>>=show)



5

জাপট , 9 7 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়।

¥£%´JÃw

এটা পরীক্ষা করো

  • ETH প্রোডাকশনগুলির সাহায্যে 2 বাইট সংরক্ষণ করা হয়েছে।

ব্যাখ্যা

আমরা স্পষ্টভাবে ইনপুট হিসাবে স্ট্রিং গ্রহণ।

£   Ã

স্ট্রিংয়ের প্রতিটি অক্ষরের উপরে মানচিত্র

´J

Jএটি জাপট ধ্রুবক -1এবং ´এটি প্রতিটি পাসে ( --জাভাস্ক্রিপ্টে) 1 করে হ্রাস করে । সুতরাং, প্রথম পাসে, এটি আমাদের দেয় -2

%

আমরা ইনপুট স্ট্রিংয়ের একটি মডুলো ক্রিয়াকলাপ সম্পাদন করতে সেই মানটি ব্যবহার করি যা প্রক্রিয়াটিতে স্বয়ংক্রিয়ভাবে কোনও পূর্ণসংখ্যায় কাস্ট হয়ে যায়। জাভাস্ক্রিপ্ট x%-yহিসাবে একই ফলাফল দেয় x%y

w

ফলস্বরূপ স্ট্রিং বিপরীত।

¥

নতুন স্ট্রিংটি মূল ইনপুটটির সমান কিনা এবং চূড়ান্তভাবে ফলাফলটি বুলিয়ান হিসাবে আউটপুট দেয় কিনা তা পরীক্ষা করুন।


ভগবন্ অভিশাপ (Y+2আমি মনে করি যে ভালো কমপক্ষে 1 বাইট খাটো হতে পারে ...
ETHproductions

1
... এবং এটি করতে পারে: ¥£%´JÃw:-) ( x%y == x%-y
জেএসে

আহা, হ্যাঁ, সেই গণনাটি 2 বাইটে নামিয়ে আনার জন্য কয়েকটি আলাদা জিনিস চেষ্টা করছিল।
শেগি

4

নিম , 6 বাইট

𝐧ᛖ𝕄𝐫𝐣𝔼

ব্যাখ্যা:

𝐧         Get the length of the input, then create an exclusive range
 ᛖ        Add 2 to each element
  𝕄       Modulus
    𝐫      Reverse
     𝐣     Join
      𝔼   Check for equality

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


@Thehx আপনার সম্পাদনা সম্পর্কে, নিম একটি কাস্টম এনকোডিং ব্যবহার করেছে: এটি
ওপেক্স



2

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

{$_ eq[~] $_ «%«(1+.comb...2)}

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

  • .combইনপুট আর্গুমেন্টের স্ট্রিং উপস্থাপনায় অক্ষরের সংখ্যা $_(এটি হ'ল সংখ্যার সংখ্যা)।
  • 1 + .comb ... 2 হ'ল সংখ্যার ক্রমটি হ'ল সংখ্যার ক্রমটি হ'ল সংখ্যার সংখ্যার চেয়ে 2 তে নীচে।
  • «%«মডুলাস hyperoperator যে বাকি যখন দেয় $_, তার বাম দিকে ইনপুট যুক্তি, তার ডান দিকে ক্রম উপাদান প্রতিটি দ্বারা বিভক্ত করা হয়: $_ % 2, $_ % 3, ...
  • [~]সেই অঙ্কগুলিকে একটি নতুন সংখ্যায় যুক্ত করে, যা স্ট্রিং সমতা অপারেটর ব্যবহার করে ইনপুট আর্গুমেন্টের সাথে তুলনা করা হয় eq


2

Pyth , 13 বাইট

-1 বাইটস Okx ধন্যবাদ ।

qsjk_m%QhdSl`

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

ব্যাখ্যা

             QQ    # Implicit input
          Sl`Q     # Generate [1, len(str(Q))]
     m%Qhd         # For digit d in above range, perform Q % (d + 1)
 sjk_              # Reverse, then convert to number
q             Q    # Test equality with input

বিকল্প সমাধান , এখনও 13 বাইট ( কার্লকাস্টোর ধন্যবাদ )

qi_.e%Q+2k`QT

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


1
আপনি প্রতিস্থাপন করতে পারেন ss`M_সঙ্গে jk_2 সংরক্ষণ করুন বাইট।
Okx

@ ওকএক্স আমার এটির প্রয়োজন কারণ jএকটি স্ট্রিং আউটপুট দেয় যেখানে ইনপুটটির সাথে তুলনা করার জন্য আমার একটি সংখ্যা প্রয়োজন (যা একটি সংখ্যা)।
জিম

1
আরও 13 টি বাইট সমাধান qi_.e%Q+2k`QTহ'ল: মানচিত্রের .eপরিবর্তে গণনা করা মানচিত্র ( ) ব্যবহার করুন। এবং যোগদানের পরিবর্তে তালিকাটি থেকে বাকী অংশগুলিকে বেস 10 ইন্টিতে রূপান্তর করা।
কার্লকাস্টার



1

পাইথন 2 , 66 60 58 57 বাইট

  • @ লাইটি নানকে 6 বাইটের জন্য ধন্যবাদ: অপ্রয়োজনীয় অপসারণ x and(0 এর জন্য পরীক্ষা করা উচিত নয়)
  • ধন্যবাদ 1 আইকর্ন এনচ্যান্টারকে 1 বাইটের জন্য: ব্যবহার enumerate
lambda x:all(a==`x%(i+2)`for i,a in enumerate(`x`[::-1]))

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



ধন্যবাদ. আরে, আমি ঠিক বুঝতে পেরেছিলাম যে আপনি গমের উইজার্ড ..: ডি
অফিসিয়ালাইম

1

পাইথন 3: 63 বাইট

lambda m:all(int(x)==m%(n+2)for n,x in enumerate(str(m)[::-1]))

যদি আমি 'গণনা' করতে চেয়েছি তার সংখ্যা আমি যদি সংক্ষিপ্ত করতে পারি তবে ...

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


হ্যাঁ, এবং আমি ঠিক ঠিক এটি ঠিক বুঝতে পেরেছি যে উত্তরটি @Fficialaimm দিয়েছে ... আমাকে কি সরানো উচিত?
বেন্ডেল করুন

তাদের পাইথন 2 এ রয়েছে এবং আপনি স্বাধীনভাবে এটি নিয়ে এসেছিলেন তাই আমি এটি ছেড়ে চলে যাব।
গম উইজার্ড

2-এ আপনার গণনা শুরু করে এবং যৌক্তিক lambda m:all(m%n==int(x)for n,x in enumerate(str(m)[::-1],2))
পুনঃব্যবস্থাপনা


1

জাভা 8, 156 149 বাইট

interface B{static void main(String[]s){String f="";for(int i=1;i<=s[0].length();)f=new Long(s[0])%++i+f;System.out.print(f.equals(s[0]));}}

অসমাপ্ত:

interface B {
    static void main(String[] s) {
        String f = "";
        for (int i = 1; i <= s[0].length();)
            f = new Long(s[0]) % ++i + f;
        System.out.print(f.equals(s[0]));
    }
}

অনলাইনে চেষ্টা করে দেখুন!

আপডেট:
-7 বাইট : অপ্রয়োজনীয় সরানো হয়েছে {}এবং -9 বাইটInteger.parseInt(...) দ্বারা প্রতিস্থাপন : কেভিন ক্রুইজসেনকে ধন্যবাদ, একগুচ্ছ অকেজো মুছে ফেলেছে , পরিবর্তে এবং পরিবর্তে ব্যবহার করা হচ্ছে । ধন্যবাদ কেভিন!new Integer(...)
()LongIntegerprintprintln


1
ভাল উত্তর, আমার কাছ থেকে +1। বিটিডব্লিউ, গল্ফের জন্য কিছু ছোট জিনিস: new Integerহতে পারে new Long(-3 বাইট); (-2 বাইট) printlnহতে পারে print; এবং আপনি new Long(s[0])%i+f;(-4 বাইট) আশেপাশের প্রথম বন্ধনী অপসারণ করতে পারেন ।
কেভিন ক্রুইজসেন

সত্যিই সুন্দর ! ধন্যবাদ, আমি এটি আপডেট করব!
অ্যালেক্স ফেরেটি



0

কিউ / কেডিবি +, 34 বাইট

সমাধান:

{s~raze($)x mod'2+(|)(!)(#)s:($)x}

উদাহরণ:

q){s~raze($)x mod'2+(|)(!)(#)s:($)x}7211311 / this is a staircase number (true)
1b
q){s~raze($)x mod'2+(|)(!)(#)s:($)x}7211312 / this is not (false)
0b
q)t(&){s~raze($)x mod'2+(|)(!)(#)s:($)x}each t:1 + til 1000000 / up to a million
1 10 20 1101 1121 11311 31101 40210 340210

ব্যাখ্যা:

স্ট্রিংয়ে ইনপুট নম্বরটি কাস্ট করুন, স্ট্রিংয়ের দৈর্ঘ্যের দৈর্ঘ্য থেকে গণনা করুন, সকলকে 2 টি যুক্ত করুন, এটিকে বিপরীত করুন এবং প্রতিটি সংখ্যাটিকে modমূল ইনপুট সহ ফিড দিন । মোডের ফলাফলটিকে একটি স্ট্রিংয়ে কাস্ট করুন এবং তালিকাটি হ্রাস করুন, এটি ইনপুট সংখ্যার স্ট্রিংয়ের সমান কিনা তা পরীক্ষা করুন:

{s~raze string x mod'2 + reverse til count s:string x} / ungolfed solution
{                                                    } / lambda function
                                           s:string x  / convert input to string, save as s
                                     count             / return length of this string
                                 til                   / like python's range() function
                         reverse                       / reverses the list
                     2 +                               / adds two to each element in the list
               x mod'                                  / ' is each both, so feeds x, and each element of the list to modulo function
        string                                         / converts output list to string list ("7";"2";"1"..etc)
   raze                                                / reduce list ("721...")
 s~                                                    / is s equal to this reduced list, returns boolean

নোট:

বেশিরভাগ সমাধানটি 2,3,4..তালিকা তৈরির জন্য , আমার কাছে আরও একটি সমাধান রয়েছে যা কম স্টাফ করে, তবে গল্ফিংয়ের পরে 37 বাইট হয়ে বাতাস বইবে:

{s~x mod'reverse 2 + til count s:("J"$) each string x} / ungolfed
{s~x mod'(|)2+til(#)s:("J"$)each($)x}                  / golfed

0

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

#(=(sort %)(sort(map(fn[i c](char(+(mod(Integer. %)(+ i 2))48)))(range)%)))

ইনপুটটি একটি স্ট্রিং, ব্যবহার করে mapএবং পিছনের পথটি পদ্ধতির %চেয়ে ছোট হয়ে for[i(range(count %))]যায়।


0

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

f x=and$zipWith(==)(reverse$show x)$map(head.show.mod x)[2..]

মডুলির (অসীম) তালিকাটি উল্টানোর পরিবর্তে এটি অবিচ্ছেদ্য এক্সের বিপরীত স্ট্রিং-রেসপন্সেশন দিয়ে জিপ করে তালিকাটি কেটে দেয়, যা এটি পরে সমান উপাদান-ভিত্তিক নিশ্চিত করে।


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