Pengantar:
Saya pikir kita semua pernah mendengarnya, tetapi di sini ringkasan yang sangat singkat: Nuh mengumpulkan dua dari setiap spesies hewan di planet ini, jantan dan betina, untuk menyelamatkan Tabutnya saat banjir besar. Kutipan sebenarnya dari Alkitab adalah:
Kejadian 7: 2-3
Anda harus membawa tujuh dari setiap jenis binatang yang bersih, laki-laki dan pasangannya, dua dari setiap jenis binatang yang tidak bersih, laki-laki dan pasangannya, dan juga tujuh dari setiap jenis burung di langit. , pria dan wanita, untuk memelihara keturunan mereka di muka bumi.
sumber
Tetapi demi tantangan ini kita akan mengabaikan bagian bersih / najis dan bagian di mana ia mengambil tujuh dari setiap hewan. Tantangan ini hanya tentang bagian ini:
dua dari setiap jenis binatang
najis, jantan dan pasangannya
Tantangan:
Memasukkan:
Anda diberi daftar bilangan bulat positif (dalam urutan acak).
Keluaran:
Dua nilai berbeda yang menunjukkan apakah itu 'Daftar Nuh' atau tidak. Ini tidak perlu harus menjadi nilai true / falsey , jadi bisa juga 0
/ 1
di Java / C #, atau 'A'
/ 'B'
dalam bahasa apa pun, untuk memberikan beberapa contoh.
Kapan daftar 'Daftar Nuh'? Ketika ada tepat dua dari setiap bilangan bulat dalam daftar.
Aturan tantangan:
- I / O fleksibel. Input dapat berupa daftar / larik / aliran bilangan bulat / mengapung / string, atau membaca satu per satu dari STDIN. Output dapat berupa dua nilai berbeda , dikembalikan dari fungsi atau output ke STDOUT / file.
- Bilangan bulat dalam daftar input dalam urutan acak, dan dijamin positif dalam kisaran .
- Daftar input dijamin tidak kosong.
- Memiliki bilangan bulat kelipatan dua kali hadir di atas 2 (yaitu 4, 6, 8, dll.) Akan menjadi falsey. Yaitu
[6,4,4,6,4,7,4,7]
adalah falsey, meskipun Anda masih bisa membuat pasangan yang sama seperti ini:[[4,4],[4,4],[6,6],[7,7]]
.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O standar , sehingga Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Truthy:
[7,13,9,2,10,2,4,10,7,13,4,9]
[1,2,3,1,2,3]
[10,100,1000,1,100,10,1000,1]
[123,123]
[8,22,57189,492,22,57188,8,492,57188,57189,1,1]
Falsey:
[6,4,4,6,4,7,4,7]
[2,2,2,2,2,2]
[5,1,4,5,1,1,4]
[77,31,5,31,80,77,5,8,8]
[1,2,3,2,1]
[44,4,4]
[500,30,1]
[1,2,1,1]
[2,4,6,4,4,4]
[2,23,34,4]
[2,23,3,3,34,4]
sumber
Jawaban:
Python 3 , 31 byte
Cobalah online!
Python 2 , 33 byte
Cobalah online!
sumber
05AB1E , 4 byte
Cobalah online! atau sebagai Test Suite
Penjelasan
sumber
¢2QP
, tetapi menggunakanΘ
juga merupakan alternatif yang bagus. :){ιË
, tetapi tentu saja itu gagal ketika bilangan bulat terjadi 4 kali.Brachylog , 4 byte
Cobalah online!
Penjelasan
sumber
R , 20 byte
-6 byte terima kasih kepada digEmAll dengan mengubah metode input
Cobalah online!
Keluaran
FALSE
jika daftar Nuh, danTRUE
sebaliknya. Bekerja untuk semua tipe input, tidak hanya integer.Menghitung jumlah setiap nilai dalam daftar, dan memeriksa apakah ada hitungan yang berbeda dari 2.
sumber
APL (Dyalog Extended) , 5 byte SBCS
Cobalah online!
Benarkah itu ...
2¨
dua untuk setiap elemen≡
identik dengan⍧⍨
selfie count-in (jumlah elemen sendiri dalam diri)?
sumber
C # (Visual C # Interactive Compiler) ,
39, 32 byteTerima kasih kepada @Expired_Data
Cobalah online!
sumber
Haskell , 33 byte
Cobalah online!
Untuk setiap elemen input, kami memastikannya muncul dua kali dalam daftar input.
sum[1|b<-x,b==a]
adalah versi golflength(filter(==a)x)
.sumber
Perl 6 , 18 byte
Cobalah online!
.Bag
mengubah daftar input menjadiBag
--a set dengan multiplisitas.{*}
ekstrak semua multiplisitas..all
menciptakan dan-junction dari multiplisitas.== 2
menghasilkan persimpangan lain dari Boolean, masing-masing bernilai true jika multiplisitasnya 2.so
menghancurkan persimpangan ke Boolean tunggal.sumber
J , 10 byte
Cobalah online!
sumber
[:*/2=1#.=
Saya benar-benar ingin menghapus topi itu tetapi tidak tahu caranya.2*/@:=1#.=
, juga 10 byte@:
berguna juga di sini.=
, yang anehnya bermanfaat dalam skenario golf khususMS SQL Server 2017 ,
152150146 byteVersi yang dapat dibaca:
Cobalah di SQL Fiddle !
-2 byte terima kasih kepada Kevin Cruijssen
sumber
c
dapat dihapus setelahCOUNT(*)
?Haskell ,
6145 byteCobalah online!
Terima kasih kepada @KevinCruijssen untuk 12 byte, dan @nimi untuk 4 lainnya.
Pertama-tama Haskell menjawab, tetapi ternyata sangat mudah dilakukan. Dapat
mungkinakan golfed banyak. Inti masalah...sumber
all(True==).map(2==)
bisaall(2==)
. :)length
keall
:all((2==).length).group.sort
. Tidak perlu memberi fungsi nama, yaitu drop thef=
.all(2==)
ketika saya menguji di GHCi. Terima kasih Kevin dan Nimi, saya akan memperbarui jawabannya.all(True==)
adalahand
.JavaScript (ES6), 37 byte
Mengembalikan nilai false untuk Noah atau true untuk non-Noah.
Cobalah online!
Berkomentar
sumber
APL (Dyalog Unicode) , 8 byte SBCS
Fungsi awalan diam-diam anonim. Pengembalian
0
/1
.Cobalah online!
...
⌸
untuk setiap nilai sebagai argumen kiri dan indeks kemunculan nilai tersebut sebagai argumen benar, panggil:≢
tally argumen yang benar (kejadian)∘
kemudian⊢
mengembalikannya, mengabaikan argumen kiri2=
Daftar Boolean yang menunjukkan penghitungan 2∧/
DAN-reduksi (yaitu apakah semua itu benar?)sumber
PowerShell ,
663726 byte-11 byte berkat mazzy
Cobalah online!
Kelompokkan
$l
dan ambil semua jumlah nilai yang cocok. Kemudian filter semua jumlah 2 dari daftar ini. Jika daftar itu kosong, itu adalah nomor Nuh; jika tidak, itu akan diisi dengan jumlah non-2. Tidak mencatat daftar akan menghasilkanTrue
jika kosong danFalse
diisisumber
group
menjadi sesuatu yang adaElixir , 52 byte
Cobalah online!
Lengkap Elixir noob di sini :-D.
sumber
PHP , 60 byte
Cobalah online!
PHP memiliki built-in yang bagus untuk ini, meskipun pada 20 karakter,
array_count_values()
bukan yang sangat golf.sumber
Mathematica,
2524 byteCobalah online!
The
Tally
fungsi mengembalikan daftar dari bentuk , yang kemudian dicocokkan pola yang memeriksa apakah semua hitungan 2.{{element, count}, ...}
sumber
Attache , 16 byte
Cobalah online!
Penjelasan
Alternatif
17 byte:
{All&_!`=&2@`~&_}
18 byte:
{All[`=&2@`~&_,_]}
23 byte:
Same@2&`'@Sum@Table[`=]
25 byte:
Same«2'Sum@Table[`=,_]»
25 byte:
Same<~2'Sum@Table[`=,_]~>
25 byte:
{Same[2'Sum@Table[`=,_]]}
35 byte:
{Commonest@_==Unique@_and _[0]~_=2}
sumber
TI-Basic, 47 Bytes
Saya penggemar berat TI-Basic. Ini bukan bahasa yang bagus untuk tujuan apa pun, tetapi saya menikmati pemrograman (dan bermain golf) di dalamnya.
Bagaimana cara kerja kode ini?
Pertama, itu mengurutkan daftar.
Kedua, ia menggunakan fungsi Daftar to untuk menghasilkan daftar lain, yang merupakan perbedaan antara elemen daftar yang diurutkan. (Misalnya, △ Daftar ({1,3,7,8}) akan menghasilkan {2,4,1}). Berlaku untuk daftar ini, yang mengubah setiap elemen yang bukan nol dari daftar menjadi nol dan setiap nol menjadi satu.
Kemudian, program memeriksa bahwa daftar yang dihasilkan sesuai dengan pola
{1, 0, 1, 0, ...}
, yang hanya akan benar jika daftar asli adalah daftar Nuh.Ada juga pemeriksaan tambahan bahwa panjang daftar genap, untuk menangkap beberapa kasus tepi.
Berikut adalah beberapa tangkapan layar dari kasus uji:
sumber
Julia 1.0 , 32 byte
Cobalah online!
Membagi setiap elemen dari array input
l
oleh transpose yangl'
memberikan matriks. Menjumlahkan lebih dari matriks ini sambil menerapkanisone
ke setiap elemen memberikan dua kali panjangl
jika setiap elemen muncul tepat dua kali.sumber
K (oK) , 9 byte
Larutan:
Cobalah online!
Penjelasan:
sumber
Julia ,
30 karakter26 byteTerima kasih, H.PWiz untuk trik ini!
Cobalah online!
sumber
!a=all(x->2==sum(a.==x),a)
26 byte. NB. yang saya sarankan menghitung dalam byte di situs ini!
untuk fungsi anonimJelly , 5 byte
Cobalah online!
Tautan monadik yang mengambil daftar bilangan bulat dan mengembalikan 1 jika daftar Nuh dan 0 jika tidak.
sumber
VDM-SL , 64 byte
Penjelasan
VDM bekerja terutama seperti pernyataan logika orde kedua.
Karena Anda tidak dapat TIO VDM inilah keluaran dari sesi debug
sumber
MATL , 6 byte
Cobalah online!
0 untuk jujur, 1 untuk palsu. Jawaban Ports Robin Ryder .
MATL , 6 byte
Cobalah online!
1 untuk kebenaran, 0 untuk palsu. Jawaban Ports Luis Mendo .
sumber
Ruby , 29 byte
Cobalah online!
sumber
Kotlin ,
96776951 byteCobalah online!
sumber
Excel, 45 byte
Asumsikan data dalam kolom A, dengan ini dimasukkan dalam sel apa pun selain dari satu di kolom A. Mengembalikan BENAR jika ada pasangan dan SALAH jika mereka tidak cocok pasangan
Mencoba menghapus / 2 dan menambahkan 0,5 untuk penjumlahan, tetapi ini tidak berhasil.
Mencoba menghitung frekuensi yang <> 2 dan ini tidak mengembalikan jumlah yang tepat.
sumber
Oktaf / MATLAB,
2221 byteFungsi anonim yang input vektor numerik, dan output
0
jika vektor memenuhi kondisi atau1
sebaliknya.Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Bash , 26 byte
Kode keluar bukan nol jika daftar adalah Nuh.
Cobalah online!
sumber