Lớp tổ chức cho các nhóm bốc thăm chọn một bài toán Lập trình hàm và bốc thăm chọn một bài toán Lập trình lôgic trong hai phần danh mục dưới đây để triển khai lập trình, viết báo cáo k
Trang 154, Nguyễn Lương Bằng, Hoà Khánh, Liên Chiểu, TP Đà Nẵng Tél 84.511.3736.949 - Website: itf.dut.edu.vn/ , E-mail: cntt@dut.udn.vn
1
BÀI TẬP MÔN LẬP TRÌNH HÀM & LẬP TRÌNH LÔGIC
• Thực hiện theo nhóm 3 sinh viên Lớp tổ chức cho các nhóm bốc thăm chọn một bài toán
Lập trình hàm và bốc thăm chọn một bài toán Lập trình lôgic trong hai phần danh mục dưới
đây để triển khai lập trình, viết báo cáo kết quả (do có thể có nhiều nhóm nên có thể trùng
đề tài, tuy nhiên bắt buộc tất cả các đề tài đều phải được chọn hết)
• Nội dung báo cáo ghi rõ họ tên các SV+lớp (nhóm) tham gia trong nhóm và tên đề tài, gồm kết quả/đặc tả phân tích bài toán, dữ liệu vào/ra, thuật toán, độ phức tạp và cấu trúc dữ liệu tương ứng, chương trình sử dụng ngôn ngữ Scheme, SWI-Prolog có chú thích rõ ràng, kết quả chạy thử với các trường hợp dữ liệu đầu vào khác nhau Chú ý giải thích các bước thực hiện chạy chương trình và kết quả nhận được tương ứng như thế nào
• Lớp giúp tôi kiểm tra và thu bài tập trung, gửi cho tôi một lần cùng danh sách thi đã ký tên
trong ngày thi kết thúc môn học, gồm : Báo cáo in giấy A4 đóng quyển và CD-ROM (hoặc
ZipFiles) ghi toàn bộ nội dung thực hiện, mã nguồn, kết quả chạy thử nghiệm Chú ý bắt buộc
mỗi SV phải ghi số thứ tự trong danh sách thi cuối kỳ vào báo cáo in giấy
PHẦN ĐỀ TÀI LẬP TRÌNH HÀM VỚI SCHEME
1 Cho 8 số thực X 1 , Y 1 , X 2 , Y 2 , X 3 , Y 3 , X 4 , Y 4 tương ứng lần lượt là toạ độ của bốn điểm A, B, C,
D, trong mặt phẳng toạ độ Đêcac xOy Viết hàm Scheme thực hiện các công việc sau :
- Kiểm tra ba điểm nào đó bất kỳ có lập thành một tam giác không ?
- Nếu đó là một tam giác, hãy xét xem :
o Điểm còn lại có nằm bên trong tam giác này không ?
o Tính khoảng cách từ điểm còn lại đến ba điểm đã lập thành một tam giác
2 Cho 8 số thực X 1 , Y 1 , X 2 , Y 2 , X 3 , Y 3 , X 4 , Y 4 tương ứng lần lượt là toạ độ của bốn điểm A, B, C,
D, trong mặt phẳng toạ độ Đêcac xOy Viết hàm Scheme thực hiện các công việc sau :
- Bốn điểm đã cho có lập thành một tứ giác không ?
- Nếu là một tứ giác, hãy xét xem :
• Tứ giác tạo thành hình gì ?
• Tính chu vi và diện tích của hình tứ giác
3 Cho x ∈ ℜ thay đổi từ 0 đến 1 với bước tăng là h = 0.01 và n nguyên dương
Viết hàm Scheme tìm nghiệm phương trình vi phân f(x) =cos x - 1
x , biết rằng nghiệm ở giữa các điểm 0 của hàm cos x, nghĩa là 3 , 5
,
Dùng phương pháp lặp Newton :
n
n
f(x )
x = x -
f '(x ), với f’(x) là đạo hàm của f
với độ chính xác ε cho trước Chẳng hạn ε = 10-5
Trang 25 Tính giá trị của đa thức Legendre bậc n được cho bởi công thức truy hồi như sau :
2
(n + 1)
L (x)
Trong đó : L0(x) = 1, L1(x) = x
6 Trong mặt phẳng toạ độ, phương trình đường dốc của một đường thẳng có độ dốc m và đi qua điểm P có toạ độ (x 1 , y 1 ) là : y - y 1 = m(x - x 1) Thực hiện các công việc sau :
a) Từ danh sách gồm độ dốc và toạ độ điểm của hai đường thẳng, hãy kiểm tra xem chúng
có giao nhau hay song song với nhau ?
b) Nếu hai đường thẳng song song với nhau, hãy tính khoảng cách giữa chúng
c) Nếu hai đường thẳng giao nhau, kiểm tra chúng có vuông góc với nhau hay không ?
7 Không sử dụng kiểu số phức có sẵn của Scheme mà dùng kiểu bộ đôi (pair-doublet) để biểu
diễn số phức (a + bi) Hãy tính và in ra kết quả dưới dạng chuẩn a + bi Cho biết :
Cộng: (a + bi) ± (c + di) = (a ± c) + (b ± d)i
Trừ : (a + bi) − (c + di) = (a − c) + (b − d)i
Nhân : (a + bi) × (c + di) = (ac − bd) + (ad ± bc)i
Luỹ thừa : (a + bi)n = rn(cosnϕ + isinnϕ), trong đó : r = a + b2 2, ϕ = arctgb
a
8 Không sử dụng kiểu số phức có sẵn của Scheme mà dùng kiểu bộ đôi (pair-doublet) để biểu
diễn số phức (a + bi) Hãy tính và in ra kết quả dưới dạng chuẩn a + bi Cho biết :
(a + bi) (ac + bd) (bc ad)
(c + di) (c + d ) (c + d ) , với điều kiện c2 + d2 ≠ 0
Căn bậc hai : a + bi = x + yi , trong đó :
Nếu a > 0, tính x và lúc đó, y = bx
2 , nếu a < 0, tính y và lúc đó, x = by
2
9 Cho trước hai danh sách các số thực, hãy tạo ra một danh sách thứ ba sao cho mỗi phần tử là một số phức có phần thực nằm ở danh sách thứ nhất và phần ảo nằm ở danh sách thứ hai một cách tương ứng lần lượt Biện luận
10 Cho trước một danh sách các số phức, hãy sắp xếp các phần tử của danh sách sao cho
phần thực của chúng tạo thành dãy không giảm
Trang 3PHẦN ĐỀ TÀI LẬP TRÌNH LÔGIC VỚI SWI-PROLOG
1 Trò chơi 8 quân cờ (Cờ ta canh)
Tám (8) quân cờ được chỉ ra trong hình, gồm một bảng kích thước 3x3 với 8 quân cờ được đánh số từ 1 đến 8 và một ô trống Một quân cờ đứng cạnh ô trống có thể đi vào ô trống Mục tiêu là luôn luôn tiến tới vị trí các quân cờ như ở trong hình bên phải (trạng thái đích)
Trạng thái đầu Trạng thái đích
Trình bày thuật toán và viết chương trình Prolog để di chuyển các quân cờ sao cho số bước
di chuyển là thấp nhất (tối ưu) Dữ liệu được đọc từ tệp (file) là một ma trận vuông 3x3
2 Trò chơi viết số
Hai người chơi với nhau trò chơi như sau : với 1 số a đang có sẵn, đến lượt mình chơi, người
đó sẽ viết số a+1 hay 2a với điều kiện số mới viết này không vượt qua số nguyên dương N cho trước Với số bắt đầu là 1, ai viết được số N trước thì xem như thắng
Xem như máy là người đi sau
Trình bày thuật toán và viết chương trình Prolog mô tả trò chơi sao cho khả năng thắng của máy cao Dữ liệu được đọc từ bàn phím
3 Trò chơi Minesweeper của Windows
Tìm hiểu trò chơi Minesweeper của Windows Trình bày thuật toán và viết chương trình Prolog minh hoạ
4 Bài toán phân việc
Có N chi tiết máy J1, J2, , Jn cần gia công lần lượt trên 3 máy A, B, Cvới thời gian hoàn thành tương ứng của một chi tiết là TA, TB, TC Các chi tiết từ J1, J2, , Jn có thể gia công theo thứ tự bất kỳ tuy nhiên một chi tiết Ji phải được gia công lần lượt theo thứ tự trên máy A đến máy B rồi đến máy C
Dữ liệu được đọc từ tệp (file) có dạng như sau :
DULIEU.INP
J1A, J2A, , JnA // thời gian gia công các chi tiết trên máy A
J1B, J2B, , JnB // thời gian gia công các chi tiết trên máy B
J1C, J2C, , JnC // thời gian gia công các chi tiết trên máy C
Trình bày thuật toán và viết chương trình Prolog mô tả sao cho tổng thời gian gia công hoàn thành N chi tiết là thấp nhất (tối ưu) Kết quả đưa ra là thứ tự các công việc
1 2 3
7 4 6
5 8
1 2 3
4 5 6
7 8
Trang 45 Xử lý tam giác
Mối quan hệ giữa các thành phần trong một tam giác (phẳng) như sau :
1 Nếu biết 3 cạnh của tam giác thì có thể biết nửa chu vi của tam giác đó
2 Nếu biết 2 cạnh và nửa chu vi của một tam giác thì biết được cạnh còn lại của tam giác
3 Nếu biết diện tích và một cạnh của một tam giác thì có thể biết được chiều cao tương ứng
với cạnh đó
4 Nếu biết 2 cạnh và 1 góc kẹp giữa 2 cạnh đó của một tam giác thì có thể biết được
cạnh còn lại của tam giác đó
5 Nếu biết 2 cạnh và 1 góc kẹp giữa 2 cạnh đó của một tam giác thì có thể biết được
diện tích của tam giác đó
6 Nếu biết 3 cạnh và nửa chu vi của một tam giác thì biết được diện tích của tam giác đó
7 Nếu biết diện tích và đường cao của một tam giác thì biết được cạnh tương ứng với
đường cao của tam giác đó
Trình bày thuật toán và viết chương trình Prolog minh hoạ Chẳng hạn giả sử biết được 2 cạnh và góc kẹp giữa 2 cạnh đó, có thể suy ra được đường cao tương ứng với cạnh còn lại
6 Bài toán người du lịch
Một người khách du lịch muốn đi thăm n thành phố được đánh số từ 1 đến N và quay lại
thành phố đưa phát Mạng lưới giao thông giữa n thành phố này là hai chiều và được cho bởi ma trận A[i,j] trong đó A[i,j]=1 nếu có đường đi từ thành phố i đến thành phố j, A[i,j]=0 trong trường hợp ngược lại
Kết quả đưa ra là chu trình đường đi (chu trình Hamilton)
Trình bày thuật toán và viết chương trình Prolog minh hoạ lộ trình cho người khách hay thông báo không tồn tại lời giải Dữ liệu được đọc từ tệp (file) có dạng như sau :
DULIEU.INP
Dòng 1 ghi số nguyên N (N<=20)
Dòng i+1 (1<=i<=N) ghi n số nguyên không âm (0 hoặc 1)
Các số ghi trên một dòng cách nhau ít nhất một dấu cách
7 Bài toán hệ thống dây diện
Một công ty cần thay toàn bộ hệ thống dây điện cho N phòng làm việc Cho biết sơ đồ mạng lưới điện hiện có của N căn phòng được biểu diễn bằng ma trận A[i,j], trong đó A[i,j] chính là
độ dài của dây điện nối giữa 2 phòng i và j Quy ước A[i,j]=A[j,i], A[i,j]=0 nếu không có (không thể) có dây nối giữa phòng i và j
Dữ liệu được đọc từ tệp (file) có N+1 dòng dạng như sau :
DULIEU.INP
Dòng 1 ghi số nguyên N
Dòng i+1 (1<=i<=N) ghi N số nguyên A[i,1] A[i,2] A[i,N]
Các số ghi trên một dòng cách nhau ít nhất một dấu cách
Trình bày thuật toán và viết chương trình Prolog minh hoạ kết quả cách nối dây điện sao cho
cả N phòng đều có điện, tổng độ dài của dây dẫn cần sử dụng là nhỏ nhất
Trang 58 Trò chơi đoán số
Một người chơi nghĩ ra 1 số (giả sử gọi là S) gồm bốn chữ số (không nhất thiết khác nhau) trong sáu chữ số từ 1 đến 6 Để tìm số đó, máy lần lượt đưa ra các số dự đoán (gọi là M), mỗi số gồm 4 chữ số không nhất thiết khác nhau Với mỗi lần dự đoán, máy nhận được 2 câu trả lời của người chơi cho 2 câu hỏi sau :
- Có bao nhiêu chữ số trong M là chữ số trong S nhưng vị trí đưa ra của mỗi chữ số đó sai ?
- Có bao nhiêu chữ số trong M là chữ số trong S, đồng thời vị trí đưa ra của mỗi chữ số đều đúng ?
Ví dụ số cần tìm là 5436
1234
Đúng số - Đúng vị trí : 1
Đúng số - Sai vị trí : 1
2156
Đúng số - Đúng vị trí : 1
Đúng số - Sai vị trí : 1
1416
Đúng số - Đúng vị trí : 2
Đúng số - Sai vị trí : 0
5436
Đúng số - Đúng vị trí : 4
Đúng số - Sai vị trí : 0
Chọn đúng số
Trình bày thuật toán và viết chương trình Prolog minh hoạ kết quả đưa ra các số máy dự đoán và nói mỗi số đó nhận 2 câu trả lời từ bàn phím của người chơi cho đến khi được số đúng như dự kiến (sao cho không quá 6 lần dự đoán)
9 Bài toán Chia quà
Trong ngày sinh nhật, Cục và Cọ nhận được N đồ chơi (N<=40) Trên đồ chơi thứ i có giá tiền là Xi Hai anh em Cục và Cọ quyết định mỗi người phải có trách nhiệm bảo quản một phần
số quà và phân chia sao cho chênh lệch tổng giá trị tiền đồ chơi mà mỗi người phải bảo quản là
ít nhất
Trình bày thuật toán và viết chương trình Prolog giúp Cục và Cọ phân chia trách nhiệm
Dữ liệu đọc từ tệp văn bản (Text File) có dạng :
Dòng 1 : ghi số nguyên dương N
Dòng 2 : Ghi N số nguyên dương tương ứng với giá trị N đồ vật
Trang 610 Bài toán Dự thi sản phẩm phần mềm
Trong một lớp học, có một nhóm gồm 10 học sinh có tên lần lượt là A, B, C, D, E ,F , G, H,
I, J Giữa các học sinh đó có mối quan hệ được gọi là quan hệ ảnh hưởng Ví dụ nếu viết AB>C thì có ngĩa là 2 học sinh A và B đồng thời thuyết phục học sinh C tham gia một hoạt động nào
đó Giả sử ban đầu có 4 học sinh E, F, H, I tham gia dự thi sản phẩm phần mềm do trường tổ chức và cũng biết được rằng :
1) ACH>B
3) ABCI>BDI
5) CGI>AJE
6) H>BC
Trình bày thuật toán và viết chương trình Prolog để chứng minh rằng cả 10 bạn trong nhóm trên đều tham gia dự thi sản phẩm phần mềm