Latihan 1: Consensus & Distributed Agreement — System Design
Latihan 1 dari materi Consensus & Distributed Agreement di System Design — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi dua function untuk aturan mayoritas (quorum).
hasQuorum(votes): votes adalah array boolean, true = setuju, false = menolak atau gak terjangkau. Hitung yang true, lalu kembalikan true kalau jumlahnya lebih dari separuh panjang array (yes > votes.length / 2), selain itu false.
canCommit(clusterSize, yesVotes): kembalikan true kalau yesVotes > clusterSize / 2, selain itu false.
Pakai >, bukan >=: separuh persis belum mayoritas.
Lima baris console.log(...) di kode awal sudah ada, biarkan begitu. Output-nya harus persis lima baris ini, berurutan:
true
false
true
true
false
Kedua function juga dipanggil langsung:
canCommit(4, 2) harus false.
canCommit(4, 3) harus true.
hasQuorum([false, false, false, false, false]) harus false.
Hint
Mayoritas artinya lebih dari separuh, bukan separuh atau lebih. Untuk 5 suara butuh lebih dari 2,5, jadi minimal 3.
hasQuorum: hitung elemen true di array (votes.filter(Boolean).length), lalu bandingkan dengan votes.length / 2. canCommit: bandingkan yesVotes dengan clusterSize / 2. Dua-duanya pakai >.