不知道是不是 C / C++ 寫久了,轉戰 python 竟有些不習慣。 好處是 library 確實很多,目前最不習慣的大概是沒 call by pointer / call by reference。 小小的心願是,希望 python 不會用太久 XD
to edisonx大大: 我跟你剛好相反,我是先從Python學起,然後自己摸索CS:app這本書籍,發現當中的C一直卡關,才輾轉google到你的資源文章,我的感覺是中文的C相關資源文章似乎不多,感謝你的付出~
很高興我的文章對你有所幫助。 *^_^*
求解.xls VBA 寫法 我的郵箱 zxcvbnm-2434@hotmail.com python 我是這樣寫 但是無法交差 因為沒有環境可以安裝 同時使用牌組A,B 註:A,B牌組卡牌數量會變動 牌組A 時段:周一 06:00∼週五18:00 牌組B 時段:週五18:00∼下週一06:00 ①每日起始時間06:00∼翌日06:00 ②單一牌組上限99張 最低7張(一天12班-可重複5限定班) ③定義每張卡牌名稱 ④紀錄每張卡牌使用次數 ⑤每兩小時從牌組抽出一張牌 ⑥第一張出牌時間06:00開始 ⑦限定時段12:00∼14:00 ,22:00∼24:00,24:00∼02:00,02:00∼04:00,04:00∼06:00 這五個時段 卡牌一天只能出現一次 ⑧每張牌需亂數抽出 (洗牌問題) ⑨每張卡牌冷卻時間六小時 (一天同一張卡最多出現兩次) 超人還是要睡覺的 ⑩牌組卡牌用完才可抽第二輪(須符合每日相同卡牌最多出現2次條件) 可多次使用同一牌組 註記第六項 輸出排列由週五06:00∼下週周五06:00(若牌組還有未用完卡片❝名稱❞需列表) 上班習慣才會定義週五開始 ⊗週五會橫跨平時跟假日 麻煩留意一下規則 週五比較特殊(司機喜歡週五拿上班表) __author__ = "Toheart" __description__ = "Toheart" import math dayRealdayDict = { 1: 'Sat', 2: 'Sun', 3: 'Mon', 4: 'Tue', 5: 'Wes', 6: 'Thu', 7: 'Fri' } # Day 1 is counted from 6:00 on the first day. # Thus day2 is 30:00-54:00. So on and so forth. # 5.一天當中12點到14點、22點到24點、24點到2點、2點到4點、4點到6點 抽出相同卡牌只能有一次 HARD_TIMES = {12, -2, 0, 2, 4} def getHardTimes(day): """Get hard times on a give day""" hardTimes = [] for t in HARD_TIMES: hardTimes.append(t + (day-1)*24) return set(hardTimes) def getScheduleTimes(day): """Get all possible time slots for a day""" if day == 1: return list(range(-6 + (day-1)*24, 6+day*24, 2)) elif day in [2, 3, 4, 5 ,6]: return list(range(6 + (day-1)*24, 6+day*24, 2)) elif day == 7: return list(range(6+ (day -1)*24, 18 + (day-1)*24)) else: print("Invalid day: " + str(day)) exit(0) def getTimes(day): """Get all possible time slots for a real day""" return list(range(-6 + (day-1)*24, -6+day*24, 2)) class Person: def __init__(self, alias, availableDays): # 0. 每張卡牌都有個代號 self.alias = alias self.useTimes = [] self.availableDays = availableDays # 未使用卡牌需列表 @property def unusedp(self): return self.useTimes.__len__() == 0 # 紀錄每張卡片使用次數 @property def usedTimes(self): return self.useTimes.__len__() def availablep(self, time, day): availableTimes = [] for availableDay in self.availableDays: availableTimes += getScheduleTimes(availableDay) if time not in availableTimes: return False # 5.一天當中12點到14點、22點到24點、24點到2點、2點到4點、4點到6點 抽出相同卡牌只能有一次 if getHardTimes(day).intersection(self.useTimes).__len__() > 0: return False # 3.每張卡片需等待六小時的緩衝時間才可再次出牌 for t in self.useTimes: if math.fabs(t - time) < 6: return False # 附加條件 一天只能出現兩次 if set(self.useTimes).intersection(getTimes(day)).__len__() >= 2: return False return True def getPersonToBeSelected(persons, time, day): """Get the appropriate person.""" availablePersons = list(filter(lambda x: x.availablep(time, day), persons)) if availablePersons.__len__() == 0: print("No person will be available on " + dayRealdayDict[day] + " at time slot " + str(time - 24*(day-1)) + ":00") exit(0) sortedAvailablePersons = sorted(availablePersons, key=lambda x: x.usedTimes) return sortedAvailablePersons[0] def report(persons): """Report the results""" unused = [] for person in persons: if person.usedTimes == 0: unused.append(person) continue print(person.alias) print("Total times: " + str(person.useTimes.__len__())) humanReadableTimes = [] for t in person.useTimes: day, time = divmod(t, 24) day = day+1 if day == 0: day = 7 humanReadableTimes.append((dayRealdayDict[day], time)) print(humanReadableTimes) print("========= Unused people ==========") for person in unused: print(person.alias) if __name__ == "__main__": persons = [] with open("input.txt", 'r') as f: for index, line in enumerate(f.readlines()): if line.startswith("###"): continue if line.startswith("*DAYS*"): days = list(map(lambda x: int(x), line.split(" ")[1].split(","))) continue personAlias, availableDays = line.strip().split(" ") persons.append(Person(personAlias, list(map(lambda x: int(x), availableDays.split(","))))) # 2.排序方法一天二十四小時 每兩個小時抽一張 for day in days: for t in getTimes(day): person = getPersonToBeSelected(persons, t, day) person.useTimes.append(t) report(persons)
你提問的方式像是給了我 Homework , 同時還要在期限內以 mail 回覆給你答案。嗯,加油。
不物家後如上國當出車別了道來一麼年然,便有開 68國語﹍言﹉翻○譯公司◎ 天﹋成數位□翻﹍譯♂社 提供學☆歷〇證﹉明§翻譯﹉等〇服☉務 電話◎: 02-﹎7726-﹍0931 LINE-◎ID: 0989298406 日文翻♀譯﹎|﹂miaohun.yahootranslations.com/
h6MFpoh奢侈品仿牌,,保固說到做到,,誠信經營,,,。。網購是一種時尚,妳也不能落伍喔。請加賴ID:kk2023 咨詢訂購。品質保證,售前售后有保障,可貨到付款哦。感恩。 u7Tu
同道中人,加油! 不得不说WIndows平台的C++开发技术落寞了! 我当年也学习了很多Win32 API的知识,用C++做开发,随着Android、MAC的崛起,之前的是指感觉转瞬就没用了! 只怪微软不争气! 现在开始用python玩数据分析了,要重新学很多数学、统计学方面的知识, 感觉像转行了。 虽然有学得累,但我相信这些知识不会那么快被时代抛弃。