La tâche
Étant donné n'importe quel tableau d'entiers, par exemple:
[-1,476,578,27,0,1,-1,1,2]
et un index de ce tableau (cet exemple utilise une indexation basée sur 0 , mais vous pouvez également utiliser une indexation basée sur 1 ):
index = 5
v
[-1,476,578,27,0,1,-1,1,2]
Retourne ensuite le nombre le plus proche supérieur à l'élément à cet index . Dans l'exemple, le nombre le plus proche supérieur à 1 est 27 (à 2 indices de distance).
index = 5
v
[-1,476,578,27,0,1,-1,1,2]
^
Nearest greater number
Output = 27
Hypothèses
- Le plus proche n'inclut pas l'emballage.
- Le programme ne recevra jamais un tableau de longueur 1 (par exemple;
[55]
). - Vous devez supposer qu'il existe toujours un nombre supérieur à l'élément donné.
- S'il y a 2 nombres supérieurs à l'élément à des distances égales, vous pouvez renvoyer l'un ou l'autre .
Paires d'E / S
Input:
Index = 45
Array = [69, 43, 89, 93, 62, 25, 4, 11, 115, 87, 174, 60, 84, 58, 28, 67, 71, 157, 47, 8, 33, 192, 187, 87, 175, 32, 135, 25, 137, 92, 183, 151, 147, 7, 133, 7, 41, 12, 96, 147, 9, 134, 197, 3, 107, 164, 90, 199, 21, 71, 77, 62, 190, 122, 33, 127, 185, 58, 92, 106, 26, 24, 56, 79, 71, 24, 24, 114, 17, 84, 121, 188, 6, 177, 114, 159, 159, 102, 50, 136, 47, 32, 1, 199, 74, 141, 125, 23, 118, 9, 12, 100, 94, 166, 12, 9, 179, 147, 149, 178, 90, 71, 141, 49, 74, 100, 199, 160, 120, 14, 195, 112, 176, 164, 68, 88, 108, 72, 124, 173, 155, 146, 193, 30, 2, 186, 102, 45, 147, 99, 178, 84, 83, 93, 153, 11, 171, 186, 157, 32, 90, 57, 181, 5, 157, 106, 20, 5, 194, 130, 100, 97, 3, 87, 116, 57, 125, 157, 190, 83, 148, 90, 44, 156, 167, 131, 100, 58, 139, 183, 53, 91, 151, 65, 121, 61, 40, 80, 40, 68, 73, 20, 135, 197, 124, 190, 108, 66, 21, 27, 147, 118, 192, 29, 193, 27, 155, 93, 33, 129]
Output = 199
Input:
Index = 2
Array = [4,-2,1,-3,5]
Output = 4 OR 5
Input:
Index = 0
Array = [2124, -173, -155, 146, 193, -30, 2, 186, 102, 4545]
Output = 4545
Input:
Index = 0
Array = [1,0,2,3]
Output = 2
Input:
Index = 2
Array = [3,-1,-3,-2,5]
Output = -1 OR -2
code-golf
array-manipulation
integer
Graviton
la source
la source
1; [7,1,-4,2]
2; [3,-1,-3,-2,5]
c'est un joli cas de test. Il y a des chiffres positifs, mais le résultat est négatif.Réponses:
MATL , 10 octets
Cela utilise l'indexation basée sur 1. Essayez-le en ligne!
Explication
Tenez compte des entrées
[4,-2,1,-3,5]
, à3
titre d'exemple.la source
Gelée , 10 octets
Essayez-le en ligne!
la source
Gelée ,
1112 octets+1 octet - Aucun habillage autorisé.
1 indexé.
Essayez-le en ligne!
11 octets précédents (indexation enveloppante), indexés 0:
la source
0
[1,0,2,3]
.3
, ce qui est à 1 donc, euh, ouais "le plus proche" n'est pas défini ...JavaScript (ES6),
5755 octetsPrend le tableau
a
et l'indexi
dans la syntaxe de curry(a)(i)
.Cas de test
Afficher l'extrait de code
la source
|
place de||
?x
pas être écrasés lorsque la première condition est remplie.PHP, 106 octets
Version en ligne
la source
Haskell , 48 octets
Essayez-le en ligne! Cadre de test de Ørjan Johansen.
la source
!!1
place (passez simplementInteger
àInt
dans l'en-tête).Assemblage x86-64, 40 octets
Inspiré de l'analyse de Johan du Toit et des solutions C de 2501 , ce qui suit est une fonction qui peut être assemblée avec MASM pour les plates-formes x86-64.
Il suit la convention d'appel Microsoft x64 pour la transmission des paramètres, donc la longueur totale du tableau est transmise
ECX
, la position d'intérêt est transmiseEDX
et le pointeur vers le tableau entier est transmisR8
(c'est une plate-forme 64 bits, donc c'est un pointeur 64 bits).Il renvoie le résultat (le "plus grand nombre le plus proche") dans
EAX
.Si vous vouliez l'appeler à partir du code C, le prototype serait:
la source
Ruby , 64 octets
Essayez-le en ligne!
la source
Ohm , 20 octets
Fondamentalement, une traduction de cette réponse Ruby .
Essayez-le en ligne!
L'explication viendra plus tard lorsque je ne ferai pas de devoirs.
la source
Haskell , 53 octets
(#)
prend unInt
et une liste deInt
s ouInteger
s (en fait n'importe quelOrd
type), et retourne un élément de la liste.Comment ça marche
n
est l'indice donné etl
est la liste / "tableau" donné.i
, prenant des valeurs à partir de 1, est la distance par rapport aun
test en cours.i
, nous vérifions les indicesn-i
etn+i
.x
est l'élément d'l
être testé. S'il réussit les tests, ce sera un élément de la compréhension de la liste résultante.!!
pourrait donner une erreur hors limites, alors quedrop
renvoie à la place la liste entière ou une liste vide dans ce cas. La correspondance de modèle avecx:_
vérifie que le résultat n'est pas vide.x>l!!n
teste que notre élément est supérieur à l'élément à indexn
(qui est garanti d'exister).!!0
à la fin renvoie la première correspondance / élément de la compréhension de la liste.Essayez-le en ligne!
la source
Python , 62 octets
Essayez-le en ligne!
la source
Brachylog , 17 octets
Essayez-le en ligne!
Explication
la source
Java (OpenJDK 8) , 98 octets
Essayez-le en ligne!
Vérifie les indices dans l'ordre spécifié par les sommes partielles de la somme suivante:
la source
s=1,
et,s=-s
, cela n'a aucune utilité dans votre réponse .. Avez-vous oublié de le retirer d'une ancienne approche?C, 69 octets
Le premier argument est un argument d'entrée / sortie. La sortie est stockée dans son premier élément.
Voyez-le fonctionner en ligne .
la source
R, 59 octets
renvoie une fonction anonyme. Dans le cas où il y a deux éléments plus grands à égale distance, retournera le premier (indice moindre).
Essayez-le en ligne!
la source
Pyth - 28 octets
Essayez-le
la source
PHP, 73 octets
la fermeture prend l'index et le tableau basés sur 0 des arguments. Vérifiez tous les cas de test .
la source
Pyth, 16 octets
Suite de tests .
la source
C, 110 octets
Essayez-le en ligne
la source
Java, 96 octets
Les identifiants sont nommés comme la réponse de @Leaky Nun. De plus, la plupart des parties ont été alignées pour être fondamentalement les mêmes: En comparaison, le
if
a été remplacé par la conditionfor
-c (sacrifiant le point-virgule supplémentaire). Un deux-points a été supprimé en déplaçant increment-part dans la condition (donc les parenthèses de la précédente instruction if sont pratiquement "déplacées") - en changeant & en | n'a pas eu d'impact sur le nombre de personnages.la source
Clojure, 95 octets
C'est le plus court que j'ai pu trouver :( J'ai aussi essayé de jouer avec ça mais je n'ai pas pu l'amener à la ligne d'arrivée:
la source