Vous êtes avec votre meilleur ami, Jim, au parc d'attractions et lorsque votre trajet préféré apparaît, vous et Jim échangez des regards. Naturellement, vous courez pour vous aligner. Malheureusement, il gagne parce que vous êtes un golfeur et qu'il pratique un vrai sport (désolé amis). En fait, vous êtes si loin derrière vous que Jim et vous êtes séparés par des x
gens. En supposant que la ligne est longue n
et que vous êtes à l'arrière et que la ligne zig et zags toutes les j
personnes, à quelles positions de la ligne vous et Jim serez-vous dans la même colonne vous permettant de discuter (une seule ligne à part)?
Contribution
3 entiers
n
- La longueur de la ligne. Ce nombre sera toujours supérieur ou égal àj
et sera sous la formey * j
oùy
est un entier positif (le nombre de lignes dans la file d'attente).j
- Le nombre de personnes sur une ligne de la ligne (le nombre de colonnes sur une ligne). Ce nombre sera toujours supérieur à 0.x
- Le nombre de personnes entre vous et Jim tel que0 <= x < 2j - 1
. Astuce: si ce nombre est impair, votre sortie doit être vide.
Production
Une liste de positions entières dans la ligne à laquelle Jim se trouve dans la même colonne que vous.
1 Ces entiers peuvent être indexés 0 ou 1 tant que vous spécifiez dans votre réponse.
2 Ces nombres entiers peuvent supposer que vous commencez à la position 0 ou à la position n-1 tant que vous spécifiez dans votre réponse.
Exemple
Dans cet exemple, l'entrée serait n = 9, j = 3, x = 0
. La sortie devrait être 2, 5
parce que votre position est 2 ou 5 lorsque vous êtes dans la même colonne que Jim
Cas de test
[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]
Notation
Il s'agit de code-golf , donc la réponse la plus courte (en octets) l'emporte.
Réponses:
Python 2 ,
45414037 octetsÀ peu près la solution triviale. J'ai juste rapidement recherché des motifs et trouvé un motif. 1 indexé, 1 est à l'arrière de la file d'attente.
-4 octets en évitant les ternaires et en utilisant un tableau pour les valeurs à la place
-1 octet grâce à l'inspiration de @DeadPossum, en utilisant à la
and
place des ternaires ou des sélecteurs de tableau-3 octets en basculant vers
or
dans l'ordre inverse. Fonctionne uniquement en raison de l'indexation 1De plus, barré 4 est toujours 4 sur tous les 4 :(
Essayez-le en ligne!
la source
lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
n-j+1
, donclambda n,j,x:x%2-1and range(j-x/2,n-x,j)
est plus court d'un de plus au total de 40 octetsPip ,
2221 octets20 octets de code, +1 pour l'
-p
indicateur.Prend
n
,j
etx
comme arguments de ligne de commande. 0 indexé, à partir de la position 0. Essayez-le en ligne!Explication
Ceci est ma version originale de 22 octets car elle est un peu plus compréhensible.
La formule a été obtenue en observant le motif pour
n=9
,j=3
:Si nous prenons
x/2
(0
,1
,2
), soustraire dej-1
(2
,1
,0
), et ajouter que[0;3]
, nous obtenons le résultat correct dans tous les cas.la source
Java 8 lambda, 101 octets
Port presque direct de ma réponse Python. La plage n'existe cependant pas en Java.
la source
Haskell, 43 octets
Porté à peu près directement à partir de la réponse Python d'HyperNeutrino
Code plus bien formaté:
EDIT: J'ai oublié de mentionner qu'il était à un index
la source
C # - 91 octets
la source