Heute (24. September) ist HONDA Geburtstag [geschlossen]

10

Heute (24. September) hat die Firma HONDA Geburtstag. Ursprünglich ist ihr Firmenname

本田技研工業株式会社

Ich möchte darum bitten, ein Geschenk für HONDA zu machen. Die Aufgabe besteht darin, den Namen der Programmdruckfirma zu erstellen. Sie können es so machen, wie Sie möchten, aber es gibt nur eine Regel: Unicode ist nicht zulässig. Es sollte ASCII-Kunst sein.

Ich möchte nach Postleitzahl und Ausgabe fragen. Wie immer, um den Gewinner zu bestimmen, werde ich mir die Länge des Codes ansehen, aber auch das Porträt ist in diesem Fall wichtig.

EDIT: Ausgabe muss ähnlich aussehen:本田技研工業株式会社

ST3
quelle
Okay, was 'HONDA'hindert uns daran, den Firmennamen in GolfScript zu verwenden und zu behaupten? (Ich versuche nur, auf einige Lücken hinzuweisen). Soll dies auch als Code-Golf gekennzeichnet werden ?
Volatilität
@Volatility Ich habe nach Ihrem Kommentar bearbeitet.
ST3
Unicode is not allowedwo? Am Ausgang (klingt vernünftig)? Als Skript? Als interne Darstellung in Ihrem Skript?
Johannes Kuhn
@JohannesKuhn Ich meinte, keines der gedruckten Zeichen darf nicht UNICODE sein. Im Skript können Sie es verwenden, aber die Ausgabe sollte in ASCII-Tabellenzeichen erfolgen.
ST3
2
Die Spezifikation ist zu vage, um objektiv feststellen zu können, ob ein Programm sie erfüllt oder nicht.
Peter Taylor

Antworten:

20

Mathematica

Hier werden die Charaktere einzeln gerastert. Die Nullen der Binärbilddaten eines reduzierten Bildes werden dann durch Sternchen ersetzt und das Array selbst wird dann gedruckt.

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

Honda

Unten wurden alle Zeichen als Einzelbild gerastert. Die Sternchen sind in diesem Fall etwas schwieriger als Sternchen zu erkennen.

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

image2

DavidC
quelle
Sehr, sehr schön
Dr. belisarius
Beeindruckend. Sieht sehr gut aus. Eine der Anforderungen war das visuelle Porträt, und Ihre Lösung weist eine sehr hohe Qualität auf. Auf diese Weise akzeptiere ich Ihre Antwort.
ST3
11

Tcl

Nun, ein wahrscheinlich verrückter Ansatz.

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

Hier ein Screenshot:

Bildschirmfoto

Johannes Kuhn
quelle
Ist die Ausgabe gleich wie 本田技研工業株式会社?
ST3
Gut und sehen nicht sehr gut aus, aber alles in allem eine gute Lösung.
ST3
Ich gebe keine Unicode-Zeichen aus. Ich mache einfach ein Foto von ihnen und rendere das als Ascii. Nun, s / w.
Johannes Kuhn
Ich könnte mehr verschiedene Charaktere verwenden, um Schattierungen anzuzeigen. (Auf Kosten der Programmgröße)
Johannes Kuhn
6

JavaScript + HTML, interaktive Version (275 + 90 = 365 Zeichen)

Viele Ideen inspiriert von Austins Antwort , aber diese ist interaktiv; Sie können die Schriftgröße ändern! (auch die Zeichenanzahl ist tatsächlich korrekt)


Bildschirmfoto

Durch Drücken der Tasten -und +ändern Sie die Schriftgröße. Bild wird abgeschnitten, aber Sie bekommen die Idee.

Bild


Geige (probier es selbst aus!)

Hier ist eine JSFiddle, in der Sie den Code selbst ausführen können.


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>

Hochauflösende Version

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

Bild


Türknauf
quelle
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)ist drei Bytes kürzer.
Conor O'Brien
4

Javascript, 261 Zeichen, 226 minimiert

Besonderer Dank geht an jsacii für die Inspiration dieser Lösung.

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

minimiert

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"}

und die Ausgabe

             ****                                                ****        ****                                                                                ***  ***                ****        ****                           **                       ****                  ****         ****             
             ****               **************************       ****        ****          *****************************                                  ****   ***  ***   ****         ****    ********                          ********                 ******                 ****         ****             
             ****               **************************       ****        ****      *    ** ******* ****** ****** **    *************************       ****  ***  ***  ****          ****   **** ****                          **** *****             **********                ***         ****             
 ****************************   ****       ****       ****   ****************************     ****       ****   ****       ************************    ****************************  ***************************   ****************************        ******    ******        *************    ****             
  ***************************   ****       ****       ****   ***********     ****             ****       ****   ****                 ****                     ****      ****         ***************************   ****************************     *******        *******             ****     ****             
          *********             ****       ****       ****       ****        ****            ****        ****   ****                 ****               **************************      **********   ****                          ****          *****************************       *********************       
         ************           **************************       **** *****************     ****************************             ****               **************************      *************************    ******************          ****  ****************  *****      ****   **** **********       
       ***** **** ****          **************************       ******* ****      ****    ******  ********************              ****                 **********************       **************************    ******************                                           *******       ****             
      *****  ****  *****        ****       ****       ****   ********    *****   *****    *******  ***   ****   ****                 ****                 **********************      *******      ********               ****      ****         ****************************  *************    ****             
   ******    ****    ******     ****       ****       ****   ********      **** ****       * ****  ***   ****   ****                 ****              **************************** *********     ***********             ****      ****           *      ****     *      **   **** *** ****    ****             
 *****************************  ****       ****       ****       ****       *******          ****  ***  ****    ****                 ****              ****************************  **  ****   ********* *****           ****     * ****   ***          ****    *****              ***         ****             
 ****   *    ****        ****   ****       ****       ****       ****      *********         ********* *****    ****     ****************************        ****************            **********  ****  ******         *********** ****  ****        ****       *****            ***         ****             
             ****               **************************       ****  *******  *******      **************     ****     ****************************  **********  ****  ***********     ********    ****    ****  **************      ********    ***********************          ***  *******************     
             ****               ****                  ****   **************        *******   ****    *****      ****                                   ******      ****       *****      ****        ****           ***                 ******    ****************     *****       ****  *******************     
             ***                                                 *                     *              **         **                                                ****                  ****         ***                                                               **          ***                          
Professor Allman
quelle
Ich denke, die erste Ausgangsleitung sollte repariert werden.
ST3
Das war nur vom Einfügen in den Editor, behoben in edit
Professor Allman
Das sind 261 Zeichen, nach meiner Zählung ...
Türknauf
@ Doorknob Ich habe die minimierte Anzahl gepostet, geändert im Update
Professor Allman
Sie können die varAnweisungen aus den forSchleifen entfernen und (wenn Sie möchten) "*"durch eine Zahl ersetzen .
Conor O'Brien
1

Java, 267 260 Zeichen

Okay, ich denke, meine Lösung unterscheidet sich nicht allzu sehr von Johannes Kuhns Antwort, aber wie es scheint, ist dies ein Problem, das in Java gut behandelt werden kann. meine Lösung ist nicht mehr lange; und die Ausgabe ist etwas anders, ich werde es trotzdem posten:

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

Formatiert als:

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

Ausgabe:

      #                     #     #                                   # #        #  # #                       #         #    #    
      #       ###########   #     #     #### #######                # # # #      #  # #            # ##      # #        #    #    
 ###########  #    #    #   #  ########   #   #  #    ##########  # # # # # #    #  ######         #       ##   ##    #####  #    
      #       #    #    # ####    #      #    #  #        #       ###########  ### #  #     ############  #       #       #  #    
     ###      #    #    #   #     #      #    #  #        #          #   #       #    #            #     # ######  ##    #  ##### 
    # # #     ###########   #  #######   ### #######      #       ###########   ### #######  ##### #                    #    #    
   #  #  #    #    #    #   ##  #   #   ## #  #  #        #        #########   # #    #        #   #                   ###   #    
  #   #   #   #    #    # ###    #  #    # #  #  #        #            #       # #   ###       #    #    ###########  # # #  #    
 #  #####  #  #    #    #   #    # #     # #  #  #        #       ###########  # #  # # #      #    #        #          #    #    
 #    #     # #    #    #   #    ###     ### #   #        #          # # #       # #  #  #     # ## #  #    #   #       #    #    
      #       ###########   #  ##   ##   # # #   #   ###########   ##  #  ###    # #  #   # #####    # #    #    #      # ####### 
      #       #         # ##  #       #      #   #                #    #     #   #    #               #  ######## ##    #         
Memo
quelle
@ Bakuriu Verwenden Sie eine andere Schriftart. @ memo: Sie können 6 Zeichen speichern, indem Sie NICHT importieren. (Der Import kostet 36 Zeichen, bei Verwendung des vollständigen qualifizierten Namens 15 Zeichen für jede Verwendung).
Johannes Kuhn
@ Johannes Kuhn: Du hast absolut recht. Ich habe die Antwort entsprechend aktualisiert und in der Array-Deklaration ein weiteres redundantes Leerzeichen gefunden.
Memo