20 คะแนน โดย GN⁺ 2025-12-01 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Advent of Code คือ ปฏิทินแอดเวนต์ปริศนาการเขียนโปรแกรม สำหรับโปรแกรมเมอร์หลากหลายระดับ และสามารถแก้ได้ด้วยภาษาใดก็ได้
  • ผู้เข้าร่วมสามารถนำไปใช้ได้หลากหลายวัตถุประสงค์ เช่น เตรียมสัมภาษณ์, อบรมในองค์กร, งานมหาวิทยาลัย, แบบฝึกหัด, การแข่งความเร็ว
  • สามารถเข้าร่วมได้แม้ไม่ได้เรียนสาขาวิทยาการคอมพิวเตอร์ และโจทย์ถูกออกแบบให้ รันจบได้ภายใน 15 วินาทีแม้บนคอมพิวเตอร์อายุ 10 ปี
  • เว็บไซต์รองรับ การยืนยันตัวตนด้วย OAuth, โหมดคอนทราสต์สูง, ลีดเดอร์บอร์ดส่วนตัว, ฟังก์ชันเลือกข้อความในบล็อกโค้ด เป็นต้น
  • ลีดเดอร์บอร์ดทั่วโลกถูกยกเลิกไปเพราะปัญหา ความเครียดและการโกง และเน้นย้ำประสบการณ์การแก้โจทย์ที่ สนุกและยึดผู้เข้าร่วมเป็นศูนย์กลาง

ภาพรวมของ Advent of Code

  • Advent of Code เป็นอีเวนต์ปริศนาการเขียนโปรแกรมประจำปีที่สร้างโดย Eric Wastl โดยนำเสนอปริศนาในรูปแบบ ปฏิทินแอดเวนต์ออนไลน์ ซึ่งเริ่มทุกวันที่ 1 ธันวาคมของทุกปี
    • ผู้เข้าร่วมจะแก้โจทย์ใหม่ทุกวัน และสามารถใช้ภาษาใดก็ได้โดยไม่มีข้อจำกัด
    • โจทย์สามารถนำไปใช้ได้หลายรูปแบบ เช่น เตรียมสัมภาษณ์, การศึกษา, การฝึกฝน, การแข่งขัน, การท้าทายกันเอง
  • การเข้าร่วม ไม่จำเป็นต้องมีความรู้ด้านวิทยาการคอมพิวเตอร์โดยเฉพาะ มีเพียงพื้นฐานการเขียนโปรแกรมและทักษะแก้ปัญหาก็เพียงพอ
    • ทุกโจทย์สามารถ รันเสร็จได้ภายใน 15 วินาทีแม้บนฮาร์ดแวร์อายุ 10 ปี

วิธีเข้าร่วมและการสนับสนุน

  • หากต้องการสนับสนุน Advent of Code สามารถแชร์ผ่าน Bluesky, Twitter, Mastodon หรือสนับสนุนโดยตรงผ่าน AoC++ ได้
  • หากติดขัดระหว่างแก้โจทย์ แนะนำให้ ตรวจสอบอินพุตตัวอย่าง, เขียนเทสต์เคส, ขอความช่วยเหลือจากเพื่อน, ขอคำใบ้ใน subreddit

เคล็ดลับทั่วไป (General Tips)

  • หากอินพุตและเอาต์พุตตัวอย่างไม่ตรงกัน ควรกลับไปอ่านคำอธิบายโจทย์อีกครั้งและตรวจสอบการทำงานของโค้ด
  • หากผ่านตัวอย่างแล้วแต่คำตอบยังผิด ให้สร้าง เทสต์เคสที่ตรวจสอบด้วยตนเองได้ เพื่อยืนยันผล
  • หากยังแก้ไม่ได้ อาจ พักสักครู่แล้วกลับมาลองใหม่ หรือ ถามชุมชน ได้

คำถามที่พบบ่อย (FAQ)

  • การเลือกบล็อกโค้ด: เมื่อเปิดใช้ JavaScript สามารถเลือกทั้งหมดได้ด้วย การคลิกสามครั้ง
  • วิธีการยืนยันตัวตน: ใช้ OAuth เพื่อล็อกอินผ่านบริการภายนอก เช่น Reddit, GitHub โดยข้อมูลรับรองจะถูกส่งไปยังบริการนั้นเท่านั้น
    • Advent of Code จะเก็บเพียง ID, ชื่อ, URL, รูปภาพ ของผู้ใช้
  • การเปลี่ยนแปลงของความยาก: โจทย์จะยากขึ้นอย่างค่อยเป็นค่อยไปตลอดช่วงอีเวนต์ และ ระดับความยากที่รับรู้ได้ จะแตกต่างกันไปตามทักษะของแต่ละคน
  • เวลาเปิดเผยปริศนา: เผยแพร่ตอน เที่ยงคืนตามเวลามาตรฐานฝั่งตะวันออกของสหรัฐฯ (UTC-5) เพราะเป็นช่วงเวลาที่ผู้ดูแลสามารถจัดการได้
    • หากต้องการการแข่งขัน สามารถแข่งกันตามภูมิภาคผ่าน ลีดเดอร์บอร์ดส่วนตัว ได้
  • ปัญหาด้านการอ่าน: รองรับ โหมดคอนทราสต์สูง และสามารถเปิดเป็นค่าเริ่มต้นใน Firefox ได้
  • ห้ามเสนอไอเดียปริศนา: เนื่องจากปัญหาด้านลิขสิทธิ์ จึงไม่รับไอเดียปริศนาจากภายนอก
  • การรายงานบั๊ก: หากผ่านไปเกิน 1 ชั่วโมงหลังเผยแพร่ปริศนาแล้ว มักมีผู้ใช้จำนวนมากแก้ได้แล้ว จึงมีโอกาสที่เป็นบั๊กค่อนข้างต่ำ
    • หากมีปัญหา แนะนำให้ตรวจสอบใน subreddit ก่อน
  • เป็นการแข่งขันความเร็วหรือไม่: หากต้องการแก้ให้เร็ว จำเป็นต้องมี การฝึกฝนและทักษะเพิ่มเติม แต่สิ่งสำคัญคือ เข้าร่วมในแบบที่สอดคล้องกับเป้าหมายของตนเอง
  • การเปลี่ยนจำนวนวันของอีเวนต์: หลังคงตารางเดิมมา 10 ปี ได้เปลี่ยนให้จบในช่วงกลางเดือนเพื่อลด ภาระด้านเวลาของผู้จัด
  • การยกเลิกลีดเดอร์บอร์ดระดับโลก: หลังผ่านไป 10 ปี ได้ยกเลิกเพราะปัญหาการแข่งขันที่รุนแรงเกินไป รวมถึง การโจมตีแบบ DDoS และความเครียดของผู้ใช้
    • มีการเพิ่ม ฟังก์ชันแชร์ลีดเดอร์บอร์ดส่วนตัวแบบอ่านอย่างเดียว มาแทน
  • การใช้ AI: เนื่องจากปริศนามีเป้าหมายเพื่อ พัฒนาความคิดของมนุษย์ จึงไม่แนะนำให้ใช้ AI
    • มีการอธิบายด้วยอุปมาว่า “ให้คนอื่นออกกำลังกายแทน ก็ไม่ได้ทำให้ตัวคุณแข็งแรงขึ้น”
  • ห้ามคัดลอกเนื้อหา: แม้ Advent of Code จะใช้งานได้ฟรี แต่ ห้ามคัดลอกข้อความปริศนาหรือข้อมูลอินพุต
    • รวมถึงห้ามเลียนแบบดีไซน์หรือชื่อของเว็บไซต์ด้วย

เครดิต (Credits)

  • ปริศนา, โค้ด, ดีไซน์: Eric Wastl
  • เบต้าเทสต์: Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
  • ผู้จัดการชุมชน: Danielle Lucek, Aneurysm9
  • ผู้เข้าร่วม: ผู้ใช้ทุกคน

ข้อกฎหมาย (Legal)

  • Advent of Code เป็น เครื่องหมายการค้าจดทะเบียนในสหรัฐอเมริกา และดีไซน์ ภาษา สไตล์ และคอนเซปต์ทั้งหมดเป็นทรัพย์สินเฉพาะ
    • ห้ามคัดลอกหรือนำไปใช้โดยไม่มีความยินยอมเป็นลายลักษณ์อักษรอย่างชัดแจ้ง
  • สามารถ ลิงก์หรืออ้างอิง ปริศนาได้อย่างเสรี และอนุญาตแม้ในบริบทเชิงพาณิชย์
  • Advent of Code ไม่อ้างสิทธิ์ลิขสิทธิ์ในโค้ดคำตอบ ของผู้เข้าร่วม

2 ความคิดเห็น

 
roxie 2025-12-01

ปีที่แล้วก็ได้ร่วมเล่นไปนิดหน่อยเหมือนกัน... เวลาหนึ่งปีผ่านไปเร็วจริง ๆ ฮือ

 
GN⁺ 2025-12-01
ความคิดเห็นจาก Hacker News
  • ทุกครั้งที่ได้ยินว่าคนที่ไม่มีพื้นฐานวิทยาการคอมพิวเตอร์ก็เข้าร่วมได้ ก็รู้สึกว่าจริงๆ แล้วมันอาจทำให้ โปรแกรมเมอร์สายงานอดิเรก ผิดหวังได้
    ถ้าคำว่า “ไปได้ไกลพอสมควร” หมายถึงการแก้โจทย์ง่ายๆ 1-2 ข้อก็คงจริง แต่เกินจากนั้นไม่ง่ายเลย

    • มีคนบอกว่าโจทย์ “ง่ายเกินไป” ซึ่งทำให้ฉันสงสัยจริงๆ ว่าเขาอยู่กันในโลกแบบไหน
    • ฉันก็เห็นด้วย ตกใจเหมือนกันที่เห็นเพื่อนๆ ที่ทำงานเป็นนักพัฒนากลับ คืบหน้าได้น้อยกว่าที่คิด
  • Advent of Code คือ ไฮไลต์ ของเดือนธันวาคมในทุกปี
    น่าเสียดายที่ลีดเดอร์บอร์ดระดับโลกหายไป แต่ก็พอเข้าใจได้ การที่ปีนี้จัดแค่ 12 วันก็ดีเพราะช่วยลดภาระลง
    อย่าพยายาม “เอาชนะ” แต่แค่สนุกกับการแก้ปัญหาก็พอ

    • แม้จะมี 12 วัน แต่จริงๆ แล้วมี 24 ชาเลนจ์ ดังนั้นฉันตั้งใจจะค่อยๆ สนุกกับมันตลอด 24 วัน
    • น่าเสียดายที่ลดเหลือ 12 วัน แต่เดิมทีลีดเดอร์บอร์ดระดับโลกก็แข่งกันจริงจังยากอยู่แล้วเพราะ ความเหลื่อมล้ำของเขตเวลา ลีดเดอร์บอร์ดส่วนตัวดีกว่าเยอะ
    • ปีนี้คิดว่าจะทำ ลีดเดอร์บอร์ดในกลุ่ม กับเพื่อนๆ แทน ยังไงก็ขึ้นระดับโลกไม่ไหวอยู่แล้ว
    • เห็นได้ชัดว่าฉันคงไม่ใช่นักพัฒนา เพราะไม่ได้สนใจอีเวนต์แบบนี้เลยแม้แต่น้อย
  • ฉัน รัก Advent of Code มากจริงๆ
    ที่ปีนี้มีแค่ 12 วันกลับเป็นเรื่องน่ายินดีเสียอีก ช่วงปลายปีมีตารางชีวิตจริงเยอะ ปีที่แล้วเลยทำได้แค่ประมาณครึ่งเดียว
    ขอขอบคุณผู้จัดอย่างมาก

    • ปีที่แล้วฉันทำได้ถึงแค่วันที่ 7 ปีนี้เลยดีใจที่มันกดดันน้อยลง
    • คราวนี้อาจจะได้ทำจบจนจบจริงๆ สักที
    • ตื่นเต้นกับปีนี้มาก
  • ปีนี้เป็นครั้งแรกที่ฉันลอง Advent of Code แล้วมัน สนุกมาก
    คล้าย Project Euler แต่เน้นการเขียนโปรแกรมมากกว่าคณิตศาสตร์
    ด่านแรกค่อนข้างง่าย แต่ด่านสองต้องการ แนวทางที่ปรับให้มีประสิทธิภาพ เลยยิ่งน่าสนใจ

  • การเอาลีดเดอร์บอร์ดสาธารณะออกถือว่าสมเหตุสมผล
    ต่อให้ไม่นับปัญหา LLM ก็แทบจะแข่งไม่ได้อยู่แล้วนอกจากจะอยู่ใน เขตเวลาของสหรัฐฯ บางช่วง
    แต่ถ้าได้เห็นสถิติอย่างอัตราการแก้โจทย์แยกตามเขตเวลาทั่วโลกก็น่าจะสนุกดี

    • LLM ทำให้มันพังไปก็จริง แต่เมื่อก่อนการดูคนระดับท็อปแก้โจทย์กันจริงๆ ก็น่าสนใจมาก
      การดู วิดีโอเขียนโค้ดสด บน YouTube ก็สนุกเหมือนกัน
  • ฉันรอ Advent of Code ทุกปี
    ฉันไม่กดดันตัวเองกับลีดเดอร์บอร์ด แต่ใช้มันเป็นโอกาสในการเรียนรู้ภาษาใหม่หรือ ขัดเกลาทักษะ
    ปกติเราไม่ได้ต้องมาบูตสแตรปโปรเจกต์เองหรือเขียน DFS กันบ่อยๆ ดังนั้นอีเวนต์แบบนี้จึงเป็นการฝึกที่ดี

    • ฉันเองก็อยากลองทำงานที่มีแต่การแก้โจทย์แบบนี้เหมือนกัน แต่คิดว่าน่าจะ หมดไฟ แน่ๆ
      เลยพยายามรักษาสมดุลด้วยงานอย่างการเขียนเทสต์หรือทำเอกสารในเวลาปกติ
      ทุกปีก็จะค่อยๆ ปรับปรุงโจทย์เก่าๆ เพื่อฝึกเพิ่มประสิทธิภาพและ ความอ่านง่ายของโค้ด
  • ดีใจที่ปีนี้ Advent of Code กลับมาอีก
    ตอนอ่าน FAQ แล้วไม่ค่อยเข้าใจว่าทำไมถึงมีกฎห้ามเผยแพร่ข้อมูลอินพุต
    ตัวข้อความของปริศนาพอเข้าใจได้ แต่ที่แม้อินพุตก็ต้องไม่เปิดเผยนั้นน่าเสียดายอยู่ดี ถึงอย่างนั้นก็เคารพกติกาเพราะเป็นของฟรีให้เล่น

    • เขาว่าถ้าอินพุตถูกเปิดเผย ใครสักคนอาจ คัดลอกตรรกะการสร้างปริศนา ได้
    • แค่ commit อินพุตตัวอย่างไว้ แล้วรันเทสต์ด้วยอันนั้นก็เพียงพอแล้ว ถ้าจัดโครงสร้างแบบ doctest ของ Python หรือ Rust ก็จะยิ่งเรียบร้อย
    • ฉันเปิดโค้ดสาธารณะ แต่จัดการอินพุตไว้เป็น private submodule
    • เข้ารหัสไฟล์อินพุตด้วย git-crypt แล้วอัปขึ้นรีโพสาธารณะ
  • แบบสอบถามเรื่องภาษา: แม้ Python และ C++ จะถูกใช้เป็นหลัก แต่ในบรรดา ภาษากระแสรอง ก็มีบางตัวที่เหมาะกับ AoC มาก
    เป็นการชวนแชร์กันว่าภาษาไหนเหมาะและน่าใช้

    • ฉันชอบภาษาอาเรย์อย่าง K หรือ Uiua หน้าตาดูประหลาดแต่เหมาะกับโจทย์ช่วงต้นมาก
      พูดเล่นนะ แต่บางครั้งก็ลองแก้ด้วย ASM สำหรับ Game Boy ด้วย จริงๆ แล้วใช้ Clojure หรือ Python มากกว่า
    • ฉันใช้ ภาษาที่ทำเอง ในสไตล์ Haskell+Bash และมี เดโมบน YouTube ด้วย
      ปีนี้กำลังทำคอมไพเลอร์ไบต์โค้ดอยู่ ส่วนบนลีดเดอร์บอร์ดจะใช้ Go เพราะ ความเร็วในการคอมไพล์ ซึ่งช่วยให้ได้ที่ 1 ใน Day19 ของปี 2022
    • ถ้าใช้ Haskell การจัดการอินพุตจะง่ายด้วย parser combinator แถมยังเขียนโค้ดให้กระชับได้ด้วย lazy evaluation และ recursion
      เช่น สร้างลิสต์ไม่สิ้นสุดขึ้นมาแล้ววนไปจนกว่าจะเจอเงื่อนไขที่ต้องการ
    • Ruby เหมาะมาก เพราะมี ไวยากรณ์ที่แสดงออกได้ดี มี standard library ที่ครบ และเครื่องมือจัดการสตริงเยอะ
      เมธอดอย่าง each_cons, permutation, prime มีประโยชน์มากกับ AoC
    • Go นั้นเร็วและเรียบง่าย ส่วน OCaml ก็ยอดเยี่ยมทั้งเรื่อง ระบบชนิดข้อมูล และความเร็วในการรัน
      ถ้าเตรียมยูทิลิตี้สำหรับ 2D grid หรือ parser ไว้ล่วงหน้าจะทำงานได้มีประสิทธิภาพขึ้นมาก
  • ปีนี้ตั้งใจจะลองลุยด้วย แอสเซมบลี (fasm)
    มันอาจจะสนุกหรืออาจจะทรมานก็ได้ แต่ไม่ว่ายังไงก็เป็นกระบวนการเพื่อการเรียนรู้อยู่ดี

  • ดูเหมือนว่าลีดเดอร์บอร์ดจะหายไปหลังจากกระแส AI automation บูมขึ้นเมื่อปีที่แล้ว
    น่าเสียดาย แต่ก็ดูเป็นการตัดสินใจที่เลี่ยงไม่ได้

    • เวลาปล่อยปริศนาอิงตามเวลาสหรัฐฯ ซึ่งตอนนั้นฉันกำลังนอนอยู่พอดี
      ยังไงก็แข่งยากอยู่แล้ว ดังนั้นลีดเดอร์บอร์ดระดับโลกจึงแทบไม่มีความหมายอะไร