Bài tập đề nghị:

Một phần của tài liệu Tài liệu Lập trình trí tuệ nhân tạo Prolog pptx (Trang 101 - 103)

• Đếm trong một dãy bấy kỳ có bao nhiêu phần tử là số nguyên (sử dụng phương thức isInteger)

• Đếm trong một chuỗi có bao nhiêu ký tự có mã asci nằm giữa hai số nguyên n,m (n, m là hai số nguyên cho trước, sử dụng phương thức between:and: ) • Tính hiệu giữa tổng ascii các ký tự nguyên âm và các ký tự phụ âm trong một

chuỗi (sử dụng phương thức isVowel).

• Cho a là một dãy số nguyên. Tính tổng các phần tử có giá trị lớn hơn số phần tử của a.

• Mã hóa một chuỗi thành một số nguyên x = a*100 + b*10 + c trong đó a là số ký tự nguyên âm, b là số ký tự phụ âm, c là số ký tự còn lại trong chuỗi (sử dụng phương thức isLetter)

III.2 S dng phương thc select: hoc reject:

1. Ví dụ:

• Đếm trong một dãy số nguyên xem có bao nhiêu phần tử là số chính phương. Giải

|s|

s := #(2 3 4 5 6 7 8 9).

^(s select: [:i| i sqrt - i sqrt rounded = 0]) size. hoặc

|s|

s := #(2 3 4 5 6 7 8 9).

^(s reject: [:i| i sqrt - i sqrt rounded ~= 0]) size. • Tính dãy ước số chung giữa hai số nguyên m và n

Giải |tmp n m| n:= 25. m := 125. tmp := 1 to: n. “tmp = #(1 2 3 …. 25)” ^ tmp select: [: i| (n \\ i = 0) & (m \\ i = 0)] 2. Bài tập đề nghị

• Đếm xem trong một chuỗi có bao nhiêu ký tự có mã ascii chia hết cho n (với n là một số nguyên nào đó.)

• Đếm trong một dãy a có các phần tử là các dãy số nguyên (dãy con) có bao nhiêu dãy con có tổng lớn hơn n.

• Tạo ra danh sách các bội số của một số nguyên a có giá trị nằm giữa hai số nguyên n và m.

• Tạo ra một dãy gồm n phần tử đầu tiên là số nguyên của một dãy bất kỳ (sử dụng phương thức copyFrom:to:)

• Kiểm tra xem một số n có phải là số nguyên tố hay không.

III.3 S dng phương thc collect:

1. Ví dụ:

• Tạo một dãy n số là m0.. m1... m2… mn với m, n là hai số nguyên Giải:

m := 2.

(1 to: n) collect: [:i| i:= m raisedTo: i].

• Đổi các phần tử là phụ âm của một chuỗi thành chữ thường và các phần tử là nguyên âm của một chuỗi thành chữ hoa

Giải |a|

a:= 'ABCDabcd'.

a:= a collect: [:c| c isVowel ifTrue: [c:= c asLowerCase] ifFalse: [c:= c asUpperCase]

]. ^a

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Tài liệu Lập trình trí tuệ nhân tạo Prolog pptx (Trang 101 - 103)