#!/usr/bin/env python3
"""Mini-lab Bab 02: klasifikasi kasus AI/ML/DL/RL.

Output script ini adalah contoh jawaban awal, bukan kunci mutlak.
Pembaca diminta menuliskan alasan dan asumsi sendiri.
"""

cases = [
    (1, "Gratis ongkir jika total belanja di atas Rp150.000", "rule-based/search/planning", "aturan jelas dan stabil"),
    (2, "Prediksi harga sewa kos", "supervised-regression", "target berupa angka"),
    (3, "Kelompok pelanggan warung", "unsupervised-learning", "mencari segmen tanpa label"),
    (4, "Deteksi SMS penipuan", "supervised-classification", "target berupa label spam/bukan"),
    (5, "Caption promosi kopi lokal", "generative-ai-llm", "output berupa teks baru"),
    (6, "Agent game mencari jalan keluar", "reinforcement-learning", "aksi berurutan dan reward"),
    (7, "Dashboard penjualan harian", "data-science/analytics", "visualisasi untuk keputusan"),
    (8, "Foto daun cabai sehat/sakit", "deep-learning", "input gambar kompleks"),
    (9, "Rute kurir berdasarkan peta", "rule-based/search/planning", "bisa memakai graph search/optimisasi"),
    (10, "Prediksi jumlah es teh besok", "supervised-regression", "target angka penjualan"),
    (11, "Transaksi sangat berbeda", "unsupervised-learning", "anomaly detection"),
    (12, "Chatbot FAQ dari dokumen", "generative-ai-llm", "bahasa dan jawaban generatif"),
    (13, "Ranking hasil pencarian produk", "supervised-classification", "ranking/learning-to-rank; label implisit mungkin diperlukan"),
    (14, "Prediksi churn", "supervised-classification", "target churn/tidak"),
    (15, "Suara rapat menjadi teks", "deep-learning", "speech recognition modern umumnya DL"),
    (16, "Gambar konsep kemasan", "generative-ai-llm", "output gambar baru"),
    (17, "Korelasi cuaca dan penjualan", "data-science/analytics", "analisis hubungan data"),
    (18, "Pajak berdasarkan aturan resmi", "rule-based/search/planning", "aturan formal"),
    (19, "100 fitur menjadi 2 dimensi", "unsupervised-learning", "dimensionality reduction"),
    (20, "Robot simulasi hindari rintangan", "reinforcement-learning", "aksi, state, reward"),
    (21, "Prediksi waktu tiba kurir", "supervised-regression", "target waktu/angka"),
    (22, "Kelompok artikel tanpa topik", "unsupervised-learning", "clustering dokumen"),
    (23, "Jawab soal matematika dengan langkah", "generative-ai-llm", "teks penalaran/penjelasan baru"),
    (24, "Ulasan positif/negatif", "supervised-classification", "target sentimen"),
    (25, "Barang sering dibeli bersama", "unsupervised-learning", "association pattern"),
    (26, "Iklan dengan reward klik", "reinforcement-learning", "aksi coba-coba dan reward"),
    (27, "Ringkasan dokumen panjang", "generative-ai-llm", "konten ringkasan baru"),
    (28, "Jalur terpendek antar kota", "rule-based/search/planning", "algoritma graph search"),
    (29, "Prediksi skor ujian", "supervised-regression", "target angka skor"),
    (30, "Cek data kosong/duplikat/outlier", "data-science/analytics", "pembersihan data"),
]


def main():
    print("Mini-lab Bab 02 — Klasifikasi 30 Kasus")
    for no, case, label, reason in cases:
        print(f"{no:02d}. {case}")
        print(f"    label : {label}")
        print(f"    alasan: {reason}\n")
    print("Tantangan: pilih 5 kasus ambigu dan tulis label alternatifnya.")


if __name__ == "__main__":
    main()
