Tạo một chuỗi vô tận


16

Cho phép xác định một lớp các chức năng. Các hàm này sẽ ánh xạ từ các số nguyên dương sang các số nguyên dương và phải đáp ứng các yêu cầu sau:

  • Hàm phải là Bijective, nghĩa là mọi giá trị ánh xạ tới và được ánh xạ tới chính xác một giá trị.

  • Bạn phải có thể nhận được từ bất kỳ số nguyên dương nào đến bất kỳ số nguyên dương nào khác bằng các ứng dụng lặp lại của hàm hoặc nghịch đảo của nó.

Bây giờ, viết một số mã sẽ thực hiện bất kỳ một chức năng nào trong lớp này trên đầu vào của nó.

Đây là một câu hỏi về vì vậy các câu trả lời sẽ được tính theo byte, với ít byte hơn sẽ tốt hơn.


1
Bạn có thể đưa ra một ví dụ không?
Jack

1
@Jack Chắc chắn, hãy xem xét chức năng ánh xạ 1 -> 2, ánh xạ mọi số lẻ khác sang số đó trừ 2 và mọi số chẵn cho số đó cộng với 2.
Thuật sĩ lúa mì

1
Không chắc là tôi hiểu. F (x): = x + 1 có phải là một hàm của lớp này không? Trong trường hợp đó, 1+trong lisp thông thường nên làm thủ thuật ở đây.
MONODA43

2
@ MONODA43 Hàm đó là một mệnh đề khi xem xét tất cả các số nguyên. Nhưng câu hỏi này yêu cầu một mệnh đề trên các số nguyên dương. Đề xuất của bạn sẽ không xuất ra 1 vì không có x dương nào mà x + 1 = 1.
kasperd

1
@Cowsquack Bạn phải có thể nhận được từ bất kỳ số nguyên dương nào đến bất kỳ số nguyên dương nào khác bằng các ứng dụng lặp lại của hàm hoặc nghịch đảo của nó. Bạn không thể nhận được từ 1 đến 2 bằng cách áp dụng danh tính, bất kể bạn lặp lại bao nhiêu lần.
kasperd

Câu trả lời:



6

Python, 22 byte

lambda n:n+n%2*4-2or 1

Các số chẵn đi xuống số chẵn trước đó, các số lẻ đi lên số lẻ tiếp theo và ánh xạ 2 -> 1 kết nối hai số đó.


chờ đã ... vậy 6 có thể kết quả từ 5 hay 8? Điều đó không hợp lệ?
Lemon phá hủy

@DeststallibleLemon Không, chỉ là một số lẻ thay thế ngay cả trong lời giải thích của tôi.
orlp

5

JavaScript (ES6), 20 byte

n=>n>1?n%2?n-2:n+2:2

Bản đồ ... -> 5 -> 3 -> 1 -> 2 -> 4 -> ..., mà tôi nghĩ là hợp lệ. Chỉnh sửa nếu tôi sai ...


9
Tâm trí giống nhau nghĩ tuyệt vời. Tôi đang sử dụng nghịch đảo.
Dennis

@Dennis Heh và tôi vừa nhận ra rằng nghịch đảo ngắn hơn 1 byte:n=>n%2?n+2:n-2||1:2
Sản phẩm ETH

@Dennis Bạn đã được xác nhận là Yoda: o ( Bài đăng trò chuyện của StepHen )
HyperNeutrino

@HyperNeutrino Tuyệt vời, suy nghĩ giống nhau
Pavel


4

Thạch , 6 byte

-*Ḥạo1

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

Làm thế nào nó hoạt động

-*Ḥạo1  Main link. Argument: n

-*      Compute (-1)**n, yielding 1 for even n and -1 for odd n.
  Ḥ     Unhalve; multipliy the result by 2.
   ạ    Compute the absolute difference of the result and n.
    o1  If the difference is 0, yield 1.

13
Chúng ta có thực sự để Dennis thoát khỏi 'unalve' không? Haha.
orlp

2

Python 3, 43 byte

lambda n,a=(1,3,-3,-1):n+a[n%4]if n-2else 1

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

Và ngược lại, cũng 43 byte:

lambda n,a=(-3,-1,1,3):n+a[n%4]if n-1else 2

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

Liên kết TIO sử dụng mã chân trang thử nghiệm của Dennis.

Vì mọi người đang sử dụng một cách làm, tôi quyết định tôi sẽ khác, vì vậy tôi tự tạo ra (mặc dù tôi có lẽ không phải là người đầu tiên phát hiện ra nó). Chức năng này ánh xạ như thế nào ... 10 -> 7 -> 6 -> 3 -> 2 -> 1 -> 4 -> 5 -> 8 -> 9 -> ..., tôi có thể chỉ cho bạn bản vẽ tay tôi đã thực hiện để kiểm tra điều này nếu bạn muốn.

Thuật toán chơi gôn của tôi có thể là có thể chơi được - các mẹo sẽ được đánh giá cao.

Phiên bản Ungolfed: Hãy thử trực tuyến!



0

Toán học, 21 byte

a@1=2;a@b_:=b+2(-1)^b

Di chuyển dọc, không có gì để xem ở đây...


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.