Dos cadenas entrelazadas

9

En esta pregunta, definí una función de "cadena" como una función que:

  • es una permutación, lo que significa que cada valor se asigna y se asigna exactamente por un valor.

  • y permite que cualquier valor se pueda obtener de cualquier otro valor mediante aplicaciones repetidas de la función o su inverso.

Hay muchas funciones que hacen esto y algunas de ellas son bastante simples (vea las respuestas a esa pregunta). Ahora vamos a definir una clase separada de funciones que voy a llamar funciones "entrelazadas". Una función entretejida es una función en un conjunto A , que tiene dos particiones infinitas, un 0 y un 1, de modo que la función es una función de cadena tanto en un 0 como en un 1 .

Esto significa que ningún valor en un 0 puede correlacionarse con un valor en un 1 bajo la función o viceversa.

Tarea

Su tarea es escribir un código que realice o defina una función entretejida en los enteros positivos. Su función puede ser cualquier cosa siempre que satisfaga los criterios para estar entretejida. Debe incluir una explicación de por qué su función está entretejida en la respuesta.

Esta es una pregunta de , por lo que las respuestas se puntuarán en bytes, con menos bytes mejor.

Ad Hoc Garf Hunter
fuente
@flawr ¡Gracias! Estaba buscando esa palabra pero no podía pensar en eso.
Ad Hoc Garf Hunter
Creo que esto podría considerarse un engaño del último desafío que vinculaste, ya que solo tienes que hacer una transfusión adicional, es decir, enumerar todos los números pares e impares por separado. No creo que ninguna de las respuestas que obtenga aquí proporcione algo sustancialmente nuevo.
flawr
@flawr Podrías hacer eso, pero no sería la mejor manera. He experimentado un poco con esto y hay algunas formas novedosas de realizar este tipo de funciones.
Ad Hoc Garf Hunter

Respuestas:

2

Python, 46 42 37 bytes

5 bytes guardados gracias a @notjagan

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

Pruébalo en línea!

Itera los números pares e impares con pasos de 4 y enlaces en 2 y 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 =>
Uriel
fuente
1

JavaScript, 30 24 bytes

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

Secuencias:

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

Fragmento de código

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


fuente