h 이상, h 이상 -> 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] ->

입력

음이 아닌 정수 목록입니다.

산출

목록의 숫자 h중 적어도 하나 이상이 되도록하는 가장 큰 음이 아닌 정수 입니다.hh

테스트 사례

[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

규칙

전체 프로그램 또는 함수를 작성할 수 있으며 익명 함수도 허용됩니다. 이것은 코드 골프이므로 가장 적은 바이트 수가 이깁니다. 표준 허점은 허용되지 않습니다.

배경

H-지수는 연구원의 영향과 생산성을 캡처하는 것을 목표로 학계에서 사용되는 개념이다. Wikipedia에 따르면, 연구원은 h 개의 과학 논문 을 출판 한 경우 색인 h 를 가지며 , 각 논문은 적어도 h 번 다른 논문에서 인용되었습니다 . 따라서이 과제는 인용 횟수 목록에서 h- 인덱스를 계산하는 것입니다.


최신 정보

와! 나는 가장 짧은 것을 받아 들였지만 다른 누군가가 더 짧은 것을 내면 그에 따라 내 선택을 업데이트 할 것입니다.

언어 별 수상자

다음은 언어 별 수상자 표입니다. 또한 최신 정보를 제공하려고합니다. 음수가 아닌 모든 게시물을 포함 시켰습니다. 내가 여기서 실수를 한 경우 수정 해주세요.

  • APL : @MorisZucca의 7 바이트
  • Bash + coreutils : @DigitalTrauma에 의해 29 바이트
  • C # : @ LegionMammal978에 의해 103 바이트
  • C ++ : @ user9587에 의해 219 바이트
  • CJam : @nutki의 15 바이트
  • GolfScript : @IlmariKaronen의 13 바이트
  • Haskell : @proudhaskeller의 40 바이트
  • J : @ ɐɔıʇǝɥʇuʎs의 12 바이트
  • Java : @Ypnypn의 107 바이트
  • JavaScript : @ edc65의 48 바이트
  • Mathematica : 38 바이트 @ kukac67
  • Perl : @nutki의 32 바이트
  • Pyth : @isaacg에 의해 10 바이트
  • 파이썬 : @feersum의 49 바이트
  • R : @MickyT에 의한 29 바이트
  • 루비 : @daniero의 41 바이트
  • 스칼라 : @ChadRetz에 의해 62 바이트
  • SQL : @MickyT의 83 바이트
  • TI-BASIC : @Timtech의 22 바이트


답변

APL 7

+/⊢≥⍋∘⍒

tryapl.org에서 온라인으로 시도 할 수 있습니다

f←+/⊢≥⍋∘⍒
f¨(4⍴0)(12 312 33 12)(⍳7)(22 33 1 2 4)(1000 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)
0 4 4 3 2 20

답변

파이썬, 52

f=lambda s,n=0:n<sum(n<x for x in s)and f(s,n+1)or n

재귀 솔루션. 오버플로가 걱정된다면 Stackless Python 에서 이것을 실행하십시오 .

에서 시작 n=0하여 적어도 n+1숫자가 최소한인지 확인합니다 n+1. 그렇다면 증가 n하고 다시 시작합니다. 그렇지 않으면을 출력 n합니다.

조건은 부울에 대한 Python의 단락을 사용하여 수행됩니다. 이 표현식 은 또는 로 취급되는 인디케이터 부울을 추가하는 것보다 큰 sum(n<x for x in s)값의 수를 계산합니다 .sn01

비교를 위해 반복되는 동등한 길이는 2 자입니다. 파이썬 2가 필요합니다.

s=input()
n=0
while n<sum(n<x for x in s):n+=1
print n

불행히도, 반복하기 전에 변수에 대한 입력을 저장해야합니다. 그렇지 않으면 파이썬은 입력을 반복적으로 읽으려고합니다.


답변

Pyth, 13 10 바이트

tf<l-QUTT1

[22,33,1,2,4]STDIN 과 같은 양식으로 입력하십시오 .

여기에서 시도하십시오.

작동 방식 :

-QUT입력의 모든 숫자 ( Q)는 확인중인 숫자보다 크거나 같습니다 T.

<l-QUTT해당 목록의 길이가보다 작 으면 true T입니다.

f<l-QUTT1처음부터 시작하여 내부 검사에 대해 true를 반환하는 첫 번째 정수를 찾습니다 1.

tf<l-QUTT1 조건이 거짓 인 가장 큰 값인 h- 인덱스를 제공하여 1 씩 줄입니다.

1에서 시작 0하면 첫 번째 테스트 사례와 같이 테스트가 항상 참일 때 리턴됩니다.


답변

파이썬 2, 49

입력은 예제와 동일한 형식으로 입력해야합니다.

i=0
for z in sorted(input())[::-1]:i+=z>i
print i

답변

CJam, 15 바이트

내 Perl 솔루션의 직접 번역.

l~{~}${W):W>},,

답변

J ( 13 12)

[:+/i.@#<\:~

randomra의 솔루션과 매우 유사합니다. 데모:

   f=:[:+/i.@:#<\:~
   f 0,0,0,0
0
   f 12,312,33,12
4
   f 1,2,3,4,5,6,7
4
   f 22,33,1,2,4
3
   f 1000,2,2,2
2
   f 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

답변

수학, 44 42 40 38 바이트

익명의 기능 :

LengthWhile[i=0;SortBy[#,-#&],#>i++&]&

다음과 같이 입력을 끝까지 입력하여 실행하십시오.

In: LengthWhile[i=0;SortBy[#,-#&],#>i++&]&@{1,2,3,4,5,6,7}
Out: 4