2 คะแนน โดย GN⁺ 2025-01-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ความท้าทาย Advent of Code 2024 ด้วย SQL ล้วน

  • ภาพรวม

    • ผู้เขียนตัดสินใจที่จะลองแก้ปัญหา Advent of Code ในปีนี้ด้วย SQL ล้วน
    • ประสบการณ์นี้น่าตื่นเต้นเพราะช่วยให้คิดปัญหาได้ในมุมมองที่ต่างออกไป และสามารถแก้ได้ทุกปัญหาด้วย SQL
    • SQL กลับเป็นตัวเลือกที่ใช้งานได้อย่างราบรื่นมากกว่าที่คาด
  • ตัวอย่าง Day 11

    • นำเสนอวิธีแก้ปัญหาฉบับสมบูรณ์รวมถึงข้อมูลนำเข้าของปัญหา
    • การ parse ข้อมูลใน SQL ค่อนข้างยุ่งยากเล็กน้อย แต่ไม่ใช่ว่าทำไม่ได้
    • อัลกอริทึมค่อนข้างสั้น และทำการค้นหาเชิงซ้ำของฟิลด์
    • SQL เหมาะกับงานค้นหาขนาดเล็ก
  • ความท้าทายในวันอื่น

    • ใน Day 16 ได้ทำงานคล้ายกันในการคำนวณระยะทางการค้นหาแบบน้อยที่สุดในฟิลด์
    • สามารถเขียนด้วย SQL ได้ง่าย แต่การประมวลผลค่อนข้างไม่มีประสิทธิภาพ
    • เมื่อจัดการอินพุตขนาดใหญ่ จำเป็นต้องคงสถานะจำนวนมาก และต้องใช้หน่วยความจำมากกว่า 200GB
    • DBMS บางตัวไม่มีฟีเจอร์ที่สามารถแก้ปัญหานี้ได้
  • ข้อจำกัดของ Recursive SQL

    • ใน Day 23 ต้องหาคลิกที่ใหญ่ที่สุดในกราฟแบบ sparse
    • แม้จะใช้ได้ด้วยอัลกอริทึม Bron-Kerbosch แต่การใช้ Recursive SQL แสดงอัลกอริทึมนี้ค่อนข้างซับซ้อน
    • Recursive SQL สามารถส่งผ่านได้เพียงชุดข้อมูลเดียว ซึ่งขัดแย้งกับอัลกอริทึมที่ต้องคงหลายชุดข้อมูล
  • บทสรุป

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

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

 
GN⁺ 2025-01-03
ความคิดเห็นจาก Hacker News
  • การตอบสนองต่อรายการใหม่ในเมนูเป็นการผสมผสานระหว่างความปรารถนา ความละอาย และความทึ่งต่อความคิดสร้างสรรค์ของมนุษย์
  • ตลอดอาชีพฉันได้เขียน SQL มากที่สุด และแม้จะได้ใช้ SQL น้อยลงใน 5 ปีที่ผ่านมา แต่ก็ยังคงสนุกกับมันอยู่
  • เมื่อหยุดคิดซ้ำๆ แบบเดิมและเริ่มคิดเป็นการดำเนินการแบบเซต มันก็กลายเป็นเรื่องที่เป็นธรรมชาติและทรงพลังขึ้นทันที
  • ฉันเคยลองใช้ Google Sheets ทำ AoC และไปถึง Day 6 ได้ แต่ติดข้อจำกัดความยาวตัวอักษรกับอินพุตบางชุด
    • แนะนำให้หลีกเลี่ยงการเปิดจากมือถือ
  • ในอดีตเคยได้รับโจทย์ในการสัมภาษณ์งานด้านการปฏิบัติการให้สร้างรายงานใบแจ้งหนี้จากชุดข้อมูลขนาดใหญ่
    • เพราะฉันไม่ใช่นักวิทยาศาสตร์ข้อมูล จึงรู้สึกยากในการออกแบบโซลูชัน
    • อธิบายว่าจะใช้แพ็กเกจรายงานอย่าง Crystal Reports
    • แก้โจทย์นี้ด้วย SQL ได้ แต่ต้องใช้เทคนิคมากพอสมควร
  • ฉันเคยลองทำ AoC ด้วย EdgeQL และมันเป็นประสบการณ์ที่น่าสนใจ
    • และแชร์ทวีตที่เกี่ยวข้อง
  • ได้เขียนระบบการจัดคิว/การคอนเทนเนอร์ด้วย SQL และใช้ฟีเจอร์เสริมบางอย่างไปด้วย
    • อัลกอริทึมพื้นฐานตรงกับความสามารถของ SQL ได้อย่างดีมาก
    • แต่บางแง่มุมต้องปรับให้เข้ากับ SQL ไม่ได้ง่าย
  • ฉันกำลังทำ AoC2024 ใน Google Sheets และตั้งใจจะเอกสารสิ่งนี้ไว้
  • การทำสิ่งต่างๆ ด้วย SQL ล้วนๆ เป็นเรื่องที่น่าประทับใจ และการดูแลบล็อกเก่าของตัวเองยังแสดงให้เห็นถึง "ความชำนาญเชิงเฉพาะทาง"