Hukum Kirchhoff mengatakan bahwa ketika Anda menjumlahkan semua arus (positif untuk arus yang menuju persimpangan, dan negatif untuk arus yang meninggalkan persimpangan), Anda akan selalu mendapatkan hasilnya 0.
Lihatlah diagram berikut:
Menggunakan hukum Kirchhoff, Anda dapat melihat bahwa i1 + i4 - i2 - i3 = 0, jadi i1 + i4 = i2 + i3.
Diberikan dua daftar, satu dengan semua arus masuk persimpangan dan satu dengan semua arus meninggalkan persimpangan kecuali satu, menampilkan yang terakhir.
Testcases:
[1, 2, 3], [1, 2] = 3
[4, 5, 6], [7, 8] = 0
[5, 7, 3, 4, 5, 2], [8, 4, 5, 2, 1] = 6
Daftar kedua selalu memiliki satu item kurang dari daftar pertama. Outputnya tidak boleh negatif. Program terkecil menang.
code-golf
array-manipulation
electrical-engineering
Enam puluh enam
sumber
sumber
Jawaban:
Jelly, 2 byte
Coba di sini!
Mengambil arus yang masuk dalam argumen pertama, dan arus yang tersisa dalam argumen kedua.
_
kurangi mereka berpasangan, meninggalkan elemen tunggal dari daftar yang lebih lama apa adanya, danS
menjumlahkan hasilnya.sumber
Haskell, 14 byte
Contoh penggunaan:
( (.sum).(-).sum ) [5,7,3,4,5,2] [8,4,5,2,1]
->6
.Jumlahkan setiap daftar dan ambil perbedaannya.
sumber
CJam,
86 byteInput menggunakan dua array gaya CJam.
Jalankan semua test case. (Ini membaca beberapa kasus uji sekaligus dan termasuk kerangka kerja untuk memproses setiap baris secara individual, membuang hasil yang diharapkan dari input.)
Penjelasan
.-
berfungsi dengan baik karena kami dijamin bahwa daftar pertama selalu lebih panjang daripada yang kedua. (Kalau tidak, elemen asing dari daftar kedua akan ditambahkan ke hasil yang akan menambahkannya ke jumlah alih-alih mengurangkannya.)sumber
MATL , 3
4.0byteInputnya adalah: meninggalkan arus terlebih dahulu, kemudian memasuki arus.
Cobalah online!
sumber
Javascript, 36 byte
Tampilkan cuplikan kode
sumber
05AB1E , 4 byte
Kode:
Penjelasan:
Terima kasih kepada Luis Mendo karena mengingatkan saya bahwa saya perlu menerapkan fungsi gabungan. Jika saya sudah menerapkannya lebih cepat, itu akan menjadi 3 byte:
Versi yang tidak bersaing (3 byte):
Daftar pertama adalah daftar meninggalkan saat ini, yang kedua adalah daftar masuk saat ini. Kode:
Penjelasan:
Menggunakan pengodean CP-1252.
sumber
Mathematica,
1711 byteCukup sederhana.
sumber
Gangguan Umum, 40
sumber
Perl 6 , 11 byte
Pemakaian:
sumber
Python 3, 24 byte
atau
Python 2, 19 byte
tergantung apakah saya harus mencetak hasilnya atau hanya membuat fungsi yang mengembalikannya.
sumber
ES6, 39 byte
Karena saya ingin menggunakannya
reduceRight
.sumber
Python 2, 30 byte
sumber
Pyth, 6 byte
Penjelasan
Coba di sini
sumber
K5, 5 byte
Selisih lebih dari (
-/
) jumlah lebih dari (+/
) masing-masing ('
).Beraksi:
sumber
Pyth, 5 byte
Cobalah online. Suite uji.
M
aps
um pada kedua daftar input, laluF
pengurangan lama (-
).Ini juga dapat ditulis sebagai
-sQsE
, yang mengambil daftar pada dua baris.sumber
𝔼𝕊𝕄𝕚𝕟, 5 karakter / 7 byte
Try it here (Firefox only).
Wut.
Penjelasan
sum(input1) - sum(input2)
sumber
Common Lisp REPL, SBCL
2824 bytestulis ini ke dalam REPL:
kemudian tulis daftar input seperti ini:
Saya harap tidak apa-apa menggunakan format daftar seperti itu (alih-alih misalnya
'(2 3 4)
) saya menggunakan jawaban coredump sebagai formula untuk solusi saya dan kemudian mencapai efek perhitungannya dengan cara yang berbeda.Penjelasan
Membiarkan
e_1,...,e_n
menjadi elemen daftar pertama danf_1,...,f_{n-1}
menjadi elemen daftar kedua. Kami ingin mengevaluasi ekspresi.(-(+ e_1 e_2 ... e_n)f_1 f_2 ...f_{n-1})
Ini berarti mengurangi elemen dari daftar kedua dari jumlah elemen dari daftar pertama. Ekspresi yang dibutuhkan dikonstruksi seperti ini:backqoute menghentikan evaluasi
#1=
menghemat sedikit menulis, mengingat,@(read)
,@
menghentikan efek backquote (sehingga (baca) akan dievaluasi) dan mengeluarkan elemen dari daftar.(read)
meminta input#1#
"memuat" Objek Lisp disimpan oleh#1=
#.
melakukan evaluasi representasi cetak dari objek Lispsumber