我给正确的一和零组合发短信


9

我最近在歌曲“ 我是Textpert”中列出有关开车时发短信的信息,歌曲中的某一行激发了这一挑战。

我从来不会弯腰到发短信的照片,而是发给正确的组合“ 1”和“ 0”

现在显然,这几乎是一件不可能的事情,因此您应该通过编码一个程序来做同样的事情来帮助全世界的textperts。

您的工作是获取具有500x500像素尺寸的图像文件的名称,并将该文件输出为二进制文件。如果语言支持,也可以将图像作为输入。

您可以使用带有扩展名的图像文件

  • .jpg
  • .png
  • .gif
  • .bmp
  • .svg

让我向不了解我的意思的人演示如何将图像转换为二进制图像。

步骤1

取文件中的第一个像素,并将其RGB值检索为3个十进制数字:R,G和B。例如,假设第一个像素为255,0,0(红色)。

第2步

将每个数字转换为其8位二进制表示形式,然后连接为单个24位数字。例如,这产生111111110000000000000000

第三步

将这个24位数字添加到最终输出中。因此,最终输出应是6000000位长,并应包括完全10

这是一个 最短的代码胜出!


1
您能指定输入内容吗?文件名仅在唯一可能的输入上起作用,还是允许图像作为输入的语言可以使用它?
伊恩·米勒

需要支持哪种图像格式?我可以选择(或发明)图像格式吗?
L3viathan

此外,对于输出,您是否希望它将一和零输出到标准输出(这是否需要为字符串,或者可以为整数数组),或者实际上是使用其中的数据创建一个新文件?
伊恩·米勒

@IanMiller输出在这里可以是任何可接受的方法并且输入可以是文件名或图像(如果支持)。
caird coinheringaahing

你有测试用例吗?
暴民埃里克(Erik the Outgolfer)

Answers:


4

Pyth14 13字节

-1个字节,感谢Outgolfer的Erikz可为隐式输入删除)。

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才能在自己的计算机上对其进行测试。


1
您可以假定带引号的输入并删除z
暴民埃里克(Erik the Outgolfer)

4

MATL13 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

2

Mathematica,103个字节

F=Flatten;Export["x.txt",FromDigits@F[IntegerDigits[#,2,8]&/@F[ImageData[Import["x.bmp"],"Byte"],1],2]]


拍摄图像x.bmp(或任何其他图像)并将其转换为x.txt文件


取而代之的是PadLeft,您可以使用第三个论点IntegerDigits(例如IntegerDigits[#,2,8]&
JungHwan Min

你是绝对正确的!我忘记了我可以使用它!
J42161217 2015年

唯一的错误是缺少“ Import []”,因为我正在用图像对其进行测试。现在一切正常。您是否正在测试更新的代码(?),因为我不使用
PadLeft

糟糕,我没有刷新,因此我正在查看旧版本。
伊恩·米勒

根据规则,您可以将字节写为输入图像并将其输出到标准输出而不是使用Import“导出” 的函数,从而节省大量字节。
伊恩·米勒

2

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)));}}

很好的尝试,欢迎来到该网站!我不懂C#,所以不能给你打高尔夫球,但是我敢肯定其他人也会!
caird coinheringaahing

1

八度,46字节

@(x)dec2bin(permute(imread(x),[3,1,2]),8)'(:)'

创建一个名为的匿名函数ans,可以使用文件名(ans('file.png'))或URL(ans('http://image.png'))进行调用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.