Contribution
Une liste d'entiers non négatifs.
Sortie
Le plus grand entier non négatif h
tel qu'au moins h
l'un des nombres de la liste soit supérieur ou égal à h
.
Cas de test
[0,0,0,0] -> 0
[12,312,33,12] -> 4
[1,2,3,4,5,6,7] -> 4
[22,33,1,2,4] -> 3
[1000,2,2,2] -> 2
[23,42,12,92,39,46,23,56,31,12,43,23,54,23,56,73,35,73,42,12,10,15,35,23,12,42] -> 20
Règles
Vous pouvez écrire un programme complet ou une fonction. Les fonctions anonymes sont également autorisées. C'est le code-golf, donc le plus petit nombre d'octets gagne. Les failles standard sont interdites.
Contexte
L' indice h est une notion utilisée dans le monde universitaire qui vise à capturer l'impact et la productivité d'un chercheur. Selon Wikipedia, un chercheur a l'indice h , s'il a publié h articles scientifiques, chacun d'eux ayant été cité dans d'autres articles au moins h fois. Ce défi consiste donc à calculer l'indice h à partir d'une liste de comptes de citations.
Mise à jour
Wow, bonnes réponses tout autour! J'ai accepté le plus court, mais si quelqu'un d'autre en propose un encore plus court, je modifierai mon choix en conséquence.
Gagnants par langue
Voici un tableau des gagnants par langue que je vais également essayer de tenir à jour. J'ai inclus tous les messages avec un score non négatif. S'il vous plaît, corrigez-moi si j'ai commis une erreur ici.
- APL : 7 octets par @MorisZucca
- Bash + coreutils : 29 bytes par @DigitalTrauma
- C # : 103 octets par @ LegionMammal978
- C ++ : 219 octets par @ user9587
- CJam : 15 octets par @nutki
- GolfScript : 13 octets par @IlmariKaronen
- Haskell : 40 octets par @proudhaskeller
- J : 12 octets par @ ɐɔıʇǝɥʇuʎs
- Java : 107 octets par @Ypnypn
- JavaScript : 48 octets par @ edc65
- Mathematica : 38 octets par @ kukac67
- Perl : 32 octets par @nutki
- Pyth : 10 octets par @isaacg
- Python : 49 octets par @feersum
- R : 29 octets par @MickyT
- Ruby : 41 octets par @daniero
- Scala : 62 octets par @ChadRetz
- SQL : 83 octets par @MickyT
- TI-BASIC : 22 octets par @Timtech
CJam, 15 octets
Traduction directe de ma solution Perl.
la source
l~$W%{W):W>},,
- 14 octets{$W%ee::<1b}
(ee
ajouté le 2015-04-17) et{$W%_,,.>1b}
(.
ajouté le 2015-02-21).J (
1312)Assez similaire à la solution de randomra. Manifestation:
la source
#\<:
au lieu dei.@#<
enregistre un personnage.Mathematica,
44424038 octetsFonction anonyme:
Exécutez-le en ajoutant l'entrée à la fin, comme suit:
la source
#>i++
. J'ai testé d'autres cas. (Et merci pour toutes les suggestions!)SQL,
819483Étant donné une table (I) de valeurs (V), la requête suivante renverra h. Testé dans PostgreSQL et fonctionnera également dans SQL Server. Modifier Faites-le retourner 0 plutôt que NULL. Fait mieux avec COUNT, merci @nutki
Exemple SQLFiddle
Essentiellement, il numérote les lignes sur un tri décroissant des valeurs. Ensuite, il renvoie le nombre maximal de lignes où le nombre de lignes est supérieur à égal à la valeur.
la source
COUNT(R)
au lieu deCOALESCE(MAX(R),0)
pour un correctif plus court pour le problème NULL.R,
393529Étant donné un vecteur d'entiers dans i et en utilisant la logique d'un tri inversé, nous renvoyons alors la
longueurdu vecteur où le nombre d'éléments est inférieur à s. Merci à @plannapus pour le bon conseil.la source
s=sort(i);sum(s>=length(s):1)
CJam, 23 octets
Cela prend la liste comme un tableau sur STDIN, comme
Testez-le ici.
Vous pouvez l'utiliser pour exécuter tous les cas de test:
Explication
La logique est un peu en arrière, mais cela a sauvé quelques octets. En gros, le blocage passé pour trier les déclarations
0
des candidats valides et1
autres. Les candidats valides arrivent donc en premier dans le tableau trié. Et comme le tri est stable, et que nous commençons par une liste allant de N à 1, le plus grand h valide est renvoyé.la source
Perl 5: 32 (30 + 2 pour
-pa
)Prend une entrée séparée par des espaces sur STDIN:
la source
sort{$b-$a}
sauve 2 autresPython (63)
Fondamentalement, un port direct de ma solution J. Évidemment, beaucoup plus longtemps, comme on pourrait l'imaginer.
la source
enumerate
.Haskell, 40 ans
ceci recherche le premier nombre qui ne correspond pas au schéma et renvoie son prédécesseur.
la source
until
: Essayez-le en ligne!Ruby
4441Récursive, plus ou moins la même stratégie que la solution Python de xnor:
Ruby 52
Non récursif:
Fonctions "Stabby" lambda / anonymous, requièrent Ruby 1.9 ou plus récent. Appel avec par exemple
f[[22,33,1,2,4]]
la source
Bash + coreutils, 29
Entrée extraite de stdin sous forme de liste séparée par des lignes.
sort
les entiers par ordre décroissantnl
préfixe chaque ligne avec son numéro de ligne basé sur 1, séparant le numéro de ligne et le reste de la ligne avec un nombre supérieur à>
bc
. Les entiers inférieurs à leur numéro de ligne donnent 0. Sinon, 1.grep
compte le nombre de0
s, c'est-à-dire le nombre entier supérieur ou égal àh
Exemple
la source
JavaScript (ES6) 48
Solution récursive
Test dans la console FireFox / FireBug
Sortie
la source
f=(l,h=0)=>l.map(v=>x+=v>h,x=0)&&x>h?f(l,h+1):h
. Cependant, votre solution consisterait également en 47 octets si vous ne modifiiez queh=-1
parh=0
.Java 8, 116 octets.
Classe complète:
Une fonction:
la source
APL, 12 caractères
(+/⊢≥⍒)⊂∘⍒⌷⊢
la source
C ++
815219 à partir de (wc -c main.cpp)Voici le pire code que j'ai jamais écrit! :)
la source
Gelée, 6 octets
Explication:
la source
CJam, 22 octets
Prend la liste en entrée:
Sortie:
Essayez ici
la source
GolfScript, 13 octets
Testez ce code en ligne. 1
Prend les entrées sous forme de tableau sur la pile. Utilise le même algorithme que la solution Python de Feersum, effectuant une itération sur les nombres du tableau et en incrémentant un compteur de 0 jusqu'à ce qu'il soit égal ou supérieur à l'élément actuel du tableau.
1) Le serveur GolfScript en ligne semble connaître à nouveau des délais d'attente aléatoires. Si le programme expire pour vous, essayez de le réexécuter.
la source
TI-BASIC, 22 octets
Représentation ASCII:
Décharge Hex:
Obtient une liste en entrée. À partir de Ans = 0, vérifie si au moins Ans + 1 des nombres sont au moins Ans + 1. Si tel est le cas, incrémente Ans et boucle à nouveau. Sinon, sort Ans.
la source
JAGL Alpha 1.2 - 14
Ne compte pas car la fonctionnalité de tableau inversé 'C' a été ajoutée après la question, mais je réponds quand même pour le plaisir.
Suppose que le tableau est le premier élément de la pile et place la réponse en haut de la pile.
Pour imprimer, ajoutez simplement
P
à la fin, en ajoutant un octet.Explication:
la source
J,
1511 caractères(La solution J la plus courte actuelle.)
Compare les éléments de la
<:
liste triée\:~
avec 1..n + 1#\
et compte les vraies comparaisons+/
.Test de similarité avec une autre solution J sur 100 tests aléatoires:
la source
Reng v.3.2, 43 octets
Essayez-le ici! Ce code peut être divisé en trois parties: initiale, informatique et finale.
Initiale
Ceci stocke
1
dansx
, la longueur de la pile d’entréek
dansy
, et obtient tout input (aïí
) qui est ensuite trié ('
).1ø
passe à la ligne suivante, c'est-à-dire la partie suivante.Informatique
Reng n'a pas intégré dans l'inégalité. Ainsi, un algorithme doit être implémenté. L'algorithme le plus court pour lequel j'ai trouvé
a < b
est%:1,%1e
; cela ressemble à ceci:Je suis sûr que ça a éclairci! Permettez-moi d'expliquer plus loin.
x % 1
, module avec 1, correspondx
à(-1,1)
. Nous savons que(a/b) % 1
c'esta/b
quanda < b
. Ainsi, cette expression est égale àa < b
.Cependant, cela ne fonctionne pas aussi bien à cause de problèmes de module avec zéro. Donc, nous incrémentons chaque membre de la pile et le compteur initialement.
Après avoir obtenu l'inégalité booléenne sur la pile, l'
x+
ajoute à x, mais la laisse sur la pile pour le moment.y1-
décroîty
et?^
monte siy == 0
et nous passons à la phase finale. Sinon, nous mettonsy-1
dansy
et le nouveaux
dansx
.Final
Ceci
y-1
extrait le résidu de la pile, décrémente le résultat, le sort et termine le programme.la source
05AB1E , 5 octets
Essayez-le en ligne! ou en tant que suite de tests
Explication
la source
Mathematica, 57 octets
C'est une fonction anonyme prenant une liste et retournant un entier, comme
Utilisez ceci pour vérifier tous les cas de test:
la source
C #, 103
Fonction anonyme.
Dentelé:
la source
Scala, 62
la source