1 điểm bởi GN⁺ 2024-12-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • Advent of Code do Eric Wastl tạo ra là một sự kiện trực tuyến cung cấp nhiều câu đố lập trình đa dạng, có thể giải bằng nhiều ngôn ngữ lập trình.

  • Được sử dụng cho nhiều mục đích như chuẩn bị phỏng vấn, đào tạo trong công ty, bài tập đại học, bài luyện tập và các cuộc thi tốc độ.

  • Ngay cả khi không có nền tảng khoa học máy tính, bạn vẫn có thể tham gia chỉ với một chút kiến thức lập trình và khả năng giải quyết vấn đề.

  • Mẹo chung

    • Nếu bị mắc kẹt khi giải bài, bạn có thể dùng các ví dụ được cung cấp trong câu đố để kiểm chứng lời giải.
    • Nếu ví dụ không chạy đúng, hãy đọc lại phần mô tả và kiểm tra xem chương trình có hoạt động như mong đợi hay không.
    • Nếu vẫn chưa giải quyết được, bạn có thể nhờ bạn bè giúp đỡ hoặc thử lại sau.
  • Câu hỏi thường gặp

    • Để chọn khối mã, chỉ cần nhấp ba lần vào khối mã khi JavaScript đã được bật.
    • Advent of Code sử dụng OAuth để xử lý xác thực, và thông tin cá nhân của người dùng sẽ không bị lộ ngoài những gì đã được công khai.
    • Việc có tham gia bảng xếp hạng toàn cầu hay không có thể được quyết định tùy theo mục tiêu cá nhân.
    • Độ khó của câu đố thay đổi đa dạng trong suốt thời gian diễn ra sự kiện và có thể được cảm nhận khác nhau tùy theo trình độ kỹ năng của mỗi người.
    • Câu đố được mở vào lúc nửa đêm (EST/UTC-5), đây là thời điểm người vận hành có thể quản lý ổn định.
    • Nếu văn bản trên trang khó đọc, bạn có thể sử dụng chế độ tương phản cao.
    • Ý tưởng câu đố không được tiếp nhận do các vấn đề pháp lý.
    • Nếu bạn nghĩ rằng câu đố có lỗi, trước tiên bạn có thể hỏi trên subreddit.
    • Khi phát trực tiếp lời giải, tốt nhất nên tránh làm vậy khi người khác đang thi đấu.
    • Không khuyến khích sử dụng AI để leo lên bảng xếp hạng toàn cầu.
  • Ghi nhận

    • Câu đố, mã nguồn, thiết kế: Eric Wastl
    • Kiểm thử beta: Tim Giannetti, Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
    • Quản lý cộng đồng: Danielle Lucek, Aneurysm9
  • Thông báo pháp lý

    • Advent of Code là nhãn hiệu đã đăng ký tại Hoa Kỳ, và các yếu tố thiết kế, ngôn ngữ, phong cách, khái niệm thuộc sở hữu của Advent of Code.
    • Bạn có thể liên kết hoặc tham chiếu đến câu đố, nhưng bị cấm sao chép hoặc phân phối lại bất kỳ phần nào của Advent of Code.

1 bình luận

 
GN⁺ 2024-12-02
Ý kiến trên Hacker News
  • Đã dùng ngôn ngữ Go được 4 năm và cảm thấy ngôn ngữ này không phù hợp để giải bài toán. Thư viện chuẩn thiếu các cấu trúc dữ liệu cơ bản, còn tốc độ thì chậm so với một ngôn ngữ biên dịch
  • Rất yêu thích AoC và đã thử sức với Rust trong 2-3 năm qua. Trên Discord, đã học nhiều kỹ thuật tối ưu hiệu năng, thuật toán nâng cao và SIMD để tìm ra lời giải nhanh nhất
    • Lần này sẽ làm bằng Rust và Golang, với mục tiêu либо là thích được hoặc ít nhất là chịu đựng được Golang, hoặc là chứng minh giả thuyết rằng Golang không ổn
  • Thử thách viết các bộ phân tích cú pháp đầu vào ngày càng phức tạp trong 25 ngày lại bắt đầu
  • Năm nay sẽ thử trên NES (Nintendo Entertainment System)
    • Do RAM bị giới hạn (2KiB, có thể thêm 8KiB trên băng game), một số bài có thể là bất khả thi, nhưng vẫn định giải được càng nhiều càng tốt
    • Bài hôm nay có thể giải trong vòng 4 giây bằng cách dùng thêm 4KiB RAM trên băng game
  • Thử thách năm nay là viết bằng C không dùng thư viện chuẩn hay allocator để có thể chạy trên STM32
    • Cách đây 2 năm từng thử bằng assembly, nhưng sau khi tốn quá nhiều thời gian để viết thư viện chuẩn cho assembly thì đã bỏ cuộc và chuyển sang Rust
  • Thường thì làm AoC bằng Common Lisp, nhưng năm nay đang thử Swift
    • Với một ngôn ngữ tĩnh kiểu chính thống, nó không tệ cho kiểu công việc này
    • Mã AoC bằng Swift
  • Năm nay đang tổ chức sự kiện ở công việc mới, nhưng rồi nhận ra mình không thể làm việc với sếp mới nên phải rời đi
    • Nghĩ rằng việc các lập trình viên học cách giải quyết vấn đề thực tế thay vì chỉ ghép nối framework là rất hữu ích
    • Cuối cùng có lẽ vẫn sẽ quay về với Emacs như thường lệ
  • Đã giải xong toàn bộ bài toán, và đây là một bài toán kinh doanh. Chỉ cần thay thế vị sử quan trưởng
  • Trong khi có người thử sức bằng Common Lisp và thư viện chuẩn C, thì mình lại đang loay hoay gọi curl để tải file dữ liệu
  • Năm ngoái đã bị mắc kẹt suốt một tuần ở ngày 12, dành toàn bộ thời gian để nghĩ cách giải. Năm nay định đối xử tốt hơn với bản thân, không tham gia và tận hưởng kỳ nghỉ đông
  • Năm nay sẽ thử bằng F# và Gleam, nhưng như mọi năm, có lẽ sẽ không có đủ thời gian và tinh thần để làm quá ngày 10-12
    • Khuyên những người dùng Python nên thử F#: nó có thể cho cảm giác rất giống scripting và còn có một REPL rất tuyệt