Materi
Dua aturan menjadi dasar seluruh cacah-mencacah. Aturan penjumlahan: bila kejadian A dapat terjadi dengan m cara dan kejadian B dengan n cara, dan keduanya saling lepas (tidak ada cara yang termasuk keduanya), maka “A atau B” dapat terjadi dengan m + n cara. Aturan perkalian: bila sebuah tugas terdiri atas beberapa langkah berurutan, langkah pertama punya m cara dan langkah kedua punya n cara apa pun pilihan di langkah pertama, maka seluruh tugas punya m × n cara. Aturan perkalian bisa diperpanjang ke langkah ketiga, keempat, dan seterusnya.
Kata kuncinya: pilihan yang saling menggantikan (“atau”) dijumlahkan, langkah yang dijalani semuanya (“lalu”, “dan”) dikalikan. Contoh: pagi hari ada 5 jadwal bus dan 3 jadwal kereta dari kota A ke kota B, sehingga ada 5 + 3 = 8 cara berangkat. Sebuah warung menawarkan 3 jenis nasi, 4 lauk, dan 2 minuman, sehingga paket makan berisi satu dari masing-masing ada 3 × 4 × 2 = 24. Kedua aturan ini dipakai untuk menghitung banyaknya kode, kata sandi, nomor seri, dan susunan jadwal tanpa mendaftarnya satu per satu.
Bila daftarnya tetap ingin dilihat, itertools.product membentuk hasil kali Kartesius dari beberapa daftar:
from itertools import product
nasi = ["putih", "uduk", "kuning"]
minum = ["teh", "jeruk"]
paket = list(product(nasi, minum))
print(len(paket)) # 6 = 3 × 2