#364
The Enrollment Enigma
 

Difficulty:Easy
Topics:Real life cases List of Maps


Mission: "The Enrollment Enigma" menantang elo untuk merancang sebuah sistem yang dapat menentukan kapasitas kelas berdasarkan preferensi dan prioritas pendaftaran siswa. Diberikan sebuah list of maps yang berisi :student-id, :name, dan list :preferences yang berisi ID kelas yang diminati (berurutan dari yang paling diinginkan ke yang kurang diinginkan), serta sebuah map :class-capacity yang menghubungkan ID kelas dengan kapasitas maksimalnya, tugas elo adalah untuk mengalokasikan siswa ke dalam kelas sesuai dengan preferensi mereka sambil memperhatikan kapasitas kelas. Return sebuah map yang menghubungkan :class-id dengan list :student-ids yang dialokasikan ke kelas tersebut.
test not run
(= (__ [{:student-id 1 :name "Alice" :preferences [101 102]}
        {:student-id 2 :name "Bob" :preferences [102 103]}
        {:student-id 3 :name "Charlie" :preferences [102 101]}]
       {:class-capacity {101 2, 102 1, 103 1}})
   {101 [1], 102 [2], 103 [3]})
test not run
(= (__ [{:student-id 1 :name "Alice" :preferences [102 103]}
        {:student-id 2 :name "Bob" :preferences [102 101]}
        {:student-id 3 :name "Charlie" :preferences [101 102]}
        {:student-id 4 :name "Dana" :preferences [101 103]}]
       {:class-capacity {101 2, 102 2, 103 1}})
   {101 [3 4], 102 [1 2], 103 []})
test not run
(= (__ [{:student-id 1 :name "Eve" :preferences [104 105]}
        {:student-id 2 :name "Frank" :preferences [105 104]}]
       {:class-capacity {104 1, 105 1}})
   {104 [1], 105 [2]})
test not run
(= (__ [] {:class-capacity {101 1, 102 1}})
   {})


Code which fills in the blank: