# โจทย์ 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)