Untuk memeriksa apakah daftar bilangan bulat non-negatif seimbang , orang dapat membayangkan menempatkan bobot masing-masing di papan dan kemudian mencoba untuk menyeimbangkan papan pada pivot sehingga bobot relatif yang dirangkum kiri dan kanan pivot adalah sama. Berat relatif diberikan dengan mengalikan berat dengan jaraknya ke pivot (lihat hukum tuas ).
(Sumber: wikipedia )
Gambar ini sesuai dengan daftar [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Daftar ini seimbang karena 5
memiliki jarak 20 ke pivot, 100
jarak 1 dan 5*20 = 100 = 100*1
.
Contohnya
3 1 5 7
#########
^
Dalam hal ini pivot berada tepat di bawah 5
, 3
memiliki jarak 2 dan dan 1
dan 7
memiliki jarak 1. Jadi kedua sisi kiri dan kanan pivot dijumlahkan ke 7
( 3*2 + 1*1
di kiri dan 7*1
di kanan) dan oleh karena itu daftarnya [3, 1, 5, 7]
seimbang.
Namun, perhatikan bahwa pivot tidak harus ditempatkan di bawah salah satu elemen daftar, tetapi juga dapat ditempatkan di antara dua elemen daftar:
6 3 1
#######
^
Dalam hal ini jarak menjadi 0.5, 1.5, 2.5, ...
dan seterusnya. Daftar ini juga seimbang karena 6*0.5 = 3 = 3*0.5 + 1*1.5
.
Pivot hanya dapat ditempatkan tepat di bawah satu angka atau tepat di tengah di antara dua angka, dan bukan misalnya di dua pertiga antara dua angka.
Tugas
Diberikan daftar bilangan bulat non-negatif dalam format wajar apa pun, output truthy
nilai jika daftar dapat diseimbangkan dan falsy
nilai sebaliknya.
Anda dapat mengasumsikan bahwa daftar input berisi setidaknya dua elemen dan setidaknya satu elemen adalah nol.
Ini adalah tantangan kode-golf , jadi jawabannya dengan jumlah byte paling sedikit di setiap bahasa akan menang.
Testcases Sejati
[1, 0]
[3, 1, 5, 7]
[6, 3, 1]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
[10, 4, 3, 0, 2, 0, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 7, 7, 7]
Testis Palsu
[1, 2]
[3, 6, 5, 1, 12]
[0, 0, 2, 0, 1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[6, 3, 2, 4, 0, 1, 2, 3]
[4, 0, 0, 2, 3, 5, 2, 0, 1, 2, 3, 0, 0, 1, 2, 4, 3, 1, 3, 0, 0, 2]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
Banyak tantangan terkait di mana ditemukan saat tantangan ini berpasir : Apakah angka itu seimbang? , Indeks keseimbangan urutan , Saldo satu set bobot pada jungkat-jungkit , Kata-kata Penyeimbang , Akankah saya terbalik? dan Di mana poros itu berada?
You can assume that the input list contains at least two elements and that at least one element is non-zero.
Jawaban:
Pyth,
1210 byteCobalah online
Disimpan 2 byte berkat Tn. Xcoder dan Erik the Outgolfer.
Penjelasan
sumber
y
sebagai pengganti*2
!%ys*VQUQs
Bahasa Wolfram (Mathematica) , 36 byte
Ini adalah pusat masalah massa dalam sistem koordinat dengan asal pada salah satu titik dan kemudian Anda menentukan apakah CM jatuh pada titik kisi di mana lebar kisi = 1/2.
Cobalah online!
sumber
05AB1E , 6 byte
Cobalah online!
Bagaimana?
sumber
[1,1]
(harus jujur). Tampaknya penggandaan implisit tidak benar-benar ada.Jelly , 6 byte
Cobalah online!
Nah, sepertinya Leaky Nun menunjukkan hal yang tidak ada gunanya.
Menggunakan pendekatan Pyth Mnemonic.
Mengembalikan bilangan bulat positif (kebenaran) atau nol (salah).
sumber
LḶ
sebagai gantinya (meskipun itu akan berhasil untuk semua kasus uji). EDIT: Oooh, sekarang aku memikirkannya lagi, sepertinya begitu ... ( b | a ⇔ b | a + b duh)R , 34 byte
Cobalah online!
Mengambil input sebagai vektor. Port jawaban mnemonic . Mengembalikan
1x1
matriks.sumber
Japt , 10 byte
Cobalah online!
Penjelasan:
Pengembalian
1
untuk kebenaran,0
untuk kepalsuan.sumber
Python 2 , 41 byte
Output adalah melalui kode keluar, jadi 0 benar dan 1 palsu.
Cobalah online!
sumber
Julia ,
3127 byte4 byte disimpan berkat @Dennis
Cobalah online!
sumber
Ruby , 47 byte
Disimpan 2 byte berkat Tn. Xcoder
Cobalah online!
sumber
C,
140137 byteCobalah online!
sumber
Python 3 , 51 byte
Cobalah online!
sumber
Perl 6 , 23 byte
Menguji
Menggunakan algoritma dari berbagai entri lainnya.
Diperluas:
sumber
Japt,
11108 byteAwalnya terinspirasi oleh solusi Mnemonic
Cobalah
13 byte disimpan berkat ETHproductions.Penjelasan
Input array secara implisit
U
. Kurangi dengan penambahan (x
), gandakan setiap elemen dengan indeks berbasis-0 (*
) dalam proses. Periksa apakah hasilnya dibagi rata (v
) dengan jumlah input asli (Ux
) dengan setiap elemen dikalikan 0,5 (*½
).sumber
m* x*2 vUx
. Ini membuat saya bertanya-tanya apakahm* x*2
dapat dikurangi lebih lanjut ...x*
dan periksa apakah itu habis dibagiUx*½
:)XY{X*Y}
)C # , 71 byte
Golf
Tidak disatukan
Kode lengkap
Rilis
71 bytes
- Solusi awal.Catatan
Saya mungkin memiliki, atau mungkin tidak, secara terang-terangan "meminjam" solusi Dennis Python 2 ...
sumber
Haskell , 39 byte
Cobalah online!
sumber
APL (Dyalog) , 15 byte
Cobalah online!
Terlihat sangat ungolfy bagi saya ...
sumber
Python 2 ,
7875 byteterima kasih kepada Tn. Xcoder untuk -3 byte
Cobalah online!
sumber
0 in
. Juga tidak perlu0
masukrange(0,len(l)*2)
..Julia 0,6 , 25 byte
Cobalah online!
sumber
PHP ,
139128 byteCobalah online!
die
berkat manassehkatzsumber
die(1)
dandie(0)
dan Hemat 4 byte dengan menggunakan kode keluar bukannya string dicetak.Swift , 76 byte
Cobalah online!
sumber
Perl 5 , 55 +1 (
a
) = 56 byteCobalah online!
sumber