Ini dimaksudkan untuk menjadi golf kode yang mudah dan seukuran gigitan.
The mex (minimal jumlah dikecualikan) dari koleksi terbatas angka adalah yang terkecil bilangan bulat non-negatif 0, 1, 2, 3, 4, ...
yang tidak tidak muncul dalam koleksi. Dengan kata lain, ini adalah minimum dari komplemen. Operasi mex merupakan pusat analisis game yang tidak memihak dalam teori permainan kombinatorial .
Tujuan Anda adalah untuk menulis program atau fungsi bernama untuk menghitung mex menggunakan sesedikit mungkin byte.
Memasukkan:
Daftar bilangan bulat non-negatif dalam urutan apa pun. Dapat berisi pengulangan. Untuk konkret, panjang daftar dan rentang elemen yang diizinkan akan berada di antara 0
dan 20
inklusif.
Definisi "daftar" di sini fleksibel. Setiap struktur yang mewakili kumpulan angka baik-baik saja, asalkan memiliki urutan elemen tetap dan memungkinkan pengulangan. Itu mungkin tidak termasuk informasi tambahan apa pun kecuali panjangnya.
Input dapat diambil sebagai argumen fungsi atau melalui STDIN.
Keluaran
Nomor terkecil yang dikecualikan. Keluarkan atau cetak.
Uji kasus
[1]
0
[0]
1
[2, 0]
1
[3, 1, 0, 1, 3, 3]
2
[]
0
[1, 2, 3]
0
[5, 4, 1, 5, 4, 8, 2, 1, 5, 4, 0, 7, 7]
3
[3, 2, 1, 0]
4
[0, 0, 1, 1, 2, 2, 3]
4
[1, 0, 7, 6, 3, 11, 15, 1, 9, 2, 3, 1, 5, 2, 3, 4, 6, 8, 1, 18]
10
0
untuk20
, output yang benar adalah 21. Saya akan menambahkan kasus uji. Ya, rentang tetap pasti membuatnya lebih mudah, meskipun orang masih bisa menggunakansys.maxint
atau2**64
jika saya tidak menentukannya.Jawaban:
Pyth , 6 byte
Contoh dijalankan
Bagaimana itu bekerja
sumber
range(21)
), yang dipesan. (Ini juga berarti penjelasannya tidak sepenuhnya akurat. Pyth dan Python 3 sama sekali baru bagi saya.)-
dalam Pyth sebenarnya adalah filter - filter memfilter argumen pertama karena tidak ada argumen kedua, kemudian mengubahnya menjadi bentuk argumen pertama (string, daftar atau set).h-U22Q
begitu itu akan memberikan output yang benar dari 21 pada input yang berisi rentang penuh yang diijinkan.CJam,
118 byteBagaimana itu bekerja:
Input sampel:
Keluaran:
Cobalah online di sini
sumber
J - 13 char
Tindakan yang sangat sederhana di J, dan karenanya sangat sulit untuk dibuat lebih kecil.
i.@21
membuat daftar dari 0 hingga 20 inklusif.-.
melakukan set-kurangi input dari daftar ini.0{
mengambil elemen pertama dari apa yang tersisa, yaitu jumlah terkecil.f=:
mendefinisikan fungsi bernama. Di REPL:Sejak rilis J806 pada November 2017, ada sintaks baru yang menghemat satu byte dengan membiarkan kami menggunakan
i.@21
yang lama(i.21)
dalam konteks ini.sumber
f=:
?i.@21-.]
akan menghemat 1 byte.Golfscript 7
Versi lanjutan dari jawaban Peter Taylor. Komunitas wiki karena saya tidak punya perwakilan untuk mengomentari posnya.
Perbedaannya adalah menggunakan ukuran daftar maks yang diketahui dari pertanyaan alih-alih panjang +1 untuk menyimpan karakter dan menjatuhkan $ yang tidak relevan.
Cobalah online
sumber
Bahan tertawaan - 9 Bytes
Mengambil input dari stdin dalam format {7 6 5 5 1 2 2 4 2 0}
Dijelaskan:
Coba beberapa contoh:
{1 0 7 6 3 11 15 1 9 2 3 1 5 2 3 4 6 8 1 18} 20rzj \\ <]
{5 4 1 5 4 8 2 1 5 4 0 7 7} 20rzj \\ <]
sumber
{0 1 2}
, karena Anda perlurz
satu lebih dari jumlah terbesar. Langsung saja20rzj\\<]
memperbaiki ini dan menyimpan char.Bash + coreutils, 23 byte
Ini mengasumsikan input sebagai daftar
|
(pipa) yang dipisahkan. Misalnya:sumber
"(...)"
sekitar$1
.Ruby, 32 byte
Menentukan fungsi yang
f
akan dipanggil dengan array.sumber
f[[0, 1]]
(di mana kurung luar sintaks doa dan kurung dalam mendefinisikan array).f=
?GolfScript (
109 byte)Mengambil input dari stdin dalam format
[5 4 1 5 4 8 2 1 5 4 0 7 7]
.Demo online
sumber
;
sebelum string input dihitung dalam program itu sendiri?Xojo, 55 byte
sumber
Ruby, 22
Penjelasan
Array
dariInteger
.[0,1,2..20]
.Array
[0,1,2..20]
diurutkan, elemen pertama harus mex.sumber
20
bukan21
, karena input hanya bisa berisi 20 elemen.Haskell, 30
Ini berfungsi untuk daftar semua ukuran dan daftar di luar 20. Ini dapat dibuat 15 byte panjang jika Data.List diimpor:
sumber
Skema - 219
Tidak terlalu kompetitif. Tapi saya suka skema penulisan :),
Berikut adalah kode yang tidak dipisahkan:
sumber
Python, 37 karakter
sumber
range(21)
.f=lambda l,i=0:i in l and f(l,i+1)or i
adalah satu karakter lebih lama dan solusi berulangi=0;l=input()\nwhile i in l:i+=1\nprint i
dua karakter lebih lama (tidak menyimpan input membuatnya diambil berulang kali). Tanpa20
batas, saya pikir pendekatan ini akan menang.C # - 64 karakter
Tidak selaluJarang bahasa golf terbaik, tetapi mudah untuk ditulis dan dimengerti :)sumber
Scala, 18 byte
l
adalah daftar Int.sumber
Java , 91 byte
Cobalah online!
sumber
Java 7,
6966 byte-3 byte terima kasih kepada @LeakyNun
Penjelasan:
Mendukung tidak hanya 0-20, tetapi 0-2147483647 sebagai gantinya (yang sebenarnya menyimpan byte).
Kode uji:
Coba di sini.
Keluaran:
sumber
APL (Dyalog) , 19 byte
Cobalah online!
Saya mungkin kehilangan sesuatu yang penting di sini. Golf sedang berlangsung ...
sumber
TI-BASIC, 24 byte
Jika
Prompt X
diberikan daftar alih-alih nomor tunggal, itu akan secara otomatis membuat daftar bernamaX
yang dapat diakses denganʟX
.sumber
Prompt X:0:While not(prod(ʟX-Ans:Ans+1:End:Ans
Stax , 6 byte
Jalankan dan debug itu
Penjelasan
sumber
APL (Dyalog Classic) , 11 byte
Cobalah online!
sumber
Jeli , 7 byte
Pendekatan lain. Dapat digunakan dalam rantai dengan arity apa pun, dan tidak perlu rantai pemisah atau apa pun.
Karena jawabannya dijamin kurang dari 256, ini juga berfungsi:
Jelly , 5 byte
Cobalah online!
sumber
Powershell, 28 byte
Skrip uji:
Keluaran:
Penjelasan:
$i
sementara$args
array berisi nilai integer+$i
.+$i
.sumber
MathGolf ,
54 byteCobalah online!
Solusi ini dibatasi hanya pada kisaran 0 hingga 20, meskipun ini dapat diperpanjang dengan mudah dengan meningkatkan rentang awal.
Penjelasan:
Atau, solusi 5 byte untuk semua angka:
Cobalah online!
Penjelasan:
sumber
Z
bukanJ
karena saya malas).Perl - 34
Inilah subrutin.
Uji dengan:
sumber
Java, 93
Tidak Disatukan:
sumber
-1
untuk test case[]
.Cobra - 50
sumber
Javascript, 74
Bagus dan sederhana! Perhatikan loop kosong saat.
sumber
JavaScript (E6) 35
Fungsi rekursif, parameter array di input dan mengembalikan
mex
. Tidak terbatas pada 20Uji di konsol FireFox / FireBug
Keluaran
sumber
PHP, 38 Bytes
PHP, 39 Bytes
sumber