Tìm mẫu
Thuộc phần Kiến thức nền tảng trong hành trình Ruby của Coddy. Bài học 87 trên 88.
Thử thách
DễĐọc một chuỗi từ đầu vào và tìm mẫu lặp nhỏ nhất tạo thành toàn bộ chuỗi.
Một mẫu hợp lệ phải:
- Có độ dài chia hết cho tổng độ dài của chuỗi
- Khi lặp lại số lần thích hợp, tạo lại chính xác chuỗi ban đầu
Nếu chuỗi được tạo thành từ một mẫu lặp, hãy in mẫu nhỏ nhất đó. Nếu không có mẫu lặp, hãy in chuỗi ban đầu.
Để kiểm tra một mẫu có phù hợp hay không, bạn có thể dùng phép nhân chuỗi: pattern * count tạo một chuỗi mới bằng cách lặp lại mẫu.
Ví dụ: nếu đầu vào là abcabcabc, đầu ra sẽ là:
abcNếu đầu vào là xyxyxyxy, đầu ra sẽ là:
xyNếu đầu vào là aaaa, đầu ra sẽ là:
aNếu đầu vào là hello, đầu ra sẽ là:
helloNếu đầu vào là abcdef, đầu ra sẽ là:
abcdefTự làm thử
# Đọc chuỗi đầu vào
s = gets.chomp
# TODO: Viết code của bạn bên dưới
# Tìm mẫu lặp ngắn nhất tạo thành toàn bộ chuỗi
# Gợi ý: Kiểm tra các độ dài mẫu chia hết độ dài chuỗi
# Dùng phép nhân chuỗi (pattern * count) để kiểm tra mẫu có phù hợp không
result = s # Thay phần này bằng lời giải của bạn
# In ra kết quả
puts resultTất cả bài học trong Kiến thức nền tảng
4Toán tử phần 2
Toán tử logic phần 1Toán tử logic phần 2Ôn tập: logic đơn giảnToán tử logic phần 3Toán tử logic phần 42Biến và kiểu dữ liệu
Số và biếnKiểu dữ liệu chuỗiKiểu dữ liệu BooleanKiểu dữ liệu SymbolKiểm tra kiểu dữ liệuQuy ước đặt tênÔn tập: tạo biến8Vòng lặp
Vòng lặp for với khoảng giá trịVòng lặp whileThoátTiếp tụcÔn tập: giai thừaVòng lặp timesVòng lặp untilVòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcToán tử moduloPhép tính số học rút gọnÔn tập: Toán cơ bảnToán tử so sánh6Nhập xuất cơ bản
In ra bằng putsIn ra bằng print và pIn ra bằng biếnNhập dữ liệu bằng getsPhương thức chompChuyển đổi kiểu dữ liệuÔn tập: Tính tuổiÔn tập: Đúng hay sai9Phương thức
Định nghĩa phương thứcTham số phương thứcGiá trị trả vềÔn tập: phương thức SigmaÔn tập: phương thức xác thựcGiá trị tham số mặc định15Theo dõi chi tiêu hằng ngày
Tổng quan dự ánThoát chương trìnhTự luyện tập: Trình biên dịch Ruby online