입력
음이 아닌 정수 목록입니다.
산출
목록의 숫자 h
중 적어도 하나 이상이 되도록하는 가장 큰 음이 아닌 정수 입니다.h
h
테스트 사례
[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)
값의 수를 계산합니다 .s
n
0
1
비교를 위해 반복되는 동등한 길이는 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