Haftalık Izgara
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 36 / 56.
Takvimi yazdırma zamanı. Her alışkanlık için, tamamlanan günlerde X ve diğer yerlerde . olan yedi karakterlik bir ızgara oluşturun.
// days = [1, 3, 5]
// şunu oluşturur: X.X.X..Faydalı bir yöntem: ızgarayı bir karakter dizisi olarak oluşturun, ardından bir kez String'e dönüştürün.
var slots = Array(repeating: ".", count: 7)
for d in days {
slots[d - 1] = "X"
}
let row = slots.joined()days 1-tabanlıdır (Mon = 1) ancak Swift dizileri 0-tabanlıdır, bu nedenle atama yaparken 1 çıkarın. Aralık dışı günler çökmeye neden olur, bu nedenle girdi formatına güvenin.
Görev
OrtaTek bir giriş satırı okuyun: virgülle ayrılmış habit:day girişlerinden oluşan bir liste. Sözlüğü daha önce olduğu gibi oluşturun, ardından her alışkanlık için (alfabetik olarak sıralanmış) şu formatta bir satır yazdırın:
<habit> |<grid>| <count>burada grid yedi karakterlik X/. dizisidir ve count o alışkanlık için tamamlanan benzersiz günlerin sayısıdır.
read:1,read:3,read:5,workout:2,workout:4 girişi için çıktı şöyledir:
read |X.X.X..| 3
workout |.X.X...| 2Kopya kağıdı
Tamamlanan günlerde X ve diğer yerlerde . olan 7 karakterlik bir ızgara oluşturun (günler 1 tabanlıdır):
var slots = Array(repeating: ".", count: 7)
for d in days {
slots[d - 1] = "X"
}
let row = slots.joined()Kendin dene
var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
for op in ops {
let parts = op.components(separatedBy: ":")
let day = Int(parts[1])!
if !(habits[parts[0], default: []].contains(day)) {
habits[parts[0], default: []].append(day)
}
}
// TODO: her alışkanlık için 7 bölmeli bir ızgara oluşturun; '<name> |<grid>| <count>' 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