Menu
CoddyTech

Penjadwal Acara

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 56 dari 57.

challenge icon

Tantangan

Sulit

Buat scheduler acara dengan protokol standar. Event adalah struct dengan title, day (1-31), start, dan jam end. Struct ini Comparable (berdasarkan hari, lalu waktu mulai, lalu judul), Hashable dan Equatable hanya berdasarkan judul dan hari (acara yang sama dimasukkan dua kali), serta CustomStringConvertible dengan format day 3 09-11 standup. class Scheduler memiliki add(_:), yang mengembalikan added, duplicate (judul yang sama pada hari yang sama), atau conflicts with <title> (acara yang sudah ada pada hari tersebut dengan jam yang bertumpang tindih: salah satunya dimulai sebelum yang lain berakhir). agenda() mengembalikan acara yang sudah diurutkan, dan busiestDay() mengembalikan busiest day 3: 5h atau no events.

Kode yang disediakan membaca acara dalam baris berformat title,day,start,end dan mencetak balasan untuk setiap acara, lalu agenda (satu acara per baris) dan hari tersibuk.

Tulis kodemu di Event.swift dan Scheduler.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

// Kode input/output yang disediakan: biarkan apa adanya
var input: [String] = []
while let line = readLine() { input.append(line) }
let scheduler = Scheduler()
for line in input {
    let p = line.split(separator: ",").map(String.init)
    print(scheduler.add(Event(title: p[0], day: Int(p[1])!, start: Int(p[2])!, end: Int(p[3])!)))
}
for e in scheduler.agenda() { print(e) }
print(scheduler.busiestDay())

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Swift