# โจทย์ 2 กรุณาอ่านรายละเอียดก่อนส่ง โดยเฉพาะในหัวข้อ **เกณฑ์การคัดเลือก** และ **การส่งคำตอบ** ข้างล่าง ## 2A กราฟอวัฏจักรระบุทิศทางในรูปนี้ มีวิธีการเดินทางจากจุด A ไปยังจุด R ได้หลายวิธี (ทั้งหมด 84 วิธี) ให้เขียนโปรแกรมแสดงเส้นทางทั้งหมดที่เป็นไปได้ ![](https://i.imgur.com/34VlUUL.png) เวลารันโค้ดแล้ว ควรแสดงผลลัพธ์นี้ออกมา: ``` 1. A-B-F-I-M-N-P-R 2. A-B-F-I-M-N-Q-R 3. A-B-F-I-M-P-R 4. A-B-F-J-M-N-P-R 5. A-B-F-J-M-N-Q-R 6. A-B-F-J-M-P-R 7. A-B-F-J-N-P-R 8. A-B-F-J-N-Q-R 9. A-B-F-M-N-P-R 10. A-B-F-M-N-Q-R 11. A-B-F-M-P-R 12. A-C-F-I-M-N-P-R 13. A-C-F-I-M-N-Q-R 14. A-C-F-I-M-P-R 15. A-C-F-J-M-N-P-R 16. A-C-F-J-M-N-Q-R 17. A-C-F-J-M-P-R 18. A-C-F-J-N-P-R 19. A-C-F-J-N-Q-R 20. A-C-F-M-N-P-R 21. A-C-F-M-N-Q-R 22. A-C-F-M-P-R 23. A-C-G-J-M-N-P-R 24. A-C-G-J-M-N-Q-R 25. A-C-G-J-M-P-R 26. A-C-G-J-N-P-R 27. A-C-G-J-N-Q-R 28. A-C-G-K-N-P-R 29. A-C-G-K-N-Q-R 30. A-C-G-K-O-N-P-R 31. A-C-G-K-O-N-Q-R 32. A-C-G-K-O-Q-R 33. A-C-J-M-N-P-R 34. A-C-J-M-N-Q-R 35. A-C-J-M-P-R 36. A-C-J-N-P-R 37. A-C-J-N-Q-R 38. A-D-G-J-M-N-P-R 39. A-D-G-J-M-N-Q-R 40. A-D-G-J-M-P-R 41. A-D-G-J-N-P-R 42. A-D-G-J-N-Q-R 43. A-D-G-K-N-P-R 44. A-D-G-K-N-Q-R 45. A-D-G-K-O-N-P-R 46. A-D-G-K-O-N-Q-R 47. A-D-G-K-O-Q-R 48. A-D-H-K-N-P-R 49. A-D-H-K-N-Q-R 50. A-D-H-K-O-N-P-R 51. A-D-H-K-O-N-Q-R 52. A-D-H-K-O-Q-R 53. A-D-H-L-O-N-P-R 54. A-D-H-L-O-N-Q-R 55. A-D-H-L-O-Q-R 56. A-D-H-O-N-P-R 57. A-D-H-O-N-Q-R 58. A-D-H-O-Q-R 59. A-D-K-N-P-R 60. A-D-K-N-Q-R 61. A-D-K-O-N-P-R 62. A-D-K-O-N-Q-R 63. A-D-K-O-Q-R 64. A-E-H-K-N-P-R 65. A-E-H-K-N-Q-R 66. A-E-H-K-O-N-P-R 67. A-E-H-K-O-N-Q-R 68. A-E-H-K-O-Q-R 69. A-E-H-L-O-N-P-R 70. A-E-H-L-O-N-Q-R 71. A-E-H-L-O-Q-R 72. A-E-H-O-N-P-R 73. A-E-H-O-N-Q-R 74. A-E-H-O-Q-R 75. A-G-J-M-N-P-R 76. A-G-J-M-N-Q-R 77. A-G-J-M-P-R 78. A-G-J-N-P-R 79. A-G-J-N-Q-R 80. A-G-K-N-P-R 81. A-G-K-N-Q-R 82. A-G-K-O-N-P-R 83. A-G-K-O-N-Q-R 84. A-G-K-O-Q-R ``` เพื่อความสะดวก [สามารถใช้เว็บนี้เช็คคำตอบของข้อนี้ได้](https://codesandbox.io/embed/codegolf-party-2a-answer-checker-forked-4j74p5?fontsize=14&hidenavigation=1&theme=dark&view=preview) (ขอขอบคุณ [@narze](https://github.com/narze)) ## 2B ให้เขียนโปรแกรมที่แสดงตัวเลข 1–100 โดยแสดงผลบรรทัดละเลข เวลารันโค้ดแล้ว ควรแสดงผลลัพธ์นี้ออกมา: ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ``` ## ภาษา สามารถเลือกใช้ภาษาได้ตามนี้: Bash, C, C#, C++, CJam\*, Clojure, D, Dart, F#, Go, GolfScript\*, Groovy, Haskell, Java, JavaScript, Kotlin, Lua, OCaml, Pascal, Perl, PHP, Pyth\*, Python 3, Ruby, Rust, Scala, Swift, TypeScript, VB.NET (\* ภาษา [CJam](https://esolangs.org/wiki/CJam), [GolfScript](https://esolangs.org/wiki/GolfScript), [Pyth](https://esolangs.org/wiki/Pyth) สามารถใช้ส่งคำตอบในรอบนี้ได้ แต่อาจจะไม่มีให้ใช้ในวันงาน) คำแนะนำสำหรับบางภาษา - ภาษาที่ต้องใช้ Main class หรือ Main function อย่าลืมใส่มาให้ด้วย ถ้าส่งโค้ดเปล่าๆ มา [Piston](https://github.com/engineer-man/piston) อาจจะคอมไพล์ไม่ผ่าน - ภาษา PHP อย่าลืมใส่ `<?php` หรือ `<?=` มาด้วย ## ตัวอย่างโค้ด ข้อ 2A ไม่มีตัวอย่างโค้ด ข้อ 2B ภาษา VB.NET: ```vb Module M Sub Main() Dim i As Integer For i = 1 To 100 Console.WriteLine(i) Next End Sub End Module ``` ## เกณฑ์การคัดเลือก - การคัดเลือก - 2A: เราจะปล่อยบัตรให้คนที่ส่งโค้ดที่สั้นที่สุด ที่พอรันแล้วได้ผลลัพธ์ที่ถูกต้อง 7 อันดับแรก **กรุณาแก้โจทย์ด้วยตัวเอง** ในกรณีที่มีการส่งโค้ดที่หน้าตาเหมือนกันเข้ามาเยอะจนทีมงานเกิดความ sus ทีมงานขอสงวนสิทธิในการแจกบัตรให้เฉพาะคนแรกที่ส่งโค้ดนั้น - 2B: เราจะปล่อยบัตรให้คนที่ส่งโค้ดที่สั้นที่สุด ที่พอรันแล้วได้ผลลัพธ์ที่ถูกต้อง **ในแต่ละภาษา ภาษาละ 1 อันดับ** โดยนับเฉพาะภาษาที่มีคำตอบที่สั้นที่สุด 5 ภาษา และไม่นับคนที่จะได้รับบัตรจากข้อ 2A - การตรวจคำตอบ จะใช้ [Piston](https://github.com/engineer-man/piston) ในการรันโค้ด - ตัวตรวจจะเช็คผลลัพธ์จากข้อมูลที่ออกมาทาง standard output ระหว่างที่รันโค้ด (ไม่นับข้อมูลที่ออกมาทาง standard error) - ตัวตรวจจะไม่นับ trailing whitespace ท้ายบรรทัด โดย output ของโค้ด จะถูกแยกเป็นบรรทัดๆ ด้วยโค้ดนี้ `normalize = (s) => s.trimEnd().split(/\r\n|\r|\n/).map((l) => l.trimEnd())` - การวัดความยาวของโค้ด ใช้วิธีการนับขนาดของโค้ดเป็นไบต์ - ตัวอย่างเช่น `console.log("Hello, world!")` นับเป็น 28 ไบต์ - โค้ดตัวอย่างในหัวข้อก่อนหน้า นับเป็น 98 ไบต์ - ในกรณีที่ความยาวโค้ดเท่ากัน จะจัดอันดับตามเวลาที่ส่ง ## การส่งคำตอบ [ส่งคำตอบผ่าน Application Form ของ Eventpop](https://www.eventpop.me/e/13449#event-application-forms) ได้ในวันที่ 13 สิงหาคม **ระหว่างเวลา 12:00 ถึง 21:00** และจะประกาศผลผู้ที่ได้รับบัตรเข้าร่วมงานในรอบนี้ในวันที่ 14 สิงหาคม - โจทย์ 2A ให้ส่งคำตอบที่ฟอร์ม “สมัครเข้าร่วมงาน (Batch 2A)” - โจทย์ 2B **สามารถส่งโค้ดได้ คนละ 2 ภาษา** ให้ส่งคำตอบที่ฟอร์ม “สมัครเข้าร่วมงาน (Batch 2B/1)” และ “สมัครเข้าร่วมงาน (Batch 2B/2)” > ### ตัวอย่าง > ![](https://i.imgur.com/UUqiHnE.png)