Introducción
La secuencia de cambio se define así:
Comience con n
personas paradas en círculo ( 6
para este ejemplo).
1 2
6 3
5 4
A partir de la persona 1
, la persona que está a la izquierda de la persona "elegida" se elimina.
1
6 3
5 4
La persona eliminada puede "cambiar" el método de eliminación:
- Si la persona eliminada es par (que es en este caso), la próxima persona eliminada estará a la derecha de la siguiente persona "elegida".
- Si la persona eliminada es impar, la siguiente persona eliminada estará a la izquierda de la siguiente persona "elegida".
La siguiente persona elegida también depende de la persona eliminada previamente.
- Si la persona eliminada es par, la siguiente persona elegida estará a la derecha de la persona elegida anterior.
- Si la persona eliminada es extraña, vea más arriba, pero reemplace "derecha" con "izquierda".
Entonces la siguiente persona elegida es entonces 6
.
Ahora eliminamos a la persona a la derecha de 6
, que es 5
:
1
6 3
4
Porque 5
es extraño, la persona eliminada está ahora a la izquierda. La nueva persona elegida es 1
.
Ahora eliminamos 3
:
1
6
4
Continuamos este proceso, hasta que nos quedemos con 1 número; en este ejemplo, el número final es 1
. Entonces por lo tanto S(6) = 1
.
Los primeros números son:
n | S(n)
---------
1 | 1
2 | 1
3 | 3
4 | 1
5 | 5
6 | 1
7 | 3
8 | 6
9 | 5
10 | 6
11 | 9
Tarea
Su tarea es hacer un programa (o una función) que devuelva S(n)
(el n
número th en la secuencia de conmutación) cuando se proporciona n
, utilizando la menor cantidad de bytes.
Ejemplo de entradas y salidas:
1 -> 1
10 -> 6
13 -> 13
Tiene garantizado obtener un número entero positivo.
Este es el código de golf , por lo que gana el código más corto en bytes.
Nota: No hay una secuencia OEIS (¿qué?), Para ahorrarle la molestia de buscar.
2
nunca se queda, pero lo hace7
?Respuestas:
Python 2,
18394 bytes-4 bytes gracias a Artyer (use
input()
y enprint
lugar dedef
yreturn
)-1 byte gracias a FlipTack (use en
print-~p[0]
lugar deprint p[0]+1
)repl.it
Esto solo sigue las instrucciones dadas, he notado algún patrón, ¿tal vez podría explotarse?
Los únicos cambios son:
0
indexación basada (por lo que incluso las personas son extrañas y viceversa): esto ahorra 5 bytes en la lógica de golf y se corrige al final con+1
1
como izquierda y-1
derecha (para usar un rango, al igual que todos están mirando hacia afuera)pop
de la lista haciendo que el índice de "puntero" ya sea el primer paso a la derecha de la lista (o a la izquierda en la terminología original).Sin golf:
fuente
print-~p[0]
?