Multi-level marketing related challenge.
Teman sebaya ingin mendapat imbalan. Jadi itu menarik N
investor ( N>=1
), setiap investor ke-i berinvestasi x[i]
. Ketika jumlah total melebihi ambang batas, x[0]+x[1]+...+x[N-1] >= T
rekan kerja bisa diberi penghargaan. Tetapi hanya jika kondisi berikut dipenuhi:
- Jumlah minimum investor harus lebih besar dari
M
, (M<=N
) - Untuk setidaknya satu bilangan bulat
k
, di manak>=M
dank<=N
, setiapk
investor harus berinvestasi setidaknyaT/k
masing-masing;
Mengingat N, x[], T, M
Anda harus menentukan apakah hadiah rekan dihasilkan atau tidak (hasil boolean, "ya" atau "tidak"). Kode terpendek menang.
Contoh:
N=5; M=3; T=10000
, untuk menghasilkan hadiah teman, salah satu dari yang berikut harus dipenuhi:
- setiap 3 investasi masing-masing setidaknya 3334
- setiap 4 yang diinvestasikan setidaknya 2500 masing-masing
- semua 5 berinvestasi setidaknya 2000 masing-masing
N=6; M=2; T=5000
:
- setiap 2 investasi masing-masing setidaknya 2500
- 3 investasi masing-masing setidaknya 1667
- setiap 4 investasi setidaknya masing-masing 1.250
- setiap 5 investasi masing-masing setidaknya 1000
- semua 6 berinvestasi masing-masing setidaknya 834
umum: untuk apa pun k
, di mana, k>=M
dan k<=N
:
- setiap
k
dariN
investor menginvestasikan setidaknyaT/k
setiap
Kasus uji:
format:
N, x[], T, M -> correct answer
6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0
6, [0, 60, 0, 60, 60, 0], 180, 3 -> 1
6, [179, 89, 59, 44, 35, 29], 180, 3 -> 0
6, [179, 89, 59, 44, 35, 30], 180, 3 -> 1
6, [179, 89, 59, 44, 36, 29], 180, 3 -> 1
6, [179, 90, 59, 44, 35, 29], 180, 3 -> 0
6, [30, 30, 30, 30, 29, 30], 180, 3 -> 0
6, [30, 30, 30, 30, 30, 30], 180, 3 -> 1
code-golf
decision-problem
xakepp35
sumber
sumber
len(x)
akan lebih pendek dari menulisN
. Itu dibuat, karena untuk array yang dialokasikan secara dinamisx
di C tidak adalen(x)
fungsi langsung - jadi Anda selalu dapat merujuk panjang sebagaiN
. Untuk kenyamanan, Anda dapat mempertimbangkan semua data inputN, x[], T, M
sebagai konstanta yang didefinisikan secara eksternal, atau built-in bahasa.true
dan nilai kebenaran untukfalse
?Jawaban:
Jelly ,
129 byteProgram lengkap yang menerima
x T M
dan mencetak0
jika rekan dihargai dan1
jika tidak.Cobalah online!
Bagaimana?
sumber
0
jika rekan dihargai dan1
jika tidak". (yaitu0
"ya"). Menghemat 1 byte :)05AB1E , 9 byte
Cobalah secara online atau verifikasi semua kasus uji .
Port dari @JonathanAllan jawaban Jelly , jadi juga mengambil input
x T M
dan output0
untuk"yes"
dan1
untuk"no"
. Jika ini tidak diizinkan, dan itu harus dibalik, sebuah trailing_
dapat ditambahkan.Penjelasan:
Alternatif untuk
.ssè
:Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
JavaScript,
5452 byteCobalah online
sumber
[0, 60, 0, 60, 60, 0], 180, 3 -> true
tampaknya tidak berfungsi! 72 byion bersion menanganinya ok. Bug atau fitur?)Retina , 79 byte
Cobalah online! Mengambil input dalam format
[x], T, M
. Tautan termasuk kasus uji. Penjelasan:Konversikan ke unary.
Sortir
[x]
dalam urutan menurun.Kalikan setiap elemen
[x]
dengan indeksnya.Hapus
M-1
elemen pertama dari[x]
.Uji apakah ada elemen yang tersisa
[x]
lebih besar atau sama denganT
.sumber
Perl 6 ,
46 3329 byteCobalah online!
Blok kode anonim yang mengambil input dalam bentuk
list, amount, length of list, minimum amount of investors
dan mengembalikanall
Persimpangan kebenaran / falsey , di mana kebenaran gagal dan falsey berhasil.Penjelasan:
sumber
05AB1E , 6 byte
Masukan diambil dalam urutan
T
,N
,x[]
,M
Output
0
untuk rekan pahala dan1
jika tidakCobalah online! atau sebagai Test Suite
Penjelasan
sumber
*
dengan rentang untuk memotong daftar secara implisit!C # (.NET Core) ,
129, 89 byteEDIT: Terima kasih kepada Kevin Cruijssen karena bermain golf dengan 40 byte sambil menjelaskan mekanisme mengapa!
Cobalah online!
sumber
n
karena Anda tidak menggunakannya di mana pun; dihapusk
karena Anda dapat menggunakannyam
sendiri; menambahkan variabell
untukq.Length
karena Anda menggunakannya dua kali; menggabungkan variabelint c=0,l=q.Length,j;
sehingga Anda tidak perlu tambahanvar
; menghapus tanda kurung yang tidak perlu dengan meletakkan segala sesuatu di badan for-loop; mengubahc>=k
cek menjadic<k
; dan mengubahif(c>0)break;
kem=c>0?l+1:m;
, karena loop berhenti jikam<=l
, mengubahm
untukl+1
menyimpan byte lebihbreak
(dan juga menghemat 2 kurung). :)m=c>0?l+1:m
dapat dihapus sepenuhnya dan&c<1
cek dapat ditambahkan ke loop sebagai gantinya. Dan dengan mengambil inputn
lagi, Anda tidak perluq.Length
lagi tetapi bisa menggunakannyan
.C # (Visual C # Interactive Compiler) dengan flag
/u:System.Linq.Enumerable
, 69 byteCobalah online!
Tanpa bendera, 73 byte
Cobalah online!
sumber
JavaScript, 72 byte
Kode
Cobalah online!
Menerima input dalam format (x [], T, M)
Penjelasan
sumber
Python 3 , 136 byte
Cukup uji kondisi untuk memastikan mereka terpenuhi. 1 jika hadiah diberikan, 0 jika tidak.
Cobalah online!
sumber
Python ,
7165 byteCobalah online!
Fungsi yang tidak disebutkan namanya; port jawaban Jelly saya. Dengan demikian, "ya" adalah
False
dan "tidak"True
. Namun, di sini, kami membuang kasus uji sebagai bagian dari pembalikan dan memanfaatkan kemampuan untuk memulaienumerate
penghitunganM
. (min
juga akan bekerja di tempatall
)sumber
R ,
4342 byte-1 byte dengan menerapkan pendekatan lebih dekat
Cobalah online!
Implementasi R sederhana dari pendekatan Jonathan's Jelly. Saya mencoba banyak variasi tapi ini pips yang terbaik yang bisa saya pikirkan beberapa byte.
1 menyiratkan kegagalan, 0 menyiratkan kesuksesan.
sumber
Japt,
16141311 byteCobalah
sumber
Java 8, 91 (atau 89?) Byte
Port dari # Destroigo 's C # .NET jawaban (setelah saya golf lagi), jadi pastikan untuk membesarkannya!
Mengambil input
N,x,T,M
dan outputtrue
/false
untuk"yes"
/"no"
masing-masing.Karena tantangan secara khusus meminta
boolean
hasil, saya tidak dapat mengembalikan nilai1
/0
apa adanya, karena nilai tersebut tidak benar / bernilai falsey di Java. Jika ada dua nilai output yang berbeda untuk"yes"
/"no"
adalah valid untuk tantangan ini sebagai gantinya,>0
dalam pengembalian dapat dijatuhkan untuk menyimpan dua byte, dalam hal ini akan mengembalikan1
/0
untuk"yes"
/"no"
masing-masing.Cobalah online.
Penjelasan:
sumber
C # (Visual C # Interactive Compiler) , 66 byte
Cobalah online!
Terinspirasi oleh jawaban @ EmbodimentOfIgnorance.
Saya telah menyebutkan ini sebelumnya, tetapi C # 8 memiliki rentang literal yang dapat membuat jawaban ini seperti ini:
Saya melihat tautan ke SharpLab dengan sebuah contoh, tetapi saya tidak bisa membuatnya bekerja sendiri.
Satu hal yang saya ubah adalah
x
dant
nilai adalah desimal. Ini menangani kasus di manat
tidak dapat dibagi olehk
sedikit lebih baik.sumber