Menu
CoddyTech

Grid Mingguan

Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 36 dari 56.

Saatnya mencetak kalender. Untuk setiap kebiasaan, tampilkan kisi tujuh karakter dengan X pada hari saat kebiasaan dilakukan dan . pada hari lainnya.

// days = [1, 3, 5]
// menghasilkan: X.X.X..

Idiom yang berguna: susun grid sebagai array karakter, lalu ubah menjadi String sekali.

var slots = Array(repeating: ".", count: 7)
for d in days {
    slots[d - 1] = "X"
}
let row = slots.joined()

days dimulai dari indeks 1 (Mon = 1), tetapi array Swift dimulai dari indeks 0, jadi kurangi 1 saat menetapkan nilai. Hari di luar rentang akan menyebabkan program crash, jadi percayai format input.

challenge icon

Tantangan

Sedang

Baca satu baris input: daftar entri habit:day yang dipisahkan koma. Buat dictionary seperti sebelumnya, lalu cetak satu baris untuk setiap habit (diurutkan berdasarkan abjad) dengan format:

<habit> |<grid>| <count>

dengan grid adalah string tujuh karakter X/. dan count adalah jumlah hari unik saat habit tersebut dilakukan.

Untuk input read:1,read:3,read:5,workout:2,workout:4, output-nya adalah:

read |X.X.X..| 3
workout |.X.X...| 2

Coba sendiri

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: buat grid 7 slot untuk setiap kebiasaan; cetak '<name> |<grid>| <count>'
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift