Openleetcode – Chạy bài LeetCode ngay trên máy local với bộ test mở ngay trong repo
Openleetcode là công cụ CLI mã nguồn mở viết bằng Haskell, cho phép lập trình viên chạy và kiểm tra lời giải LeetCode trực tiếp trên máy local với bộ test công khai nằm trong kho mã. Công cụ hỗ trợ khoảng 1.400 bài toán và nhiều ngôn ngữ lập trình phổ biến như Python, C++, Rust, Java, Go, TypeScript. Dù mới ở giai đoạn MVP, dự án hứa hẹn mang lại trải nghiệm luyện tập thuật toán linh hoạt và minh bạch hơn.

Openleetcode – Chạy bài LeetCode ngay trên máy local với bộ test mở ngay trong repo
Openleetcode là một công cụ chạy bài tập LeetCode ngay trên máy tính cá nhân, với toàn bộ test case được lưu trữ công khai ngay trong kho mã nguồn. Được viết bằng Haskell, công cụ này cho phép bạn nộp lời giải theo cách quen thuộc như trên LeetCode, nhưng mọi thứ diễn ra hoàn toàn local, minh bạch và có thể tùy chỉnh.
Dự án hiện hỗ trợ khoảng 1.400 bài toán và nhiều ngôn ngữ lập trình phổ biến, bao gồm Python, C++, Rust, Java, Go, TypeScript, Swift và nhiều ngôn ngữ khác. Openleetcode vẫn đang trong giai đoạn MVP, chưa hỗ trợ các dạng bài system design, SQL hay concurrency nhưng kế hoạch mở rộng đã được công bố.
Hoạt động như thế nào?
Thay vì phụ thuộc vào hệ thống đánh giá khép kín của LeetCode, openleetcode xây dựng một quy trình hoàn toàn mở:
- Bạn viết file lời giải chuẩn, giống hệt như khi nộp trên LeetCode.
- Dùng CLI để xác định bài toán theo ID hoặc tiêu đề.
- Công cụ xây dựng một bộ khung (harness) nhỏ cho ngôn ngữ tương ứng.
- Gửi code tới backend thực thi (mặc định là Piston) và chấm điểm ngay tại máy local.
"Không có cỗ máy thần kỳ nào, cũng không có phép thuật nào cả." – DHH
Toàn bộ test case, template runtime và logic chấm điểm đều nằm ngay trong repo. CLI chỉ đóng vai trò "keo dính" kết nối các thành phần lại với nhau.
Cài đặt và sử dụng
Để chạy backend, bạn cần cài Docker. Trên Linux và macOS, trình cài đặt tự động khởi động backend Piston qua Docker Compose. Trên Windows, bạn phải tự cài Docker và khởi động backend thủ công.
Cài đặt nhanh trên Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/therepanic/openleetcode/main/install.sh | sh
Trên Windows (PowerShell):
irm https://raw.githubusercontent.com/therepanic/openleetcode/main/install.ps1 | iex
Cách sử dụng cơ bản:
# Tải toàn bộ dữ liệu bài tập
openleetcode download all
# Nộp bài theo ID
openleetcode submit ./two_sum.py --id 1
# Nộp bài theo tiêu đề
openleetcode submit ./solution.cpp --title "two-sum"
# Ghi đè ngôn ngữ khi phần mở rộng không rõ ràng
openleetcode submit ./main.abc --id 1 --lang python3
Ngôn ngữ được hỗ trợ
Runner có template cho: C++, Rust, Python 3, Python 2, Ruby, Java, C#, Kotlin, Go, Dart, Swift và TypeScript.
Mỗi runtime đều có lớp tương thích để xử lý các kiểu dữ liệu thường gặp trong bài LeetCode như JSON, mảng, ma trận, linked list, binary tree... Cấu trúc lời giải giữ nguyên như khi nộp trên nền tảng gốc, không cần viết theo kiểu riêng của openleetcode.
Badge made in Haskell
Đóng góp không cần viết code
Một điểm đáng chú ý của dự án là khả năng đóng góp mà không cần biết Haskell. Nếu bạn chỉ muốn thêm test case hay cải thiện bộ dữ liệu, hãy bắt đầu từ file TEST_FORMAT.md – đây là "hợp đồng" giữa file YAML, template runtime và bộ chấm điểm.
Mỗi bài toán là một thư mục chứa manifest.yaml và các file lời giải mẫu:
tests/1-500/1. two-sum/manifest.yaml
tests/1-500/1. two-sum/sol.py
tests/1-500/1. two-sum/sol.cpp
Ngoài ra còn có các script hỗ trợ sinh dữ liệu tự động:
generate_prompt.py– tạo prompt cho một bài toán từ đề bài và solution mẫu.spartan.py– xử lý hàng loạt và có thể gọi LLM qua OpenRouter để tạo nháp manifest.molotov.py– điền file lời giải vào các thư mục đã sinh.
Hãy coi output từ các script này như một "junior contributor" – nhanh, hữu ích nhưng vẫn cần con người rà soát kỹ.
CI badge
Vì sao dân lập trình Việt nên thử?
Đối với lập trình viên Việt Nam đang ôn luyện phỏng vấn tại các công ty công nghệ, openleetcode mang lại vài lợi ích thiết thực:
- Không cần mạng ổn định – mọi thứ chạy local, phù hợp cả khi đường truyền yếu.
- Kiểm soát dữ liệu – test case minh bạch, bạn biết rõ mình đang được chấm bằng gì.
- Tùy biến linh hoạt – có thể thêm test case riêng, phù hợp để luyện tập theo nhu cầu cá nhân.
- Học Haskell có động lực – nếu bạn muốn tìm hiểu một ngôn ngữ hàm, đây là một dự án mã nguồn mở thú vị để đọc và đóng góp.
Tình trạng hiện tại và kế hoạch
Openleetcode còn non trẻ, một số manifest có chất lượng tốt hơn những cái khác. Nhưng đó chính là điểm mạnh của dự án: bộ chấm điểm và test case không bị niêm phong kín kẽ, cộng đồng có thể cùng cải thiện. Các dạng bài SQL, system design và concurrency chưa được hỗ trợ nhưng đã nằm trong lộ trình phát triển.
License badge
Nếu bạn đang tìm một cách tiếp cận mới, minh bạch hơn cho việc luyện thuật toán hằng ngày, hãy thử openleetcode và đóng góp cho cộng đồng mã nguồn mở.