Estás con tu mejor amigo, Jim, en el parque de atracciones y cuando tu paseo favorito aparece, tú y Jim intercambian miradas. Naturalmente, corres para hacer cola Desafortunadamente, él gana porque eres un golfista y juega un deporte real (lo siento amigos). De hecho, estás tan atrasado que tú y Jim están separados por x
personas. Suponiendo que la línea es larga n
y estás en la parte de atrás y la línea zigzaguea y zaga a todas las j
personas, ¿en qué posiciones en la línea estarán Jim y tú en la misma columna, permitiéndote chatear (solo una fila aparte)?
Entrada
3 enteros
n
- La longitud de la línea. Este número siempre será mayor o igual quej
y tendrá la formay * j
en quey
sea un entero positivo (el número de filas en la cola).j
- El número de personas en una fila de la línea (el número de columnas en una fila). Este número siempre será mayor que 0.x
- El número de personas entre tú y Jim de tal manera0 <= x < 2j - 1
. Sugerencia: Si este número es impar, entonces su salida debería estar vacía.
Salida
Una lista de posiciones enteras en la línea en la que Jim está en la misma columna que usted.
1 Estos enteros pueden estar indexados a 0 o 1 siempre que lo especifique en su respuesta.
2 Estos enteros pueden suponer que comienzas en la posición 0 o en la posición n-1 siempre que lo especifiques en tu respuesta.
Ejemplo
En este ejemplo, la entrada sería n = 9, j = 3, x = 0
. El resultado debe ser 2, 5
porque su posición es 2 o 5 cuando está en la misma columna que Jim
Casos de prueba
[9, 3, 0] -> [2, 5]
[12, 3, 0] -> [2, 5, 8]
[9, 3, 1] -> []
[9, 3, 2] -> [1, 4]
[14, 7, 10] -> [1]
[24, 4, 6] -> [0, 4, 8, 12, 16]
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta (en bytes).
Respuestas:
Python 2 ,
45414037 bytesMás o menos la solución trivial. Simplemente escaneé rápidamente en busca de patrones y encontré un patrón. 1 indexado, 1 está al final de la cola.
-4 bytes evitando ternaries y usando una matriz para los valores en lugar de
-1 byte gracias a la inspiración de @DeadPossum, usando en
and
lugar de ternaries o selectores de matriz-3 bytes cambiando
or
en el orden opuesto. Solo funciona debido a la indexación 1Además, tachado 4 sigue siendo 4 en todos los 4 :(
Pruébalo en línea!
fuente
lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
n-j+1
, por lo quelambda n,j,x:x%2-1and range(j-x/2,n-x,j)
es más corto en uno más en total de 40 bytesPip ,
2221 bytes20 bytes de código, +1 para
-p
bandera.Toma
n
,j
yx
como argumentos de línea de comandos. Indexado 0, comenzando en la posición 0. ¡ Pruébelo en línea!Explicación
Esta es mi versión original de 22 bytes porque es un poco más comprensible.
La fórmula se obtuvo mediante la observación del patrón para
n=9
,j=3
:Si tomamos
x/2
(0
,1
,2
), restarlo dej-1
(2
,1
,0
), y añadir que a[0;3]
, obtenemos el resultado correcto en todos los casos.fuente
Java 8 lambda, 101 bytes
Puerto casi directo de mi respuesta de Python. Sin embargo, el rango no existe en Java.
fuente
Haskell, 43 bytes
Casi directamente portado de la respuesta de Python de HyperNeutrino
Código más bien formateado:
EDITAR: olvidé mencionar que estaba indexado
fuente
C # - 91 bytes
fuente