나는 1과 0의 올바른 콤보를 문자 최근에 운전 중에 문자 메시지에

나는 최근에 운전 중에 문자 메시지에 관한 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')) 을 사용하여 호출 할 수 있는 익명의 함수를 만듭니다.