#365
The Curriculum Conundrum
Difficulty: | Medium |
Topics: | Real life cases List of Maps |
Mission: "Curriculum Conundrum" membutuhkan keahlian elo untuk mengoptimalkan jadwal mata pelajaran. Setiap mata pelajaran memiliki list prasyarat yang harus dipenuhi sebelum bisa diambil. Diberikan sebuah map :subjects yang berisi :subject-id dengan list :prerequisites-nya, susun rencana studi dalam vector yang menunjukkan urutan pengambilan mata pelajaran sehingga semua prasyarat terpenuhi. Urutan dalam vector penting karena menunjukkan urutan pengambilan. Jika ada lebih dari satu solusi, return salah satunya; jika tidak ada solusi karena adanya circular dependencies, return nil.
(= (__ {:subjects {101 [] 102 [101] 103 [101 102]}}) [101 102 103]) | |
(= (__ {:subjects {101 [102] 102 [103] 103 []}}) [103 102 101]) | |
(= (__ {:subjects {101 [102] 102 [101]}}) nil) ; Circular dependency | |
(= (__ {:subjects {101 [] 102 [] 103 []}}) [101 102 103]) |