defmodule PaintByNumber do def palette_bit_size(color_count, pow \\ 1) do if color_count <= 2 ** pow do pow else palette_bit_size(color_count, pow + 1) end end def empty_picture() do <<>> end def test_picture() do <<0::2, 1::2, 2::2, 3::2>> end def prepend_pixel(picture, color_count, pixel_color_index) do size = palette_bit_size(color_count) pixel = <> <> end def get_first_pixel(<<>>, _color_count), do: nil def get_first_pixel(picture, color_count) do size = palette_bit_size(color_count) <> = picture value end def drop_first_pixel(<<>>, _color_count), do: <<>> def drop_first_pixel(picture, color_count) do size = palette_bit_size(color_count) <<_value::size(size), rest::bitstring>> = picture rest end def concat_pictures(picture1, picture2) do <> end end