This Is A Self-Referential Problem
Pyth - 21 bytes
Simple to do with pyth's i
base conversion. Takes input as PBM
file name and reads using '
command. I had to use !M
to negate blacks and whites. Everything else is self-explanatory.
*J17i!MsC_cJrstt.z7 2
Try it here online. (Web interpreter can't read files, so is modified and takes file as input).
CJam, 16
l,l~q:~f*/W%ze_b
With big thanks to Dennis. Try it online
In case you're having problems with the url, this is the input I tested:
P1
106 17
0000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000011111100000000000000000000000
0000000000000000000000000000000000000000000000000000000000000111111000
0000011111100110000000000000000000000000000000000000000000000000000000
0000000000000000000000000110011111100000100111100001000000000000001100
0110000000000000000000000000000000000000000000000000000000001000011110
0100010011111100001000000000000100101001110000000000000000000000000000
0011000000000000000000000100001111110010010110000110001000000000000100
0110010010000000011000000000000000000100100000000000000000000100011000
0110101111000000111111000000000001000110010011111100100100111001111100
0111001011110000000000000011111100000011111111000000110111000000000001
0000100111100000110000110001100000101000001100001000000000000011101100
0000111110110000001000010000000000010010000100100110011001100100100110
0100110010011001000000000000100001000000110110011000011000010000000000
0100110001001001100110011000001001100100110010011001000000000000100001
1000011001100111111111001100000000000100110001001001100110011001111001
1001001100100110010000000000001100111111111001101111111111111100000000
0001001010010010011001100101000110011001100000110000100000000000001111
1111111111010111001001001110000000000000110001101101100110011000111001
1001100111110011110000000000000001110010010011100010001001000100000000
0000000000000000000000000000000000000000000000000000000000000000000000
1000100100010000100000000001000000000000000000000000000000000000000000
0000000000000000000000000000000000001000000000010000010000000010000000
0000000000000000000000000000000000000000000000000000000000000000000000
0001000000001000000011111111000000000000000000000000000000000000000000
0000000000000000000000000000000000000000111111110000
I used the format that GIMP generated when exporting as ASCII pbm, with the comment removed.
Explanation:
l, read the first line ("P1" magic number) and get its length (2)
l~ read and evaluate the second line (106 17)
q read the rest of the input (actual pixels)
:~ evaluate each character ('0' -> 0, '1' -> 1, newline -> nothing)
f* multiply each number by 17
/ split into rows of length 106
W% reverse the order of the rows
z transpose
e_ flatten (effectively, concatenate the lines)
now we have all the pixels in the desired order, as 0 and 17
b convert from base 2 "digits" to a number
Python 2: 133 110 bytes
A first attempt in python using PIL:
from PIL.Image import*
j=open(input()).load()
a=k=0
while a<1802:k=(j[a/17,16-a%17][0]<1)+k*2;a+=1
print k*17
Thanks to helpful commenters below