2010 程式設計比賽 Railroad Tycoon.

Slides:



Advertisements
Similar presentations
历尽九九八十一难, 唐僧四人终于到达天竺, 取得真经,完成任务。 四人想着难得到天竺一趟, 不如在此游览一番。
Advertisements

一、中国湿地面临的威胁 目前,湿地污染严重,湖泊 富营养化问题突出。随着社 会经济的快速发展,湿地污 染在很长时期内依然严重。 湿地污染 1.
手动换页 域外风情系列 儿子去美国留学,毕业后定居美国。还给我找了 个洋媳妇苏珊。如今,小孙子托比已经 3 岁了。 今年夏天,儿子为我申请了探亲签证。在美国待 了三个月,洋媳妇苏珊教育孩子的方法,令我这 个中国婆婆大开眼界。
99學年度第1學期導師輔導工作座談會 全校性共同必修服務學習課程 報告單位:學務處領導知能與服務學習中心.
2013年华兴教育 广州中考志愿填报分析.
学校课程改革的实践与思考 江苏省锡山高级中学 朱士雄.
台灣首府大學 樂齡大學講座系列 財務規劃與財產繼承 主講人:李錦智.
中共盘县发展和改革局党组主体责任落实情况报告
我们毕业了 毕业留念册 再见老师 姓名:黄巧灵 班级:六(1)班 毕业时间:2012年6月.
专题二:城市化与城乡规划 授课教师:周栋文.
中国热带农业科学院科技信息研究所期刊社 2009年系列学术讲座之 科技论文的审稿及其学术评价
第二章 城市轨道交通系统的构成 城市轨道交通系统的分类 2.1 2.2 车辆与车辆段 2.3 轨道交通限界
延庆县“十二五”时期城乡基础设施 建设规划 2011年03月.
2011届高三地理高考复习课件 拉丁美洲 高三地理备课组.
滚 滚 长 江 安匠初中:李艳阁.
长江的开发 惠州市河南岸中学 谢国文.
白海豚的分布范围.
眼影的学习.
少阳病和柴胡剂 郝万山(北京中医药大学).
超视距安保防范系统 克拉玛依市格恩赛电子科技有限公司 2015年8月.
国学传统与企业文化建设 刘大洋 博士.
-矿产资源勘查开采的有关法律知识介绍 四川省国土资源厅 陈东辉
電影裡的生命教育 主講人:李偉文 (牙醫師.作家.環保志工).
第二十章 第3节 电磁铁 电磁继电器.
长江.
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
系統分析與設計 系級:資管三B 姓名:朱秋儒 學號:
法國印象派大師 雷諾瓦 914 第2組 視覺藝術報告 鄭令婕 鄭淵庭 羅阡芷 王星叡 周毅哲.
陆路交通发达,公路、铁路交通为主,基本上没有水运
第二章 工程造价计价依据第一节 施工定额 概 述 工作时间的研究分析 劳动定额 材料消耗定额
类 别 发 展 成 就 农业 的 发展 手工业的发展 商业的 繁荣 粮食作物 经济作物 纺织业 制瓷业 造船业 商业都市 对外贸易 货币
103年高雄市自然與生活科技學習領域教學研習 動物單元的 教學理念與實踐 講師:屏東縣和平國小 周鳳文.
神 山 圣 湖.
世界地理总论 人文地理概况.
第四章 水域生物群.
东京城市建设史简述.
一言之辩强于九鼎之宝 三寸之舌胜于百万雄师
贵州讲解.
院系:政史学院历史系 班级:10级4班 学号: 姓名:蒋阿晴
有大权炳的天使 (18:1-3) 巴比伦大城倾倒了!倾倒了! 天上的声音 (18:4-20) (4-8) 一天之内,她的灾殃要一齐来到。
荆门市农业水价综合改革 工作情况汇报 湖北省荆门市水务局 二0一六年九月.
合肥公交集团 营运效能分析报告 营 运 服 务 部.
企业引进顶级人才之门, 人才跨上顶级职业之路 。
美丽全方位 优雅仪态篇.
新疆旅游资源 ——伊犁哈萨克自治州.
紧抓PPP项目为招标代理机构 带来的转型发展机遇
路程、时间与速度 ——北师大版四年级数学上册 成都市武顺街小学 漆智妮.
沟壑纵横的 沟壑纵横的黄土高原(用稿) 黄土高原.
用智慧塑造形象 以修炼打造“合金” ——谈学生干部的形象塑造与核心竞争力
兰州市2008年度国土资源 信息发布会 兰州市国土资源局.
行動研究就是一種行動性的研究,由行動者來進行研究,而不是由外於行動領域的學者與與科學家來進行,研究的問題也取自行動。
電子黑板 《廿一世紀 現代數學》 6 下 A 課本 7 速率(一) 學習範疇:度量 學習單位:6M3 速率   
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
丹 巴 (“中國最美的地方”的一個四川農村)
選擇勞退新制,終身免煩惱 勞工退休金新制 說明會.
苏教版五年级数学上册 认识平方千米.
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
算法基础 上机实验 4 学 期: 2016 (秋).
恩典層 信心層 服事層 煉淨層 榮耀層 呼 求 歸回 從世界 分別出來 信心 受考驗 傳揚福音
設計者:台中市重慶國小 張祐榕.楊晟汶.張儷齡
算法基础 上机实验 4 学 期: 2017 (秋).
题目详细要求、参考资料及更新发布于: 第一周 字符串与文件输入输出 题目详细要求、参考资料及更新发布于:
近似数和有效数字 近似数和有效数字 西河中学:张延伟.
彰化花壇【高速公路戰備跑道啟用】參觀點 時間:96年5月15日 時
面向对象程序设计 C++教程 西安工业大学 于帆.
列王纪上.
列王紀上.
现代自然地理学 (48 学时) 任升莲 主讲
績優教師分享 美容保健科 林品瑄 教師.
預表舊約 預表新約 夏甲 亞伯拉罕 撒拉 100歲 90歲 以實瑪利 以撒 憑自己力量所生 憑神的應許所生.
Presentation transcript:

2010 程式設計比賽 Railroad Tycoon

The Map

比賽規則 有三台火車(車速、載運量都不同) 總共 10 個都市各有特產 想辦法載貨到別的都市去賣, 載越遠賣越貴 火車燃料免費、貨物免費,但貨物賣價會隨著時間降低 總共 10 場,總積分最高者獲勝。計分方式如後面說明

火車 A -- TGV 速度 360KM / Hour 2 節車廂

火車 B -- AMD-103 速度 180KM / Hour 5 節車廂

火車 C -- Class E111 速度 120KM / Hour 10 節車廂

貨物運送價目表 (不可賣給產地) 收購價格/車 Birmingham 伯明罕(0) London 倫敦(1) Paris 巴黎(2) Amsterdam 阿姆斯特丹(3) Frankfurt 法蘭克福(4) Berlin 柏林(5) Munich 慕尼黑(6) Vienna 維也納(7) Warsaw 華沙(8) Moscow 莫斯科(9) Coal(煤) 75 250 522 577 840 810 1020 1235 2030 Mail(郵件) 60 140 350 395 570 530 744 875 1485 Wine(葡萄酒) 200 180 220 375 670 1250 Tulip(鬱金香) 310 160 335 455 435 935 Computer(電腦) 464 396 374 120 262 960 Steel(鋼鐵) 672 575 241 720 Beer(啤酒) 560 480 457 108 235 126 283 785 Wood(木材) 740 477 436 236 218 144 603 Amber(琥珀) 980 805 660 440 370 315 Oil(石油) 2430 2230 1830 1456 1335 1008 1225 925 615

都市連結表 (大於零代表有路可通) 距離(KM) Birmingham 伯明罕(0) London 倫敦(1) Paris 巴黎(2) Amsterdam 阿姆斯特丹(3) Frankfurt 法蘭克福(4) Berlin 柏林(5) Munich 慕尼黑(6) Vienna 維也納(7) Warsaw 華沙(8) Moscow 莫斯科(9) Birmingham -1 180 London 420 Paris 540 660 Amsterdam 600 Frankfurt 360 Berlin 720 Munich Vienna 480 Warsaw 1200 Moscow

貨物價格遞減設定 每經過兩小時,價格降低 5% 舉例來說,一車 Wine 送到 Moscow原本可得到 1,250。如果從貨物出現到送達總過花了5小時20分 (超過兩小時x2),收入剩下 1,250 x 90% = 1,125 同上例,如果花了 16小時40分送達 (超過兩小時x8),收入剩下1,250 x 60% = 750 超過 40小時貨物將完全不值錢

火車行為 起始三台火車A,B,C 可以選擇各放在不同的都市 系統為回合制,回合時間刻度為10分鐘。每回合每台火車可以決定要執行下列行為 Stall(1)  剛好停在都市的時候可以選擇本回合stall,此回合該火車不能再做其他事情 Move(2)  選擇從都市S 開到D,S 跟 D 必須相鄰,中間不能停下不能回頭,直到抵達為止 Sell(3)  剛好停在都市的時候可以選擇 Sell,賣出車上的貨物到此都市。可以跟 Load在同一回合執行 Load(4)  剛好停在都市的時候可以選擇 Load,從都市現有貨物倉庫中裝載貨物到火車上。可以跟 Sell在同一回合執行 每回合 Output 中火車 A,B,C 一定都要有動作

計分方式 10 場比賽,每場比賽最高分得到積分 10.00 分 假設某場最高金額 N (得到 10.00分), 其他人分別賺到 M2, M3, ….. M7, 則每組積分為 (M2 / N)*10.00, (M3 / N)*10.00, (M4 / N)*10.00, 依此類推 分數算到小數點以下兩位 10 場比賽總積分最高者獲勝

I/O 以及 錯誤處罰 總共有 Input01.txt .. Input10.txt 程式讀入 Input01.txt,產生 Output01.txt,依此類推 Checker程式讀入 (Input01.txt, Output01.txt),產生本場比賽分數(賺多少錢,算到小數點以下兩位),依此類推 發生任何系統錯誤,該場比賽 0 分 Checker debug log 放在 debug.txt

Railroad Tycoon Programming Guide

Input file format @T:DDD:HH:MM 每回合第一行,代表時間 @[0-9]:n,n,n,n,n [0-9]為都市代號,n為貨物代號,幾個n代表在@T這時間出現幾個貨物 @E 每回合的最後一行,代表回合結束 @F 整個Input最後一行,代表Finish Sample @T:001:00:00 @4:1,1,1,1,1 @9:2,2,2 @E @T:001:00:10 @T:001:00:20 @2:3,3,3 @F

Output file format @I:T1,T2,T3 Sample 起始A,B,C三台火車各放在T1,T2,T3 @I:4,9,1 @T:DDD:HH:MM 每回合第一行,代表時間 @[A-C]:[1-4],p1,p2,p3… [A-C]為火車代號,[1-4]為action @A:1 (代表火車A此回合 Stall) @B:2,2,3 (代表火車B此回合從 London(2) Move to Paris(3)) @C:3,1,1,4 (代表火車C此回合賣出三車貨物, 貨物ID各為1,1,4) @C:4,6,6 (代表火車C此回合裝載兩車貨物, 貨物ID各為6,6) @E 每回合的最後一行,代表回合結束 Sample @I:4,9,1 @T:001:00:10 @A:4,1,1 @B:2,9,8 @C:1 @E @T:001:00:20 @A:2,4,2

Output 可能發生的主要錯誤 NONE_ACTION ILLEGAL_STALL ILLEGAL_MOVE ILLEGAL_SELL 每回合每台火車必須要從 Stall(1), Move(2), Sell(3), Load(4) 選擇事情來做 ILLEGAL_STALL 開車開到一半還沒到站卻選擇 Stall 本回合火車已經執行過其他 action, 卻又選擇 Stall ILLEGAL_MOVE 未指定 Source->Destination, 或是 S->D 沒路可以通 前回合已經指定執行從 S1->D1, 本回合卻另外指定 S2->D2 火車在車站已經執行過 Stall 或是 Load/Sell, 卻又選擇 Move ILLEGAL_SELL 指定賣出的貨物編號不存在 火車沒停在車站就想 Sell 火車在車站已經執行過 Stall 或 Move, 卻又選擇 Sell ILLEGAL_LOAD 指定裝載的貨物編號不存在, 或是火車已經滿了 火車沒停在車站就想 Load 火車在車站已經執行過 Stall 或 Move, 卻又選擇 Load

畫面顏色代表意義 黑 貨物出現 0 ~ 4小時 (剛剛出現) 紫 貨物出現 4 ~ 8 小時 靛 貨物出現 8 ~ 12 小時 黑 貨物出現 0 ~ 4小時 (剛剛出現) 紫 貨物出現 4 ~ 8 小時 靛 貨物出現 8 ~ 12 小時 淺藍 貨物出現 12 ~ 16 小時 淺綠 貨物出現 16 ~ 20 小時 黃 貨物出現 20 ~ 24 小時 橘黃 貨物出現 24 ~ 28 小時 橙 貨物出現 28 ~ 32 小時 紅 貨物出現 32 ~ 36 小時 (即將過期) 灰 貨物出現 36 ~ 40 小時 (即將過期)

黑心 tips 三種不同類型的火車是否該有三種完全不同的策略? 火車起始位置要如何安排,看一開始出現的貨物位置? 沒事做的火車是否預先開往等等會出現貨物的都市? 時間快到的時候找都市就近賣掉? 找等等會出貨物的都市當作目的地去賣東西? 三台火車協調避免互相搶貨物 走越遠賣越多錢,但是如果中間有都市可以賣出並且買入,是否可以賺更多 三個成員各寫一種策略,找最高分的結果交出 手工刻出 output.txt !! 讓別組的程式莫名消失 (Jonas 建議的)

Railroad Tycoon Sample Code

Strategy 每台車只固定負責運送特定城市的貨物到其它城市販售。 檢查所負責的城市是否有貨物產生,如果有,則前往該城市將貨物運至所指定的城市販售。 待貨物銷售完成後,檢查是否依舊有貨物要銷售。如果有貨物需要運送,則前往該城市載運貨物;如果沒有的話,則停留在該城市。

Program Flow 主程式 初始化相關環境 (InitMyTrainEnv) 輸出 Train 起始的城市位置 (OutTrainInitCity) 讀取每回合的 input 資訊 每回合一開始先將城市中不值錢的貨物移除 更新城市該回合所產生的貨物 輸出每回合的 train 的動作 (OutTrainAction) 直到 @F 截止

Program Flow OutTrainAction 依序進行 TrainA, TrainB, TrainC 動作輸出 依 Train 狀況來進行動作 (GetMyTrainAction) 是否移動中: Yes  持續保持移動 是否有特定城市需要前往:Yes  前往該城市,No  檢查是否有新貨物產生,如果有的話,則前往該城市載貨,否則則保持不動。 是否抵達該特定城市 : Yes  進行貨物的 Sell or Load,No  持續前往該目的地的城市 輸出該 Train 的動作

Common Function InitTrainStatus MoveTrain Income int trainNo, int cityNo 初始化 Train 的位置及狀態 MoveTrain int trainNo, int source, int dest 移動列車 Income const char* sellTime, int sellCityNo, int sellCargoId 售販該貨物所獲得的錢

Common Function SellTrainCarriage GetCityCargo LoadTrainCarriage int trainNo, int trainCarriageIndex 銷售列車上的貨物 GetCityCargo int cityNo 取得城市中的貨物 LoadTrainCarriage int trainNo, int cargoId, int carriageIndex 將貨物載入到列車中

Source File List main.c 主程式,讀取 input 檔案及城市貨物的更新 common.inl / common.h 常用的函數 sample.c 相關策略的主程式 global.h 遊戲相關的設定及全域變數

有任何疑問請找 Andric Phantom