54 / 103

Exercise: Slices

Mashq: slice'lar

Slice'lar bilan ishlashni mashq qilamiz.

Topshiriqlar

Yechimni kodning pastki qismidagi Topshiriqlar bo'limiga yozing, so'ng Submit tugmasini bosing. Mavzu mustahkam o'zlashishi uchun ikkala topshiriqni ham bajaring.

1-topshiriq

Pic funksiyasini amalga oshiring. U uzunligi dy bo'lgan slice qaytarishi kerak; uning har bir elementi dx ta 8 bitli ishorasiz butun sondan iborat slice bo'lsin. Dastur ishga tushganda, sonlar rasm sifatida (kulrang, ya'ni yorug'lik darajalari sifatida) tasvirlanadi.

Rasmni o'zingiz tanlaysiz. Qiziqarli funksiyalar: (x+y)/2, x*y va x^y.

([][]uint8 ichidagi har bir []uint8 ni ajratish uchun sikldan foydalanish kerak bo'ladi.)

(Tiplar orasida o'zgartirish uchun uint8(intValue) dan foydalaning.)

Izoh: asl sayohatda natija grafik rasm sifatida ko'rsatiladi; bu yerda main uni belgilar bilan (ASCII-grafika sifatida) chiqaradi: qiymat qanchalik katta bo'lsa, belgi shunchalik "to'q" bo'ladi.

Testlar Pic(dx, dy) natijasining o'lchamlarini tekshiradi: dy ta qator, har bir qatorda dx ta element (masalan, Pic(5, 3) uchun 3 qator va 5 ustun).

2-topshiriq

jamiQiymat(pic [][]uint8) int funksiyasini yozing: rasmdagi barcha piksel qiymatlarining yig'indisini int sifatida qaytarsin. Masalan, jamiQiymat([][]uint8{{1, 2}, {200, 100}}) — 303. (Qo'shishdan oldin int(v) ga o'zgartiring, aks holda uint8 to'lib ketadi.)