- 여러가지 프로그래밍 언어로 도전해볼 수 있는 10억개 데이터 처리 챌린지입니다.
- setup.sh를 실행해서 테스트 데이터를 생성합니다. (Rust가 필요합니다. 17GB 정도의 크기입니다.)
- 입력 데이터 파일에는 다음과 같이 지역과 측정값 쌍이 개행으로 구분된 채로 들어있습니다. 숫자는 정수 값입니다.
Prico;458634
Canada;780790
Central;798387
Athens;799643
Boa Vista;75486
- 해당 파일을 읽어서 지역명을 기준으로 최댓값, 최솟값, 개수, 총합, 평균값을 구하세요.
- 나눗셈을 할 경우 integer 연산으로 나머지는 버립니다.
- 지역명을 기준으로 오름차순 정렬을 합니다.
- 기대하는 출력 형태는 다음과 같습니다.
지역명=최솟값;최댓값;평균값(총합/개수)
Adenarith=1;9999999;5000594(4716533623284/9431947)
Amsterdam=4;9999999;4999133(4715142248923/9431920)
Anápolis=0;9999999;4999550(4718363502090/9437576)
- 일반적인 상용 컴퓨팅 환경에서 동작해야 합니다.
- linux/amd64, RAM 64GB, 멀티코어(8코어)
- 하지만 unsafe나 tricky한 흑마술들은 사용 가능합니다.
- 제출하는 폴더나 소스파일의 이름은 식별 가능하게 닉네임1 or 닉네임-1 같은 형태로 맞춰주세요. 도전 횟수가 느는 만큼 뒤에 붙은 숫자를 증가시켜주시면 됩니다.
| Rank | Lang | Code | time |
|---|---|---|---|
| 1 | C++ (GCC) | libertyrapid | 1092ms |
| 2 | Rust | s576air | 1200ms |
| 3 | Go (GCC) | lemon-mint(v3) | 1677ms |
| 4 | Go | lemon-mint(v2) | 1711ms |
| 5 | Rust | whitetac(v2) | 1755ms |
| 6 | Go | lemon-mint(v1) | 1793ms |
| 7 | Rust | whitetac(v1) | 2187ms |
| 8 | C# | rudty | 2330ms |
| 9 | Javascript (Node.js) | kimseongjee | 10572ms |
| 10 | Javascript (Node.js) | sunrabbit(v2) | 20512ms |
| 11 | C# (AOT) | Basic | 36356ms |
| 12 | Go | Basic | 60338ms |
| 13 | Kotlin (JVM) | Basic | 65369ms |
| 14 | Rust | Basic | 71499ms |
| 15 | C++ (GCC) | Basic | 81690ms |
| 16 | Java (ZGC) | Basic | 88577ms |
| 17 | Java (ParallelGC) | Basic | 90484ms |
| 18 | Java (G1GC) | Basic | 90667ms |
| 19 | C++ (Clang) | Basic | 93765ms |
| 20 | Java (GraalVM) | Basic | 117744ms |
| 21 | PHP | Basic | 119706ms |
| 22 | Common LISP | Basic | 131219ms |
| 23 | C# | Basic | 131325ms |
| 24 | Julia | Basic | 131684ms |
| 25 | Ocaml | Basic | 136462ms |
| 26 | Python (pypy) | Basic | 191197ms |
| 27 | Javascript (Node.js) | sunrabbit(v1) | 218040ms |
| 28 | Dart (Dart VM) | Basic | 243129ms |
| 29 | Pascal | Basic | 251556ms |
| 30 | D | Basic | 260191ms |
| 31 | Dart (AOT) | Basic | 269486ms |
| 32 | Javascript (Node.js) | prravda1 | 272899ms |
| 33 | Kotlin (Native) | Basic | 286757ms |
| 34 | Javascript (Node.js) | Basic | 353595ms |
| 35 | Javascript (Bun) | Basic | 378794ms |
| 36 | Python (CPython) | Basic | 412043ms |
| 37 | Perl | Basic | 530715ms |
| 38 | Lua | Basic | 569031ms |
| 39 | Ruby | Basic | 643754ms |
| 40 | Swift | Basic | 936221ms |
| 41 | Scheme | Basic | 967971ms |
| 42 | Zig | Basic | 1017734ms |
| 43 | Erlang | Basic | 1787073ms |
| 44 | Haskell | Basic | 3008400ms |
| 45 | R | Basic | 7655896ms |
버전은 G++ 15.2.1/Clang 21.1.6입니다.
- cpp 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 dotnet 9.0.110입니다.
- c# 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
- dotnet new로 직접 생성해도 좋고,
- basic을 복제해서 사용해도 좋습니다.
버전은 DMD v2.111.0입니다.
- d 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 dart 3.10.0입니다.
- dart 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 V16.1.1입니다.
- erlang 경로에 분리된 새 폴더와 소스파일을 작성합니다.
버전은 Go 1.25.4 입니다.
- go/cmd 경로에 새 폴더를 만듭니다.
- go/cmd/basic/main.go 파일을 복사한 뒤에 수정해서 최적화합니다.
버전은 ghc 9.6.6입니다.
- haskell 경로에 분리된 새 폴더와 소스파일을 작성합니다.
버전은 openjdk 25.0.1/graalvm 25.0.1입니다.
- java 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
- 버전은 Node.js v24.8.0/Bun v1.3.3입니다.
- javascript 경로에 새 파일을 만듭니다.
- javascript/basic.js 파일을 복사한 뒤에 수정해서 최적화합니다.
버전은 Julia 1.12.2입니다.
- julia 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 Kotlin 2.1.20, openjdk 25.0.1입니다.
- kotlin 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 SBCL v2.5.10입니다.
- lisp 경로에 새 파일 혹은 새 폴더를 만들고 소스코드를 작성합니다.
버전은 guile v3.0.10입니다.
- scheme 경로에 새 파일 혹은 새 폴더를 만들고 소스코드를 작성합니다.
버전은 lua 5.4.8입니다.
- lua 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 v5.4.0입니다.
- ocaml 경로에 분리된 새 폴더와 소스파일을 작성합니다.
버전은 Free Pascal Compiler v3.2.2입니다.
- pascal 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 v5.42.0입니다.
- perl 경로에 새 폴더와 새 소스파일을 추가해서 작성합니다.
버전은 8.4.15입니다.
- php 경로에 새 소스파일을 작성합니다.
버전은 CPython 3.14, pypy 3.11.13입니다. CPython의 경우에는 uv를 사용합니다.
- uv를 사용해서 python 경로에 새 폴더와 새 파일을 만듭니다.
mkdir foo
cd foo
uv init버전은 v4.5.2입니다.
- r 경로에 새 폴더와 파일을 만듭니다.
버전은 Ruby 3.4.7 입니다.
- ruby 경로에 새 파일을 만듭니다.
버전은 1.91.1입니다.
- rust 경로에 추가 프로젝트를 구성합니다. basic을 복사해도 되고, cargo new로 생성해도 됩니다.
버전은 6.2.1입니다.
- swift 경로에 새 폴더를 만들고 프로젝트를 구성합니다.
버전은 0.15.2입니다.
- zig 경로에 새 파일 혹은 새 폴더를 만들고 소스코드를 작성합니다.