今天(9月24日)是本田的生日[关闭]


10

今天(9月24日)是本田公司的生日。他们最初的公司名称是

本田技研工業株式会社

我想要求给本田做个礼物。任务是使程序打印公司名称。您可以根据需要进行任何操作,但是只有一个规则,即不允许使用Unicode。它应该是ASCII艺术。

我想问一下代码和输出。一如既往地确定优胜者,我将研究代码的长度,但是在这种情况下,肖像也很重要。

编辑:输出必须看起来与此类似:本田技研工業株式会社


好吧,那么阻止我们使用'HONDA'并声称它可以在GolfScript中打印公司名称的原因是什么?(我只是想指出一些漏洞)。另外,这是否意味着要标记为代码高尔夫
波动率

@波动性我已在您发表评论后进行了编辑。
ST3 2013年

Unicode is not allowed哪里?在输出(听起来合理)?作为脚本?作为脚本的内部表示形式?
Johannes Kuhn 2013年

@JohannesKuhn我的意思是所有打印字符都不能是UNICODE,在脚本中可以使用它,但是输出应该在ASCII表字符上。
ST3 2013年

2
规范过于模糊,无法客观确定程序是否满足要求。
彼得·泰勒

Answers:


20

Mathematica

在这里,字符被单独栅格化。然后,将缩小图像的二进制图像数据的零替换为星号,然后打印数组本身。

GraphicsGrid[ImageData@ImageResize[Binarize@Rasterize@Style[#, 136], 30] 
/. {1 -> "", 0 -> "*"}] & /@ Characters["本田技研工業株式会社"]

本田

下面,所有字符都被光栅化为单个图像。在这种情况下,星号很难识别为星号。

GraphicsGrid[ImageData@ImageResize[Binarize@Rasterize@Style[#, 136], 300] 
/. {1 -> "",  0 -> "*"}, ImageSize -> 1500] &["本田技研工業株式会社"]

image2


非常非常好
belisarius博士2013年

哇。看起来很好。要求之一是视觉肖像,您的解决方案必须具有很高的质量,因此我接受您的回答。
ST3 2013年

11

Tcl

好吧,可能是疯狂的方法。

package r Tk
package r Img
pack [label .l -text 本田技研工業株式会社 -fg #000000 -bg #ffffff]
update
puts [join [lmap line [[image create photo -data .l] data] {join [lmap pixel $line {expr {$pixel ne {#ffffff}?"@":" "}}] {}}] \n]
exit

这里的截图:

屏幕截图


输出是否与本田技研工業株式会社
ST3 2013年

好吧看起来也不是很好,但是总的来说是很好的解决方案。
ST3 2013年

我不输出任何Unicode字符。我只拍了一张照片,并将其渲染为Ascii。好吧,黑白。
Johannes Kuhn 2013年

我可以使用更多不同的字符来显示阴影。(以Progam的大小为代价)
Johannes Kuhn 2013年

6

JavaScript + HTML,交互式版本(275 + 90 = 365个字符)

奥斯丁的答案启发了许多想法,但这一想法是互动的。您可以更改字体大小!(而且字符数实际上是正确的)


屏幕截图

-+按钮更改字体大小。图像被切断,但是您明白了。

图片


小提琴(自己尝试!)

这是一个JSFiddle,您可以在其中自行运行代码。


JS,275

h=30,(r=function(){for(x=document.createElement('canvas').getContext('2d'),x.font=h+'px sans-serif',x.fillText('本田技研工業株式会社',0,h),d=x.getImageData(0,0,w=h*10,h).data,s='',a=0;a<h;a++){for(b=0;b<w;b++)s+=d[3+w*4*a+4*b]?0:' ';s+='\n'}document.getElementById('p').innerHTML=s})()

HTML,90

<button onclick='h--;r()'>-</button><button onclick='h++;r()'>+</button><pre id='p'></pre>

高分辨率版本

http://jsfiddle.net/UjTbK/1/

图片



r=function(h){for(x=document.createElement('canvas').getContext('2d'),x.font=h+'px sans-serif',x.fillText('本田技研工業株式会社',0,h),d=x.getImageData(0,0,w=h*10,h).data,s='',a=0;a<h;a++){for(b=0;b<w;b++)s+=d[3+w*4*a+4*b]?0:' ';s+='\n'}document.getElementById('p').innerHTML=s} (30)短三个字节。
Conor O'Brien 2015年

4

Javascript,261个字符,最少226个

特别感谢jsacii启发了该解决方案。

c = document.createElement('canvas').getContext('2d');
c.font="30px sans-serif";c.fillText("本田技研工業株式会社", 0,30);d=c.getImageData(0,0,305,40).data;
s="";
for(var y = 0; y<40;y+=2){
    for(var x=0;x<305;x++)
        s += d[3+4*x+1220*y]? "*" : " ";
    s+="\n";
}

缩小

c=document.createElement("canvas").getContext("2d");c.font="30px sans-serif";c.fillText("本田技研工業株式会社",0,30);d=c.getImageData(0,0,305,40).data;s="";for(var y=0;y<40;y+=2){for(var x=0;x<305;x++)s+=d[3+4*x+1220*y]?"*":" ";s+="\n"}

和输出

             ****                                                ****        ****                                                                                ***  ***                ****        ****                           **                       ****                  ****         ****             
             ****               **************************       ****        ****          *****************************                                  ****   ***  ***   ****         ****    ********                          ********                 ******                 ****         ****             
             ****               **************************       ****        ****      *    ** ******* ****** ****** **    *************************       ****  ***  ***  ****          ****   **** ****                          **** *****             **********                ***         ****             
 ****************************   ****       ****       ****   ****************************     ****       ****   ****       ************************    ****************************  ***************************   ****************************        ******    ******        *************    ****             
  ***************************   ****       ****       ****   ***********     ****             ****       ****   ****                 ****                     ****      ****         ***************************   ****************************     *******        *******             ****     ****             
          *********             ****       ****       ****       ****        ****            ****        ****   ****                 ****               **************************      **********   ****                          ****          *****************************       *********************       
         ************           **************************       **** *****************     ****************************             ****               **************************      *************************    ******************          ****  ****************  *****      ****   **** **********       
       ***** **** ****          **************************       ******* ****      ****    ******  ********************              ****                 **********************       **************************    ******************                                           *******       ****             
      *****  ****  *****        ****       ****       ****   ********    *****   *****    *******  ***   ****   ****                 ****                 **********************      *******      ********               ****      ****         ****************************  *************    ****             
   ******    ****    ******     ****       ****       ****   ********      **** ****       * ****  ***   ****   ****                 ****              **************************** *********     ***********             ****      ****           *      ****     *      **   **** *** ****    ****             
 *****************************  ****       ****       ****       ****       *******          ****  ***  ****    ****                 ****              ****************************  **  ****   ********* *****           ****     * ****   ***          ****    *****              ***         ****             
 ****   *    ****        ****   ****       ****       ****       ****      *********         ********* *****    ****     ****************************        ****************            **********  ****  ******         *********** ****  ****        ****       *****            ***         ****             
             ****               **************************       ****  *******  *******      **************     ****     ****************************  **********  ****  ***********     ********    ****    ****  **************      ********    ***********************          ***  *******************     
             ****               ****                  ****   **************        *******   ****    *****      ****                                   ******      ****       *****      ****        ****           ***                 ******    ****************     *****       ****  *******************     
             ***                                                 *                     *              **         **                                                ****                  ****         ***                                                               **          ***                          

我认为第一条输出线应该固定。
ST3 2013年

这是刚刚从粘贴到编辑器,定格在编辑
奥尔曼教授

根据我的计数,这是261个字符...
门把手

@Doorknob我发布了最小化计数,并在更新中进行了更改
Allman教授

您可以varfor循环中删除语句,也可以用数字替换(如果需要)"*"
Conor O'Brien

1

Java,267,260个字符

好吧,我想我的解决方案与Johannes Kuhn的回答并没有什么不同,但是似乎这是一个可以用Java很好地解决的问题。我的解决方案不再长久;并且输出略有不同,不过我还是将其发布:

class A{public static void main(String[]a){java.awt.image.BufferedImage b=new java.awt.image.BufferedImage(130,16,2);b.createGraphics().drawString("本田技研工業株式会社",0,13);for(int y=0;y<2080;System.out.print((b.getRGB(y%130,y/130)<0?"#":" ")+(++y%130<1?"\n":"")));}}

格式为:

class A {
    public static void main(String[]a) {
        java.awt.image.BufferedImage b = new java.awt.image.BufferedImage(130, 16, 2);
        b.createGraphics().drawString("本田技研工業株式会社", 0, 13);
        for (int y = 0; y < 2080; System.out
                .print((b.getRGB(y % 130, y / 130) < 0 ? "#" : " ")
                        + (++y % 130 < 1 ? "\n" : "")))
            ;
    }
}

输出:

      #                     #     #                                   # #        #  # #                       #         #    #    
      #       ###########   #     #     #### #######                # # # #      #  # #            # ##      # #        #    #    
 ###########  #    #    #   #  ########   #   #  #    ##########  # # # # # #    #  ######         #       ##   ##    #####  #    
      #       #    #    # ####    #      #    #  #        #       ###########  ### #  #     ############  #       #       #  #    
     ###      #    #    #   #     #      #    #  #        #          #   #       #    #            #     # ######  ##    #  ##### 
    # # #     ###########   #  #######   ### #######      #       ###########   ### #######  ##### #                    #    #    
   #  #  #    #    #    #   ##  #   #   ## #  #  #        #        #########   # #    #        #   #                   ###   #    
  #   #   #   #    #    # ###    #  #    # #  #  #        #            #       # #   ###       #    #    ###########  # # #  #    
 #  #####  #  #    #    #   #    # #     # #  #  #        #       ###########  # #  # # #      #    #        #          #    #    
 #    #     # #    #    #   #    ###     ### #   #        #          # # #       # #  #  #     # ## #  #    #   #       #    #    
      #       ###########   #  ##   ##   # # #   #   ###########   ##  #  ###    # #  #   # #####    # #    #    #      # ####### 
      #       #         # ##  #       #      #   #                #    #     #   #    #               #  ######## ##    #         

@Bakuriu使用其他字体。@注:您可以通过不导入来保存6个字符。(导入费用为36个字符,使用完整合格名称的每次使用费用为15个字符)。
Johannes Kuhn 2013年

@Johannes Kuhn:你绝对正确。我已经相应地更新了答案,并且还在数组声明中找到了另一个多余的空白。
备忘录
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.