ผลต่างระหว่างรุ่นของ "Grid2010"
ไปยังการนำทาง
ไปยังการค้นหา
Jittat (คุย | มีส่วนร่วม) (→ประกาศ) |
Jittat (คุย | มีส่วนร่วม) |
||
แถว 13: | แถว 13: | ||
* [http://theory.cpe.ku.ac.th/wiki/images/Gi2010-instr1.pdf เอกสาร 1] - การคำนวณจุดชน | * [http://theory.cpe.ku.ac.th/wiki/images/Gi2010-instr1.pdf เอกสาร 1] - การคำนวณจุดชน | ||
* [http://theory.cpe.ku.ac.th/wiki/images/Gi2010-instr2.pdf เอกสาร 2] - การสะท้อน และการปัดค่า | * [http://theory.cpe.ku.ac.th/wiki/images/Gi2010-instr2.pdf เอกสาร 2] - การสะท้อน และการปัดค่า | ||
+ | |||
+ | === การคำนวณเวกเตอร์สำหรับสะท้อน === | ||
+ | |||
+ | ถ้าเรามีเวกเตอร์ <math>w=\left(\begin{array}{c}w_x\\ w_y\end{array}\right)</math> เวกเตอร์ที่ตั้งฉากกับ <math>w</math> คือเวกเตอร์ที่มีผล dot product กับ w เท่ากับ 0 หนึ่งในนั้นคือ <math>w=\left(\begin{array}{c}-w_y\\ w_x\end{array}\right)</math> | ||
== รูปแบบของแฟ้มข้อมูล == | == รูปแบบของแฟ้มข้อมูล == |
รุ่นแก้ไขเมื่อ 05:02, 12 กุมภาพันธ์ 2554
หน้านี้สำหรับให้ข้อมูลเกี่ยวกับการพัฒนาโปรแกรมในการแข่งขัน Grid Innovation 2010
เนื้อหา
ประกาศ
- (12/2 11:40) มีตัวอย่าง upload ไปเพิ่มเติมแล้ว download
- รับประกันว่าสิ่งของบนกระดานจะไม่ทับกัน และในการวางกระจกสะท้อนสำหรับระดับอุดมศึกษา ห้ามวางทับสิ่งของอื่น ๆ
- (12/2 10:58) มีการอัพโหลดโปรแกรม shoot เวอร์ชันใหม่ คัดลอกได้ที่ ~jittat_fa/shoot
- (12/2 10:42) มีการแก้ไขโจทย์ดังนี้
- หน้าสอง Y2 < Y1
- ปรับขนาดข้อมูลเข้า N < 1,000
- มีการแก้ตัวอย่างข้อมูลป้อนเข้า ดูตัวอย่างด้านล่าง
การคำนวณ
การคำนวณเวกเตอร์สำหรับสะท้อน
ถ้าเรามีเวกเตอร์ เวกเตอร์ที่ตั้งฉากกับ คือเวกเตอร์ที่มีผล dot product กับ w เท่ากับ 0 หนึ่งในนั้นคือ
รูปแบบของแฟ้มข้อมูล
แฟ้ม input
ตัวอย่าง
-30 30 30 -30 10 5 5 4 0 0 -10 9 0 15 -10 5 0 24 0 5 0 5 0 1 1 7 0 1 2 9 1 1 1 11 1 1 2 13 1 1 2 15 1 1 1 1
แฟ้ม output
แฟ้มสำหรับ viewer: แฟ้ม trace
มีรูปแบบดังนี้
- บรรทัดแรกระบุจำนวนนก
- สำหรับนกแต่ละตัว
- บรรทัดแรกระบุจำนวนจุดที่ต้องการวาด
- จากนั้นตามด้วยลำดับของจุดที่ต้องการวาด ระบุในรูปแบบ พิกัดแกน x,พิกัดแกน y
- จากนั้นตามด้วยข้อมูลของกระจกที่เติมเข้าไป
- เริ่มด้วยบรรทัดเปล่า หรืออะไรก็ได้ (ในตัวอย่างเขียนว่า [mirrors])
- บรรทัดถัดจากนั้นระบุจำนวนกระจก
- สำหรับกระจกแต่ละอัน ระบุพิกัดของจุดปลาย เป็น x1 y1 x2 y2
ข้อมูลหลังจากนั้นตัว viewer ไม่สนใจ เช่น คะแนนที่ได้ ที่ shoot จะแสดงขึ้นมาด้วย
ตัวอย่าง 1
1 13 -30,2 2.35425,2 2.78799,-1.44272 5.08858,1.00098 12.167,-5.88003 8.40236,2.89668 20.534,3.60369 21.1352,9.77296 16.53,-5.23984 21.5494,9.69012 21.1557,4.11218 7.35801,8.23106 -557.291,833.562 [mirrors] 1 20 10 30 8 [score] Score = 1027
ตัวอย่าง 2
2 4 -30,0 1.45583,3.14558 -2.34683,-1.31136 -115.604,38.3486 3 30,0 28.999,-0.1001 147.83,-16.811 [mirrors] 0 [score] Score = 3
โปรแกรมจำลองสถานการณ์
สามารถคัดลอกได้จาก ~jittat_fa/shoot บนเครื่อง tera คัดลอกมาที่ไดเรกทอรีตัวเองด้วยคำสั่งต่อไปนี้
cp ~jittat_fa/shoot .
เรียกใช้ดังนี้
./shoot [ชื่อ input-file] [ชื่อ output-file]
การใช้งาน viewer
จะต้องป้อนแฟ้ม config และผลลัพธ์จากการ
python viewer.py [input-file] [trace-file]
โดยที่ input-file ระบุขนาดและตำแหน่งของของบนกระดาน ส่วน trace-file ระบุเส้นทางการวิ่งของนก และตำแหน่งของกระจก
ลิงก์เพื่อดาวน์โหลด
- ตัวอย่าง
- แฟ้ม cX.in จะเป็นข้อมูลป้อนเข้า ส่วน rX.out เป็นทิศทางและตำแหน่งของกระจกที่โปรแกรมต้องแสดงออกมา
- แฟ้ม vX.out เป็นแฟ้มที่โปรแกรมจำลองสถานการณ์คำนวณได้ เพื่อนำไปใส่ในโปรแกรมแสดงผลต่อไป
- โปรแกรมแสดงผล โปรแกรมแสดงผลใช้ Python และ wxPython ซึ่งผู้เข้าแข่งต้องติดตั้งก่อน
- Python ที่ใช้ ให้ใช้เวอร์ชัน 2.x Download
- ตัวอย่าง