Golf Your Language's Identicon
Octave 166 164 bytes, 0 errors
Octave has a great stength in handling/building matrices. For the 'diamonds' I made an x-y-coordinate system and used manhattan norm for deciding whether the entries will be 1 or 0. As the diamonds are not fully symmetrical, I had to fiddle around with the 'distance' and the centerpoint, so with the center point (13.1,13.1) it worked for both kinds of 'diamond' shapes.
After that I could just set one quarter of those to zero in order to get those C-shapes. The squares and the matrix concatenation were easy.
New Version -2 characters (works the same way as the old, but I managed to abuse the Octave syntax even somewhat more:
C=ones(25);M=(R=(R=meshgrid(abs(-12.1:12)))+R')>12|R<6.5;S=T=U=V=13.1>R&R>5.8;C(k=8:19,k)=S(f,s)=T(f,f)=U(s,f=1:12)=V(s=14:25,s)=0;[C,U,T,C;U,M,M,T;V,M,M,S;C,V,S,C]
Old version:
C=ones(25); %corner squares
C(k=8:19,k)=0; %set the inner squares to 0
X=meshgrid(abs(-12.1:12)); %build coordinate system
R=X+X'; %R already has the distances to the chosen centerpoint (13.1, 13.1)
M=R>12|R<6.5; %diamond (for the center)
S=T=U=V=13.1>R&R>5.8; %diamond (for the edges)
S(f,s)=T(f,f)=U(s,f=1:12)=V(s=14:25,s)=0; %set each one quarter to 0 for the C-shape
[C,U,T,C;U,M,M,T;V,M,M,S;C,V,S,C] %concatenate and display the big matrix
Output
1111111111111111111111111000000000000110000000000000000000000011000000000001111111111111111111111111
1111111111111111111111111000000000001111000000000000000000000011100000000001111111111111111111111111
1111111111111111111111111000000000011111100000000000000000000011110000000001111111111111111111111111
1111111111111111111111111000000000111111110000000000000000000011111000000001111111111111111111111111
1111111111111111111111111000000001111111111000000000000000000011111100000001111111111111111111111111
1111111111111111111111111000000011111111111100000000000000000011111110000001111111111111111111111111
1111111111111111111111111000000111111111111110000000000000000011111111000001111111111111111111111111
1111111000000000000111111000001111111011111111000000000000000001111111100001111111000000000000111111
1111111000000000000111111000011111110001111111100000000000000000111111110001111111000000000000111111
1111111000000000000111111000111111100000111111110000000000000000011111111001111111000000000000111111
1111111000000000000111111001111111000000011111111000000000000000001111111101111111000000000000111111
1111111000000000000111111011111110000000001111111100000000000000000111111111111111000000000000111111
1111111000000000000111111111111100000000000111111111111110000000000011111111111111000000000000111111
1111111000000000000111111000000000000000001111111111111111000000000111111111111111000000000000111111
1111111000000000000111111000000000000000011111111001111111100000001111111101111111000000000000111111
1111111000000000000111111000000000000000111111110000111111110000011111111001111111000000000000111111
1111111000000000000111111000000000000001111111100000011111111000111111110001111111000000000000111111
1111111000000000000111111000000000000011111111000000001111111101111111100001111111000000000000111111
1111111000000000000111111000000000000111111110000000000111111111111111000001111111000000000000111111
1111111111111111111111111000000000000111111100000000000011111111111110000001111111111111111111111111
1111111111111111111111111000000000000111111000000000000001111111111100000001111111111111111111111111
1111111111111111111111111000000000000111110000000000000000111111111000000001111111111111111111111111
1111111111111111111111111000000000000111100000000000000000011111110000000001111111111111111111111111
1111111111111111111111111000000000000111000000000000000000001111100000000001111111111111111111111111
1111111111111111111111111000000000000110000000000000000000000111000000000001111111111111111111111111
0000000000001100000000000111111111111111111111111111111111111111111111111110000000000001100000000000
0000000000011110000000000111111111111001111111111111111111111100111111111110000000000001110000000000
0000000000111111000000000111111111110000111111111111111111111000011111111110000000000001111000000000
0000000001111111100000000111111111100000011111111111111111110000001111111110000000000001111100000000
0000000011111111110000000111111111000000001111111111111111100000000111111110000000000001111110000000
0000000111111111111000000111111110000000000111111111111111000000000011111110000000000001111111000000
0000001111111111111100000111111100000100000011111111111110000010000001111110000000000001111111100000
0000011111110111111110000111111000001110000001111111111100000111000000111110000000000000111111110000
0000111111100011111111000111110000011111000000111111111000001111100000011110000000000000011111111000
0001111111000001111111100111100000111111100000011111110000011111110000001110000000000000001111111100
0011111110000000111111110111000001111111110000001111100000111111111000000110000000000000000111111110
0111111100000000011111111110000011111111111000000111000001111111111100000010000000000000000011111111
1111111000000000001111111100000111111111111100000010000011111111111110000001111111000000000001111111
0000000000000000011111111100000011111111111000000110000001111111111100000011111111100000000011111111
0000000000000000111111110110000001111111110000001111000000111111111000000110111111110000000111111110
0000000000000001111111100111000000111111100000011111100000011111110000001110011111111000001111111100
0000000000000011111111000111100000011111000000111111110000001111100000011110001111111100011111111000
0000000000000111111110000111110000001110000001111111111000000111000000111110000111111110111111110000
0000000000001111111100000111111000000100000011111111111100000010000001111110000011111111111111100000
0000000000001111111000000111111100000000000111111111111110000000000011111110000001111111111111000000
0000000000001111110000000111111110000000001111111111111111000000000111111110000000111111111110000000
0000000000001111100000000111111111000000011111111111111111100000001111111110000000011111111100000000
0000000000001111000000000111111111100000111111111111111111110000011111111110000000001111111000000000
0000000000001110000000000111111111110001111111111111111111111000111111111110000000000111110000000000
0000000000001100000000000111111111111011111111111111111111111101111111111110000000000011100000000000
0000000000001100000000000111111111111111111111111111111111111111111111111110000000000001000000000000
0000000000011110000000000111111111111001111111111111111111111100111111111110000000000011000000000000
0000000000111111000000000111111111110000111111111111111111111000011111111110000000000111000000000000
0000000001111111100000000111111111100000011111111111111111110000001111111110000000001111000000000000
0000000011111111110000000111111111000000001111111111111111100000000111111110000000011111000000000000
0000000111111111111000000111111110000000000111111111111111000000000011111110000000111111000000000000
0000001111111111111100000111111100000100000011111111111110000010000001111110000001111111000000000000
0000011111110111111110000111111000001110000001111111111100000111000000111110000011111110000000000000
0000111111100011111111000111110000011111000000111111111000001111100000011110000111111100000000000000
0001111111000001111111100111100000111111100000011111110000011111110000001110001111111000000000000000
0011111110000000111111110111000001111111110000001111100000111111111000000110011111110000000000000000
0111111100000000011111111110000011111111111000000111000001111111111100000010111111100000000000000000
1111111000000000001111111100000111111111111100000010000011111111111110000001111111000000000001111111
1111111100000000000000000100000011111111111000000110000001111111111100000011111111100000000011111111
0111111110000000000000000110000001111111110000001111000000111111111000000110111111110000000111111110
0011111111000000000000000111000000111111100000011111100000011111110000001110011111111000001111111100
0001111111100000000000000111100000011111000000111111110000001111100000011110001111111100011111111000
0000111111110000000000000111110000001110000001111111111000000111000000111110000111111110111111110000
0000011111111000000000000111111000000100000011111111111100000010000001111110000011111111111111100000
0000001111111000000000000111111100000000000111111111111110000000000011111110000001111111111111000000
0000000111111000000000000111111110000000001111111111111111000000000111111110000000111111111110000000
0000000011111000000000000111111111000000011111111111111111100000001111111110000000011111111100000000
0000000001111000000000000111111111100000111111111111111111110000011111111110000000001111111000000000
0000000000111000000000000111111111110001111111111111111111111000111111111110000000000111110000000000
0000000000011000000000000111111111111011111111111111111111111101111111111110000000000011100000000000
1111111111111111111111111000000000000110000000000000000000000010000000000001111111111111111111111111
1111111111111111111111111000000000001111000000000000000000000110000000000001111111111111111111111111
1111111111111111111111111000000000011111100000000000000000001110000000000001111111111111111111111111
1111111111111111111111111000000000111111110000000000000000011110000000000001111111111111111111111111
1111111111111111111111111000000001111111111000000000000000111110000000000001111111111111111111111111
1111111111111111111111111000000011111111111100000000000001111110000000000001111111111111111111111111
1111111111111111111111111000000111111111111110000000000011111110000000000001111111111111111111111111
1111111000000000000111111000001111111011111111000000000111111100000000000001111111000000000000111111
1111111000000000000111111000011111110001111111100000001111111000000000000001111111000000000000111111
1111111000000000000111111000111111100000111111110000011111110000000000000001111111000000000000111111
1111111000000000000111111001111111000000011111111000111111100000000000000001111111000000000000111111
1111111000000000000111111011111110000000001111111101111111000000000000000001111111000000000000111111
1111111000000000000111111111111100000000000111111111111110000000000011111111111111000000000000111111
1111111000000000000111111111111110000000000000000011111111000000000111111111111111000000000000111111
1111111000000000000111111011111111000000000000000001111111100000001111111101111111000000000000111111
1111111000000000000111111001111111100000000000000000111111110000011111111001111111000000000000111111
1111111000000000000111111000111111110000000000000000011111111000111111110001111111000000000000111111
1111111000000000000111111000011111111000000000000000001111111101111111100001111111000000000000111111
1111111000000000000111111000001111111100000000000000000111111111111111000001111111000000000000111111
1111111111111111111111111000000111111100000000000000000011111111111110000001111111111111111111111111
1111111111111111111111111000000011111100000000000000000001111111111100000001111111111111111111111111
1111111111111111111111111000000001111100000000000000000000111111111000000001111111111111111111111111
1111111111111111111111111000000000111100000000000000000000011111110000000001111111111111111111111111
1111111111111111111111111000000000011100000000000000000000001111100000000001111111111111111111111111
1111111111111111111111111000000000001100000000000000000000000111000000000001111111111111111111111111
CJam, 92 81 79 71 bytes, 120 errors
25:M{'0*MXe[}%2/z:~M,_ff{_)2$)d/2mLz1>@@+38<^}:A.+AM'1*f++_W%z.+N*N1$W%
There is probably still some room to golf this.
Test it here.
Explanation
I'm not using any compression, but instead I actually compute the individual tiles and piece the result together from those. The top-left tile is intentionally approximated. A few other errors result from the binarised image not being fully rotationally symmetric. Let's go through the code.
The first tile should theoretically look like this:
1111111111111111111111111
1111111111111111111111100
1111111111111111111110000
1111111111111111111000000
1111111111111111100000000
1111111111111110000000000
1111111111111000000000000
1111111111100000000000000
1111111110000000000000000
1111111000000000000000000
1111100000000000000000000
1110000000000000000000000
1111111111111111111111111
1111111111111111111111110
1111111111111111111111000
1111111111111111111100000
1111111111111111110000000
1111111111111111000000000
1111111111111100000000000
1111111111110000000000000
1111111111000000000000000
1111111100000000000000000
1111110000000000000000000
1111000000000000000000000
1100000000000000000000000
That's 12 lines, then 13 lines of the point between 1
s and 0
s decreasing by 2 at a time. Notice that the first block has an even number of 0
s and the second block an odd number. We can make the pattern even more regular if we sacrifice accuracy on the middle row and turn it into 1
followed by 24 0
s. Then we actually have one row for each number of zeroes from 0 to 24, alternating between the top and bottom parts. So we can just generate them in order (as a single triangle), and then pull out every other line:
25:M{'0*MXe[}%2/z:~
25:M e# Push 25 and store it in M for future use.
{ }% e# Map this block onto the range [0 ... 24].
'0* e# Create a string of i zeroes.
MXe[ e# Pad to width 25 with 1s from the left.
2/ e# Group the lines into pairs.
z e# Zip the pairs, thereby grouping even and odd lines.
:~ e# Flatten the two groups so we've got a plain 2D grid again.
Next up is that fancy triangle to the right of this tile:
1100000000000000000000000
1111000000000000000000000
0111110000000000000000000
0111111100000000000000000
0011111111000000000000000
0011111111110000000000000
0001111111111100000000000
0001111111111111000000000
0000111111111111110000000
0000111111111111111100000
0000011111111111111111000
0000011111111111111111110
0000001111111111111111111
0000001111111111111111111
0000000111111111111111110
0000000111111111111111100
0000000011111111111111000
0000000011111111111110000
0000000001111111111100000
0000000001111111111000000
0000000000111111110000000
0000000000111111100000000
0000000000011111000000000
0000000000011110000000000
0000000000001100000000000
If we consider a coordinate system with origin in the top right corner and x
going right and y
going down, then the region of 1
s satisfies 3 inequalities: x/y ≥ 1/2
, x/y ≥ 2
, x + y < 38
. We can just compute these separately and take the logical end. It doesn't save any characters but cleans up the code slightly if we combine the first two inequalities though:
1/2 ≤ x/y ≤ 2
=> -1 ≤ log2(x/y) ≤ 1
=> |log2(x/y)| ≤ 1
Ultimately, we'll save another byte by checking the opposite and using xor
instead of and
to combine the result with the other inequality:
M,_ff{_)2$)d/2mLz1>@@+38<^}
M,_ e# Create a range [0 .. 24] and duplicate it.
ff{ } e# This creates a 25x25 array, where each element is
e# determined by executing the block on the pair of its
e# x and y coordinates.
_) e# Copy x and increment.
2$) e# Copy y and increment.
d/ e# Convert to double and divide.
2mL e# Get base-2 logarithm.
z1> e# Take modulus and check if it's greater than 1.
@@ e# Get the other two copies of x and y.
+38< e# Add them and check that they are less than 38.
^ e# Take the XOR with the other condition.
We've got everything in place now - the remaining tiles are just copies and rotations of these, as well as the solid (boring) tile in the centre. So let's pull everything together:
:A.+AM'1*f++_W%z.+N*N1$W%
:A e# Store the fancy triangle in A.
.+ e# Join the two existing tiles horizontally.
A e# Push the triangle again.
M'1* e# Create a string of 25 ones.
f+ e# Add it to each line of the triangle.
+ e# Add these two tiles to the first two tiles, completing
e# the upper left quadrant.
_W%z e# Duplicate the quadrant, reverse the rows, transpose.
e# These two operations together perform a 90 degree
e# clockwise rotation.
.+ e# Join the two quadrants horizontally.
N* e# Join the lines together with newline characters.
N1$ e# Push a newline to separate the two halves and copy the
e# first half.
W% e# Reverse the entire string. Since this reverse the string
e# both vertically and horizontally, this rotates the
e# half by 180 degrees.
At the end of the program, CJam simply prints the stack contents back-to-back, creating the desired result.
Brainfuck 9418 2237 bytes, 88 errors
Edit: As mbomb007 pointed out the 'official' name seems to not be capitalized, this is not mentioned on wikipedia, but is on esolangs. This annoys me, but not nearly enough to redo this ;).
My first Brainfuck program!
Now actually uses math and logic and stuff! (for every pixel it decides 0 or 1 depending on a few conditionals). This was quite fun to do; that being said I don't think I'm going to code again with Brainfuck for a long long time.
>>>++[<+>+++++]<-->>++[<+>+++++]<--[->+++++[>+++++<-]<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[-<+>]<+<[->>>>>>>+<<<<<<<]>>>>>>>->+++++[>+++++<-]<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[-<<<<<<<<+>>>>>>>>]<<<<<<<<+>>>>>>+>>>>>>+<<<<<<[>>+++<<<[>>>-<+<<-]>>[<<+>>-]>[<<->>[-]]<<<[->>+<<]>+>[<->[-<<+>>]]>>>>>]<<<<<<[-<<<<<<+>>>>>>]<<<<<+<[-[->-<>>>>[->>>+>>>>>>>++>>>>>>>>>>>>>>>>>+>>>>>>>++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<]<[->>>>>>>>>>>>>>>>+>>>>>>>++>>>>>>>>>>>>>>>>>+>>>>>>>++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<]<<<<<[->>>>>>>>>>++>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>++>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<]<[->>>>>>>>>>>>>>>>>>>>>>>++>>>>>+>>>>>>>++>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<]>>>>>>>>>>>+>>>+>>>+>>>+>>>>>>+>>+>>>>+>>++>>>>+>>>++>>>+>>>++>>>+>>++>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[<<<[>+>+<<-]>>[<<+>>-]<<<[>>>+<<<-]>>>[>-]>[<<<<+>>[-]>>->]<+<<[>-[>-]>[<<<<+>>[-]+>>->]<+<<-]>>[-]<[-]<<[-]>>>>>>>>>]<<<<<<<<<<[<<<<<<[<<<<<<[<<<<<<[<+>-]>>>>>>-]>>>>>>-]>>>>>>-]<<<<<<[-]<<<<<<[-]<<<<<<[-]<<<<<<[<<<<<<[<<<<<<[<<<<<<[<+>-]>>>>>>-]>>>>>>-]>>>>>>-]<<<<<<[-]<<<<<<[-]<<<<<<[-]>>>>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>]<<<<<<<<<<<<<<<<<<<<<<<<[<<<<<<<<<<<<<+>>>>>>>>>>>>>[-]]<[-]<<<<<<[-]>]>[-<<[[->+<]>-<]>[<<[-]<[->+<]>->>[-]]>>>>>[[->+<]>-<]>[<<[-]<[->+<]->->>[-]]>>>+>>>>++[<++>+++++++]>>+<<<<<<<<<<+<[->+<<<<<++>>>>>>>>>>>+<<<<<<<]<[-]+<<<<+<[->+>>>>>>>++>>>>>+<<<<<<<<<<<<<]>>>>>[<<<[>+>+<<-]>>[<<+>>-]<<<[>>>+<<<-]>>>[>-]>[<<<<+>>[-]>>->]<+<<[>-[>-]>[<<<<+>>[-]+>>->]<+<<-]>>[-]<[-]<<[-]>>>>>>>>>]<<<<<<<<<<[-<<<<<<+>>>>>>]<<<<<<[-<<<<<<+>>>>>>]<<<<<<<+++>[-<->]<[<<<<<+>>>>>[-]]<[-]>>>]<]>[-<<<[->>>>>+>+<<<<<<]>>>>>[->>>>>>>>>>>>>>>+>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<]>[->>+>>>>>>>+<<<<<<<<<]>>>>++++[<++++>-]<+>>>+>+++++[>++++++<-]>>>>>+>>>>+++[<++++++>-]<+>>>+>+++++[>++++++<-]>+>>>>+[<<<[>+>+<<-]>>[<<+>>-]<<<[>>>+<<<-]>>>[>-]>[<<<<+>>[-]>>->]<+<<[>-[>-]>[<<<<+>>[-]+>>->]<+<<-]>>[-]<[-]<<[-]<<<]>>>>>>>>>>>>>>>>>>>>[-<<<<<<+>>>>>>]<<<<<<[-<<<<<<+>>>>>>]<<<<<<[-<<<<<<+>>>>>>]<<<<<<[-<<<<<<<<<<<<<+>>>>>>>>>>>>>[-]]<[-]<<<<<<[-]<<[-]>>>]<<<<<<<<<+[>+<+++++]>---.[-]>-[->>+<<]>>>+<[>-<[-<<+>>]]>[<<->++[<<+>>+++++]<<-->>>[-]++++++++++.[-]]<<]
producing the bitmap of the image:
A version with some comments (might not be very useful as they were mostly for my own benefit):
>>
>++[<+>+++++]<--
>
>++[<+>+++++]<-- 100 100 x y range from 1 to 100 (min is not 0)
[ while y
- x * y_1
>+++++[>+++++<-]<
[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<] x * 0 y_1 25_(y_1)%25 (y_1)%25 y//25
>[-<+>]<+ x * y 0 25_(y_1)%25 (y_1)%25 y//25
<[->>>>>>>+<<<<<<<]>>>>>>>- 0 y 0 25_(y_1)%25 (y_1)%25 y//25 0 * x_1
>+++++[>+++++<-]<
[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<] 0 y 0 25_(y_1)%25 (y_1)%25 y//25 0 * 0 x_1 25_(x_1)%25 (x_1)%25 x//25
>[-<<<<<<<<+>>>>>>>>]<<<<<<<<+ * x y 0 25_(y_1)%25 (y_1)%25 y//25 0 0 0 25_(x_1)%25 (x_1)%25 x//25
>>>>>>+>>>>>>+<<<<<<
[
>>+++<<
<[>>>-<+<<-]
>>[<<+>>-]
>[<<->>[-]] x y 0 25_(y_1)%25 (y_1)%25 y//25 y//25=3 0 * 0 25_(x_1)%25 (x_1)%25 x//25
<<<[->>+<<]
>+>
[<->[-<<+>>]] x y 0 25_(y_1)%25 (y_1)%25 y//25 y//25=0|3 *0 0 25_(x_1)%25 (x_1)%25 x//25
>>>>>
]
<<<<<< x y 0 25_(y_1)%25 (y_1)%25 y//25 y//25=0|3 0 0 25_(x_1)%25 (x_1)%25 x//25 * x//25=0|3
[-<<<<<<+>>>>>>] x y 0 25_(y_1)%25 (y_1)%25 y//25 p 0 0 25_(x_1)%25 (x_1)%25 x//25 * 0
<<<<<
+<
[
-
[
->-<
### p == 2 ### x y 0 v1 v0 y//25 0 * 0 0 u1 u0 x//25 0
>>>>
[->>>+ >>>>>>>++ >>>>>>>>>>>>>>>>>+ >>>>>>>++<<<<<<< <<<<<<<<<<<<<<<<< <<<<<<< <<<]
<
[->>>>>>>>>>>>>>>>+ >>>>>>>++ >>>>>>>>>>>>>>>>>+ >>>>>>>++ <<<<<<< <<<<<<<<<<<<<<<<< <<<<<<< <<<<<<<<<<<<<<<<]
<<<<<
[->>>>>>>>>>++ >>>>>+ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>++ >>>>>+ <<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<< <<<<<<<<<<]
<
[->>>>>>>>>>>>>>>>>>>>>>>++ >>>>>+ >>>>>>>++ >>>>>+ <<<<< <<<<<<< <<<<< <<<<<<<<<<<<<<<<<<<<<<<]
>>>>>>>>
>>>+
>>>+>>>+
>>>+>>>
>>>+>>+>
>>>+>>++>
>>>+>>>++
>>>+>>>++
>>>+>>++>
>>>+<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
x y 0 0 0 y//25 0 0 0 0 0 x//25 * 0
[
<
<<[>+>+<<-]
>>[<<+>>-]
<<<[>>>+<<<-]
>>>[>-]> [< <<<+ >>[-] > >->]<+<
<[>- [>-]> [< <<<+ >>[-]+ > >->]<+< <-]
>>[-]<[-]<<[-]>>>>>>>>>
]
<<<<<<<<<<
[<<<<<<[<<<<<<[<<<<<<[<+>-]>>>>>>-]>>>>>>-]>>>>>>-]
<<<<<<[-]<<<<<<[-]<<<<<<[-]
<<<<<<
[<<<<<<[<<<<<<[<<<<<<[<+>-]>>>>>>-]>>>>>>-]>>>>>>-]
<<<<<<[-]<<<<<<[-]<<<<<<[-]
>>>>>> >>>>>> >>>>>> >>>>>
[-<<<<<< <<<<<< <<<<<< <<<<<< + >>>>>> >>>>>> >>>>>> >>>>>>]
<<<<<< <<<<<< <<<<<< <<<<<<
[<<<<<<<<<<<<<+>>>>>>>>>>>>>[-]]
<[-]<<<<<<[-]>
]
>
[
-
### p == 1 ### x y 0 v1 v0 y//25 0 * 0 0 u1 u0 x//25 0
<<
[
[->+<]
>-<
]
>
[
<<[-]<[->+<]
>->>[-]
] x y 0 ~ v 0 * 0 0 0 u1 u0 x//25 0
>>>>>
[
[->+<]
>-<
]
>
[
<<[-]<[->+<]-
>->>[-]
] x y 0 ~ v 0 0 0 0 ~ u 0 * 0
>>>+>>>
>++[<++>+++++++]
>>+<<<
<<<<<<<+<
[->+<<<<<++>>>> >>>>>>>+<<<<<<<]
<[-]+<<<<+<
[->+>>>>>>>++>>>>>+<<<<<<<<<<<<<] x y 0 ~ * 0 v 2u_1 0 0 ~ 0 u 2v_1
>>>>>
[
<
<<[>+>+<<-]
>>[<<+>>-]
<<<[>>>+<<<-]
>>>[>-]> [< <<<+ >>[-] > >->]<+<
<[>- [>-]> [< <<<+ >>[-]+ > >->]<+< <-]
>>[-]<[-]<<[-]>>>>>>>>>
]
<<<<<<<<<< x y 0 ~ 0 v~2u_1 0 0 0 0 0 u~2v_1 0
[-<<<<<<+>>>>>>]<<<<<<
[-<<<<<<+>>>>>>]<<<<<<
<+++>
[-<->]
<[<<<<<+>>>>>[-]]
<[-]>>>
]
<
]
>
[
-
### p = 0 ###
x y 0 v1 v0 y//25 p * 0 0 u1 u0 x//25
<<<[->>>>>+>+<<<<<<] x y 0 v1 * 0 y//25 p 0 0 v0|u1 v0|u0 x//25
>>>>>
[->>>>>>>>>>>>>>>+>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<] x y 0 v1 0 y//25 p 0 0 * 0 v0|u0 x//25 x y t0 t1 _ _ x y t0 t1 _ _ x y t0 t1 _ _ x y t0 t1 _ _
>[->>+>>>>>>>+<<<<<<<<<] x y 0 v1 0 y//25 p 0 0 0 *0 x//25 x y t0 t1 _ _ x y t0 t1 _ _ x y t0 t1 _ _ x y t0 t1 _ _
>>>>++++[<++++>-]<+
>>>+
>+++++[>++++++<-]>
>>>>+
>>>>+++[<++++++>-]<+
>>>+
>+++++[>++++++<-]>+
>>>>+
[
<
<<[>+>+<<-]
>>[<<+>>-]
<<<[>>>+<<<-]
>>>[>-]> [< <<<+ >>[-] > >->]<+<
<[>- [>-]> [< <<<+ >>[-]+ > >->]<+< <-]
>>[-]<[-]<<[-]<<<
]
>>
>>>>>>
>>>>>>
>>>>>>
[-<<<<<<+>>>>>>]<<<<<<
[-<<<<<<+>>>>>>]<<<<<<
[-<<<<<<+>>>>>>]<<<<<<
[-<<<<<<<<<<<<<+>>>>>>>>>>>>>[-]] x y 0 v1 0 y//25 p 0 0 0 0 x//25 *0
<[-]<<<<<<[-]<<[-]
>>>
]
<
<<<<<
<<<
+[>+<+++++]>---.[-]
>
- decrement x
[->>+<<]>>>+<
[
>-<
[-<<+>>]
]
>
[ if x is 0
<<- decrement y
>++[<<+>>+++++]<<-- set x to 100
>>>[-]
++++++++++. output '/n'
[-]
]
<<
]