나는 최근에 운전 중에 문자 메시지에 관한 Textpert 라는 노래를 들었 으며 노래의 특정 줄이이 도전에 영감을주었습니다.
나는 문자 사진만큼 낮게 구르지 않았다 / 대신 나는 1과 0의 올바른 콤보를 문자
분명히, 이것은 거의 불가능한 일이 될 것이므로 동일한 일을 수행하는 프로그램을 코딩하여 텍스트 퍼트를 전 세계적으로 도와야합니다.
당신의 임무는 크기 500x500
픽셀 로 이미지 파일의 이름을 가져 와서 파일을 이진으로 출력하는 것입니다. 언어가 지원하는 경우 이미지를 입력으로 사용할 수도 있습니다.
확장명을 가진 이미지 파일을 사용할 수 있습니다
.jpg
.png
.gif
.bmp
.svg
내가 무슨 뜻인지 이해하지 못하는 사람들을 위해 이미지를 이진으로 변환하는 방법을 보여줄 수 있습니다.
1 단계
파일에서 첫 번째 픽셀을 가져와 RGB 값을 소수점 3 자리 R, G 및 B로 검색합니다. 예를 들어 첫 번째 픽셀이 255,0,0
(빨간색) 이라고 가정 합니다.
2 단계
각 숫자를 8 비트 이진 표현으로 변환하고 단일 24 비트 숫자로 연결합니다. 예를 들어, 이것은111111110000000000000000
3 단계
이 24 비트 숫자를 최종 출력에 추가하십시오. 따라서, 최종 출력이 있어야 6000000
긴 숫자 및 전체 구성되어야 1
하고0
이것은 코드 골프 가장 짧은 코드가 승리합니다!
답변
Pyth , 14 13 바이트
Outgolfer Erik 덕분에 -1 바이트 ( z
암시 적 입력을 위해 제거 가능).
sm.[\08.Bd.n'
설명
sm.[\08.Bd.n'
' # Open the path/URL given as implicit input. Return list of color triples for color images: [(255, 125, 23), ...]
.n # Flatten the list
m .Bd # For each element of the list, convert to binary
.[\08 # Pad with zeros on the left up to 8 characters
s # Concatenate the list of bytes
불행히도, 안전상의 이유로 온라인 통역사 로는 테스트 할 수 없습니다 . Pyth를 복제하여 자신의 컴퓨터에서 테스트해야합니다.
답변
MATL , 13 12 바이트
YiH&!8&YB!1e
파일 이름을 문자열로 입력으로 받아들입니다. 출력 24 비트 숫자는 행 주요 순서로 표시됩니다.
불행히도 이것은 보안상의 이유로 온라인 통역사에서 작동하지 않습니다. 내 로컬 컴퓨터에서 작동하는 스크린 샷입니다.
다음은 2 x 2 x 3 이미지를 수동으로 만든 다음 거의 동일한 코드를 사용하여 처리 하는 약간 수정 된 버전 입니다.
설명
% Implicitly grab input as a string
Yi % Read in as an M x N x 3 image
H&! % Permute the dimensions of the image to be 3 x N x M
8&YB % Convert to a binary string using 8 bits for each element
! % Transpose the result
1e % Reshape to a row vector
% Implicitly display the result
답변
수학, 103 바이트
F=Flatten;Export["x.txt",FromDigits@F[IntegerDigits[#,2,8]&/@F[ImageData[Import["x.bmp"],"Byte"],1],2]]
이미지 x.bmp (또는 기타)를 가져 와서 x.txt 파일로 변환합니다.
답변
C #, 309 바이트
당신이 말할 수 없다면 내 두 번째 코드 골프. 이미지를 x.jpg로 가져옵니다 …
using System;using System.Drawing;using System.Linq;class Program{static void Main(string[]a){Bitmap b=(Bitmap)Image.FromFile("x.jpg");Console.WriteLine(string.Join("",from i in Enumerable.Range(0,250000)select Convert.ToString(Convert.ToInt32(b.GetPixel((int)Math.Floor((double)i/500),i%500).Name,16),2)));}}
답변
옥타브, 46 바이트
@(x)dec2bin(permute(imread(x),[3,1,2]),8)'(:)'
ans
파일 이름 ( ans('file.png')
) 또는 URL ( ans('http://image.png')
) 을 사용하여 호출 할 수 있는 익명의 함수를 만듭니다.