Thursday, July 31, 2014

Đề thi cũ CTDL 2013

Đề thi cũ môn CTDL cho bạn nào muốn tham khảo kỳ 1,2,3 năm 2013

Kỳ 1 - 2013 

Giữa kỳ: http://1drv.ms/1zyzuys

Cuối kỳ: http://1drv.ms/1zyzyOP

Kỳ 2 - 2013

Giữa kỳ: http://1drv.ms/1qMM38X

Cuối kỳ: http://1drv.ms/1qMM50u

Kỳ 3 - 2013

Giữa kỳ: http://1drv.ms/1zyzL4E


Wednesday, July 30, 2014

Một số bài cho hai bạn không kiểm tra giữa kỳ

Bài 1. Tìm số phòng họp nhỏ nhất cho các cuộc họp


Đầu vào: Danh sách các cuộc họp với thời điểm bắt đầu và kết thúc
struct meeting
{
int start, end;//thời điểm bắt đầu và kết thúc
}
Đầu ra: đưa ra số phòng ít nhất cần dùng để đảm bảo không cuộc họp trùng giờ được tổ chức cùng phòng

int minNoRoom(struct meeting A[], int n)

trong đó A là mảng chứa danh sách các cuộc họp và n là số lượng phần tử

Chú ý: Các cuộc họp này đã được xếp theo thứ tự tăng dần về thời điểm bắt đầu

Bài 2. Kiểm tra xem hai xâu có phải là bị biến đổi bởi phép xoay hay không


Đầu vào: hai xâu ký tự có cùng độ dài
Đầu ra: nếu hai xâu được tạo ra bởi phép xoay thì trả về là true, ngược lại trả về là false

int checkIsRotation(char *s1, char *s2)

VD.
S1="amazon" S2="azonam" return true
S1="quality" S2="lityqua" return false

Chú ý: Bạn có thể dùng các hàm có sẵn của thư viện string.h

Bài 3. Viết hàm tìm và trả về nút lá sâu nhất trên cây nhị phân


struct BNODE deepestNode(struct BNODE *root)

trong trường hợp có nhiều nút thì chỉ cần trả về 1 nút

Hạn nộp: Thứ 2 tuần tới (4/8/2014)
Mang máy và chương trình tới lớp để bảo vệ!


Wednesday, July 9, 2014

Bài tập lớn CTDLGT học kỳ hè 20133

Một số BTL cho kỳ hè 2013

Bài 1. Thống kê từ file log


Dữ liệu log về quảng cáo trong 1h được ghi ra các file log, mỗi trường được ngăn cách nhau bởi dấu tab (\t)
Nội dung các trường theo thứ tự

0 time create
1 browser code
2 browser version
3 os code
4 os version
5 device code
6 bannerId
7 ip
8 geoId
9 domain
10 path
11 ref url
12 click or view
13 cookie create time
14 guid
15 appid
16 sdk version
17 zoneId
18 campaign id
21 screen width
22 screen height
24 manufactory id

Cần thống kê:

  • Số lượng thiết bị (Device) (Các thiết bị không xác định sẽ được gom lại thành 1 nhóm)
  • Thống kê Pageview theo domain và theo từng page 


Dữ liệu các bạn có thể tài về từ

https://drive.google.com/folderview?id=0B5nb3v94xY_WSFFxMmRiQ1hDN3M&usp=sharing

Bài 2. Cài đặt thuật toán Seamcarving dùng để resize lại ảnh


Mô tả thuật toán này các bạn có thể tìm tại
https://drive.google.com/folderview?id=0B5nb3v94xY_WSFFxMmRiQ1hDN3M&usp=sharing

Với ảnh màu RGB bạn có thể chọn một trong những cách sau đây


  • Chuyển về ảnh mức xám
  • Xử lý các thành phần màu RAG như 1 số nguyên 3 Byte
  • xử lý từng thành phần màu R,G,B riêng rẽ

Bài 3. Xây dựng gợi ý khi gõ văn bản



Khi gõ một hoặc một số ký tự, chương trình sẽ tự động suggest nốt phần còn lại của từ

Ý tưởng: Dùng prefix Tree

Yêu cầu: Xây dựng prefix tree và áp dụng để suggest một số từ thông dụng cho từ điển tiếng Anh
(Từ điển có thể tải về từ https://drive.google.com/folderview?id=0B5nb3v94xY_WSFFxMmRiQ1hDN3M&usp=sharing), file mword10.zip, dùng file COMMON.TXT hoặc COMPOUND.TXT


Bài 4. Xây dựng thuật toán sinh màn chơi SODOKU theo các mức khó

Cài đặt thuật toán mô tả trong bài báo sau

http://zhangroup.aporc.org/images/files/Paper_3485.pdf

Tham khảo thêm tại


Bài 5. Xây dựng chương trình tự động suggest và sửa lỗi chính tả (tiếng Anh)

Với một văn bản tiếng Anh được nhập từ bàn phím, hoặc file, chương trình sẽ làm những việc sau:


  1. Phát hiện những từ sai chính tả (VD: Đầu dòng, đoạn phải viết hoa, những từ ko có trong từ điển), và đánh dấu bằng màu khác hoặc tô đậm
  2. Với những từ không có trong từ điển, chương trình có thể gợi ý những cách sửa (đưa ra 1 vài gợi ý dựa trên thuật toán tìm khoảng cách sửa đổi gần nhất của 2 xâu - Levenshtein Edit Distance)


(Từ điển có thể tải về từ https://drive.google.com/folderview?id=0B5nb3v94xY_WSFFxMmRiQ1hDN3M&usp=sharing), file mword10.zip, dùng file COMMON.TXT

Tham khảo

Bài 6: Thuật toán sinh mê cung



Yêu cầu: Sinh mê cung kích thước nxn bất kỳ
Đầu ra: Vẽ minh họa mê cũng sinh được (với trường hợp n nhỏ thì hiển thị trên màn hình, còn n lớn có thể ghi ra file), dùng các ký hiệu VD. _, | để minh họa

Tham khảo


Demo


Bài 7: Đưa ra từ gợi ý dựa trên n-gram (+2 điểm)


http://en.wikipedia.org/wiki/N-gram
n-gram là chuỗi n từ được đi liền với nhau (có thể có nghĩa hoặc không có nghĩa)

Ví dụ: với xâu "In the fields of computational linguistics and probability, an n-gram is a contiguous sequence of n items from a given sequence of text or speech. The items can be phonemes, syllables, letters, words or base pairs according to the application. The n-grams typically are collected from a text or speech corpus."

1-gram là các từ đứng rời In, the, fields, of, computational,....
2-gram là các cặp 2 từ liền nhau: In the, the fields, fields of, of computational,....
3-gram là các nhóm 3 từ liền nhau: In the fields, the fields of, fields of computational,....

tương từ với 4-gram, 5-gram

Đầu vào: là tập văn bản reuters21578 http://www.daviddlewis.com/resources/testcollections/reuters21578/
format của các văn bản này các bạn xem thêm tại: http://www.daviddlewis.com/resources/testcollections/reuters21578/readme.txt

Yêu cầu:

  1. Lọc lấy tiêu đề và nội dung của các bài viết
  2. Tách và sinh ra các n-gram (1,2,3,4,5-gram)
  3. Thống kê tần số xuất hiện của các gram (không phân biệt hoa thường, và có phân biệt hoa thường)
  4. Gợi ý từ dựa trên các n-gram thống kê được
VD. Với dữ liệu mẫu là 3 gram ở trên thì khi người dùng gõ vào từ "In" ta có thể gợi ý các cặp là "In the", "In the fields".

Trong thực tế thì ta có thể chọn các cặp n-gram có tần số xuất hiện lớn nhất để đưa ra trước, nhưng vì tần số xuất hiện này còn tỉ lệ với độ dài gram. Do đó việc đưa ra các từ gợi ý dựa trên (tần số xuất hiện của gram)/(tổng số các n-gram).

Ví dụ. Có 2500 2-gram và 1000 3-gram

cụm 2-gram "In the" có tần số xuất hiện 15 lần thì tỉ lệ của nó sẽ là 15/2500
cụm 3-gram "In the fields" có tần số xuất hiện 7 lần thì tỉ lệ là 7/1000

Vậy khi đưa ra gợi ý ta sẽ đưa ra cụm "In the fields" trước cụm "In the"

Chú ý: Các cụm gram này dừng tại các dấu câu.

VD. câu "In the fields of computational linguistics and probability, an n-gram is a contiguous sequence of n items from a given sequence of text or speech.

được tách thành 2 phần

"In the fields of computational linguistics and probability"
"an n-gram is a contiguous sequence of n items from a given sequence of text or speech"

để đảm bảo các n-gram không chứa các dấu như , . : ? ! ;

Tham khảo thêm tại
  • http://en.wikipedia.org/wiki/N-gram
  • http://nlpwp.org/book/chap-ngrams.xhtml
  • http://www.ngrams.info/
  • https://drive.google.com/folderview?id=0B5nb3v94xY_WSFFxMmRiQ1hDN3M&usp=sharing

Bài 8: Xây dựng chương trình kiểm tra một biểu thức dạng trung tố có hợp lệ


Một biểu thức dạng trung tố

  • Toán tử có thể 1 ngôi hoặc 2 ngôi, chỉ gồm 1 ký tự
  • Toán hạng: nếu là số thì có thể có 1 hoặc nhiều chữ số được viết liên nhau, nếu là chữ cái thì chỉ có 1 ký tự
  • Các toán tử và toán hạng được viết liền nhau, giữa chúng không có khoảng cách trống
  • Chỉ có một loại dấu ngoặc tròn
Ví dụ một số biểu thức hợp lệ

A=a+345-23*12+(a-34/2)
B=b+(45+a/3+(52-4*a))
C=|45+a*(2-7/b)|/23*a

Hãy viết chương trình kiểm tra biểu thwucs hợp lệ, với biểu thức có thể được nhập vào từ file hoặc từ bàn phím

Monday, June 2, 2014

Bị bong võng mạc vì nhắn tin ban đêm quá nhiều

(Dân trí) - Một thanh niên 26 tuổi ở Trung Quốc đã bị bong võng mạc sau khi nằm trong bóng tối để nhắn tin cho bạn gái suốt vài giờ liền bằng ứng dụng nhắn tin trên điện thoại di động.

Nạn nhân đã phải nhập viện cấp cứu sau khi mắt đột nhiên thấy lóe sáng và sau đó không nhìn thấy gì. Thăm khám cho thấy bệnh nhân bị bong võng mạc mắt trái.

Bong võng mạc - thường hay gặp hơn ở người già - đang ngày càng phổ biến ở những người trẻ do sử dụng điện thoại di động quá nhiều. Võng mạc là lớp mô cảm nhận ánh sáng nằm sâu trong mắt, gửi tín hiệu tới dây thần kinh thị giác rồi tới não. Bong võng mạc khiến võng mạc bị bật ra khỏi vị trí bình thường; nếu không được điều trị, bệnh có thể gây mù vĩnh viễn. Bong võng mạc được xem là một cấp cứu trong y tế.

Được biết chàng trai Trung Quốc này đã nhắn tin không ngừng nghỉ cho bạn gái suốt cả ngày và suốt nhiều giờ trong đêm, khiến võng mạc “quá tải”. Mặc dù đây là ca bệnh hy hữu, song trên thực tế chúng ta có thể gây ra tai họa cho mắt do sử dụng điện thoại di động quá nhiều - bao gồm bong võng mạc, viêm kết mạc (đau mắt đỏ) hoặc viêm giác mạc.

Ngoài ra, một số nhà khoa học tin rằng mắt có thể bị căng khi nhìn chăm chú vào các thiết bị. “Mắt chúng ta đã tiến hóa để nhìn hình ảnh 3-D,” một chuyên gia của Hội Nhãn khoa Mỹ cho biết, “vì thế chúng ta sẽ phải điều tiết quá mức khi cố tìm hình ảnh 3-D trên một màn hình gần mắt.” Mặc dù đã có một số nghiên cứu cảnh báo rằng việc sử dụng điện thoại và máy tính bảng sẽ làm hỏng mắt, song trên thực tế trừ phi bạn nhìn quá chăm chú vào màn hình trong suốt nhiều giờ, còn thì có lẽ mắt bạn sẽ không sao.

http://dantri.com.vn/suc-khoe/mot-thanh-nien-bi-bong-vong-mac-vi-nhan-tin-ngay-dem-882514.htm

Các bạn nhắn tin hoặc xem film ít thôi nhé! :D

Thursday, May 22, 2014

Bản quyền phần mềm diệt virus Bitdefender 180 ngày miễn phí

Nhân dịp được trao danh hiệu phần mềm diệt virus tốt nhất 2014, Bit defensder mở chương trình khuyến mãi: cung cấp bản quyền phần mềm miễn phí trong 180 ngày



Các bạn lấy license tai: http://www.bitdefender.com/media/html/60-second/index.html (nhấn vào nút Get Free License)

Download phần mềm tại: Bit defender internet security