看板 Soft_Job 關於我們 聯絡資訊
※這不是UVA(ACM)題目 ※這篇文章適合喜歡分析與研究解決方案或是市場設計的你 ※如果你喜歡用程式解決問題,很高興我們能一起討論 ※如果板主覺得本討論偏離板旨,請見諒,我可以自行刪除 緣起: 之前有辦過一些網友與鄉民的活動,像是交換名片與交換節慶卡片,我有遇到 一些問題,逐步的用程式或免費方案解決,但仍然無法做到完全自動或全面交 由程式代勞,所以想說做一次需求分析,然後把現有的解決方案跟大家分享, 而整個需求中,目前無法達到程式代勞完成的部分提出來看看有沒有好點子。 -- ■活動設計的規則與限制: ▲[報名] A1.自由報名,人數未定,無上限 A2.每個人自由1~5張 A3.需要能填寫基本表單 A4.報名開始與截止(開關) A5.生成獨有唯一的驗證碼序號 A6.檢查PTT ID 是否存在 ▲[配對] B1.收件人與寄件人不能是互寄,也不能是自己互寄 B2.總數量要平均分配,餘數隨機, 但任意兩人之間不得比另一人多收兩張,即(|A收-B收|<2) B3.生成可查閱的總表 B4.生成站內信寄送指令 -- ▲[回報] C1.寄件人登錄寄信時間 C2.收件人登錄收信時間 C3.查詢收件人是否收到 C4.查詢寄件人是否寄出 C5.總表 ▲[進階] D1.配對結束後,有人提出數量調整(增加或減少),找最小衝擊人數解法 D2.配對結束後,有人取消自己的報名 D3.國外地址特別安排配對 -- ■現況: [報名] A1.~A4.表單,這部分完全不需要寫程式,google表單就可以做到,免費。(PASS) A5.這google 試算表可以生成,免費。(PASS) A6.目前有不是很聰明的比對程式(Client端)可以確認帳號是否存在,之所以會需 要確認帳號是否存在,是因為google表單可以亂填,雖然!雖然可以用google 帳號擋重複報名,但出發點是以PTT板友為主,所以不進行google帳號驗證。 所以沒有google帳號也可以報名,只以有PTT ID作為查核條件。 //------------------------------------ [配對]噩夢的開始 基本上目前寫的程式算是暴力法配對,先亂數隨機, 然後檢查是否符合規則B1.收件人與寄件人不能是互寄,也不能是自己互寄 這問題困難的地方是,每個人自由1~5張,在不能牴觸B1,又不能牴觸B2的 情況下,複雜度度很高,我不知道演算法如何設計為佳... … B3.目前的解決方案是用google試算表作為免費資料庫,障蔽部分ID欄位後 ,配合先前用 PTT_ID站內信寄給所有參加者的驗證碼序號當作條件,讓知 道查詢網址的人能查詢活動目前進度。 網頁放在Google Drive然後用Javascript撈google試算表,所以免費。 … B4.基本上 BBS都是下指令,所以只是將寄站內信行為化作腳本指令集,然 後排程將指令送出,這已有獨立程式完成。 //------------------------------------ [回報] C1~C5. 這都可以使用google表單就可以做到,免費。(PASS) //------------------------------------ [進階] D1~D2.配對結束後,基本上不論是完全退出配對或是增/減數量,都希望仍 然能寄可能的保持B1.B2的條件,當然如果勢必會有衝擊,找最小衝擊人數 解法是最好的,不過目前都是我人工處理善後,所以這暫時也無程式解。 不過我也算運氣好,之前一個跟我說要出差出國退出配對,馬上有人自願 補上配對空缺,這樣我要通知的人就單純許多了。 D3.目前沒有方法特別綁定mapping的對象,有些人願意出寄國外郵資,有 些人願意從國外寄回來,雖然說這算是以服務導向為出發,但實際上在沒 有程式解的情況下,目前都是人工處理。 -- 我想現在我主要的問題都是卡在配對機制的設計 如果我能整套串起來,希望可以搞一個open source的project -- 編程生活,生活編程 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.249.244 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1421429406.A.7A2.html
x000032001: 有個矛盾點是 假設只有三個人玩 A3張 BC都1張 01/17 01:44
x000032001: 那就無解了吧 所以還不能太少人玩.. 01/17 01:45
ProGuy: google一下max flow演算法,條件設定好之後跑一下就有了 01/17 14:34