Tugas
Misalkan p
pepole harus membagi tagihan; masing-masing diidentifikasi oleh tiga yang (Name, n, k)
terdiri dari:
Name
: nama ;n
: jumlah yang harus dia bayar ;k
: jumlah yang sebenarnya dia bayar .
Tantangannya di sini adalah untuk mengetahui berapa banyak yang berutang siapa.
Asumsi
Input dan output dapat dalam format apa pun yang nyaman.
p
n
k
p
Nama adalah string unik dengan panjang arbitrer, terdiri dari karakter alfabet huruf kecil.
Larutan
Solusinya diwakili oleh set transaksi minimum di antara p
orang - orang; khususnya mereka tiga kali lipat(from, to, amount)
from
:name
dari orang yang memberi uang;to
:name
dari orang yang menerima uang;amount
: jumlah uang transaksi.
CATATAN : Jumlah semua hutang ( n
) dapat berbeda dari jumlah semua jumlah yang sudah dibayarkan ( k
). Dalam hal ini, Anda harus menambahkan dalam output ('owner', Name, amount)
atau (Name, 'owner', amount)
dalam format yang Anda pilih. Nama apa pun tidak akan pernah owner
. String 'pemilik' fleksibel.
Jika ada beberapa set mimimum, pilih satu dengan jumlah minimum semua jumlah transaksi (nilai absolut); dalam kasus dasi, pilih salah satunya.
Kasus uji:
inputs(Name,n,k):
[('a',30,40),('b',40,50),('c',30,15)]
[('a',30,30),('b',20,20)]
[('a',30,100),('b',30,2),('c',40,0)]
[('a',344,333),('b',344,200),('c',2,2)]
[('a',450,400),('b',300,300),('c',35,55)]
outputs(from, to, amount):
[('c','a',10),('c','b',5),('owner','b',5)] or [('c','b',10),('c','a',5),('owner','a',5)]
[]
[('owner','a',2),('b','a',28),('c','a',40)] PS: [('owner','a',2),('b','a',68),('c','b',40)] has the same number of transactions, but it is not a valid answer, because the total amount of its transaction is greater than that of the proposed solution.
[('a','owner',11),('b','owner',144)]
[('a','owner',30),('a','c',20)]
Ini adalah kode-golf: kode terpendek menang .
Jawaban:
JavaScript (ES6),
252 227 223 222215 byteMengambil input sebagai
[[n0, k0, name0], [n1, k1, name1], ...]
.Transaksi dalam solusi dapat berupa positif atau negatif. Pemilik disebut tidak terdefinisi .
Cobalah online!
Berkomentar
sumber