นาย อารักษ์ ภูพาที
5701012620144
Assignment 1 : https://bitbucket.org/a5720144/vending-machine/src
Assignment 2 : https://bitbucket.org/a5720144/clean-csv/src
## Read me ##
testcsv.py เป็น file ที่ทดสอบในการ clean ข้อมูล ในแบบ textmode
แต่ตัวงานจริงๆคือ studentattendancecalculator.py
Test 2 :
+ Kangaroo
- Textmode : https://bitbucket.org/a5720144/test1-textmode/src
- Kivy : https://bitbucket.org/a5720144/test1-kivy/src
+ Insertion Sort
- Textmode : https://bitbucket.org/a5720144/test2-text-mode/src
- Kivy : https://bitbucket.org/a5720144/test2-kivy/src
Test 3 :
## Read me ##
อยู่ใน repository เดียวกันกับ Assignment 1
ข้อ 2 : Hashcode คือ ตั้งแต่ 42:5a3cc073fd63 จนถึง 44:1ab3b822dc19
ข้อ 3 : Hashcode คือ 45:6e38426399de
วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2558
วันพุธที่ 18 พฤศจิกายน พ.ศ. 2558
วันจันทร์ที่ 14 กันยายน พ.ศ. 2558
Python GUI : Starting with Kivy
ทำไมต้อง Kivy ?!?!?
- Kivy มี built-in ที่รองรับอุปกรณ์ Multitouch
- Kivy สามารถนำ code Python ไปทำงานบน Moblie ได้
- Kivy สามารถใช้แทน Graphical interface เช่น HTML , CSS ได้
- Kivy ทำให้สามารถเขียน Application เดียว แต่ทำงานได้หลาย OS
วิธีการ Installation (สำหรับ python3)
ตัวอย่างต่างๆ จะอยู่ใน /usr/share/kivy-examples
- Kivy มี built-in ที่รองรับอุปกรณ์ Multitouch
- Kivy สามารถนำ code Python ไปทำงานบน Moblie ได้
- Kivy สามารถใช้แทน Graphical interface เช่น HTML , CSS ได้
- Kivy ทำให้สามารถเขียน Application เดียว แต่ทำงานได้หลาย OS
วิธีการ Installation (สำหรับ python3)
ตัวอย่างต่างๆ จะอยู่ใน /usr/share/kivy-examples
Version Control System : Install Mercurial
วิธีการ Install Mercurial
เปิด Terminal ขึ้นมา แล้วพิมคำสั่งตามด้านล่าง
credit : http://stackoverflow.com/questions/5627414/correct-way-to-install-mercurial-on-ubuntu
จากนั้นก็ Install หน้าตาจะประมาณนี้
และนี่ คือคำสั่งพื้นฐานของ Mercurial สามารถทราบได้ด้วยการพิม hg ลงใน Terminal
จากนั้น cd ไปที่ตำแหน่งที่เราต้องการสร้าง Directory ที่ต้องการเก็บ Source code (สมมติ Directory ชื่อ Building) แล้วพิม
จะทำการสร้าง Directory ขึ้นมา
จากนั้นนำ File source code ไปเก็บใน Directory ที่สร้างขึ้น
จากนั้น cd ไป Directory ที่สร้างขึ้น แล้วพิม
Mercurial จะทำการตรวจสอบ File ใน Directory และจะทำการ Add ไฟล์ให้
จากนั้น ให้ทำการพิม
เพื่อทำการแก้ไขค่า username
โปรแกรมจะให้เลือก editor ที่ต้องการจะใช้ ในที่นี้ผมเลือก nano
https://bitbucket.org/a5720144/building-software-system-i
แล้วแก้ค่าตามนี้
โดย username คือ username ของเรา แล้วตามด้วย <email>
ส่วน default ใน paths คือ url ของ repository ใน bitbucket เพื่อที่เวลา push จะทำการ push ไปใน repository นี้โดยอัตโนมัติ
เปิด Terminal ขึ้นมา แล้วพิมคำสั่งตามด้านล่าง
credit : http://stackoverflow.com/questions/5627414/correct-way-to-install-mercurial-on-ubuntu
จากนั้นก็ Install หน้าตาจะประมาณนี้
และนี่ คือคำสั่งพื้นฐานของ Mercurial สามารถทราบได้ด้วยการพิม hg ลงใน Terminal
จากนั้น cd ไปที่ตำแหน่งที่เราต้องการสร้าง Directory ที่ต้องการเก็บ Source code (สมมติ Directory ชื่อ Building) แล้วพิม
จะทำการสร้าง Directory ขึ้นมา
จากนั้นนำ File source code ไปเก็บใน Directory ที่สร้างขึ้น
จากนั้น cd ไป Directory ที่สร้างขึ้น แล้วพิม
Mercurial จะทำการตรวจสอบ File ใน Directory และจะทำการ Add ไฟล์ให้
จากนั้น ให้ทำการพิม
เพื่อทำการแก้ไขค่า username
โปรแกรมจะให้เลือก editor ที่ต้องการจะใช้ ในที่นี้ผมเลือก nano
https://bitbucket.org/a5720144/building-software-system-i
แล้วแก้ค่าตามนี้
โดย username คือ username ของเรา แล้วตามด้วย <email>
ส่วน default ใน paths คือ url ของ repository ใน bitbucket เพื่อที่เวลา push จะทำการ push ไปใน repository นี้โดยอัตโนมัติ
วันจันทร์ที่ 7 กันยายน พ.ศ. 2558
Python Practice : Capital
1111 : เมืองหลวง (Capital)
Problem type :
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
Problem type :
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)
ในประเทศแห่งหนึ่ง เมืองจำนวน N เมือง ถูกกำหนดชื่อด้วยจำนวนเต็มตั้งแต่ 1 ถึง N ที่ไม่ซ้ำกันเลย เมืองทั้งหมดถูกเชื่อมกันด้วยถนนทั้งสิ้น N-1 เส้น ทำให้เมืองสองเมืองใด ๆ สามารถไปมาหาสู่กันได้ด้วยเส้นทาง เส้นทางหนึ่งเสมอ
คุณเป็นชาวบ้านคนหนึ่งที่อาศัยอยู่ที่เมืองหมายเลข 1 และคุณต้องการทราบว่าเมืองที่อยู่ไกลจากเมืองหมายเลข 1 ที่สุดนั้น ห่างจากเมืองหมายเลข 1 เท่าไร
ข้อมูลนำเข้า
บรรทัดแรกประกอบด้วยจำนวนนับ n แทนจำนวนเมืองทั้งหมด ( 1 < n < 100 001 )
บรรทัดถัดมา n-1 บรรทัดเป็นข้อมูลของถนนแต่ละเส้น โดยจะประกอบด้วยจำนวนเต็ม Xi Yi Zi แสดงว่าถนนเส้นที่ i เชื่อมระหว่างเมือง Xi และ Yi และมีความยาว Zi ( 1 < Xi,Yi < n , Xi != Yi , 1 < Zi < 3000 )
ข้อมูลส่งออก
บรรทัดเดียว ประกอบด้วยจำนวนเต็ม 1 จำนวน แสดงระยะทางระหว่างเมืองหมายเลข 1 กับเมืองที่อยู่ไกลเมืองหมายเลข 1 มากที่สุด
หมายเหตุ มีชุดทดสอบทั้งสิ้น 28 ชุดโดย
4 ชุดทดสอบ n = 11
3 ชุดทดสอบ n = 101
3 ชุดทดสอบ n = 10001
5 ชุดทดสอบ n = 30001
4 ชุดทดสอบ n = 50001
9 ชุดทดสอบ n = 100001
3 ชุดทดสอบ n = 101
3 ชุดทดสอบ n = 10001
5 ชุดทดสอบ n = 30001
4 ชุดทดสอบ n = 50001
9 ชุดทดสอบ n = 100001
โจทย์โดย : สรวิทย์ สุริยกาญจน์ ( PS.int )
ที่มา : ศูนย์ สอวน. โรงเรียนมหิดลวิทยานุสรณ์
| ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
| 11 1 2 1427 1 3 741 1 4 1763 1 5 2491 1 6 1849 2 7 1219 3 8 1100 4 9 1071 3 10 1587 2 11 1418 | 2845 |
| 11 1 2 2445 2 3 1474 3 4 2493 4 5 1596 5 6 605 6 7 1531 7 8 1462 8 9 1389 9 10 1726 10 11 2112 | 16833 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2558
Python Practice : General
โจทย์จาก : http://programming.in.th/task/rev2_problem.php?pid=1092
ชุดข้อมูลทดสอบมูลค่าไม่เกิน 40 คะแนน มีค่า N,M≤1,000 และในทุกชุดข้อมูลทดสอบมีค่า N,M≤100,000
โจทย์โดย: ทักษพร กิตติอัครเสถียร ที่มา: TOI.C:05-2009
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่คือ Code !!
1092 : สงครามของนายพล (general)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
เกมออนไลน์ใหม่เพิ่งเปิดตัวขึ้น ในเกมนี้ ผู้เล่นแต่ละคนจะเล่นเป็นนายพลซึ่งมีหน้าที่คุมทหารจำนวนหนึ่ง
เมื่อเกิดการท้ารบระหว่างผู้เล่นสองคน ผู้เล่นที่ชนะการสู้รบคือผู้เล่นที่มีทหารจำนวนมากกว่า แต่ถ้าหากทั้งสองฝ่ายมีจำนวนทหารเท่ากัน ผู้เล่นที่ชนะคือผู้เล่นที่มีหมายเลขประจำตัวนายพลที่น้อยกว่า
ผู้เล่นที่ชนะ จะได้กำลังพลเพิ่มขึ้น ซึ่งเท่ากับทหารจำนวนครึ่งหนึ่งของฝ่ายที่แพ้ (กรณีที่จำนวนทหารหารด้วยสองไม่ลงตัว ให้ปัดเศษทิ้ง)
ผู้เล่นที่แพ้ จะถูกเปลี่ยนจากสถานะ “นายพล” เป็นสถานะ “เชลย” ของผู้เล่นที่ชนะ นอกจากนี้ผู้เล่นที่เคยตกเป็นเชลยของฝ่ายแพ้ จะกลายเป็นเชลยของฝั่งผู้ชนะในการแข่งขันด้วย
บางครั้งนายพลบางคนก็ขี้ขลาด ไม่ยอมท้ารบกับนายพลด้วยกันเอง แต่กลับไปท้ารบกับเชลยของนายพลคนอื่น ในกรณีเหล่านี้ นายพลของเชลยที่ถูกท้ารบนั้นก็มีหน้าที่ต้องปกป้องเชลยของตน และจะต้องต่อสู้แทนเชลยคนนั้น หรือบางครั้งเชลยก็ทะเลาะกันเอง จนทำให้นายพลของเชลยเหล่านี้ต้องมารบกัน ก็เป็นไปได้เช่นเดียวกัน
คุณเป็นผู้ดูแลระบบเกมออนไลน์นี้ คุณได้รับข้อมูลการปะทะกันระหว่างผู้เล่นแต่ละคู่ หน้าที่ของคุณคือบอกว่าในแต่ละครั้ง ผู้เล่นฝั่งใดเป็นฝ่ายชนะ
งานของคุณ
คุณมีไฟล์ประวัติว่า ในช่วงหนึ่งอาทิตย์ที่ผ่านมา มีใครท้ารบกับใครบ้าง หน้าที่ของคุณคือคำนวณว่า ในการสู้รบแต่ละครั้ง นายพลคนไหนเป็นผู้ชนะ เนื่องจากอาจมีการท้ารบระหว่างเชลยหลายคนที่อยู่ใต้การควบคุมของนายพลคน เดียวกันได้ ในกรณีนี้ให้ตอบ -1
ข้อมูลนำเข้า
บรรทัดแรกมีจำนวนเต็มสองจำนวน N, M แทนจำนวนนายพลและจำนวนครั้งในการรบ (1≤N,M≤100,000)
อีก N บรรทัดถัดมาบอกข้อมูลของจำนวนทหารของผู้เล่นแต่ละคนในตอนเริ่มต้น โดยในบรรทัดที่ i+1 มีจำนวนเต็มหนึ่งตัว แสดงจำนวนทหารที่นายพลหมายเลข i มี ผู้เล่นแต่ละคนมีทหารจำนวนไม่เกิน 10,000 นายในตอนเริ่มต้น
อีก M บรรทัด มีจำนวนเต็มบรรทัดละสองตัวคือ a,b แสดงว่า a และ b ท้ารบกัน (1≤a,b≤N และ a≠b)
ข้อมูลส่งออก
มี M บรรทัด แต่ละบรรทัดบอกหมายเลขประจำตัวนายพลของฝั่งผู้ชนะของการรบแต่ละครั้ง ถ้าไม่มีการรบเกิดขึ้น (คนที่ท้ารบกันเป็นเชลยของนายพลคนเดียวกัน) ให้พิมพ์ -1
การให้คะแนนเมื่อเกิดการท้ารบระหว่างผู้เล่นสองคน ผู้เล่นที่ชนะการสู้รบคือผู้เล่นที่มีทหารจำนวนมากกว่า แต่ถ้าหากทั้งสองฝ่ายมีจำนวนทหารเท่ากัน ผู้เล่นที่ชนะคือผู้เล่นที่มีหมายเลขประจำตัวนายพลที่น้อยกว่า
ผู้เล่นที่ชนะ จะได้กำลังพลเพิ่มขึ้น ซึ่งเท่ากับทหารจำนวนครึ่งหนึ่งของฝ่ายที่แพ้ (กรณีที่จำนวนทหารหารด้วยสองไม่ลงตัว ให้ปัดเศษทิ้ง)
ผู้เล่นที่แพ้ จะถูกเปลี่ยนจากสถานะ “นายพล” เป็นสถานะ “เชลย” ของผู้เล่นที่ชนะ นอกจากนี้ผู้เล่นที่เคยตกเป็นเชลยของฝ่ายแพ้ จะกลายเป็นเชลยของฝั่งผู้ชนะในการแข่งขันด้วย
บางครั้งนายพลบางคนก็ขี้ขลาด ไม่ยอมท้ารบกับนายพลด้วยกันเอง แต่กลับไปท้ารบกับเชลยของนายพลคนอื่น ในกรณีเหล่านี้ นายพลของเชลยที่ถูกท้ารบนั้นก็มีหน้าที่ต้องปกป้องเชลยของตน และจะต้องต่อสู้แทนเชลยคนนั้น หรือบางครั้งเชลยก็ทะเลาะกันเอง จนทำให้นายพลของเชลยเหล่านี้ต้องมารบกัน ก็เป็นไปได้เช่นเดียวกัน
คุณเป็นผู้ดูแลระบบเกมออนไลน์นี้ คุณได้รับข้อมูลการปะทะกันระหว่างผู้เล่นแต่ละคู่ หน้าที่ของคุณคือบอกว่าในแต่ละครั้ง ผู้เล่นฝั่งใดเป็นฝ่ายชนะ
งานของคุณ
คุณมีไฟล์ประวัติว่า ในช่วงหนึ่งอาทิตย์ที่ผ่านมา มีใครท้ารบกับใครบ้าง หน้าที่ของคุณคือคำนวณว่า ในการสู้รบแต่ละครั้ง นายพลคนไหนเป็นผู้ชนะ เนื่องจากอาจมีการท้ารบระหว่างเชลยหลายคนที่อยู่ใต้การควบคุมของนายพลคน เดียวกันได้ ในกรณีนี้ให้ตอบ -1
ข้อมูลนำเข้า
บรรทัดแรกมีจำนวนเต็มสองจำนวน N, M แทนจำนวนนายพลและจำนวนครั้งในการรบ (1≤N,M≤100,000)
อีก N บรรทัดถัดมาบอกข้อมูลของจำนวนทหารของผู้เล่นแต่ละคนในตอนเริ่มต้น โดยในบรรทัดที่ i+1 มีจำนวนเต็มหนึ่งตัว แสดงจำนวนทหารที่นายพลหมายเลข i มี ผู้เล่นแต่ละคนมีทหารจำนวนไม่เกิน 10,000 นายในตอนเริ่มต้น
อีก M บรรทัด มีจำนวนเต็มบรรทัดละสองตัวคือ a,b แสดงว่า a และ b ท้ารบกัน (1≤a,b≤N และ a≠b)
ข้อมูลส่งออก
มี M บรรทัด แต่ละบรรทัดบอกหมายเลขประจำตัวนายพลของฝั่งผู้ชนะของการรบแต่ละครั้ง ถ้าไม่มีการรบเกิดขึ้น (คนที่ท้ารบกันเป็นเชลยของนายพลคนเดียวกัน) ให้พิมพ์ -1
ชุดข้อมูลทดสอบมูลค่าไม่เกิน 40 คะแนน มีค่า N,M≤1,000 และในทุกชุดข้อมูลทดสอบมีค่า N,M≤100,000
โจทย์โดย: ทักษพร กิตติอัครเสถียร ที่มา: TOI.C:05-2009
| ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
| 5 4 3 4 5 6 7 1 5 1 2 1 2 3 4 | 5 5 -1 4 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่คือ Code !!
Python Practice : DNA
โจทย์จาก : http://programming.in.th/task/rev2_problem.php?pid=1019
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่ คือ Code
1019 : DNA
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 64 megabyte(s)
ดีเอ็นเอ (Deoxyribonucleic acid)
คือ สารพันธุกรรมที่สามารถนำมาใช้เป็นเอกลักษณ์ของสิ่งมีชีวิต
โดยดีเอ็นเอนี้เมื่อผ่านการถอดความหมายมาจากสารพันธุกรรมใดๆแล้วจะถูกนำมา
เก็บในลักษณะของสายอักขระ โดยตัวอักขระนั้นจะมีเพียงแค่สี่ตัวเท่านั้น
นั่นคือ A C G และ T
ในการวิเคราะห์ดีเอ็นเอของคุณหญิงหมอ มักประสบปัญหาที่ข้อมูลที่ต้องการเปรียบเทียบแม้ว่าสิ่งมีชีวิตชนิดเดียวกัน แต่ตำแหน่งเริ่มต้นไม่ตรงกันทำให้ยากที่จะเปรียบเทียบกันได้ ตัวอย่างเช่น สารชนิดแรกได้ผลมาเป็น AAAACTGCTACCGGT และชิ้นที่สองคือ CTGAATCTACTGCTATTGCAA หากสังเกตให้ดีจะเห็นได้ว่าส่วนที่เหมือนกันที่มีความยาวต่อเนื่องมากที่สุด คือ ACTGCTA
ข้อมูลที่ซ้ำและยาวที่สุดอาจมีได้หลายชุด หน้าที่ของเราคือเขียนโปรแกรมเพื่อช่วยคุณหญิงหมอหาส่วนที่เหมือนกันอย่าง ต่อเนื่องของดีเอ็นเอจำนวน 2 สาย
ข้อมูลนำเข้า
บรรทัดแรกและบรรทัดที่สอง แต่ละบรรทัดเก็บข้อมูลของดีเอ็นเอแต่ละสาย โดยแต่ละสายจะประกอบด้วยอักขระ ‘A’ ‘C’ ‘G’ ‘T’ เท่านั้น โดยความยาวของแต่ละสายเป็น L โดยที่ 1 < L < 200
ข้อมูลส่งออก
บรรทัดแรก เป็นแสดง ส่วนที่เหมือนกันที่ยาวที่สุด ของดีเอ็นเอทั้งสองสาย ถ้ามีส่วนที่ยาวที่สุดมากกว่าหนึ่งคำตอบให้เลือกตอบส่วนที่ยาวที่สุดสายแรก ที่พบ
("สายแรก" หมายถึง สายย่อยที่อยู่ซ้ายที่สุดของดีเอ็นเอสายแรก)
ที่มา: การแข่งขันคณิตศาสตร์ วิทยาศาสตร์ โอลิมปิกแห่งประเทศไทย สาขาวิชาคอมพิวเตอร์ ประจำปี 2547
ในการวิเคราะห์ดีเอ็นเอของคุณหญิงหมอ มักประสบปัญหาที่ข้อมูลที่ต้องการเปรียบเทียบแม้ว่าสิ่งมีชีวิตชนิดเดียวกัน แต่ตำแหน่งเริ่มต้นไม่ตรงกันทำให้ยากที่จะเปรียบเทียบกันได้ ตัวอย่างเช่น สารชนิดแรกได้ผลมาเป็น AAAACTGCTACCGGT และชิ้นที่สองคือ CTGAATCTACTGCTATTGCAA หากสังเกตให้ดีจะเห็นได้ว่าส่วนที่เหมือนกันที่มีความยาวต่อเนื่องมากที่สุด คือ ACTGCTA
ข้อมูลที่ซ้ำและยาวที่สุดอาจมีได้หลายชุด หน้าที่ของเราคือเขียนโปรแกรมเพื่อช่วยคุณหญิงหมอหาส่วนที่เหมือนกันอย่าง ต่อเนื่องของดีเอ็นเอจำนวน 2 สาย
ข้อมูลนำเข้า
บรรทัดแรกและบรรทัดที่สอง แต่ละบรรทัดเก็บข้อมูลของดีเอ็นเอแต่ละสาย โดยแต่ละสายจะประกอบด้วยอักขระ ‘A’ ‘C’ ‘G’ ‘T’ เท่านั้น โดยความยาวของแต่ละสายเป็น L โดยที่ 1 < L < 200
ข้อมูลส่งออก
บรรทัดแรก เป็นแสดง ส่วนที่เหมือนกันที่ยาวที่สุด ของดีเอ็นเอทั้งสองสาย ถ้ามีส่วนที่ยาวที่สุดมากกว่าหนึ่งคำตอบให้เลือกตอบส่วนที่ยาวที่สุดสายแรก ที่พบ
("สายแรก" หมายถึง สายย่อยที่อยู่ซ้ายที่สุดของดีเอ็นเอสายแรก)
ที่มา: การแข่งขันคณิตศาสตร์ วิทยาศาสตร์ โอลิมปิกแห่งประเทศไทย สาขาวิชาคอมพิวเตอร์ ประจำปี 2547
| ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
| AAAACTGCTACCGGT CTGAATCTACTGCTATTGCAA | ACTGCTA |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
และนี่ คือ Code
สมัครสมาชิก:
บทความ (Atom)






