Hãy viết chương trình in ra các số chẵn trong khoảng từ 1 đến 100. Đây là một bài tập rất cơ bản với những người mới học lập trình, nó không hề khó, thậm chí dễ như ăn kẹo.

Đây là cách giải:

thuật toán in ra các số chẵn trong khoảng từ 1 đến 100

Có thể chương trình trên chỉ mang tính chất hài hước, mang nặng tinh thần chống đối. Sau khi đăng ảnh này lên facebook, đã có rất nhiều ý kiến chê bai kiểu như “thằng trâu bò” hoặc “Đề bài mà yêu cầu đến 10.000 thì viết đến sáng à?”. Tuy nhiên chúng ta sẽ phân tích theo một cách khác, dưới góc nhìn thực tế.

Nếu đây là một dự án thực tế

Hãy tưởng tượng có một ông khách giàu sụ đến và bảo bạn rằng “Viết cho tôi chương trình in ra các số chẵn trong khoảng từ 1 đến 100, hoàn thành trong 01 ngày, tôi sẽ trả cho anh 1000 đô”. Và tất nhiên, bạn không thể để lỡ kèo thơm như thế được.

Mình cho rằng đây là một lời giải tốt

Tại sao lại là lời giải tốt, mà không phải là lời giải đúng? Bởi vì trong trường học, nếu bạn đưa ra lời giải đúng bạn sẽ được điểm cao. Nhưng trong thực tế, cùng một vấn đề có rất nhiều cách để giải quyết, và không có phương án nào là đúng tuyệt đối cả, chỉ có phương án này tốt hơn phương án kia mà thôi.

Code chỉ là phù du, sản phẩm mới là quan trọng

Có hàng tỉ cách để in ra được dãy số này, nhưng ai mà quan tâm cơ chứ? Cái mà người ta mong muốn là gì? Là chương trình in ra được dãy số trên, tất cả chỉ có vậy. Như blogger Hoàng code dạo đã viết “Éo ai quan tâm đến code bạn viết đâu”. Ông khách kia trả tiền để có được sản phẩm, chứ không phải code hay thuật toán gì cả.

Hiệu năng và giá trị

Có thể cách giải trên có vẻ không thông minh cho lắm, nhưng nếu đây là một sản phẩm thực tế, tôi sẽ cho nó điểm 10, rõ ràng rằng chương trình đã làm tốt nhiệm vụ, tối ưu về tốc độ, ít (hoặc không có) lỗi phát sinh, sản phẩm dùng tốt đối với khách hàng, mang lại giá trị thực tế.

Đây là phương án phù hợp

Sau khi xem ảnh trên, một số bạn comment rằng: “Thế nếu là 10.000 thì viết đến sáng à”

Không, nếu như bài toán là 10.000, chúng ta sẽ chọn phương án khác, các phương án đưa ra phải phù hợp với điều kiện và khả năng thực tế. Sử dụng những công nghệ và thuật toán phức tạp cho một vấn đề đơn giản là không thông minh cho lắm.

Mặc dù diện tích tờ giấy làm bài thi là có hạn, nhưng nó đủ để đáp ứng trong trường hợp này. Liên hệ với thực tiễn, chẳng việc gì phải sử dụng NoSql database cho một bảng chỉ có 100 record cả.

Về thời gian hoàn thành dự án, thời gian làm bài đủ để viết dãy số trên. Do đó, đây là một phương án tốt đảm bảo tiến độ trước deadline.

Hi vọng bài viết này đã cho bạn một cái nhìn mới, bạn nghĩ sao về bài thi này? Hãy để lại comment ở bên dưới.