Menu
Coddy logo textTech

Etkinlik Planlayıcı

Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 56 / 57.

challenge icon

Görev

Zor

Standart protokolleri kullanarak bir etkinlik zamanlayıcısı oluşturun. Event, title, day (1-31), start ve end saatlerine sahip bir struct'tır. Comparable (önce güne, ardından başlangıç saatine, sonra başlığa göre), Hashable ve yalnızca başlık ile gün üzerinden Equatable'dır (aynı etkinliğin iki kez girilmesi). Ayrıca CustomStringConvertible olarak day 3 09-11 standup biçimindedir. Scheduler sınıfında, added, duplicate (aynı gün aynı başlık) veya conflicts with <title> (o gün mevcut olan ve saatleri çakışan bir etkinlik: biri diğerinin bitişinden önce başlar) döndüren add(_:) bulunur. agenda() etkinlikleri sıralanmış olarak döndürür ve busiestDay() busiest day 3: 5h veya no events döndürür.

Sağlanan kod, etkinlikleri title,day,start,end satırları olarak okur ve her biri için yanıtı yazdırır; ardından ajandayı (satır başına bir etkinlik) ve en yoğun günü yazdırır.

Kodunuz Event.swift ve Scheduler.swift dosyalarına gider. main.swift, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

// Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
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())

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Swift playground