You are on page 1of 5

Bài tập Python

BÀI TẬP TUẦN 5


Bài 1. Cho hai chuỗi, hãy viết hàm hàm commonCharacterCount () để trả về số ký tự
chung giữa chúng. Ví dụ:

s1 = "aabcc"

s2 = "adcaa"

→ commonCharacterCount(s1, s2) = 3

Bài 2. Số vé thường bao gồm một số lượng chẵn các chữ số. Cho một số vé, viết
hàm isLucky() để xác định xem số vé đó có may mắn hay không. Một số
vé được coi là may mắn nếu tổng của nửa đầu tiên của số bằng tổng của
nửa còn lại số đó. Ví dụ:

• n = 1230 → isLucky(n) = true

• n = 239017 → isLucky(n) = false

Bài 3. Một số người đang đứng thành hàng trong công viên. Giữa chúng có những
cây không thể di chuyển được. Hãy viết hàm sortByHeight() để sắp xếp
lại những người theo chiều cao của họ theo thứ tự tăng dần mà không cần
di chuyển cây.

Ví dụ với a = [-1, 150, 190, 170, -1, -1, 160, 180] , →


sortByHeight(a) = [-1, 150, 160, 170, -1, -1, 180, 190] .

Nếu a [i] = -1 , thì vị trí thứ i là một cây, ngược lại thì a [i] là chiều cao
của người đứng ở vị trí thứ i.

Bài 4. Bạn đang đứng ở một cái giếng thần kỳ. Nó có hai số nguyên dương được
viết trên đó: a và b . Mỗi lần bạn ném một viên bi ma thuật vào giếng, nó
mang lại cho bạn a * b đôla và sau đó cả a và b đều tăng thêm 1. Bạn
có n viên bi ma thuật. Hãy viết hàm magicalWell(a, b, n) để trả lại số tiền
bạn sẽ kiếm được?

Ví dụ: a = 1 , b = 2 và n = 2 thì magicalWell(a, b, n) = 8 (vì =1*2+2*3)

huongct@neu.edu.vn
Bài tập Python

Test case Input Output Test case Input Output


1 a: 1 8 6 a: 1936 17800540
b: 2 b: 1835
n: 2 n: 5
2 a: 1 1 7 a: 957 110113
b: 1 b: 57
n: 1 n: 2
3 a: 6 128 8 a: 687 0
b: 5 b: 1337
n: 3 n: 0
4 a: 1601 0 9 a: 491 3060400
b: 337 b: 1552
n: 0 n: 4
5 a: 1891 0 10 a: 1275 924738
b: 352 b: 362
n: 0 n: 2

Bài 5. Một cậu bé đang học số học. Bé vừa học cách cộng hai số nguyên, viết
dưới một số khác, từng cột. Nhưng anh ấy luôn quên mất phần quan trọng
đó là số nhớ.

Cho hai số nguyên, hãy viết hàm additionWithoutCarrying(param1, param2)

tìm kết quả mà cậu bé sẽ nhận được.

Ví dụ:

param1 = 456

param2 = 1734

→ additionWithoutCarrying(param1, param2) = 1180

Test Input Output


case
1 param1: 456 1180
param2: 1734
2 param1: 99999 99999
param2: 0
3 param1: 999 888
param2: 999
4 param1: 0 0
param2: 0
5 param1: 54321 8642
param2: 54321
6 param1: 54321 0
param2: 56789

huongct@neu.edu.vn
Bài tập Python

Bài 6. Cho một chuỗi, hãy viết hàm lineEncoding(s) trả về mã hóa của nó được
xác định như sau:

• Đầu tiên, chuỗi được chia thành số chuỗi con rời rạc ít nhất có thể bao
gồm các ký tự giống nhau
o ví dụ: "aabbbc" được chia thành các chuỗi con ["aa",
"bbb", "c"]
• Tiếp theo, mỗi chuỗi con có độ dài > 1 được thay thế bằng cách ghép
giữa độ dài của nó và ký tự được lặp lại
o Ví dụ: chuỗi con "bbb" được thay thế bằng "3b"
• Cuối cùng, tất cả các chuỗi mới được nối với nhau theo cùng một thứ
tự và một chuỗi mới được trả về.

Ví dụ: Với s = "aabbbc" , thì lineEncoding(s) = "2a3bc" .

Test case Input Output


1 s: "aabbbc" "2a3bc"
2 s: "abbcabb" "a2bca2b"
3 s: "abcd" "abcd"
4 s: "zzzz" "4z"
5 s: "7wa7w"
"wwwwwwwawwwwwww"
6 s: "ccccccccccccccc" "15c"
7 s: "qwertyuioplkjhg" "qwertyuioplkjhg"
8 s: "ssiiggkooo" "2s2i2gk3o"
9 s: "adfaaa" "adf3a"
10 s: "bbjaadlkjdl" "2bj2adlkjdl"
Bài 7. Bạn có k hộp táo đầy táo. Mỗi hộp vuông kích thước m chứa m * m quả
táo. Bạn vừa nhận thấy hai đặc điểm thú vị về các hộp:

o Hộp nhỏ nhất là size 1 , hộp tiếp theo là size 2 , ..., cuối cùng là size k .
o Các hộp có kích thước lẻ đều chỉ chứa táo vàng. Những hộp có kích
thước chẵn đều chỉ chứa táo đỏ.
Hãy viết hàm appleBoxe(k) tính chênh lệch giữa số táo đỏ và số táo vàng.
Ví dụ: k = 5 , thì appleBoxes(k) = -15 .
Vì có: 1 + 3 * 3 + 5 * 5 = 35 táo vàng và 2 * 2 + 4 * 4 = 20 táo đỏ.
Test case Input Output Test case Input Output
1 k: 5 -15 6 k: 12 78
2 k: 15 -120 7 k: 9 -45
3 k: 36 666 8 k: 40 820
4 k: 1 -1 9 k: 37 -703
5 k: 14 105

huongct@neu.edu.vn
Bài tập Python

Bài 8. Xác định độ tròn của một số nguyên là số lượng các số 0 ở cuối của số
đó. Cho một số nguyên n, hãy viết hàm increNumberRoundness(n) kiểm tra
xem có thể tăng độ tròn của n bằng cách hoán đổi một số cặp chữ số của nó
không, hàm trả về true nếu có thể tăng độ tròn của n, ngược lại là false

Ví dụ:

• Với n = 902200100 thì increNumberRoundness(n) = true .( Một trong những cách


có thể làm để tăng độ tròn của n là hoán đổi chữ số 1 với chữ số 0 đứng trước nó: độ
tròn của 902201000 là 3 và độ tròn của n là 2).
• Với n = 11000 thì increNumberRoundness(n) = false .( Độ tròn của n là 3, và
không có cách nào để tăng nó)

Test case Input Output Test case Input Output


1 n: 902200100 True 6 n: 234230 False
2 n: 11000 False 7 n: 888 False
3 n: 99080 True 8 n: 100 False
4 n: 1022220 True 9 n: 1000000000 False
5 n: 106611 True 10 n: 103456789 True

Bài 9. Khi một ngọn nến cháy xong nó sẽ để lại một phần còn lại. makeNew phần
còn lại có thể được kết hợp để tạo ra một ngọn nến mới, khi cháy hết, sẽ để
lại một ngọn nến thừa khác.

Bạn có nến số lượng nến candlesNumber thuộc quyền sở hữu của bạn. Hãy
viết hàm candles(candlesNumber, makeNew trả về tổng số nến bạn có thể
đốt, giả sử rằng bạn tạo ra những ngọn nến mới ngay sau khi bạn có đủ số
lượng ngọn nến thừa?

Ví dụ:

Với candlesNumber = 5 và makeNew = 2 , thì candles(candlesNumber,


makeNew) = 9 .
Đây là những gì bạn có thể làm để đốt 9 ngọn nến:
• Đốt 5 cây nến, lấy 5 cây nến thừa;
• Tạo thêm 2 cây nến, sử dụng 4 cây nến thừa (1 cây nến thừa còn
sót lại);
• Đốt 2 ngọn nến, cuối cùng còn lại 3 ngọn nến;
• Tạo một cây nến khác bằng cách sử dụng 2 cây nến thừa ( 1 cây
nến còn sót lại);

huongct@neu.edu.vn
Bài tập Python

• Đốt ngọn nến đã tạo ra, ngọn nến còn sót lại khác (tổng cộng
( 2 ngọn nến còn lại);
• Tạo một ngọn nến từ những các ngọn nên thừa còn lại
• Đốt ngọn nến cuối cùng.
Do đó bạn có 5 + 2 + 1 + 1 = 9 ngọn nến, đây chính là câu trả lời.
Test Input Output Test case Input Output
case
1 candlesNumber: 5 9 6 candlesNumber: 20
makeNew: 2 14
makeNew: 3
2 candlesNumber: 1 1 7 candlesNumber: 23
makeNew: 2 12
makeNew: 2
3 candlesNumber: 3 4 8 candlesNumber: 7
makeNew: 3 12
makeNew: 2
4 candlesNumber: 11 16 9 candlesNumber: 16
makeNew: 3 13
makeNew: 5
5 candlesNumber: 15 18 10 candlesNumber: 2 2
makeNew: 5 makeNew: 3

Bài 10. Cho một ma trận, hãy viết một hàm minesweeper(matrix)nđể setup cho trò
chơi Minesweeper.

Input: Một ma trận hình chữ nhật không rỗng bao gồm các giá trị logic: true
nếu ô tương ứng chứa một quả mìn, ngược lại là false.

Output: Ma trận hình chữ nhật có cùng kích thước với ma trận ban đầu, mỗi
ô chứa một số nguyên bằng số mìn trong các ô lân cận.

Ví dụ:

matrix = [[True, False, False],


[False, True, False],
[False, False, False]]

thì

minesweeper(matrix) = [[1, 2, 1],


[2, 1, 1],
[1, 1, 1]]

huongct@neu.edu.vn

You might also like