Chương 7: Giải bài lập trình, điểm đúng năm phẩy
Thuộc tiểu thuyết Ẩn Sĩ Hòa Lạc
Tác giả: Hà Tinh Vân · Thể loại: Đô Thị · Đăng ngày · 1856 từ · khoảng 9 phút đọc
Chiều ngày thứ 3, nắng rải vàng trên những bậc thang giảng đường A2.
Giảng đường bậc thang rộng thênh thang. Căn phòng chứa hơn một trăm tân sinh viên của hai khoa Kỹ thuật phần mềm và An toàn thông tin. Máy chiếu lớn giữa bục giảng đang phát giao diện làm bài tập trực tuyến.
Tô Thanh Nhàn ngồi ở dãy bàn thứ ba. Cô kéo Thượng ngồi vào chiếc ghế bên cạnh mình.
"Ngồi ngay ngắn lên nào." Nhàn đặt chiếc bút bi Thiên Long lên bàn của Thượng. "Tiết đầu của thầy Vũ đấy. Đừng có ngủ gật."
Hà Minh Thượng ngồi cạnh cô bạn thân. Hai tay cậu đặt lên chiếc laptop Asus cũ mèm vỡ bản lề. Cậu ngáp một cái dài:
"Tớ biết rồi mà. Giảng đường đông thế này, thầy để ý sao được."
Bên cạnh Thượng, Bùi Tiến Béo đang ngồi bẻ khớp ngón tay kêu rôm rốp. Chàng béo cởi chiếc áo khoác gió vắt ra sau ghế, hào sảng vỗ ngực:
"Cứ nghe lời tôi đi. Lát nữa làm bài tập thực hành trên lớp, tôi bắn code sang cho mà nộp. Dăm ba cái bài toán cộng trừ lặt vặt thì làm khó gì được dân cày game!"
Tiếng bước chân đĩnh đạc ngoài cửa cắt ngang câu chuyện.
Phó Giáo sư Vũ Đình Khiêm bước vào phòng học.
Cả giảng đường lập tức im phăng phắc. Thầy Vũ mặc chiếc áo sơ mi màu xám tro. Ánh mắt sắc lẹm của thầy lướt qua một lượt toàn bộ sinh viên. Khi ánh mắt thầy dừng lại ở vị trí của Tiến béo và Thượng, chân mày ông khẽ giật nhẹ.
Thầy Vũ bước lên bục giảng. Ông cắm chiếc USB vào máy tính trung tâm.
"Chào các em tân sinh viên." Giọng thầy Vũ trầm ấm vang vọng qua hệ thống loa. "Tôi là Vũ Đình Khiêm, phụ trách bộ môn Lập trình nâng cao và Thuật toán ứng dụng. Hôm nay là buổi học đầu tiên. Tôi không muốn giảng nhiều lý thuyết sáo rỗng."
Thầy quay người lại. Ông mở một bài toán mới trên hệ thống thi đấu trực tuyến của trường:
"Trên màn hình là bài toán sắp xếp mảng đa chiều có điều kiện lọc song song. Tôi cho các em đúng bốn mươi lăm phút. Hệ thống có mười bộ dữ liệu thử nghiệm từ dễ đến cực khó. Em nào giải trọn vẹn mười bộ thử nghiệm sẽ được cộng thẳng hai điểm vào bài thi giữa kỳ!"
Lời thầy Vũ vừa dứt, cả giảng đường xôn xao.
Mấy cậu bạn từng học chuyên Tin lập tức mở máy tính xách tay. Ngón tay họ gõ phím liên hồi.
Tiến béo nhìn vào đề bài trên bảng, mắt mở to:
"Trời đất ơi! Mảng động lồng nhau kết hợp sắp xếp nhanh? Bài này khó quá mức rồi!"
Nhàn không nói nửa lời. Cô nhanh chóng mở chiếc máy tính Dell XPS mỏng nhẹ. Đôi lông mày thanh tú của cô khẽ nhíu lại. Những ngón tay thon thả thoăn thoắt gõ từng dòng lệnh khai báo dữ liệu.
Thượng nhìn đề bài hiển thị trên màn hình máy chiếu.
Trong đáy mắt cậu, một luồng ánh sáng lam lượng tử vô hình khẽ lóe lên:
[Phân tích bài toán sắp xếp mảng đa chiều có điều kiện lọc.] [Độ phức tạp lý thuyết: O(n log n).] [Hệ thống đưa ra năm mươi hai phương án giải quyết tối ưu.] [Cảnh báo chỉ số Nhân quả bình thường: Giới hạn điểm số mục tiêu là 5.0/10 điểm.]
Thượng khẽ cong môi cười thầm.
Nếu giải hết mười bộ thử nghiệm trong vòng năm phút, cậu sẽ khiến thầy Vũ chú ý ngay lập tức. Mục tiêu của cậu hôm nay rất rõ ràng: đúng năm mươi phần trăm số điểm, không thừa một phần mười, không thiếu một phần mười.
Thượng mở chiếc laptop cũ kỹ của mình lên.
Vì phím Space bị liệt cứng đơ, mỗi lần muốn tạo dấu cách giữa các câu lệnh, Thượng lại dùng góc móng tay cái bấm mạnh vào mép nút nhựa. Cậu gõ từng dòng lệnh một cách chậm chạp. Thỉnh thoảng, cậu lại dừng tay gãi đầu giả vờ bế tắc.
Thế nhưng, cấu trúc logic của từng dòng code cậu viết ra lại ẩn chứa một trật tự toán học hoàn hảo.
Thượng viết đúng mười lăm dòng mã nguồn C++.
Để giới hạn điểm số đúng mức năm phẩy, ở dòng lệnh thứ mười ba, cậu cố ý chèn một câu lệnh điều kiện if đơn giản nhằm ngắt luồng xử lý khi dữ liệu mảng vượt quá năm mươi phần tử. Làm như vậy, chương trình của cậu sẽ vượt qua năm bộ thử nghiệm cơ bản đầu tiên một cách nhẹ nhàng, nhưng sẽ dừng lại ở năm bộ thử nghiệm nâng cao phía sau.
"Xong rồi." Thượng ấn chuột gửi bài nộp lên hệ thống.
Cậu gấp hờ màn hình laptop lại rồi gối đầu lên cánh tay ngủ gà ngủ gật.
Nhàn ngồi bên cạnh thấy vậy liền huých nhẹ cùi chỏ vào tay cậu:
"Nộp bài chưa mà đã ngủ thế Thượng?"
"Tớ nộp rồi." Thượng ngái ngủ đáp khẽ. "Chạy được mấy test cơ bản thôi, mấy cái sau khó quá tớ chịu."
Đồng hồ đếm ngược trên bảng điện tử điểm những giây cuối cùng.
Cả giảng đường vang lên những tiếng thở dài.
"Hết giờ rồi. Tất cả dừng tay." Tiếng thầy Vũ dõng dạc vang lên.
Hệ thống tự động chấm điểm. Kết quả lập tức hiện lên màn hình máy chiếu trung tâm theo thứ tự điểm số từ cao xuống thấp.
Hơn một trăm sinh viên ngước mắt nhìn lên bảng điểm.
Người đứng đầu lớp là một nam sinh trường chuyên Tin đoạt giải quốc gia với 9.0/10 điểm.
Tô Thanh Nhàn đứng ở vị trí thứ ba với 8.5/10 điểm. Cô vượt qua tám bộ thử nghiệm một cách xuất sắc.
Nhàn thở phào nhẹ nhõm. Cô quay sang nhìn Thượng:
"Cậu được mấy điểm thế Thượng?"
Thượng chỉ tay lên màn hình, vị trí nằm chót vót ở khoảng giữa danh sách:
Hà Minh Thượng — 5.0/10 điểm (Đạt 5/10 bộ thử nghiệm).
Tiến béo ngồi bên cạnh nhìn bảng điểm của mình đỏ lòm với con số 3.0 điểm, ôm đầu than vãn:
"Trời ơi là trời! Tôi quên mất dấu chấm phẩy ở dòng ba mươi mốt nên bị lỗi biên dịch mất toi năm điểm! Thượng ơi, sao ông lại được đúng năm điểm vừa đủ qua môn thế kia?!"
Thượng nhún vai cười xòa:
"May mắn thôi ông bạn. Tôi đoán mò vài trường hợp đơn giản, ai ngờ máy tính nó nhận đúng năm cái."
Nhàn nhìn điểm số năm phẩy tròn trĩnh của Thượng, khẽ lắc đầu:
"Cậu chỉ được cái ăn may thôi. Lần sau phải chăm chỉ hơn, không phải lúc nào vận may cũng mỉm cười đâu nhé."
Trong khi cả lớp đang bàn tán râm ran, trên bục giảng, thầy Vũ đang mở danh sách mã nguồn của từng sinh viên ra đối soát.
Thầy Vũ mở bài của nam sinh thủ khoa, gật đầu khen ngợi thuật toán sắp xếp nhanh chuẩn mực. Thầy mở bài của Nhàn, đánh giá cao khả năng tư duy an toàn dữ liệu chặt chẽ.
Cuối cùng, ánh mắt thầy tình cờ lướt qua cái tên Hà Minh Thượng — sinh viên phòng 404 KTX khu B mà sáng nay ông vừa ập vào kiểm tra.
Thầy Vũ nhấp chuột mở mã nguồn của Thượng ra xem thử.
Ngay khi những dòng code hiện lên trên màn hình máy tính cá nhân của thầy Vũ, tách trà trong tay ông bỗng khựng lại giữa không trung.
Mười lăm dòng mã nguồn ngắn ngủi hiện ra.
Tên biến số được đặt cực kỳ cẩu thả: a, b, c, x, y, z. Không có bất kỳ dòng chú thích nào. Cách trình bày thụt lề xiêu vẹo trông như bài tập của một kẻ lười biếng viết vội cho xong chuyện.
Thế nhưng, cấu trúc thuật toán bên dưới lại khiến đồng tử thầy Vũ co rút mạnh.
Đó không phải là thuật toán sắp xếp nhanh thông thường. Đó là một biến thể đệ quy rút gọn kết hợp với ma trận hoán vị tối ưu mà thầy Vũ chỉ từng thấy trong một bài báo khoa học đỉnh cao của Viện Hàn lâm Toán học Liên bang Nga cách đây mười năm.
Cách viết tinh tế đến mức triệt tiêu hoàn toàn bộ nhớ đệm phụ. Tốc độ xử lý của nó vượt xa mọi thuật toán có trong sách giáo khoa hiện hành.
"Kỳ lạ thật..." Thầy Vũ lẩm bẩm một mình, hai mắt dán chặt vào đoạn code. "Tại sao ở dòng mười ba, cậu ta lại cố tình dùng một lệnh ngắt vô lý để vứt bỏ năm mươi phần trăm số điểm còn lại?"
Thầy Vũ ngẩng đầu lên, cất tiếng gọi:
"Em Hà Minh Thượng ở dãy bàn thứ ba, cuối giờ nán lại gặp tôi một chút."
Cả giảng đường lập tức đổ dồn ánh mắt về phía Thượng.
Tiến béo giật bắn mình, thì thầm vào tai bạn:
"Thôi xong ông rồi Thượng ơi! Chắc thầy nghi ngờ ông gian lận điểm năm phẩy đấy!"
Nhàn cũng lo lắng nhìn Thượng:
"Cậu có sao chép bài của ai không đấy?"
"Tớ tự gõ bằng tay mà, sao chép gì đâu." Thượng thở dài, chậm rãi đứng dậy thu dọn sách vở.
Khi cả lớp đã lục tục kéo nhau ra về, Thượng xách chiếc cặp vải bước lên bục giảng.
Thầy Vũ ngồi tựa lưng vào ghế, đưa tay chỉnh lại gọng kính:
"Em Thượng này, bài làm của em rất thú vị. Ai dạy em cách viết đệ quy ma trận này?"
Thượng gãi đầu, vẻ mặt đầy chân chất:
"Dạ thưa thầy, em đọc trong cuốn sách giáo trình cũ mua ở hiệu sách cũ gần nhà ạ. Em thấy công thức ngắn nên gõ bừa vào thử, không ngờ ăn may qua được năm trường hợp đầu."
Thầy Vũ nheo mắt nhìn sâu vào mắt Thượng, dường như muốn nhìn thấu tâm can cậu. Nhưng đáp lại ông chỉ là ánh nhìn ngây thơ, mộc mạc của một cậu học trò nghèo.
"Được rồi, em về đi." Thầy Vũ xua tay, khẽ mỉm cười bí hiểm. "Lần sau nhớ viết thêm chú thích vào bài."
"Vâng ạ, em chào thầy." Thượng cúi đầu chào rồi quay người bước nhanh ra cửa.
Ngoài hành lang, Nhàn và Tiến béo đang đứng đợi sẵn. Nhàn dúi vào tay Thượng một chiếc bánh mì kẹp xúc xích:
"Thầy có mắng gì cậu không?"
"Không, thầy chỉ bảo lần sau cố gắng thôi." Thượng cười, cắn một miếng bánh mì giòn tan.
Ba người cùng rảo bước trên con đường rợp bóng cây dưới nắng chiều Hòa Lạc.