जंपिंग नंबर


12

एक जंपिंग नंबर को एक पॉजिटिव नंबर n के रूप में परिभाषित किया जाता है, जो लगातार दशमलव अंकों की सभी जोड़ियों में 1 से भिन्न होता है। इसके अलावा, सभी एकल अंकों की संख्या को जंपिंग नंबर माना जाता है। जैसे। 3, 45676, 212 जंपिंग नंबर हैं लेकिन 414 और 13 नहीं हैं। 9 और 0 के बीच का अंतर 1 नहीं माना जाता है

चुनौती निम्नलिखित परिणामों में से एक का उत्पादन करने वाला कार्यक्रम बनाएँ:

  • एक इनपुट nआउटपुट को देखते हुए पहला nजंपिंग नंबर।
  • एक इनपुट nआउटपुट को देखते हुए अनुक्रम का nवें पद।

ध्यान दें

  • किसी भी मान्य I / O प्रारूप की अनुमति है
  • 1-index या 0-index की अनुमति है (कृपया निर्दिष्ट करें)

यहां कुछ जंपिंग नंबर दिए गए हैं:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98, 101, 121, 123, 210, 212, 232, 234, 321, 323, 343, 345, 432, 434, 454, 456, 543, 545, 565, 567, 654, 656, 676, 678, 765, 767, 787, 789, 876, ...

यह भी A033075 है


क्या यह 0 या 1 अनुक्रमित है?
टेलर स्कॉट

1
@TaylorScott अनुक्रम में केवल सकारात्मक संख्याएँ हैं। अगर आपको इनपुट से मतलब है nतो यह आपके ऊपर है।
लुइस फेलिप डी जेउस मुनोज

मैं अनुमान लगा रहा हूं "किसी भी मान्य I / O प्रारूप की अनुमति है" में दशमलव अंकों की सूची के रूप में संख्याओं को आउटपुट करना शामिल है, लेकिन बस पुष्टि करना चाहता था -?
जोनाथन एलन

हां @ जोनाथनअलन
लुइस फेलिप डी जीसस मुनोज

जवाबों:



6

जेली , 8 बाइट्स

1DI*`ƑƊ#

nSTDIN से पूर्णांक को स्वीकार करने वाला एक पूर्ण कार्यक्रम, जो पहले nसकारात्मक जंपिंग नंबरों की एक सूची प्रिंट करता है ।

इसे ऑनलाइन आज़माएं!

कैसे?

अंकों के बीच स्वीकार्य वृद्धिशील अंतर 1और -1जबकि अन्य [-9,-2]+[2,9]नहीं हैं। यह पूर्णांकों के साथ है, जो स्वयं के लिए उठाए जाने पर अपरिवर्तनीय हैं। अर्थात एक्सएक्स=एक्स चूंकि:

00=1
11=1
22=4
11=1
-2-2=-14

1DI*`ƑƊ# - Main Link: no arguments (accepts a line of input from STDIN)
       # - count up keeping the first (input) n matches...
1        - ...start with n equal to: 1
      Ɗ  - ...match function: last three links as a monad:  e.g. 245       777      7656
 D       -   convert to a list of decimal digits                 [2,4,5]   [7,7,7]  [7,6,5,6]
  I      -   incremental differences                             [2,1]     [0,0]    [-1,-1,1]
     Ƒ   -   invariant under?:
    `    -     using left argument as both inputs of:
   *     -       exponentiation (vectorises)                     [4,1]     [1,1]    [-1,-1,1]
         -                                            --so we:   discard   discard  keep
         - implicitly print the list of collected values of n

6

05AB1E (विरासत) , 5 बाइट्स

इनपुट 1-अनुक्रमित है।

कोड:

µN¥ÄP

05AB1E एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!


व्याख्या

µ          # Get the nth number, starting from 0, such that...
   Ä       #   The absolute values
 N¥        #   Of the delta's of N
    P      #   Are all 1 (product function, basically acts as a reduce by AND)

नौकरी के लिए सही उपकरण।
lirtosiast

5

पायथन 2 , 79 75 बाइट्स

Xnor द्वारा -4 बाइट्स

f=lambda n,i=1:n and-~f(n-g(i),i+1)
g=lambda i:i<10or i%100%11%9==g(i/10)>0

इसे ऑनलाइन आज़माएं!

चेस ब्राउन के जवाब से व्युत्पन्न । हेल्पर फ़ंक्शन g(i)देता है कि क्या iएक जंपिंग नंबर है। Iff किसी संख्या के अंतिम दो अंकों में nपूर्ण अंतर 1 है, तो n%100%11या तो 1 या 10 n%100%11%9होगा , इसलिए 1 होगा।


के साथ अच्छी चाल %11f=lambda n,i=1:n and-~f(n-g(i),i+1)यदि आप एक-अनुक्रमण पर स्विच करते हैं, तो आप कर सकते हैं ।
xnor

4

एपीएल (Dyalog यूनिकोड) , 36 बाइट्स SBCS

1 अनुक्रमित। यह गोल्फिंग के साथ उनकी मदद के लिए dzaima के लिए धन्यवाद।

संपादित करें: -15 बाइट ngn से।

1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0

इसे ऑनलाइन आज़माएं!

व्याख्या

हमारे पास f⍣g⍣h, जहां, एक ऑपरेटर के रूप में, एपीएल इसका अनुवाद करता है (f⍣g)⍣h। (जहाँ 2×3+1अनुवाद किया जाता है, कार्यों के विपरीत 2×(3+1))

1+⍣{...}⍣⎕⊢0  This is equivalent to 
               "do {check} we find the n-th integer that fulfils {check}"

1+⍣{...}   0  Start with 0 and keep adding 1s until the dfn 
               (our jumping number check in {}) returns true.
        ⍣⎕    We take input n (⎕) and repeat (⍣) the above n times 
               to get the n-th jumping number.

{∧/1=|2-/⍎¨⍕⍺}  The dfn that checks for jumping numbers.

         ⍎¨⍕⍺   We take the base-10 digits of our left argument
                 by evaluating each character of the string representation of ⍺.
     |2-/        Then we take the absolute value of the pairwise differences of the digits
 ∧/1=            and check if all of the differences are equal to 1.

10⊥⍣¯1⊢⍺->⍎¨⍕⍺
ngn

यह पुनरावृत्ति के बजाय बहुत कम है : {1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⍵⊢0}या1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0
NGN

"" एक ओपेरा है "- यह एक" ऑपरेटर "है (मैं चैट में यह गलती करता हूं और इसे ठीक कर देता हूं, लेकिन ऐसा लगता है कि आपने प्रारंभिक संस्करण उठाया है। क्षमा करें)
nn


3

जाप, 14 बाइट्स

पहले आउटपुट देता है n वें कार्यकाल को , 1-अनुक्रमित।

_ì äa dÉ ªU´}f

कोशिश करो

(मुझे पता है, मुझे पता है, मैं एक ब्रेक लेने वाला हूं लेकिन मैं गोल्फ में वापसी कर रहा हूं!)


Haha, शायद अपनी वापसी को ठीक करने के लिए एक नई गोल्फ भाषा सीखें। : पी
क्विंटेक

3

पायथन 2 , 88 87 बाइट्स

f=lambda n,i=2:n and f(n-g(i),i+1)or~-i
g=lambda i:i<10or abs(i/10%10-i%10)==1==g(i/10)

इसे ऑनलाइन आज़माएं!

0-अनुक्रमित जंपिंग नंबर (यानी, f (0) => 1, आदि) लौटाता है।


@lirtosiast: यह ठीक है, कृपया अपने पसंदीदा दान के लिए अपना उत्तर दान करें :)। यह एक अलग प्रतिक्रिया (साथ ही क्रॉस-भाषा उपयुक्त होने के लिए) योग्यता के लिए पर्याप्त रूप से भिन्न है।
चास ब्राउन

3

हास्केल , 69 बाइट्स

  • चुनौती नियमों को लागू करने और तीन बाइट्स को बचाने के लिए यूसुफ सेबल को धन्यवाद ।
  • निम्मी को दो बाइट्स दिए गए ।
(filter(all((==1).abs).(zipWith(-)<*>tail).map fromEnum.show)[1..]!!)

इसे ऑनलाइन आज़माएं!


1
यह प्रश्न का उत्तर देने के लिए प्रतीत होता है "क्या यह एक कूदने की संख्या है?" किसी दिए गए इनपुट नंबर के लिए, जो चुनौती के लिए नहीं पूछा गया है।
जोसेफ सिबल-रिनेटेट मोनिका

@JosephSible आप सही हैं। ध्यान देने के लिए धन्यवाद।
जोनाथन फ्रीच

इसके अलावा, अब जब कि यह तय हो गया है, तो आप gइसे पॉइंटफ्री होने के लिए फिर से लिखकर 3 बाइट्स छोटे कर सकते हैं , फिर उपयोग कर सकते हैं <*>:g=all((==1).abs).(zipWith(-)<*>tail).map(read.pure).show
जोसेफ सिबल-

@JosephSible धन्यवाद।
जोनाथन फ्रैच

@ निम्मी ने किया। धन्यवाद।
जोनाथन फ्रीच




1

पायथन 3 , 122 121 बाइट्स

g=lambda s:len(s)==1or 1==abs(ord(s[0])-ord(s[1]))and g(s[1:])
def f(n,i=1):
	while n:
		if g(str(i)):n-=1;yield i
		i+=1

इसे ऑनलाइन आज़माएं!

-1 बाइट fप्रिंटिंग से बदलकर , एक जनरेटर फंक्शन में।

gएक पुनरावर्ती सहायक कार्य है जो यह निर्धारित करता है कि क्या एक स्ट्रिंग s"जंपिंग स्ट्रिंग" है (यह 0 से 9 के लिए वर्ण कोड क्रम और सन्निहित हैं)।

fएक जनरेटर फ़ंक्शन है जो nपहले nकूदने वाली संख्या को लेता है और पैदावार देता है ।


1

आर , 85 बाइट्स

i=scan();j=0;while(i)if((j=j+1)<10|all(abs(diff(j%/%10^(0:log10(j))%%10))==1))i=i-1;j

इसे ऑनलाइन आज़माएं!

संदेह है कि इसे और अधिक बढ़ाया जा सकता है। scan()उचित जंपिंग नंबर का उपयोग करके संख्या पढ़ता है और आउटपुट करता है।





हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.