โจทย์ 2

กรุณาอ่านรายละเอียดก่อนส่ง โดยเฉพาะในหัวข้อ เกณฑ์การคัดเลือก และ การส่งคำตอบ ข้างล่าง

2A

กราฟอวัฏจักรระบุทิศทางในรูปนี้ มีวิธีการเดินทางจากจุด A ไปยังจุด R ได้หลายวิธี (ทั้งหมด 84 วิธี) ให้เขียนโปรแกรมแสดงเส้นทางทั้งหมดที่เป็นไปได้

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

เวลารันโค้ดแล้ว ควรแสดงผลลัพธ์นี้ออกมา:

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

เพื่อความสะดวก สามารถใช้เว็บนี้เช็คคำตอบของข้อนี้ได้ (ขอขอบคุณ @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, GolfScript, Pyth สามารถใช้ส่งคำตอบในรอบนี้ได้ แต่อาจจะไม่มีให้ใช้ในวันงาน)

คำแนะนำสำหรับบางภาษา

  • ภาษาที่ต้องใช้ Main class หรือ Main function อย่าลืมใส่มาให้ด้วย ถ้าส่งโค้ดเปล่าๆ มา Piston อาจจะคอมไพล์ไม่ผ่าน
  • ภาษา PHP อย่าลืมใส่ <?php หรือ <?= มาด้วย

ตัวอย่างโค้ด

ข้อ 2A ไม่มีตัวอย่างโค้ด

ข้อ 2B ภาษา VB.NET:

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 ในการรันโค้ด
    • ตัวตรวจจะเช็คผลลัพธ์จากข้อมูลที่ออกมาทาง 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 ได้ในวันที่ 13 สิงหาคม ระหว่างเวลา 12:00 ถึง 21:00 และจะประกาศผลผู้ที่ได้รับบัตรเข้าร่วมงานในรอบนี้ในวันที่ 14 สิงหาคม

  • โจทย์ 2A ให้ส่งคำตอบที่ฟอร์ม “สมัครเข้าร่วมงาน (Batch 2A)”
  • โจทย์ 2B สามารถส่งโค้ดได้ คนละ 2 ภาษา ให้ส่งคำตอบที่ฟอร์ม “สมัครเข้าร่วมงาน (Batch 2B/1)” และ “สมัครเข้าร่วมงาน (Batch 2B/2)”

ตัวอย่าง