Tamamlandı Olarak İşaretle
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 34 / 56.
İlk özellik: "bu alışkanlığı bu gün yapıldı olarak işaretle" eylemlerinden oluşan bir listeyi işlemek ve nihai bir durum üretmektir.
Her giriş satırı habit:day biçiminde bir işlemdir; burada day, 1 ile 7 arasındadır. Eğer alışkanlık henüz mevcut değilse, boş bir dizi ile oluşturun ve ardından günü ekleyin. Eğer o alışkanlık için bir gün zaten kaydedilmişse, onu iki kez kaydetmeyin.
Sözlük bölümündeki varsayılan alt simge (default-subscript) deseninden yararlanacaksınız: habits[name, default: []].append(day) anahtarın var olup olmamasından bağımsız olarak çalışır.
Görev
KolayTek bir satır girdi okuyun: virgülle ayrılmış habit:day girişlerinden oluşan bir liste (örneğin read:1,read:3,workout:2). Her işlemi uyguladıktan sonra, alışkanlıkları alfabetik sırayla, her satıra bir tane gelecek şekilde şu formatta yazdırın:
<habit>: <days_sorted_ascending_joined_with_comma>Yinelenen habit:day çiftlerini atlayın.
read:1,read:3,workout:2,read:1,read:5,workout:4 girdisi için çıktı şöyledir:
read: 1,3,5
workout: 2,4Kopya kağıdı
Bir dizi sözlüğüne (dictionary of arrays) ekleme yapmak ve anahtar mevcut değilse oluşturmak için varsayılan alt simge (default-subscript) desenini kullanın:
var habits: [String: [Int]] = [:]
habits[name, default: []].append(day)
Yinelenenleri önlemek için eklemeden önce kontrol edin:
if !habits[name, default: []].contains(day) {
habits[name, default: []].append(day)
}
Kendin dene
var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
// TODO: her bir işlem için, ad:gün şeklinde ayrıştırın, eğer zaten yoksa günü ekleyin;
// ardından alışkanlıkları alfabetik sırayla ve sıralanmış günlerle yazdırın
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri