Kết xuất dữ liệu ra excel (2)

Một trong những nhu cầu cơ bản nhất của người dùng khi cần kết xuất dữ liệu ra excel là xuất một dataset ra file excel, mỗi datatable tương ứng với một sheet chứa dữ liệu. Trong ví dụ ở phần trước về kết xuất định dạng XML Spreedsheet tôi cũng đưa project mẫu đáp ứng nhu cầu kết xuất này. Một nhu cầu khác cũng thường gặp trong các ứng dụng nghiệp vụ, đó là điền dữ liệu vào một template có sẵn (với định dạng có thể phức tạp).

Các thư viện nguồn mở, miễn phí được tìm hiểu sử dụng trong bài viết này đều là thư viện viết bằng .NET, nếu các bạn biết các thư viện bằng ngôn ngữ khác có thể chia sẻ tại đây.

2. Kết xuất định dạng BIFF8 (Excel 97-2003 file format)

Có hai thư viện hỗ trợ định dạng BIFF8 tôi đã thử nghiệm, khá gọn nhẹ. Đó là ExcelLibrary và NPOI.

  • ExcelLibrary:

Liên kết:

http://code.google.com/p/excellibrary/

http://www.codeproject.com/Articles/16210/Excel-Reader

Theo các tác giả (người Tung Của), thư viện này hiện đang hỗ trợ định dạng BIFF và có thể hỗ trợ .xlsx trong tương lai, nhưng nhìn vào commit changes thì có vẻ như hơn một năm nay thư viện không được sửa đổi gì cả. Vậy thì hoặc bạn nào có thể bổ sung hỗ trợ định dạng .xlsx, hoặc với xlsx thì ta tìm cái khác (như các thư viện tiếp sau tôi sẽ giới thiệu).

Sử dụng ExcelLibrary, việc kết xuất một dataset ra file excel cực kỳ thuận tiện:

ExcelLibrary.DataSetHelper.CreateWorkbook(“ExcelLibrary.xls”, ds);

Cách mở file, đọc cell, tạo workbook, duyệt sheet các bạn có thể xem trong bài báo trên Codeproject. Theo cá nhân tôi, thư viện này ưu điểm nhỏ gọn tốc độ, nhược điểm là chưa hỗ trợ về định dạng tài liệu (font, màu, …), và dường như tác giả đã quên nó.

  • NPOI

Liên kết:

http://npoi.codeplex.com/

http://code.google.com/p/npoi/

Đây là thư viện khá tốt và là ấn bản .NET của dự án trước đó viết trên nền java (http://poi.apache.org/).  Ưu điểm của NPOI (Copy-Paste):

a. It’s totally free to use

b. Cover most features of Excel (cell style, data format, formula and so on)

c. Profressionl support service (even 24*7) from NPOI team (not free)

d. Support xls, xlsx, docx.

e. Designed to be interface-oriented (take a look at NPOI.SS namespace)

f. Support not only export but also import

g. .Net 2.0 based even for xlsx and docx (though we also support .NET 4.0)

h. Successful cases from all over the world

i. huge amout of basic examples

 Một ưu điểm nữa là nó vẫn đang được phát triển. Nhược điểm là sử dụng hơi rườm rà.

Phiên bản từ 2.0 có hỗ trợ định dạng xlsx. Project mẫu tôi gửi ở đây có sử dụng phiên bản 1.2.5, trong đó tôi viết thêm lớp trung gian NPOISheet để sử dụng được dễ dàng hơn.

Phần sau: Các thư viện hỗ trợ xlsx.

Advertisements
Chuyên mục:Programming Thẻ:, ,

Kết xuất dữ liệu ra Excel (1)

Tháng Bảy 14, 2012 2 comments

Khi phát triển các phần mềm nghiệp vụ nói chung, sẽ có lúc bắt gặp yêu cầu kết xuất dữ liệu ra file excel để xử lý. Người dùng văn phòng rất ưa chuộng sự linh hoạt của phần mềm bảng tính phổ biến hàng đầu của Microsoft này. Các hãng thứ ba cũng thường có tính năng kết xuất dữ liệu ra một số định dạng phổ biến trong đó có excel.

Để làm được việc này, người phát triển có thể sử dụng thư viện của bộ office (Microsoft.Office.Interop.Excel.dll) để thao tác, ưu điểm là có thể tạo ra các file excel có định dạng phức tạp, nhược điểm là viết code cồng kềnh và khi triển khai cần cài đặt MS Office trên máy đích.
Tôi muốn chia sẻ ở bài này các cách khác nhau có thể kết xuất Excel mà hoàn toàn không sử dụng thư viện của Microsoft (do vậy khi deploy không yêu cầu môi trường phải cài đặt MS Office).
1. Kết xuất định dạng XML Spreadsheet

Nếu yêu cầu kết xuất excel chỉ đơn giản là đổ một datatable ra thành một sheet với các dòng dữ liệu tương ứng trong excel, thì cách sau đây là đơn giản nhất và chỉ cần sử dụng đọc ghi file text để xử lý. Ở đây tôi sử dụng C#2.0 để minh họa cho việc này.

Bước 1: Bạn tạo template, bằng cách tạo một file excel bình thường, có một sheet thể hiện dữ liệu của một bảng mẫu, nội dung và định dạng header theo ý bạn, chẳng hạn như hình vẽ.

Bước 2: Lưu file trên thành định dạng XML Spreadsheet 2003, chẳng hạn tên file là Book1.xml. Bạn có thể mở file này bằng notepad để thấy nội dung dạng xml của nó. Bây giờ bạn sẽ fill dữ liệu từ một datatable nào đó ra dạng XML spreadsheet theo template mà bạn tạo ra này. Dữ liệu các cell sẽ nằm trong cặp thẻ (“TableName” là tên của sheet)

<Worksheet ss:Name=”TableName”> </Worksheet>

Bước 3: Viết ứng dụng tạo ra file text có định dạng trên bằng cách thay các dữ liệu cell mẫu trong file Book1.xml bằng dữ liệu các cell đọc được từ Datatable.

Bạn có thể tải mã nguồn ứng dụng mẫu tôi viết tại đây, trong đó tôi sử dụng một file xml để làm dữ liệu input cho datatable, bạn có thể kết nối đến các DBMS để lấy dữ liệu theo ý muốn (để đơn giản tôi đã coi các trường dữ liệu đều là kiểu string).

Chú ý rằng định dạng XML Spreadsheet có nội dung dạng XML, không phải excel chuẩn. Ở các phần sau tôi sẽ giới thiệu các thư viện tôi đã thử nghiệm trong việc kết xuất dữ liệu ra xml, excel cấu trúc BIFF (Excel 2003 trở về trước), excel 2007 (xlsx). Hy vọng sẽ có ích cho các bạn khi tìm kiếm một giải pháp thay thế cho việc sử dụng thư viện của bộ MS Office.

Chuyên mục:Programming Thẻ:, ,

Con yêu

Tháng Năm 16, 2012 1 Bình luận

Con được tròn một tuần, đã biết nhiều thứ rồi, ăn thun thút, hóng chuyện pro, tay chân chém gió vèo vèo vù vù. Tất nhiên, vì ngay từ lúc con chưa ra đời thì con đã biết bao nhiêu thứ, lại còn giúp được bố tiến bộ hơn.

Còn trong bụng mẹ, con đã biết đói thì đạp mẹ lùm bùm đòi ăn. Rồi nghe mẹ nịnh chuyện là con khoái chí hết nấc cụt lại khoa tay múa chân trong bụng. Rồi rất ngoan, bố xoa con qua bụng mẹ là con lại ngoan ngoãn ngủ yên.

Mỗi sáng, bố chở hai mẹ con đi làm nên bao giờ bố cũng đến công ty sớm nhất nhì, đi ăn sáng xong về vẫn còn sớm. Tự nhiên bố được tiếng gương mẫu, chăm chỉ 😀

Bố còn có cơ hội rèn luyện thành tay chặt dừa điêu luyện, rồi ăn cùi dừa hai mẹ con chê, nên bố béo trắng ra, ai lâu ngày gặp cũng khen.

Bố ra trường mấy năm, đi làm chỗ này chỗ kia vẫn là anh nhân viên quèn, chưa có chức tước gì đáng kể. Có chăng bạn bè đồng nghiệp quý mến nên có lúc được gọi là giáo sư không sắc phong. Con ra đời, nghiễm nhiên phong cho bố lên một chức rất to: ông bố trẻ.

Con rất dũng cảm, các bác sỹ tiêm và lấy máu rất đau nhưng con không khóc nhiều, tiêm xong là nín. Con lại ăn rất ngoan, đến nỗi bác sỹ sợ tốn sữa bệnh viện nên cho con về sớm. Dù con vào viện có hơn một ngày thôi mà cả nhà đã rất nhớ con, mẹ con còn phát khóc lên.

Con trai, chắc con cũng cảm nhận được tình yêu của cả nhà dành cho con. Con hãy luôn ngoan ngoãn, nghe lời bố mẹ, bố mẹ luôn dõi theo sự phát triển của con từng ngày. Bố mẹ tin con sẽ trở thành công dân tốt, là niềm hãnh diện của cả nhà. Khởi đầu của con đã cho thấy như thế, và con sẽ chứng minh điều đó trong tương lai, con nhé! Bố mẹ luôn yêu con!

Chuyên mục:Family Thẻ:,

Chúa đã tạo ra thế giới như thế nào?

1. Đầu tiên, Chúa tạo ra Bit và Byte, và từ những thứ đó ông tạo ra Word.

2. Rồi Chúa lại chia ra 0 và 1, và ông thấy như vậy thật tuyệt vời.

3. Chúa bảo: Hãy để Dữ liệu đến chỗ mà nó cần đến, và Chúa tạo ra đĩa mềmđĩa cứng và CD.

4. Chúa lại nói: Hãy để Máy tính như nó cần phải thế, phải có chỗ cho đĩa mềm, đĩa cứng và CD. Thế là Chúa tạo ra Máy Vi Tính và gọi chúng là Phần cứng.

5. Lúc này, vẫn chưa có Phn mm trên Thế Giới này, thế là Chúa lại tạo ra các Phn Mm, lớn có nhỏ có, và bảo chúng: “Các con hãy tự nhân mình ra để chiếm hết các bộ nhớ”.

6. Và Chúa lại nói: Ta sẽ tạo ra các Lp Trình Viên, anh ta sẽ tạo ra Chương trình mi và cai quản tất cả Máy Vi tínhChương trìnhD Liu trên toàn Thế Gii.

7. Thế là Chúa tạo ra Lp Trình Viên và đưa đến các Trung Tâm D Liu, cho anh ta xem cây Thư mc, cho phép sử dụng tất cả các Thư mc, chỉ trừ Windows.

8. Chúa lại nghĩ rằng: Nếu để Lp trình viên một mình như vậy thì thật không tốt chút nào, thế là Chúa lấy xương sườn của Lp Trình Viên và tạo ra một Sinh Vt sẽ tôn kính Lp trình viên, yêu thích những gì Lp trình viên làm và thán phục Lp trình viên. Chúa gọi Sinh vt đó là Người Dùng.

9. Chúa để tất cả bọn họ dưới cây DOS và điều đó thật là tốt đẹp.

10. Nhưng Bill lại Thông minh hơn tất cả các Sinh vt mà Chúa đã tạo ra, anh ta hỏi Người Dùng: “Thế Chúa có cấm anh dùng Chương trình nào không?”

11. Người Dùng trả lời: “Chúa cho phép chúng tôi chạy tất cả Chương trình trên từng Bit D Liu, nhưng không được Sử dụng Windows hoặc chúng tôi sẽ chết.”

12. Bill chất vấn: “Tại sao anh có thể lại nói như vậy về một thứ mà anh chưa hề S dng? Ngay khoảnh khắc mà anh dùng Windows, anh sẽ ngang bằng với Chúa, anh có thể tạo ra bất cứ thứ gì chỉ bằng một Click chuột rất đơn giản”

13. Người dùng nhận ra rằng: Hoa qu của cây Windows ngon hơn và dễ “xài” hơn. Và anh ta thấy tri thức thật vô dụng vì Windows đã thay thế nó.

14. Người Dùng nạp Windows lên Máy tính của mình và thấy rằng Windows thật quá tuyệt vời, anh ta nói điều đó với Lp trình viên.

15. Ngay lập tức, Lp trình viên đi tìm những Driver mới. Chúa liền hỏi: “Con tìm gì vậy?”. Lp trình viên trả lời: “Con đang tìm Driver mới vì ở trong DOS không có những thứ đó”. “Ai bảo với con rằng con cần Driver mới? Con có sử dụng Windows không đấy?” Chúa hỏi tiếp, Lp trình viên liền trả lời: “Chính Bill đã bảo chúng con làm việc đó”.

16. Chúa bảo Bill: “Vì những gì con đã làm, con phải bị trừng phạt, con sẽ bị tất cả các Sinh vt ghét bỏ. Suốt đời con sẽ phải bán Windows.

17. Chúa bảo Người Dùng: “Và bởi những gì con đã làm, Windows sẽ luôn làm con thất vọng, nó sẽ ăn hết các Tài Nguyên của con, con sẽ phải dùng các Chương trình có lỗi và luôn phải cần đến những Lp Trình Viên.

18. Chúa lại bảo Lp trình viên: Bởi vì con đã nghe lời Người Dùng, con sẽ luôn luôn tạo ra các Chương trình có lỗi, con sẽ phải sửa chúng và sửa chúng đến hết cuộc đời.

19. Chúa nói, rồi ném mọi Sinh Vt ra khỏi Trung Tâm D Liu, Chúa đóng cửa và Bo Mt bằng một cái Password:

20. GENERAL PROTECTION FAULT

(st 2003)

Chuyên mục:Computer Science, Fun Thẻ:, ,

80 bài toán thông minh (VIII – the end)

Tháng Tư 27, 2012 4 comments

Post này tôi xin đăng nốt các bài từ số 71 đến 80. Hy vọng rằng các bạn học sinh, sinh viên và bất cứ ai suy nghĩ về chúng đều có thể tìm được những điều thú vị; các bậc phụ huynh có thêm những câu đố kích thích trí thông minh dành cho con em mình. Tôi gõ lại những bài toán này cũng là chuẩn bị một quà tặng tinh thần dành cho con tôi, mong con luôn ngoan ngoãn, giỏi giang.

Bản ebook bao gồm 80 câu đố và lời giải đã cơ bản đầy đủ. Bạn nào quan tâm xin liên hệ email handuc@gmail.com, tôi sẽ gửi tặng bản sao khi hoàn thiện.

———————————————————————-

70. TUỔI BA CÔ GÁI

Ba cô gái là Mùi, Tâm, Lan nói chuyện về tuổi của họ như sau:

+ Tâm: Tôi 22 tuổi. Tôi ít hơn Lan 2 tuổi và nhiều hơn Mùi 1 tuổi.

+ Lan: Tôi không trẻ nhất. Tôi và Mùi chênh nhau 3 tuổi. Mùi 25 tuổi.

+ Mùi: Tôi trẻ hơn Tâm. Tâm 23 tuổi. Lan nhiều hơn Tâm 3 tuổi.

Thực ra mỗi cô gái chỉ nói đúng 2 ý, còn 1 ý sai.

Bạn hãy xác định giúp xem tuổi của mỗi người ra sao.

71. AI LÀ THỦ PHẠM?

Tại một nước Châu Mỹ, một nhân vật có tên tuổi là Sêvot Ri-mân bị giết. Cảnh sát bắt giữ 3 người bị tình nghi là thủ phạm. Khi tra hỏi, họ khai như sau:

+ Giêm: Tôi không là thủ phạm. Trước đó tôi chưa hề gặp Giôn bao giờ. Dĩ nhiên là tôi có biết Sêvot Ri-mân.

+ Giôn: Tôi không là thủ phạm. Giêm và Giô là bạn của tôi. Giêm chưa hề giết ai bao giờ.

+ Giô: Tôi không là thủ phạm. Giêm đã nói dối là trước đây chưa hề biết Giôn. Tôi không biết ai là thủ phạm.

Cảnh sát tìm hiểu thêm thì thấy mỗi người đều nói đúng 2 ý, còn 1 ý sai và trong 3 người đó chắc chắn có một người là thủ phạm đã giết Sêvot Ri-mân.

Vậy thủ phạm là ai?

72. THỦ PHẠM VỤ CHÁY NHÀ

Cảnh sát bắt được 3 người liên quan tới một vụ cháy lớn và đã biết chắc chắn một trong 3 người đó là thủ phạm. Dân phố cho biết: trong 3 người có một kẻ chuyên lừa đảo, một ông già được dân phố kính trọng và còn lại là một dân phố không có gì đặc biệt. Tên của họ là Brown, John, Smith.

Trả lời tra thẩm, mỗi người đều nói 2 ý như sau:

+ Brown: Tôi không phải là thủ phạm. John cũng không phải là thủ phạm.

+ John: Brown không phải là thủ phạm. Smith là thủ phạm.

+ Smith: Tôi không phải là thủ phạm. Brown là thủ phạm.

Tiếp tục tra hỏi, được biết thêm: ông già nói đúng cả 2 ý, kẻ lừa đảo nói sai cả 2 ý; còn người dân phố bình thường thì nói 1 ý đúng và 1 ý sai.

Vậy tên của mỗi người là gì và ai là thủ phạm?

73. BỮA TỐI THÂN MẬT

Ba cặp vợ chồng trẻ tổ chức bữa cơm tối thân mật. Khi bữa tiệc đã trở nên vui nhộn, nói về tuổi tác của nhau, học có những nhận xét như sau:

(1) An: Người chồng nào cũng hơn vợ mình 5 tuổi.

(2) Lan: Tôi xin tiết lộ điều bí mật: Tôi là cô vợ trẻ nhất ở đây đấy.

(3) Tuấn: Tuổi tôi và Nguyệt cộng lại là 52.

(4) Minh: Tuổi của cả 6 chúng tôi cộng lại là 151.

(5) Nguyệt: Tuổi tôi và Minh cộng lại là 48.

Cô chủ nhà Thu Hương không tham gia câu chuyện vì còn bận với những món tiếp thêm. Tuy vậy, chỉ qua những nhận xét trên ta cũng có thể xác định được tuổi của từng người, hơn nữa còn biết ai là vợ, là chồng của ai.

Bạn hãy làm thử xem.

74. CHIA CAM

Có 100 quả cam đem chia vào 50 túi sao cho mỗi túi ít ra 1 quả. Hãy chứng minh rằng nếu không có túi nào có nhiều hơn 50 quả thì các túi có thể chia ra làm hai nhóm sao cho số cam ở mỗi nhóm là như nhau.

75. BÀI TOÁN TUỔI

Có 52 người tuổi từ 1 tới 100 và đều khác lẫn nhau (tính tuổi theo số tự nhiên). Chứng minh rằng có thể tìm được 3 người sao cho tuổi của một người bằng tuổi cộng lại của hai người kia.

76. THỎ VÀ CHÓ SÓI

Có một cái vườn hình vuông, giữa vườn (tâm hình vuông) có một chú thỏ. Thỏ muốn chạy thoát khỏi vườn nhưng ở 4 góc (4 đỉnh hình vuông) có 4 con sói đợi bắt thỏ. Sói chỉ chạy được trên mép vườn  (cạnh của hình vuông) nhưng lại chạy nhanh gấp 1.4 lần thỏ.

Vậy thỏ có cách chạy thế nào để thoát ra khỏi vườn được không?

77. TRỒNG HOA TRONG Ô TRÒN

Bên trong một ô vườn hình tròn bán kính 1m có trồng 4 cây hoa. Chứng minh rằng có ít ra một cặp (2 cây) sao cho khoảng cách giữa chúng nhỏ hơn \sqrt{2}m.

78. BỐN HỘP KÍN

Có 4 hộp hình dạng giống hệt nhau, bên ngoài mỗi hộp dán 1 trong các nhãn: 2Đ-1T, 1Đ-2T, 3Đ, 3T. Bên trong mỗi hộp đựng 3 bóng: 3 đỏ, 3 trắng, 2 đỏ 1 trắng hoặc 1 đỏ 2 trắng. Không có hộp nào nhãn bên ngoài giống với bóng đựng bên trong.

Người ta đưa cho mỗi học sinh một hộp và nói: “Hãy lấy ra 2 bóng rồi nói màu quả bóng còn lại trong hộp của mình, dĩ nhiên là không được nhìn vào bên trong hộp”.

– Học sinh 1: “Tôi lấy được 2 bóng đỏ và tôi biết chắc chắn màu quả bóng còn lại”.

– Học sinh 2: “Tôi lấy được 1 bóng đỏ 1 bóng trắng và cũng biết chính xác màu của quả bóng còn lại”.

– Học sinh 3: “Tôi lấy được 2 bóng trắng, nhưng tôi không biết màu quả bóng còn lại” – anh ta trả lời sau khi xem xét kỹ hộp và bóng của mọi người.

– Học sinh 4: (khó khăn nhất vì anh ta bị mù; tuy vậy, sau một hồi suy nghĩ anh ta nói) – “Tôi không cần lấy bóng ra cũng biết được màu các bóng trong hộp của tôi, thậm chí cả các bóng còn lại trong hộp các anh kia”.

Vậy học sinh mù đã suy luận thế nào để có thể biết được tài tình như vậy? Những bóng màu gì trong hộp của anh ta cũng như bóng còn lại trong hộp của các anh kia?

79. CÁC ĐỀ CỬ VIÊN KHÓ CHIỀU

Người ta đã đề cử 6 người để từ đó chọn ra 4 người vào Ban chỉ đạo (BCĐ) Hội đồng thể thao với các chức vị: Chủ tịch, phó chủ tịch, thư ký và thủ quỹ. 6 đề cử viên đó là: An, Ba, Chung, Đức, Tuấn, Phương.

Việc lựa chọn trở nên khó khăn vì những lý do sau:

– An không muốn vào BCĐ nếu không có Ba, nhưng dù đã có Ba anh ta cũng không muốn làm phó chủ tịch (1)

– Ba không muốn nhận chức phó chủ tịch và thư ký (2)

– Chung không muốn làm việc với Ba nếu thiếu Phương (3)

– Đức kiên quyết từ chối vào BCĐ nếu trong BCĐ có Tuấn hoặc có Phương (4)

– Tuấn cũng không đồng ý vào BCĐ nếu đồng thời cả An và Ba cùng vào (5)

– Chỉ có Phương đồng ý làm chủ tịch với điều kiện Chung không là phó chủ tịch (6)

Dù khó khăn, người ta cũng đã chọn được BCĐ thỏa mãn tất cả các nguyện vọng riêng của các đề cử viên.

Vậy phải chọn những ai và ở cương vị nào?

80. BÉ NGỌC VÀ BÓNG MÀU

Ông đi phố về, trên tay là đồ chơi: hộp và bóng màu. Bé Ngọc chào ông và reo lên sung sướng.

– Ôi, hộp và bóng màu đẹp quá. Ông ơi, ông cho cháu nhé.

– Hãy khoan, để ông ra cho cháu một bài toán bóng màu. Nếu cháu giải được ông sẽ thưởng cho cháu cả. Giờ cháu hãy nhắm mắt lại một lát nhé.

Chưa đầy 1 phút ông bảo bé Ngọc mở mắt ra và nói:

– Đây là 5 hộp 5 màu: trắng, đen, đỏ, xanh da trời và xanh lá cây. Bóng cũng có 5 màu như thế, mỗi màu 2 bóng. Ông đã bỏ vào mỗi hộp 2 bóng; nhưng màu của bóng không theo màu của hộp. Nếu cháu nói được màu bóng trong các hộp thì cháu rất thông minh và ông sẽ thưởng cho cháu.

– Ôi thế thì khó lắm, cháu chịu thôi. Bé Ngọc lo lắng nói.

– Cháu hãy bình tĩnh, ông còn cho cháu biết thêm nhiều điều nữa cơ mà. Cháu chú ý nhé:

+ Mỗi bóng đều không giống màu của hộp đựng nó (1)

+ Bóng xanh da trời không ở trong hộp đỏ (2)

+ Một hộp màu “trung tính” đựng bóng đỏ và bóng xanh lá cây (ông giải thích: màu “trung tính” là trắng hoặc đen) (3)

+ Hộp màu đen đựng bóng màu “lạnh” (ông giải thích: màu “lạnh” là màu xanh da trời hoặc xanh lá cây) (4)

+ Một hộp đựng bóng trắng và bóng xanh da trời (5)

+ Hộp màu xanh da trời đựng 1 bóng đen (6).

Bé Ngọc tập trung suy nghĩ, cuối cùng đã xác định được đúng màu bóng trong các hộp. Mời bạn hãy thử làm xem.

Chuyên mục:Toán học Thẻ:, , ,

80 bài toán thông minh (VII)

61. GẶP GỠ – LÀM QUEN
Một nhà văn có 20 người thân quen (11 đàn ông và 9 đàn bà) và thường mời họ đến nhà mình chơi. Trong mỗi dịp đều mời 3 người đàn bà và 2 người đàn ông.
Hỏi nhà văn cần ít ra bao nhiêu lần mời để mọi người khách (20 người) đều có dịp gặp gỡ – làm quen với nhau tại nhà của nhà văn?

 

62. NHỮNG SỐ ĐIỆN THOẠI BÍ ẨN
Một nhà toán học hỏi số điện thoại của một cô gái trẻ. Cô ta đã trả lời bỡn cợt như sau:
– Tôi có 4 số điện thoại, trong mỗi số không có chữ số nào có mặt 2 lần. Các số đó có tính chất chung là: Tổng các chữ số của mỗi số đều bằng 10. Nếu mỗi số đều cộng với số ngược lại của nó thì được 4 số bằng nhau và là số có 5 chữ số giống nhau. Đối với ngài như vậy là đủ rồi phải không ạ?
Cô gái tin rằng nhà toán học không thể tìm ra các số điện thoại, thế nhưng chỉ sau một thời gian ngắn cô ta đã phải sửng sốt khi nhận được điện thoại của nhà toán học.
Vậy nhà toán học đã tìm ra các số điện thoại bằng cách nào, biết rằng các số điện thoại trong thành phố trong khoảng từ 20,000 đến 99,999.

63. BA CON TRAI

Trong giờ nghỉ ở một hội nghị toán, các đồng nghiệp hỏi một giáo sư xem ông ta có mấy con và chúng bao nhiêu tuổi. Giáo sư trả lời:
– Tôi có 3 con trai. Có một sự trùng hợp lý thú: ngày sinh của chúng đều là hôm nay. Tuổi của chúng cộng lại bằng ngày hôm nay và đem nhân với nhau thì tích là 36.
Một đồng nghiệp nói:
– Chỉ như vậy thì chưa xác định được tuổi của bọn trẻ.
– Ồ, đúng vậy. Tôi quên không nói thêm rằng: khi chúng tôi chờ sinh đứa thứ ba thì hai đứa lớn đã được gửi về quê ở với ông bà.
– Xin cảm ơn ngài, giờ thì chúng ta đã biết tuổi của bọn trẻ.
Bạn hãy xác định tuổi của mỗi cậu con trai và hôm đó là ngày nào trong tháng.

 

64. CÔNG VIỆC CHUNG
Có 6 học sinh làm chung công việc cưa gỗ, được chia thành ba nhóm, gọi theo tên họ, thứ tự là:
Nhóm I: Trần và Lê nhận những đoạn gỗ dài 2m.
Nhóm II: Đặng và Vũ nhận những đoạn gỗ dài 1.5m.
Nhóm III: Nguyễn và Hoàng nhận những đoạn gỗ dài 1m.
Trong đó Trần, Đặng, Nguyễn là các nhóm trưởng.
Cả ba nhóm đều phải cưa gỗ thành những đoạn dài 0.5m. Công việc hoàn thành, người ta thấy kết quả được thông báo trên bảng ghi theo tên riêng như sau:
– Nhóm trưởng Tuấn và Minh cưa được 26 đoạn.
– Nhóm trưởng Phương và Thanh cưa được 27 đoạn.
– Nhóm trưởng Tùng và Nghĩa cưa được 28 đoạn.
Hỏi tên họ của Minh là gì?

 

65. THANH TOÁN NỢ NẦN TRONG SINH VIÊN
Có 7 sinh viên sống trong một phòng tập thể. Trong năm học họ đã cho nhau vay những món tiền nhỏ. Mỗi người đều ghi số tiền mình vay, và số tiền cho người khác vay nhưng lại không ghi cho ai vay và vay của ai. Trước khi nghỉ hè họ quyết định thanh toán nợ nần với nhau.
Bằng cách nào có thể thanh toán sòng phẳng nợ nần giữa các sinh viên? Bạn hãy tìm cách giải quyết sao cho đơn giản.

 

66. AI ĐƯỢC ĐIỂM MẤY?
Thày giáo đã chấm bài của 3 học sinh An, Phương, Minh nhưng không mang tới lớp. Khi ba học sinh này đề nghị thày cho biết kết quả, thày nói: “Ba em nhận được 3 điểm khác nhau là 7, 8, 9. Phương không phải điểm 9, Minh không phải điểm 8, và tôi nhớ rằng An được điểm 8”. Sau này mới thấy rằng khi nói điểm từng người thày chỉ nói đúng điểm của một học sinh, còn điểm của hai học sinh kia thày nói sai.
Vậy điểm của mỗi học sinh là bao nhiêu?

 

67. BA THÀY GIÁO
Trong một trường phổ thông cơ sở ở Hà Nội có 3 thày giáo là Minh, Tuấn, Vinh dạy các môn Sinh vật, Địa lý, Toán, Lịch sử, Tiếng Anh và Tiếng Pháp, mỗi thày dạy hai môn.
Người ta biết về các thày như sau:
– Thày dạy Địa và thày dạy Tiếng Pháp là láng giềng của nhau (1)
– Thày Minh trẻ nhất trong ba thày (2)
– Thày Tuấn, thày dạy Sinh và thày dạy Tiếng Pháp thường đi với nhau trên đường về nhà (3)
– Thày dạy Sinh nhiều tuổi hơn thày dạy Toán (4)
– Thày dạy Tiếng Anh, thày dạy Toán và thày Minh khi rảnh rỗi thường hay đánh quần vợt với một thày thứ tư (5)
Bạn hãy xác định xem mỗi thày dạy hai môn học nào?

 

68. NĂM NGƯỜI BẠN
Năm người bạn là Đa, Thiện, Liên, Khương, Đức có nghề nghiệp là họa sỹ, thợ may, thợ mộc, người đưa thư và thợ cắt tóc. Họ sống trong cùng một thành phố nên có điều kiện gặp gỡ nhau thường xuyên.
Đa và Khương hay cùng nhau đến hiệu may nơi người thợ may làm việc. Thiện và Đức sống cùng khu tập thể với người đưa thư. Liên vừa đóng vai chủ hôn cho đám cưới của Thiện lấy con gái người thợ cắt tóc. Đa và Thiện chủ nhật thường chơi cờ với họa sỹ và người thợ mộc. Khương và Đức tối thứ bảy hay đến chơi nhà người thợ cắt tóc. Người đưa thư thích nhất tự cắt tóc cho mình. Đức và Khương chưa bao giờ cầm bút vẽ.
Bạn hãy xác định nghề nghiệp của mỗi người.

 

69. SỰ KIỆN TRONG TOA XE LỬA
Tình cờ trên một toa xe lửa có một nhà thơ, một nhà văn, một nhà viết kịch và một nhà sử học ngồi cạnh nhau. Tên của họ là: An, Vân, Khoa, Đạt.
Qua chuyện trò trao đổi thì thấy:
Mỗi người đều mang theo một tác phẩm của một trong 3 người kia để đọc trong cuộc hành trình. An và Vân trước đây đã đọc tác phẩm của nhau, nhưng giờ đây không có người nào mang theo tác phẩm của người kia. Vân đọc tác phẩm của Đạt. Đạt không bao giờ đọc thơ. Nhà thơ đọc tác phẩm kịch. Nhà văn trẻ vừa mới ra đời tác phẩm đầu tiên nói rằng: khi đọc xong tác phẩm mang theo anh ta sẽ mượn đọc tác phẩm của nhà sử học. Trên tàu không có ai mang theo tác phẩm của chính mình.
Hỏi tên mỗi tác giả là gì và họ mang theo tác phẩm của ai trong cuộc hành trình?

 

70. TUỔI BA CÔ GÁI
Ba cô gái là Mùi, Tâm, Lan nói chuyện về tuổi của họ như sau:
+ Tâm: Tôi 22 tuổi. Tôi ít hơn Lan 2 tuổi và nhiều hơn Mùi 1 tuổi.
+ Lan: Tôi không trẻ nhất. Tôi và Mùi chênh nhau 3 tuổi. Mùi 25 tuổi.
+ Mùi: Tôi trẻ hơn Tâm. Tâm 23 tuổi. Lan nhiều hơn Tâm 3 tuổi.
Thực ra mỗi cô gái chỉ nói đúng 2 ý, còn 1 ý sai.
Bạn hãy xác định giúp xem tuổi của mỗi người ra sao.

80 bài toán thông minh (VI)




Chuyên mục:Toán học