- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
Monochrome Bitmaps
- Краен срок
- 15.12.2012 12:00
Срокът за предаване на решения е отминал
Monochrome Bitmaps
Нека упражним малко елементарна битова аритметика.
Ще дефинираме монохромна битова карта като правоъгълна двоична матрица. Ще считаме, че където в матрицата стои цифрата едно, имаме запълнено квадратче (например черно), докато на мястото на нулите ще считаме, че стои празно квадратче (например бяло). Като допълнително ограничение ще имаме изискването броя колони на въпросната матрица да е число, кратно на осем.
Ще дефинираме текстуално представяне на въпросните битови карти, като заместим единиците със символа диез (#
), а нулите с точка (.
). Така например, следната монохромна битова карта:
10010000
00101000
Ще има следното представяне в текстов вид:
#..#....
..#.#...
За числово представяне на монохромна битова карта ще считаме списък от числа между 0 и 255 (байтове), опционално асоцииран с още едно число, указващо броя байтове в един ред от битовата карта. Например, списъкът [1, 10, 100]
, асоцииран с числото 3
, представлява валидна битова карта с три байта на ред. Тъй като всеки байт съдържа осем бита, това означава, че битовата карта ще има 3 * 8 = 24 бита (квадратчета) на ред и ще бъде фактически едноредова. Нейното текстуално представяне можем да получим като обърнем всеки от байтовете в списъка в неговото битово представяне и заменим единиците и нулите от това побитово представяне според правилата по-горе. За конкретния пример, то ще изглежда така:
.......#....#.#..##..#..
От вас се иска да напишете клас Bitmap
, чиито конструктор приема един задължителен аргумент — списъка с байтове и един опционален аргумент — броя байтове на ред. Ако опционалният аргумент не бъде подаден, ще се подразбира, че матрицата е едноредова, тоест, че на един ред имаме толкова байта, колкото са подадени в списъка.
Класът Bitmap
трябва да има един метод to_s
, който да връща текстуалното представяне на въпросната матрица. "Квадратчетата" са залепени едно за друго, както в примерите, а редовете са съединени със символ за нов ред ("\n"
). След последния ред няма символ за нов ред.
За примера по-горе ще имаме:
bitmap = Bitmap.new [1, 10, 100], 3
bitmap.to_s # => ".......#....#.#..##..#.."
Считайте, че в списъка с числа ще са ви подадени винаги валидни байтове (между 0 и 255) и че броят елементи в него ще е винаги кратен на опционалния аргумент, когато такъв е подаден. Тоест, няма да ви подадем списък с три елемента и да искаме да рендерирате битова карта с по два байта на ред.
Решения
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)
- Непроверено
- 0 успешни тест(а)
- 0 неуспешни тест(а)