Diberikan array angka dengan length >=3
danlength % 3 == 0
[1, 2, 3, 4, ...]
Anda akan membaginya dalam sub-array dengan panjang 3
[[1, 2, 3], [4, 5, ...], [...
Dan mengembalikan array dengan
- [0] => Jumlah case dalam sub-array di mana semua angka sama
- [1] => Jika semua angka dalam sub-array tidak sama, jumlah kasus dalam sub-array di mana hanya 2 angka yang sama
Contoh dan uji kasus:
- Input:
[2, 4, 2, 5, 5, 5, 4, 2, 1, 3, 3, 1]
output[1, 2]
Hal ini karena
[[2, 4, 2], [5, 5, 5], [4, 2, 1], [3, 3, 1]]
^ ^ ^ ^ ^ ^ ^
equal all equal equal
jadi 2 equal
dan 1all equal
[3,5,6,5,5,7,6,6,8,7,7,7,3,4,2,4,4,3] => [1, 3]
[3,3,3,4,4,4,5,5,5,6,6,6,5,4,3] => [4, 0]
[3,4,5,6,7,8,9,8,7,6,5,4,3,2,1] => [0, 0]
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
PD: Permintaan maaf untuk bahasa Inggris saya.
code-golf
array-manipulation
Luis felipe De jesus Munoz
sumber
sumber
Jawaban:
Oktaf ,
605250 byteCobalah online!
Disimpan 8 byte berkat Luis!
Penjelasan:
Membentuk kembali input ke dalam matriks dengan 3 baris, dan jumlah kolom yang sesuai. Kemudian mengurutkan masing-masing kolom, dan menghitung perbedaan antara elemen pada baris yang berbeda. Ini memberikan matriks dengan dua baris, di mana angka identik akan memiliki nol, dan angka yang berbeda akan memiliki angka positif. Ini dinegasikan, sehingga semua elemen yang sama
1
, dan semua yang tidak sama0
. Kami kemudian jumlah masing-masing kolom, memberikan kita salah satu dari tiga alternatif:0 = All elements are unequal
,1 = Two elements are equal
dan2 = All elements are equal
. Kami kemudian memeriksa berapa banyak>1
, dan berapa banyak tepatnya==1
.sumber
JavaScript (ES6), 70 byte
Cobalah online!
Bagaimana?
Kami mengekstrak setiap triplet [a, b, c] secara rekursif dari array input dan memperbarui dua counter t (tiga-of-a-kind) dan p (pair), menggunakan rumus berikut:
Ada 5 kemungkinan kasus yang dirinci di bawah ini, dari 'semua sama' ke 'semua berbeda'.
sumber
[0]
dan[1]
mengindeks "Catatan: mengembalikan array 3-elemen dengan[0]
dan[1]
mengembalikan nilai yang sesuai, dan[2]
mengembalikan nilai dummy (jumlah 3-daftar tanpa elemen yang sama). Ini benar-benar valid sesuai dengan aturan saat ini. " codegolf.stackexchange.com/a/166082/31257 62 bytesa=>a.map(_=>++r[--new Set(a.slice(i,i+=3)).size],r=[i=0,i])&&r
Pyth,
13141211 byteCoba di sini
Penjelasan
sumber
05AB1E , 10 byte
Cobalah online!
Penjelasan
sumber
ya ,
1716 byteCobalah online!
Untuk k , versi 17 byte adalah:
+/(1 2=#=:)'0N 3#
.sumber
0N 3
->0N3
(terima kasih kepada keanehan parsing di oK)R , 70 byte
Cobalah online!
Versi sebelumnya :
R , 82 byte
Cobalah online!
R , 93 byte
Cobalah online!
sumber
a=!1:2
sedikit lebih pendek.seq(0,a=v)
bukan0:(length(v)-1)
;) Sayangnya saya tidak tahu oktaf jadi saya tidak bisa membaca jawaban itu dengan mudah ...apply
ingunique
tetapi gagal untuk kasus tes ketiga.by
Pendekatan Anda lebih amanJava (JDK 10) , 116 byte
Cobalah online!
Catatan: mengembalikan array 3-elemen dengan
[0]
dan[1]
mengembalikan nilai yang sesuai, dan[2]
mengembalikan nilai dummy (jumlah 3-daftar tanpa elemen yang sama). Ini benar-benar valid sesuai dengan aturan saat ini.sumber
PowerShell , 106 byte
Cobalah online!
Persis seperti yang tertulis di kaleng. Loop atas input
$a
. Setiap iterasi, dikupas$x,$y,$z
sebagai tiga elemen berikutnya. Tesif
mereka semua sama dan jika begitu, kenaikan$i
.Else
, bertambah$j
jika setidaknya satu pasangan sama. Setelah loop selesai, output$i
dan$j
sebagai bilangan bulat.Jadi ... banyak ... dolar ...
sumber
Retina 0.8.2 , 68 byte
Cobalah online! Tautan mencakup kotak uji dengan tajuk untuk dikonversi ke format yang diinginkan dari satu nilai per baris. Penjelasan:
Kumpulkan tiga nilai pada setiap baris dengan pemisah dan duplikat yang pertama di akhir.
Hitung jumlah pasangan duplikat.
Hitung jumlah
3
s dan1
s.sumber
Jelly ,
98 byte-1 terima kasih kepada Dennis (gunakan alias baru untuk
L€
,Ẉ
)Cobalah online!
sumber
Stax , 8 byte
Jalankan dan debug itu
sumber
Common Lisp, 113 byte
Cobalah online!
Menggunakan fakta bahwa pada Common Lisp
(= x y z)
memberikan true jika ketiga elemen sama, dan(/= x y z)
memberikan true jika tidak ada pasangan angka yang sama.sumber
Japt,
1413 byteCobalah
Penjelasan
sumber
Python 2 ,
777265 byteCobalah online!
7 byte disimpan melalui trik pintar dari xnor
sumber
zip(*[iter(a)]*3)
.Retina , 23 byte
Cobalah online!
Penjelasan
Membagi input di setiap ruang ke-3 mulai dari (berbasis-0) ke-2, yaitu membagi input menjadi kelompok-kelompok tiga.
Pada setiap baris (
%
) hitung jumlahC
(q
) nilai unik ( ) (\S+
).Hitung jumlah
1
s dan cetaklah dengan trafeed linefeed (\
), tetapi lakukan dalam dry-run (*
) agar kita tidak kehilangan hasil sebelumnya.Hitung jumlah
2
s (dan cetak secara otomatis).sumber
J ,
1615 byte-1 byte berkat cole!
Cobalah online!
Cukup banyak pendekatan yang sama dengan sebagian besar solusi.
Penjelasan:
sumber
#@~.
->#@=
Japt ,
2419 byteCobalah online!
sumber
Stax , 14 byte
Jalankan dan debug itu
sumber
[3,5,6,5,5,7,6,6,8,7,7,7,3,4,2,4,4,3]
keluaran[2,3]
sebagai gantinya[1,3]
[3,3,3,4,4,4,5,5,5,6,6,6,5,4,3]
keluaran[1,0]
sebagai gantinya[4,0]
[3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
keluaran[5,0]
sebagai gantinya[0,0]
[1,1,1]
. Jika Anda menggunakan2(
bukan1T
itu akan selalu memangkas / pad dengan ukuran tepat 2.Haskell , 90 byte
Cobalah online!
Terlihat agak aneh ...
sumber
Bahasa Wolfram (Mathematica) , 49 byte
Disimpan dua byte berkat Martin Ender.
Cobalah online!
sumber
Eliksir , 92 byte
Pertama, potong daftar menjadi ukuran panjang 3
chunk(a,3)
Kedua, itu mengkonversi menemukan panjang setiap elemen, uniqified;
map chunk(a,3),&(length uniq&1)
.Akhirnya, ia mengembalikan array yang terdiri dari berapa kali daftar yang dihasilkan sama dengan satu
count(c,&(&1==1))
dan berapa kali daftar yang dihasilkan sama dengan duacount(c,&(&1==2))
.Cobalah online!
sumber
Prolog (SWI) , 80 byte
Cobalah online!
sumber
Tcl , 111 byte
Cobalah online!
Tcl , 112 byte
Cobalah online!
Tcl , 114 byte
Cobalah online!
sumber
Ruby , 59 byte
Cobalah online!
sumber
Tcl , 98 byte
Cobalah online!
menggunakan
-unique
opsilsort
perintah. Saya menamai1
dan2
variabel saya untuk kenyamanan, sulit sepertinya kode tidak biasaset 1 0
:)sumber
C # (Visual C # Interactive Compiler) , 108 byte
Cobalah online!
Kurang bermain golf ...
sumber