Nguồn: Big-O
VNG đang phát triển một tính năng mới mang tên Custom Pet cho tựa game Play Together, cho phép người chơi tạo thú cưng ảo trong game dựa trên ảnh chụp chính thú cưng ngoài đời thực của mình. Tính năng này được kỳ vọng sẽ mang lại trải nghiệm chơi game chân thực và đáng yêu hơn.
Để nâng cao độ chính xác trong việc nhận diện con vật cho tính năng Custom Pet, đội ngũ phát triển game Play Together cần một tập dữ liệu huấn luyện hình ảnh thú cưng rất lớn và đa dạng. Nhằm mở rộng tập dữ liệu, nhóm quyết định áp dụng Image Augmentation (tăng cường dữ liệu ảnh) — một kỹ thuật trong học máy giúp cải thiện mô hình bằng cách sinh thêm dữ liệu huấn luyện từ dữ liệu gốc thông qua các phép biến đổi ảnh như lật, xoay, cắt,...
Biết rằng một bức ảnh có thể được biểu diễn dưới dạng một mảng hai chiều chứa cường độ sáng của các điểm ảnh (pixel).
Cho một bức ảnh trong tập dữ liệu là một mảng hai chiều vuông gồm N dòng và N cột. Là một lập trình viên thuộc đội ngũ phát triển tính năng Custom Pet, hãy viết chương trình thực hiện phép lật dọc ảnh (vertical flip) và xoay ảnh 180 độ (180-degree rotation) để giúp nhóm gia tăng độ phong phú cho tập dữ liệu.
Bức ảnh ban đầu:
Bức ảnh ban đầu sau khi lật dọc:
Bức ảnh ban đầu sau khi xoay 180 độ:
Yêu cầu: Thực hiện các thao tác trên tại chỗ (in-place), không tạo thêm bất kỳ mảng phụ nào ngoài mảng lưu trữ dữ liệu đầu vào.
Đầu vào:
N dòng tiếp theo, mỗi dòng chứa N số nguyên có giá trị trong đoạn [0,255] biểu diễn cường độ của các pixel.Đầu ra:
N dòng, mỗi dòng chứa N số nguyên biểu diễn cường độ pixel sau khi thực hiện lật dọc ảnh.N dòng, mỗi dòng chứa N số nguyên biểu diễn cường độ pixel sau khi thực hiện xoay ảnh 180 độ.Ví dụ 1:
Đầu vào:
5
1 1 1 0 0
1 0 0 0 0
1 1 1 0 0
1 0 0 0 0
1 0 0 0 0
Đầu ra:
1 0 0 0 0
1 0 0 0 0
1 1 1 0 0
1 0 0 0 0
1 1 1 0 0
0 0 0 0 1
0 0 0 0 1
0 0 1 1 1
0 0 0 0 1
0 0 1 1 1