Hai chuỗi đan xen


9

Trong câu hỏi này, tôi đã định nghĩa một hàm "chuỗi" là một hàm:

  • là một hoán vị, có 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ị.

  • và cho phép bất kỳ giá trị nào có thể được lấy từ bất kỳ giá trị 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ó.

Có rất nhiều chức năng thực hiện điều này và một số trong số chúng khá đơn giản (xem câu trả lời cho câu hỏi đó). Bây giờ chúng ta sẽ định nghĩa một lớp hàm riêng biệt mà tôi sẽ gọi các hàm "đan xen". Một chức năng đan xen là một chức năng trên một tập hợp A , có hai phân vùng vô hạn một 0một 1 như vậy mà chức năng là một hàm chuỗi trên cả một 0một 1 .

Điều này có nghĩa rằng không có giá trị trong một 0 có thể ánh xạ tới một giá trị trong một 1 theo chức năng hoặc ngược lại.

Bài tập

Nhiệm vụ của bạn là viết một mã thực hiện hoặc định nghĩa một hàm đan xen trên các số nguyên dương. Chức năng của bạn có thể là bất cứ điều gì miễn là nó thỏa mãn các tiêu chí để được đan xen. Bạn nên bao gồm một lời giải thích về lý do tại sao chức năng của bạn được đan xen trong câu trả lời.

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


@flawr Cảm ơn! Tôi đang tìm từ đó nhưng tôi không thể nghĩ ra được.
Ad Hoc Garf Hunter

Tôi nghĩ rằng đây có thể được coi là một bản sao của thử thách cuối cùng mà bạn đã liên kết, vì bạn chỉ cần thực hiện một phép biến đổi bổ sung, tức là liệt kê tất cả các số chẵn và tất cả các số lẻ một cách riêng biệt. Tôi không nghĩ bất kỳ câu trả lời nào bạn nhận được ở đây sẽ cung cấp bất cứ điều gì mới đáng kể.
flawr

@flawr Bạn có thể làm điều đó, nhưng nó sẽ không phải là cách tốt nhất. Tôi đã thực hiện một thử nghiệm nhỏ với điều này và có một số cách mới để thực hiện các loại chức năng này.
Ad Hoc Garf Hunter

Câu trả lời:


2

Python, 46 42 37 byte

5 byte được lưu nhờ @notjagan

lambda x:1<x<4and x*2%5or x-(x&2)*4+4

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

Lặp lại số chẵn và số lẻ với các bước 4 và liên kết trên 2 và 3:

=> 22 => 18 => 14 => 10 => 6 => 2 => 4 => 8 => 12 => 16 => 20 => 24 =>
=> 23 => 19 => 15 => 11 => 7 => 3 => 1 => 5 => 9 => 13 => 17 => 21 =>

1

JavaScript, 30 24 byte

a=>(a+=a&2?-4:4)<0?a*a:a

Trình tự:

  1. ... 19 15 11 7 3 1 5 9 13 17 21 ...
  2. ... 18 14 10 6 2 4 8 12 16 20 24 ...

Đoạn mã

f=a=>(a+=a&2?-4:4)<0?a*a:a
console.log('23 19 15 11 7 3 1 5 9 13 17'.split` `.map(a=>f(a|0)).join` `);
console.log('22 18 14 10 6 2 4 8 12 16 20'.split` `.map(a=>f(a|0)).join` `);


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.