THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 80

s x y ra n u b n kích ho t

ẽ ả

ế

ạ middle lên m t chu i ch có hai ch cái? M t ch cái? Không có ch cái

nào?

4.

Cách đ nh nghĩa thông th

ng c a m t palindrome là m t t mà đ c xuôi ng

c đ u gi ng nhau, ch ng

ườ

ộ ừ

ượ ề

h n “otto” và “palindromeemordnilap.” M t cách khác đ đ nh nghĩa m t thu c tính nh th baft là quy

ể ị

ư ế

đ nh m t cách ki m tra thu c tính đó. Ch ng h n, ta có th nói “m t ch cái là m t palindrome, và m t

t hai ch là m t palindrome n u hai ch cái c a nó gi ng nhau, và m t t b t kì khác là m t

ế

ộ ừ ấ

palindrome n u ch cái đ u gi ng ch cái cu i và khúc gi a cũng là m t palindrome.” Hãy vi t m t

ế

ế

ph

ng th c đ quy có tên

ươ

ứ ệ

isPalindrome nh n vào m t

ộ String và tr l i m t boolean cho bi t t đó có

ả ạ

ế ừ

ph i là palindrome hay không.

5. M t khi b n đã có đo n mã đ ki m tra palindrome, hãy tìm cách đ n gi n hoá nó b ng cách gi m s

ể ể

ơ

đi u ki n trong phép ki m tra. G i ý: vi c l y đ nh nghĩa chu i r ng cũng là palindrome có th giúp ích.

ệ ấ

ỗ ỗ

6. Hãy vi t ra trên gi y m t chi n l

c có tính l p đ ki m tra palindrome. Có m t s ph

ng án kh dĩ,

ế

ế ượ

ể ể

ộ ố

ươ

b i v y b n hãy đ m b o ch c ch n m t k ho ch rõ ràng tr

c khi b t đ u vi t mã l nh.

ở ậ ạ

ộ ế

ướ

ắ ầ

ế

7.

Hãy t o l p chi n l

c b n ch n thành m t ph

ng th c có tên

ạ ậ

ế ượ ạ

ươ

isPalindromeIter.

8. Câu h i ph : Ph l c

ụ ụ B có mã l nh đ đ c m t danh sách các t v ng t m t file. Hãy đ c m t danh

ể ọ

ừ ự

ừ ộ

sách các t r i in ra nh ng palindrome.

ừ ồ

Bài t p 10

M t t đ

c g i là “abecedarian” n u các ch cái trong t đó xu t hi n theo th t b ng

ộ ừ ượ ọ

ế

ứ ự ả

ch cái. Ch ng h n, sau đây là t t c nh ng t abecedarian g m 6 ch cái trong ti ng Anh.

ấ ả

ế

abdest, acknow, acorsy, adempt, adipsy, agnosy, befist, behint, beknow, bijoux, biopsy,
cestuy, chintz, deflux, dehors, dehort, deinos, diluvy, dimpsy

1. Hãy miêu t m t quy trình ki m tra xem m t t (String) cho tr

c là abecedarian hay không, n u coi

ả ộ

ộ ừ

ướ

ế

r ng t đó ch g m các ch cái th

ng. Quy trình này có th mang tính l p hay đ quy.

ỉ ồ

ườ

2.

T o d ng quy trình trên thành m t ph

ng th c mang tên

ươ

isAbecedarian.

Bài t p 11

M t dupledrome là m t t ch ch a các ch cái ghép đôi, ch ng h n nh “llaammaa” hay

ộ ừ ỉ ứ

ư

“ssaabb”. Tôi đ ra gi thi t ràng trong ti ng Anh thông d ng không h có dupledrome nào. Đ ki m

ế

ế

ể ể

ch ng gi thi t đó, tôi mu n có ch

ng trình đ c l n l

t các t v ng t m t cu n t đi n r i ki m tra

ế

ươ

ọ ầ ượ

ừ ự

ừ ộ

ố ừ ể ồ

xem t đó có ph i là dupledrome hay không. Hãy vi t m t ph

ng th c mang tên

ế

ươ

isDupledrome nh n

vào m t String r i tr l i m t boolean đ cho bi t t đó có ph i là dupledrome không.

ồ ả ạ

ế ừ

Bài t p 12

1. Vòng gi i mã Captain Crunch ho t đ ng b ng cách l y m i ch cái trong m t chu i r i c ng 13 vào nó.

ạ ộ

ỗ ồ ộ

Ch ng h n, ’a’ tr thành ’n’ và ’b’ tr thành ’o’. Đ n cu i, các ch cái “quay vòng l i”, b i v y ’z’ tr

ế

ở ậ

thành ’m’. Hãy vi t m t ph

ng th c nh n vào m t String r i tr l i m t String m i có ch a chu i sau

ế

ươ

ồ ả ạ

mã hoá. B n c n coi ràng String ban đ u ch ch a các ch in, ch th

ng, d u cách, mà không có d u

ạ ầ

ỉ ứ

ữ ườ

ch m ph y gì khác. Các ch th

ng thì đ

c mã hoá thành ch th

ng, ch in thành ch in. B n không

ữ ườ

ượ

ữ ườ

đ

c mã hoá

ượ

các d u cách.

2. Hãy khái quát hoá ph

ng th c Captain Crunch sao cho thay vì c ng 13 vào t ng ch cái, nó có th c ng

ươ

ể ộ

thêm b t kì s nào. Bây gi b n có th mã hoá b n cách c ng 13 r i gi i mã b ng cách c ng -13. Hãy th

ờ ạ

làm đi u này.

Bài t p 13

N u b n đã gi i các bài t p GridWorld trong Ch

ng

ế

ươ 5, có th b n s thích bài t p này.

ể ạ ẽ

M c đích là dùng toán l

ng giác đ khi n các con b (Bug) đu i b t l n nhau. Hãy sao chép

ượ

ế

ổ ắ ẫ

file BugRunner.java thành ChaseRunner.java r i nh p nó vào môi tr

ng phát tri n c a b n. Tr

c khi

ườ

ể ủ

ướ