Você está com seu melhor amigo, Jim, no parque de diversões e quando seu passeio favorito é visto, você e Jim trocam olhares. Naturalmente você corre para entrar na fila. Infelizmente ele vence porque você é um jogador de golfe e ele pratica um esporte de verdade (desculpe amigos). Na verdade, você está tão atrasado que você e Jim são separados por x
pessoas. Assumindo que a linha é longa n
e você está na parte de trás e na linha, ziguezagueia cada j
pessoa, em que posições da linha você e Jim estarão na mesma coluna, permitindo que você converse (com apenas uma linha de distância)?
Entrada
3 Inteiros
n
- o comprimento da linha. Esse número sempre será maior ou igual aj
e estará no formato emy * j
quey
é um número inteiro positivo (o número de linhas na fila).j
- O número de pessoas em uma linha da linha (o número de colunas em uma linha). Esse número sempre será maior que 0.x
- O número de pessoas entre você e Jim é tal0 <= x < 2j - 1
. Dica: Se esse número for ímpar, sua saída deverá estar vazia.
Resultado
Uma lista de posições inteiras na linha em que Jim está na mesma coluna que você.
1 Esses números inteiros podem ser indexados em 0 ou 1, desde que você especifique em sua resposta.
2 Esses números inteiros podem assumir que você começa na posição 0 ou na posição n-1, desde que você especifique em sua resposta.
Exemplo
Neste exemplo, a entrada seria n = 9, j = 3, x = 0
. O resultado deve ser 2, 5
porque sua posição é 2 ou 5 quando você está na mesma coluna que Jim
Casos de teste
[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]
Pontuação
Isso é código-golfe , então a resposta mais curta (em bytes) vence.
Respostas:
Python 2 ,
45414037 bytesPraticamente a solução trivial. Eu rapidamente procurei padrões e encontrei um padrão. 1 indexado, 1 está na parte de trás da fila.
-4 bytes evitando ternários e usando uma matriz para os valores em vez de
-1 byte, graças a alguma inspiração do @DeadPossum, usando em
and
vez de ternários ou seletores de matriz-3 bytes, alternando para
or
a ordem oposta. Funciona apenas por causa da indexação 1Além disso, riscado 4 ainda é 4 em todos os 4s :(
Experimente online!
fonte
lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
n-j+1
, por isso,lambda n,j,x:x%2-1and range(j-x/2,n-x,j)
é mais curto por um mais no total de 40 bytesPip ,
2221 bytes20 bytes de código, +1 para
-p
sinalizador.Leva
n
,j
ex
como argumentos de linha de comando. Indexado a 0, começando na posição 0. Experimente online!Explicação
Esta é a minha versão original de 22 bytes, porque é um pouco mais compreensível.
A fórmula foi obtido por observação do padrão de
n=9
,j=3
:Se tomarmos
x/2
(0
,1
,2
), subtrairj-1
(2
,1
,0
), e acrescentar que[0;3]
, obtemos o resultado correto em todos os casos.fonte
Java 8 lambda, 101 bytes
Porta quase direta da minha resposta Python. O intervalo ainda não existe em Java.
fonte
Haskell, 43 bytes
Portado diretamente da resposta Python do HyperNeutrino
Código mais bem formatado:
EDIT: Esqueci de mencionar que era um indexado
fonte
C # - 91 bytes
fonte