Zhi-Yuen
本程式是用來分發志願序所寫的輔助工具。
規格
本程式會讀取一個名為 input.csv
的檔案,並經過運算後輸出一個名為output.csv
的檔案。
輸入
本 CSV 檔案第一列為標題列,其後為資料列。前三欄會認定為個資,分別為班級、座號、姓名。其後十三欄會被認定為志願序欄。 本程式不會讀取前三欄標題列的的資訊,但會讀取後十三欄標題列的文字作為分類與篩選。志願序欄標題的文字規格為:
名稱[同系列編號](時段[地點])
- 名稱:必須為非數字的文字字元
- 編號:選填,必須為數字
- 時段:早、午擇一
- 地點:必須為英文字母
例如
動力(午B)
電機(午B)
藝術(早)
家政1(早)
家政2(午A)
食品(午A)
商管(午A)
設計(早)
設計2(午A)
餐旅1(早)
餐旅2(午A)
餐旅3(早)
外語(早)
資料列則依照欄位填寫資訊,若為個資欄則填寫文字,弱勢志願欄則必須填寫數字。 若是同一列志願欄有相同數字,則以較前欄者為優先;若有空白則會從前欄候補到後欄排到最後志願後面。
都可以支援的輸入內容為:
班級,座號,姓名,動力(午B),電機(午B),藝術(早),家政1(早),家政2(午A),食品(午A),商管(午A),設計(早),設計2(午A),餐旅1(早),餐旅2(午A),餐旅3(早),外語(早)
一年七班,1,蘇軾,,,1,3,4,2,,5,,8,9,6,7
一年七班,2,蘇澈,12,13,6,5,3,4,9,8,10,2,1,7,11
一年七班,3,司馬光,12,13,6,5,3,4,9,8,10,2,1,7,11
一年九班,1,歐陽修,12,13,2,6,8,10,5,3,7,9,4,11,1
一年十班,1,王安石,1,2,2,3,3,3,5,5,5,5,5,,
分發規則
- 如果學生在該時段已經有組別,則跳下一志願
- 如果學生有選擇同類別的志願,則跳下一志願
- 如果志願所屬地點車為已滿,則跳下一志願
- 如果組別已滿,且該時段已沒有緩衝人數,則跳下一志願
- 如果群組已滿,且該地點在該地點群組都已滿的狀態下無法容納任一緩衝人數,則跳下一志願
- 如果群組已滿,但同地點其他群組為滿時,在加一人會造成該地點已滿的情況下,跳下一志願
輸出
本 CSV 檔案第一列為標題列,其後為資料列。欄位分別為班級、座號、姓名、上午組別、下午組別、車次。
班級,座號,姓名,上午組別,下午組別,車次
一年七班,1,蘇軾,藝術,動力,4
一年七班,2,蘇澈,家政1,餐旅2,1
一年七班,3,司馬光,家政1,餐旅2,1
一年九班,1,歐陽修,外語,餐旅2,1
一年十班,1,王安石,藝術,動力,4