Langsung ke konten
nalar

Sudah lama ngoding, tapi masih buntu di tes logika?

Nalar melatih cara berpikirnya, bukan sintaks. Pelajaran 5 menit dengan animasi dari kode asli, bisa dari HP.

function solution(n) {  let count = 0  for (let i = 1; i < n; i++)    if (i % 3 === 0) count++  return count}

Apa yang dikembalikan solution(10)?

Kerja harian dan tes logika melatih otot yang beda

Kamu tidak kurang pengalaman. Tes logika cuma mengukur hal yang jarang dipakai di kerjaan.

Kerja harian melatih

  • Merangkai framework, API dan library
  • Mencari jawaban di docs dan contoh kode
  • Debug pakai log dan debugger
  • Ada waktu berhari-hari dan review dari tim

Tes logika meminta

  • Mengubah soal pendek jadi langkah-langkah
  • Menelusuri loop di kepala, tanpa debugger
  • Menemukan edge case sebelum tes tersembunyi menemukannya
  • Memilih pola yang muat dalam batas waktu

Satu pelajaran, satu ide

Setiap pelajaran 5 sampai 9 langkah pendek. Kebanyakan cukup diketuk. Ini tiga di antaranya, diambil dari pelajaran asli.

  1. 1/3 · Penjelasan

    Lihat kodenya jalan

    Animasinya dibuat dari kode yang benar-benar dijalankan. Setiap langkah menandai apa yang berubah.

    Dari pelajaran 4.4: Two sum dengan map
    nums(4)
    1. 2
    2. 7
    3. 11
    4. 15
    need
    belum ada
    seen
    belum ada

    Panggil solution([2, 7, 11, 15], 9).

    1, baris yang sedang jalanfunction solution(nums, target) {
    2 const seen = new Map()
    3 for (let i = 0; i < nums.length; i++) {
    4 const need = target - nums[i]
    5 if (seen.has(need)) {
    6 return [seen.get(need), i]
    7 }
    8 seen.set(nums[i], i)
    9 }
    10}
  2. 2/3 · Tebak hasilnya

    Tebak dulu, baru dijalankan

    Kamu memilih jawaban, lalu kodenya jalan. Setiap pilihan salah punya penjelasannya sendiri.

    Dari pelajaran 2.2: Batas loop

    Tebak hasilnya

    function solution(s) {  let out = ""  for (let i = 0; i <= s.length; i++) {    out += s[i]  }  return out}

    Perhatikan <=. Apa yang di-return untuk "abc"?

  3. 3/3 · Susun kodenya

    Susun barisnya, tes yang menilai

    Baris kode yang diacak kamu susun lagi. Hasilnya dicek dengan test case, seperti di tes.

    Dari pelajaran 2.2: Batas loop
    1. function solution(nums) {
    2. const out = []
    3. for (let i = 0; i < nums.length - 1; i++) {
    4. out.push(nums[i] + nums[i + 1])
    5. }
    6. return out
    7. }

    Baris yang tersedia. Tidak semua dipakai.

    • for (let i = 0; i < nums.length; i++) {
    • for (let i = 1; i < nums.length - 1; i++) {

    Test case

    • solution([1, 2, 3]) → [3, 5]
    • solution([2, 2]) → [4]
    • solution([5]) → []
    • solution([]) → []
    • solution([1, -1, 4, 0]) → [0, 3, 4]

Isi kursus

Mulai dari cara membaca soal, lalu pola yang paling sering keluar. Modul baru terbit bertahap.

Bagian 1 · Cara berpikir

  1. 1Membaca soalPecah soal jadi bagian yang jelas, kerjakan contohnya dengan tangan, cari edge case, lalu tulis rencana sebelum kode.4 pelajaran + tantangan
  2. 2Menelusuri kodeJalankan kode di kepala dengan trace table. Kenali batas loop, break, continue, early return, dan alasan umum tes gagal.4 pelajaran + tantangan
  3. 3Brute force duluCoba semua kemungkinan dulu. Lalu hitung langkahnya, baca constraint, dan cari kerja yang diulang-ulang.4 pelajaran + tantangan

Bagian 2 · Pola inti

  1. 4Hash map: hitung dan cariPakai Map dan Set untuk menghitung frekuensi, menemukan duplikat, mengecek anagram, dan menyelesaikan two sum dalam satu putaran.4 pelajaran + tantangan
  2. 5Two pointerssegeraDua index bergerak dari dua arah. Untuk membalik, mengecek palindrome, mencari pasangan di array yang sudah urut, dan merge.
  3. 6Sliding windowsegeraJendela yang bergeser di atas array atau string. Ukuran tetap dulu, lalu jendela yang membesar dan mengecil.
  4. 7Prefix sum dan running statesegeraSimpan hasil sejauh ini supaya tidak menghitung ulang. Running total, nilai terbaik sejauh ini, dan jumlah per rentang.
  5. 8Sort dulusegeraUrutkan dulu, lalu scan sekali. Termasuk jebakan sort() untuk angka di JavaScript dan interval sederhana.

Bagian 3 · Struktur dan rekursi

  1. 9Stack dan queuesegeraYang terakhir masuk keluar duluan, atau sebaliknya. Untuk mengecek kurung, undo, dan next greater element.
  2. 10RekursisegeraFunction yang memanggil dirinya sendiri. Base case, call stack, recursion tree, dan memo.
  3. 11Grid 2DsegeraArray di dalam array. Index baris dan kolom, tetangga, flood fill, dan memutar grid.

Bagian 4 · Hari tes

  1. 12Latihan campuransegeraSoal campuran dalam format tes. Sebutkan dulu polanya, baru kerjakan. Tanpa timer.

Yang perlu kamu tahu

Gratis
Tanpa daftar dan tanpa akun. Progres tersimpan di browser ini.
5 sampai 7 menit
Satu pelajaran muat di jeda makan siang atau di perjalanan.
Bisa dari HP
Kebanyakan langkah cukup diketuk. Langkah menulis kode lebih enak di laptop dan boleh dilewati dulu.
Indonesia dan Inggris
Semua pelajaran ada di dua bahasa. Istilah teknis tetap pakai bahasa Inggris.
JavaScript
Semua kode di kursus ini JavaScript, bahasa yang kemungkinan besar sudah kamu pakai.

Mulai dari pelajaran pertama

Satu pelajaran pendek, satu ide: cara membaca soal tes sebelum menulis kode.