Latihan 1 dari materi State Pattern di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Bangun vending machine dengan state pattern. createMachine(stock) return object dengan method:
insertCoin() — jika state "NoMoney" → pindah ke "HasMoney", return "coin accepted". Jika "HasMoney" → return "coin already inserted". Jika "SoldOut" → return "machine sold out".selectProduct() — jika state "HasMoney" → kurangi stock. Jika stock 0 setelahnya → pindah "SoldOut", else "NoMoney". Return "dispensed". Jika state "NoMoney" → return "insert coin first". Jika "SoldOut" → return "machine sold out".getState() — return nama state saat ini.State awal: "NoMoney" jika stock > 0, "SoldOut" jika stock = 0.