1. Bản chất Toán học
• Chuỗi cơ bản: toquocvietnam có độ dài 13 ký tự.
• Vị trí ký tự thứ k trong dãy vô hạn được tính bằng k mod 13 (với 0 → 13).
• Trong một chu kỳ 13 ký tự, số lần xuất hiện của các chữ cái:
‑ t: 2, o: 2, q: 1, u: 1, c: 1, v: 1, i: 1, e: 1, n: 1, a: 1, m: 1.
• Ký tự thứ 1996:
1996 ÷ 13 = 153 dư 7 → ký tự vị trí 7 là ‘v’.
• Khi có 50 chữ ‘t’:
Mỗi chu kỳ có 2 chữ ‘t’ → cần 25 chu kỳ → 25 × 13 = 325 ký tự.
Trong 25 chu kỳ:
‑ ‘o’ = 2 × 25 = 50.
‑ ‘i’ = 1 × 25 = 25.
• Kiểm tra lời đếm của An:
Số ‘o’ trong bất kỳ đoạn nào luôn là bội số của 2 (vì mỗi chu kỳ có 2 ‘o’).
Vì 2007 là số lẻ, An không thể đếm đúng; đáp án đúng phải là số chẵn (ví dụ 2006 hoặc 2008 tùy độ dài).
• Màu sắc ký tự thứ 2007:
Màu lặp 4: xanh, đỏ, tím, vàng.
2007 ÷ 4 = 501 dư 3 → vị trí 3 trong chu kỳ → tím.
2. Tư duy Thuật toán Scratch
- Bước 1: Đặt một biến
chuoi chứa giá trị “toquocvietnam”.
- Bước 2: Dùng vòng lặp
repeat (n) để nối chuoi với chính nó n lần (n = số chu kỳ cần).
- Bước 3: Để lấy ký tự thứ k, dùng khối
letter (k) of (chuoi).
- Bước 4: Đếm số lần xuất hiện của một ký tự bằng cách duyệt toàn bộ chuỗi và tăng biến đếm khi khối
if (letter i of chuoi = "o") đúng.
- Bước 5: Đánh màu: tạo danh sách
mau[ "xanh","đỏ","tím","vàng"], rồi dùng item ((k‑1) mod 4 + 1) of mau để lấy màu cho ký tự thứ k.
3. Nhóm khối Scratch cần dùng
• Events 🟡: “when green flag clicked” để khởi động chương trình.
• Control 🟠: “repeat …”, “repeat until …”, “if … then …” để lặp và kiểm tra vị trí.
• Sensing 🩵: “letter ( ) of ( )” để lấy ký tự tại vị trí bất kỳ.
• Variables 🟧: biến chuoi, dem_t, dem_o, dem_i, vị_trí…
• Operators 🟢: các phép toán “+”, “‑”, “mod”, “=”, “<” để tính chỉ số và kiểm tra điều kiện.
• List 🟣 (nếu muốn lưu màu): “make a list”, “add … to …”, “item … of …”.
Những khối trên cho phép xây dựng thuật toán vừa tính vị trí ký tự, vừa đếm số lần xuất hiện, vừa xác định màu sắc một cách trực quan trong Scratch.
Các nhóm khối Scratch gợi ý:
khi bấm vào lá cờ xanh
hỏi [Nhập số liệu đề bài] và chờ
đặt [Ket_Qua v] thành (0)
lặp lại (trả lời) lần
((Ket_Qua) + (câu trả lời))
💡 Mẹo từ AI: Đảm bảo khởi tạo giá trị biến số bằng 0 trước khi bước vào vòng lặp!