两根交织的链


9

这个问题中,我将“链”功能定义为:

  • 是一个排列,意味着每个值都映射到一个值,并被一个值恰好映射到该值。

  • 并允许通过重复应用该函数或其反函数从任何其他值获得任何值。

有很多功能可以做到这一点,其中一些功能非常简单(请参阅该问题的答案)。现在,我们将定义一个单独的函数类,称之为“交织”函数。的交织功能是在一组的功能,具有两个无限分区一个0一个1,使得该函数是在两个链功能一个0一个1

这意味着,在没有值一个0可映射到一个值1的功能或反之亦然下。

任务

您的任务是编写一个在正整数上执行或定义交织函数的代码。只要满足交织的条件,您的功能就可以是任何东西。您应该在答案中包含有关为什么要交织功能的说明。

这是一个 问题,因此答案将以字节计分,字节越少越好。


@flawr谢谢!我一直在寻找那个词,但我没想到。
Ad Hoc Garf Hunter

我认为这可以看作是您所关联的最后一个挑战的重复,因为您只需要进行其他转换即可,即分别枚举所有偶数和奇数。我认为您在这里获得的任何答案都不会提供任何实质性的新内容。
瑕疵

@flawr您可以这样做,但这并不是最好的方法。我对此进行了一些试验,并且有一些新颖的方法可以执行这些类型的功能。
Ad Hoc Garf Hunter

Answers:


2

Python,46 42 37字节

@notjagan节省了5个字节

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

在线尝试!

用4的步长迭代偶数和奇数,并在2和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字节

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

顺序:

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

程式码片段

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` `);


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.