Latihan 1: git bisect untuk Regresi — Debugging

Latihan 1 dari materi git bisect untuk Regresi di Debugging — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi findFirstBad(commits, isBad), binary search yang dipakai git bisect.

Langkahnya:

  1. Simpan low = 0, high = commits.length - 1, dan jawaban = -1.
  2. Selama low <= high, ambil mid = Math.floor((low + high) / 2) dan panggil isBad(commits[mid]).
  3. Rusak? Simpan jawaban = mid, lalu high = mid - 1. Bagus? low = mid + 1.
  4. Kembalikan jawaban: index commit rusak pertama, atau -1 kalau gak ada yang rusak.

countCalls(commits, isBad) di kode awal sudah membungkus isBad dengan penghitung dan mengembalikan { firstBad, calls }. Biarkan function itu dan semua console.log-nya. Output-nya harus persis enam baris ini, berurutan:

  1. 7
  2. true (paling banyak 5 panggilan untuk 10 commit)
  3. 742
  4. true (paling banyak 11 panggilan untuk 1.000 commit)
  5. -1
  6. 0

Ada juga dua cek lain: 64 commit dengan bug mulai di 50 harus menghasilkan [50, true] (50, dengan paling banyak 7 panggilan), dan untuk [0, 1, 2, 3] hasilnya harus [-1, 0] kalau gak ada yang rusak dan kalau semuanya rusak.

Hint