Nhảy số


12

Số nhảy được định nghĩa là số dương n mà tất cả các cặp số thập phân liên tiếp khác nhau bằng 1. Ngoài ra, tất cả các số có một chữ số được coi là số nhảy. ví dụ. 3, 45676, 212 là số nhảy nhưng 414 và 13 thì không. Sự khác biệt giữa 9 và 0 không được coi là 1

Thử thách Tạo một chương trình tạo ra một trong các kết quả sau:

  • Cho một đầu nra đầu vào các nsố nhảy đầu tiên .
  • Cho một đầu nra đầu vào thuật ngữ nthứ của chuỗi.

Ghi chú

  • Mọi định dạng I / O hợp lệ đều được cho phép
  • 1-index hoặc 0-index được cho phép (vui lòng ghi rõ)

Dưới đây là một số con số nhảy:

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, ...

Đây cũng là A033075


Đây là 0 hay 1 được lập chỉ mục?
Taylor Scott

1
@TaylorScott Trình tự chỉ bao gồm các số dương. Nếu bạn có nghĩa là đầu vào nthì nó là tùy thuộc vào bạn.
Luis felipe De jesus Munoz

Tôi đoán "Bất kỳ định dạng I / O hợp lệ nào đều được phép" bao gồm xuất các số dưới dạng danh sách các chữ số thập phân, nhưng chỉ muốn xác nhận -?
Jonathan Allan

Có @Jonathan ALLan
Luis felipe De jesus Munoz

Câu trả lời:



6

Thạch , 8 byte

1DI*`ƑƊ#

Một chương trình đầy đủ chấp nhận một số nguyên, ntừ STDIN sẽ in danh sách các nsố nhảy dương đầu tiên .

Hãy thử trực tuyến!

Làm sao?

Sự khác biệt gia tăng chấp nhận được giữa các chữ số là 1-1trong khi những người khác [-9,-2]+[2,9]thì không. Điều này xếp hàng với các số nguyên bất biến khi được nâng lên thành chính chúng. tức là xx= =x kể từ:

00= =1
11= =1
22= =4
-1-1= =-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 (di sản) , 5 byte

Đầu vào là 1 chỉ mục.

Mã số:

µN¥ÄP

Sử dụng mã hóa 05AB1E . Hãy thử trực tuyến!


Giải trình

µ          # 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)

Công cụ phù hợp cho công việc.
lirtosiast

5

Python 2 , 79 75 byte

-4 byte bởi xnor

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

Hãy thử trực tuyến!

Bắt nguồn từ câu trả lời của Chas Brown . Hàm trợ giúp trả về cho dù là số nhảy. Nếu hai chữ số cuối của một số có chênh lệch tuyệt đối 1, thì sẽ là 1 hoặc 10, do đó sẽ là 1.g(i)inn%100%11n%100%11%9


Thủ thuật hay với %11. Bạn có thể làm f=lambda n,i=1:n and-~f(n-g(i),i+1)nếu bạn chuyển sang lập chỉ mục một.
xnor

4

APL (Dyalog Unicode) , 36 byte SBCS

1 chỉ mục. Cảm ơn dzaima vì sự giúp đỡ của họ với việc chơi golf này.

Chỉnh sửa: -15 byte từ ngn.

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

Hãy thử trực tuyến!

Giải trình

Chúng tôi có f⍣g⍣h, ở đâu, như là một nhà điều hành, APL dịch điều này sang (f⍣g)⍣h. (Ngược lại với các chức năng 2×3+1được dịch 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

nó ngắn hơn nhiều thay vì đệ quy: {1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⍵⊢0}hoặc1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0
ngn

"⍣ là một toán hạng" - đó là một "toán tử" (tôi mắc lỗi này trong trò chuyện và đã sửa nó, nhưng có vẻ như bạn đã chọn phiên bản ban đầu. Xin lỗi)
ngn


3

Japt, 14 byte

Xuất ra nthuật ngữ thứ nhất, 1 chỉ mục.

_ì äa dÉ ªU´}f

Thử nó

(Tôi biết, tôi biết, tôi nên nghỉ ngơi nhưng tôi đang rút tiền chơi gôn!)


Haha, có thể đi học một ngôn ngữ chơi gôn mới để chữa bệnh rút tiền của bạn. : P
Quintec

3

Python 2 , 88 87 byte

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)

Hãy thử trực tuyến!

Trả về số nhảy có chỉ số 0 (nghĩa là f (0) => 1, v.v.).


@lirtosiast: Không sao, xin hãy đóng góp câu trả lời của bạn cho tổ chức từ thiện yêu thích của bạn :). Nó đủ khác nhau để xứng đáng với một phản ứng riêng biệt (cũng như phù hợp với ngôn ngữ chéo).
Chas Brown

3

Haskell , 69 byte

  • Cảm ơn Joseph Sible đã thực thi các quy tắc thách thức và lưu ba byte.
  • Lưu hai byte nhờ nimi .
(filter(all((==1).abs).(zipWith(-)<*>tail).map fromEnum.show)[1..]!!)

Hãy thử trực tuyến!


1
Điều này xuất hiện để trả lời câu hỏi "đây có phải là một số nhảy?" cho một số đầu vào nhất định, đó không phải là những gì thách thức yêu cầu.
Joseph Sible-Phục hồi Monica

@JosephSible Bạn đúng. Cảm ơn bạn đã lưu ý.
Jonathan Frech

Ngoài ra, bây giờ đã được sửa, bạn có thể grút ngắn 3 byte bằng cách viết lại thành không có điểm, sau đó sử dụng <*>:g=all((==1).abs).(zipWith(-)<*>tail).map(read.pure).show
Joseph Sible-Rebstate Monica

@JosephSible Cảm ơn bạn.
Jonathan Frech

@nimi Xong. Cảm ơn bạn.
Jonathan Frech



1

Swift, 228 byte

func j(n:Int){
var r:[Int]=[]
for x in 0...n{
if x<=10{r.append(x)}else{
let t=String(x).compactMap{Int(String($0))}
var b=true
for i in 1...t.count-1{if abs(t[i-1]-t[i]) != 1{b=false}}
if b{r.append(x)}
}
}
print(r)
}
j(n:1000)

Hãy thử trực tuyến!


1

Python 3 , 122 121 byte

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

Hãy thử trực tuyến!

-1 byte bằng cách thay đổi ftừ in, sang chức năng tạo.

glà một hàm trợ giúp đệ quy xác định xem một chuỗi scó phải là "chuỗi nhảy" hay không (điều này hoạt động do các mã ký tự từ 0 đến 9 theo thứ tự và liền kề nhau).

flà một hàm tạo có ncác nsố nhảy đầu tiên .


1

R , 85 byte

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

Hãy thử trực tuyến!

Nghi ngờ điều này có thể được đánh golf nhiều hơn. Đọc số sử dụng scan()và xuất ra số nhảy thích hợp.





Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.