[Community Puzzle] BMP Compression - Puzzle discussion

Coding Games and Programming Challenges to Code Better

Send your feedback or ask for help here!

Created by @java_coffee_cup,validated by @DeanTheMachine,@Eulero314 and @Sarangilo_Arcian.
If you have any issues, feel free to ping them.

I have 3 suggestions to obtain more test cases. Usually it is easier to test it offline, outside CG’s IDE, because CG’s online environment has strict limit on data size.

  1. Reuse existing test cases - copy your output to throw into your program as input
  2. Create some small scale bmp test cases (manually or by a simple program you can design)
  3. try out some other test cases I could offer outside the IDE (could be bigger than CG’s size limit)

C 146 76
66
+++111+11+111+111+10+1+11+100+10000+1+11+11+1110+1
000++11++100+011+0+01011++11+111+10+1+1000++11+100
++1110+110000+000+01+0+0111++++100000+00+011+01111
++++0111111+111+10+1000+++00+011++0001+00111111+11
+110+011++11+10000+0011++0+0101111++1+1+11101++100
+1001+111+11+100++++11+100+110000+0001+0+01111+++0
001+0011111+111+10+1+1000++1110++1110+1100000+00+0
11++++1000000+01+0+000111+++0111111+1+1++101001111
1+1+1+10+1001++1001+01++++00111111+11+100++10000++
1+111000++1100000+000+01+0111+0+00+011++011111+11+
1110+1000++++11+100++1110+1100000+00+011++000+01+0
+00111111+++01111111+11+1000++1+110000++1100000+00
01+0111++++0111111+111+10+1+10++10000+++1110+11010
+011+0+01+0111++0+0001++0111++0011+0111111+1110+11
+++100+010+011+++00+011++0011+0011111+111+10+1+11+
100++100000++11++10000+000+01+0+0111++00+011++0111
111++++1100+100000+0001+0+01111+++0001+011111111+1
+1110+10000++++100+010+011+0+01++01111+++11++11+10
01++100+100++011+01111++++10100+100++01011+011++10
0+100++011+011++1+10101+10++1100+110100+1+101+100+
++100+100++011+011++100+100++011+011++1+101+100+1+
101+100++111+11+100+11+11++01111+1++100+1001++100+
100++01+0111++011+0111+11+11+11++01100111+++++1010
0+100++01011+011++100+100++011+011++1+10101+100+1+
101+100+++10100+100++01011+011++100+100++011+011++
1+10101+100+1+101+100++1++10100+1001++100+100+++01
011+0111++011+0111+1++10100+1001++100+100+++01011+
0111++011+0111++++10100+100++01011+011++100+100++0
11+011++1+10101+100+1+101+100+++100+100++011+011++
10011++011+011++1+101+100+1+101+100++1++10100+1001
++100+100+++01011+0111++011+0111+1++100+1001++100+
100+++011+0111++011+0111+++0101++1110+1101+1010+0+
010+01+0101++1010+0+01010+01+1010+0+010+011++0101+
+1010+0+01010+01+1010+0+010+01+0101++1010+0+010+01
+1010+0+010+011+++1+111+10+1001+1++1011+00111111++
+11+100++1100+1100000+0011++0001+0+00111111+++0111
111+111+10+11++10000+++1110+110000++1000000+00+011
++01111+1+1++11100+1001111+++00++0111++0011+011111
11+1+1100+1+1011+001+10++1+10+100+01001+001+10++11
++011110+110+01++++++01111111+1110+1+10000+++1110+
1100000+00+0111++0+000111++00111111+1110+11+++1001
00+11+011+++0+001111++001111111++111+10+1100+1+101
1+001+10+++1000010+0+1100001+1011+++11+0111001+00+
+1000+0+0100+++11+011+1+1011110+1100+++0011011+00+
10011+++10011011++0100+1101+00100+++++01100+110100
+110+01+++10001+100+1++0011+001011++011001+1+1+101
1+++0111001++00+10001++10011+1+1+++1011+001111++00
10011111111++++0+110000++1101100+1+1011+0010++11++
0111+1+001111+0+0100+11011+++1011+001111+001111+++
+00+100011+0+0100001+1+1011+++1100100+11+011+00100
+++0100+110000+1100+1011+0010+1++1011+001111+0100+
11011+1++++10011+001111+00111111+++++11+01110+++01
110+01++1+101011011+++1011+001111++00+10001+10+110
11++0+110000++1101100+1011+00+100++1++10100+1001++
100+100+++01011+0111++011+0111+1+1+001111+0+0100+1
101+++00+101111111+++0010+++01100+1100001+++100011
++110110+0100++110110++01100++1011+001011++++0011+
001011+0010+11++01111+++0100+110000+1100++100110+0
+110+01+++1000110+11++01100+11+011+++0101++1010+0+
01010+01+1010+0+010+01+01+00101++1010+0+01010+01+1
010+0+010+011++11+0100+1101++101+10+0+01010+0111++
001001+1011++++0111011+++01111111++++1+001111++001
0011+++01110+011++0+010000++1100100+1+1011+0010+++
00+10001+10+0+1100001+1011+++11+01110+011++011111+
++11+011+1+1011110+1101+++0011011+0+00011111+++101
11111111+++++0110111111111111

cube

C 104 68
47
++++0+00+00+0111+0+0101011+++00+011+001111++0011+0
0111111++01011+01011+1++100000+00+0111+0++011+0110
++011+011++++0011+001111++0011+00111111+++0011+001
111++0011+00111111++00+0011+0011+00+0011+001111++0
0+0011+0011+00+0011+001111+++01011+01011+1+0++0101
100+0010011++01011+01011+1+1+11+100+1000+00+0111+0
++011+011+0010++01100++++1100+110000++1100+1100001
1+++1100+110000++1100+11000011++0011+++011001++100
11+01001+10+11+100+0001++11+11+01+10++10000++10000
+01111+++01+10+01+100++01+1011+00+100+11+11011++++
+0011+001111++0011+00111111+++0011+001111++0011+00
111111++00+0011+0011+00+0011+001111++00+0011+0011+
00+0011+001111++++0011+001111++0011+00101111++00+1
+1011+00+10001+00+10100++0+1101+0010+01011++1010+0
101+1010+01011+1++10100+101001++10100+10100++++110
0+110000++1100+11000011+++1100+110000++1100+110000
11++0+11011+0010+11++01100+1110+1+10101+1000+0+101
0+00+011+1011+++111+10++10000++1000+01++01111+0011
++0+010+011+0+01+100+11+0111++++1000+01010+0111111
+1++10100+101001++10100+10100+++11011+0010+11011++
1010+0101+1000+01111+1++10100+101001++10100+10100+
+++01011+01011+1+1++1011+01111+11+1001++1000+00+01
10++011+011++01011+01011+1++1010++011001++100111+1
1+10100++++0011+001100+++0001+01111++0110011+++100
11+010010+1+++0011011+0011+10000++11+01+10++10000+
+01+10+01+100++0111111++11+0010+0001++11+100+0001+
00111++1100+1100+0111+1011++11+0111+00+100+0101+++
+01111++100+10011++11011+0011+00+100+111++100+100+
+1110+1100+0001++01111+++01011+01011+1+0++01011+01
1+1010++011001+1++1001111++0+11010+0100+11+11+0111
0+0+110000+11++11+011100+1100+++11+1101+1110+10+11
00+0101++0011+001111++0011111++++0101+1010+01+1001
++100+100+11+1100+11+0111++0011+001111+11+1100+110
0+11+1100+1100+++++0011++00111110+11011+1+00101+10
10+++01100+11100+1010+++1+101111++0010011+111+10++
10000++0011+001100+++1000+01++01111+0+010+0111++1+
1000+0001+0111+++011+011+101111++11001+10110+11++0
11+0111+++0+01+100+11+011+1+1011+0011+110+00+011+1
+11+100++100+100+00+011++1100+11001++10011+++++001
11111+110111++0010+1101+1010+01011+1++10100+101001
++10100+10100+++10001+011111+11011+1++10100+101001
++10100+10100+++1+1010+1110+1000+0+1010++011+0111+
+0011+0111111+++0+01010+011++10+01+100+1100+111+11
+100++1+1011+001111++0011+001111+11+1100+1100+11+1
100+1100++++1010+0101+100011++01111111+1++10100+10
1001++10100+10100+11+1100+1+111000++111+11+100++10
00000++1+10000000

cal

Hi, I solved this puzzle and passed all the test cases and even tried some custom examples without any problem but my program failed on the 9th validator and I don’t know why. Do you have any idea what I did wrong?

It is very hard to tell what’s wrong.

Problems might be caused by

  • how to divide an area (with odd sides or single line size).
  • how to determine an area has only one color (both B and W).

Test case and validator 9 both has a black background with white image on it.
Perhaps your code failed to handle Black in all possible situations?

May be you can create some very simple and basic bitmaps of white on black to verify your program.

I don’t know, as validator 9 is very similar to its associated test. Could you try to compress the following input and then de-compress the output you get to see if you get the same image ?

B 28 13
13
############################
############.....###########
##########.........#########
########....##.#.....#######
######....##.....#.....#####
####....##.........#.....###
##....##.............#.....#
###.##.................#..##
#####...................####
#####.......#####.......####
#####.......#####.......####
#####.......#####.......####
#####.......#####.......####

Another possible problem is the handling of the last line CR.
Not sure whether it is the problem but dozens of coders passed all tests indicates it is not a generalized problem.
I revised and standardized the CR usage. Try refresh browser and try again.

Yep, that was the problem, now it just works without any problems.