Drucken Sie ein Smiley-Gesicht

48

Bedarf

Um der Herausforderung willen definieren wir eine Einheit :

Eine Einheit ist ein beliebiger Punkt, aus dem das Raster besteht, in dem das Gesicht gezeichnet wird (Pixel für den Bildschirm, Zeichen für ASCII-Grafiken usw.).

Die Mindestanforderungen an das Gesicht sind:

Ein Smiley besteht aus einer Form, die einem Kreis (nicht unbedingt perfekt) mit einem beliebigen Radius ähnelt. Es muss mindestens 1 Einheit für jedes der beiden Augen und mindestens 2 Einheiten für den Mund vorhanden sein. Augen und Mund sollten sich innerhalb der Gesichtsform befinden. Der Mund kann nach Belieben ausgerichtet werden (fröhlich, traurig, gleichgültig usw.).

Hier ist ein Beispiel für die Ausgabe:

 0 0 0    . . .
0 . . 0  . o o .
0 --- 0  . \_/ .
 0 0 0    . . .

Tore

Das Hauptziel ist natürlich, den kürzestmöglichen Code zu entwickeln, aber Kunst ist auch wichtig.

Gewinner

Der Gewinner wird basierend auf der Anzahl der Stimmen der Benutzer in mindestens den nächsten 5 Tagen ausgewählt.

Schuh
quelle
5
Wow, 8 Fragen auf der Hot Question List. Unsere Website sollte mehr Verkehr bekommen.
Justin
Ist gleichgültiges Gesicht nicht einfacher als glücklich und trauriger manchmal schwieriger?
o0 '.
2
Ich werde das nicht beantworten, da es nicht den Mindestanforderungen entspricht, aber ich wollte mitmachen ... alt + 1und alt + 2werde ☺ bzw. ☻ produzieren. Aus Gründen der Argumentation betrachte ich das altDrücken einer Taste als ein Zeichen und bezeichne es mit 2 Zeichen.
Dryden Long
1
Wird dieser Thread jemals enden? :)
Avall

Antworten:

108

Javascript, 340

var i=0,b=document.body,d=20,n=b.clientWidth,m=b.clientHeight,f="width=10,height=10,"
var o=new Function("f","i","t",'open("","",f+"left="+i+",top="+t)')
for(j=0;j<m/d;++j,i=j*d){
   u=Math.sqrt(i*(m-i))
   t=m/2+u*(j%2-0.5)*2
   o(f,i,t)
   i>m/5&&i<0.8*m&&j%2&&o(f,i,t-m/4);
   ((i<m/3&&i>m/4)||(i<3*m/4&&i>2*m/3))&&o(f,i,m/3)
}

Javascript, 283

optimierte Version (mit einigen Verbesserungen & ohne unnötige Leerzeichen)

var i=0,b=document.body,d=20,n=b.clientWidth,m=b.clientHeight,f="width=10,height=10,"
function o(i,t){open("","",f+"left="+i+",top="+t)}for(j=0;j<m/d;i=++j*d){u=Math.sqrt(i*(m-i));t=m/2+j%2*2*u-u;o(i,t);i>m/5&&i<0.8*m&&j%2&&o(i,t-m/4);((i<m/3&&i>m/4)||(i<3*m/4&&i>2*m/3))&&o(i,m/3)}

Naja ... vielleicht ist es nicht so kurz, wie Sie es möchten, aber es ist sicher unkonventionell. Es sieht besser aus, wenn Ihr Browser maximiert ist. Ihre Frage hat mir sehr gut gefallen! Wenn Sie die Details erhöhen möchten, reduzieren Sie die dVariable leicht.

Bearbeiten: Leider kann ich es nicht auf jsfiddle ausführen, aber Sie können es in einem Browser in die Javascript-Konsole einfügen. Oh, und aktiviere Popups auf der Seite :).

edit2: Sie können es ausführen, indem Sie eine neue HTML-Datei erstellen und den Code darin einfügen:

<body>
<script>
var i=0,b=document.body,d=20,n=b.clientWidth,m=b.clientHeight,f="width=10,height=10,"
var o=new Function("f","i","t",'open("","",f+"left="+i+",top="+t)')
for(j=0;j<m/d;++j,i=j*d){
   u=Math.sqrt(i*(m-i))
   t=m/2+u*(j%2-0.5)*2
   o(f,i,t)
   i>m/5&&i<0.8*m&&j%2&&o(f,i,t-m/4);
   ((i<m/3&&i>m/4)||(i<3*m/4&&i>2*m/3))&&o(f,i,m/3)
}
</script>
</body>

Wenn Sie es dann ausführen und nichts passiert, aktivieren Sie einfach die Popup-Fenster und laden Sie die Seite neu. Dazu klebe ich Bildschirmfoto

avall
quelle
23
Im Namen von Bwian von Judäa, was ist das ...
nitro2k01
2
Jetzt geht es. Ich
brauchte
7
Nachdem Sie so viel Zeit damit verbracht haben, lästige Popups zu deaktivieren, ist es schwierig, sie zu aktivieren. Ich habe adBLock deaktiviert und alle Popups in meinem Browser zugelassen. Nachdem die Hälfte des Gesichts angezeigt wurde, wird der Blocker wieder aktiviert.
Charity Leschinski
4
Erstaunliche Out-of-the-Box-Gedanken! Ich würde niemals daran denken, so etwas zu tun.
Gari BN
4
Das ist außergewöhnlich originell!
Oberon
66

HTML, 200 141 Zeichen

Dank Erfolg habe ich das auf 141 Zeichen reduziert :

<fieldset><legend>\\\\\\\\\\\\ ////</legend><center><input size=1 value=o> <input size=1 value=o /><br><input type=radio><br><button>........

Hier ist der ursprüngliche HTML-Code:

<fieldset>
<legend>\\\\\\\\\\\\ ////</legend>
<center><input type=text size=1 value=o />
<input type=text size=1 value=o /><br/>
<input type=radio /><br/>
<button>........</button></center></fieldset>

Funktioniert am besten auf kleinen Bildschirmen:

: - |

zimperliches Ossifrage
quelle
4
Dies ist Kunst : P
Schuh
3
Sie müssen die meisten Ihrer Tags nicht schließen (die meisten Browser werden damit umgehen), Sie müssen die Art der Eingabe nicht definieren (Text ist Standard) und <br> nicht schließen (html5). Hier ist der optimierte Code mit nur 150 Zeichen :): jsfiddle.net/avall/TdPkF
avall 30.12.13
@avall ausgezeichnet, dank :-)
zimperlich ossifrage
158 Zeichen und zentriert das Haar jetzt so, dass es auf jedem Bildschirm gut aussieht. jsfiddle.net/TdPkF/5
AverageMarcus
1
@squeamishossifrage Du solltest alle bis auf 3 Haare entfernen, und dann wäre es Homer Simpson!
mbomb007
55

Brainfuck: 583 Zeichen (ohne Leerzeichen)

 >>------>->->+++++>->->---->>>>------>>>>
 >>>>---->->------->>->->->---->>-------->
 ->->------>>>>>>>>>>-->---->>-->---->>->
  -->>>------>>>>>>>>->---->---->>->->->-
  >>->---->---->>++++[-<++++>]<[-<++++
  ++<++++++++<+++<++<++++++<++++++<++++++
 <++++++<++<++++++<++++++++<+++<++<++<++<++
<++<++<++<+<++<++++<++++++++<+++<++<+++<+++
<++<++++++   <++++++++<++++<    ++<++<++<++
<++<++<++<++<+<+++<++++++<+++<++<++++++<+++
+++<++++++<+++<++<++  +<++++++<++++++<++<++
 <++<++<++<++<++<+<++<++<++<++++++<++++++
  <++++++<+++++<++++++<+++<+>>>>>>>>>>>>
    >>>>>>                       >>>>>
     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
          >>>>>>>>>>>>>>>]<[.<]

Ausgabe:

\|/ ____ \|/       
 @~/ ,. \~@        
/_( \__/ )_\       
   \__U_/
Sylwester
quelle
11
Der ursprüngliche Code sieht ein bisschen aus wie ein Gesicht (wenn Sie sich wirklich anstrengen ...), ich frage mich, wie schwierig es wäre, den Code zu erstellen und beide Gesichter
auszugeben
1
@handuel Beides sind Gesichter, aber unterschiedlich. Meinten Sie, dass der Code und die Ausgabe wie ein Quine aussehen? Ich bin mir sicher, dass es möglich ist.
Sylwester
Ich wollte nur, dass der Code mehr wie ein Gesicht aussieht, ich wusste nicht, dass es beabsichtigt war.
w4etwetewtwet
1
In Brainfuck ist alles, was kein Steuerzeichen ist, ein Kommentar. Aus diesem Grund kann der Quellcode so gestaltet werden, dass er wie ein Smiley aussieht.
Emil Vikström
39

SVG

<svg xmlns="http://www.w3.org/2000/svg">
    <defs>
        <radialGradient id="f" fx="25%" fy="25%" r="60%">
            <stop offset="0" stop-color="#fff"/>
            <stop offset="0.6" stop-color="#ff0"/>
            <stop offset="1" stop-color="#f80"/>
        </radialGradient>
    </defs>
    <circle fill="url(#f)" stroke="#000" stroke-width="2" cx="100" cy="100" r="90"/>
    <ellipse cx="70" cy="70" rx="10" ry="20"/>
    <ellipse cx="130" cy="70" rx="10" ry="20"/>
    <path fill="none" stroke="#000" stroke-width="5" d="M 40 120 S 100 200 160 120"/>
</svg>

Rendert wie folgt:

Smiley

nwellnhof
quelle
Unendliche Einheiten?
user80551
6
Das richtige Werkzeug für den richtigen Job.
Alpha
Ich würde nicht sagen, dass SVG wirklich eine Programmiersprache ist
Oliver Ni
@Oliver Es ist genauso eine Programmiersprache wie HTML ... (was es nicht ist).
mbomb007
37

Ruby, 224

Douglas Adams wäre entsetzt. :-P

w=?$;"^XA[_AXeMFGIAHJLjKNAEFEJJNHQHNKLAEMINJOJOHLAGKHOJOJ[AG[HQHRFJAH}IH
IGGwIIAHHGwKHAHGHrEUAGQFiGVAGQGfIPAFHKHHbJHAQII]MGASHNSOHATIdIAUJJRLIAWLIQGK
ZOFUA]ZAeSAiPAjOAkL".codepoints{|r|r-=68;$><<(r<0??\n:(w=w==?$?' ':?$)*r)}

Ausgabe:

                          $$$$$$$$$$$$$$$$$$$$
                       $$$$$$$$$$$$$$$$$$$$$$$$$$$
                    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$         $$   $$$$$
    $$$$$$        $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$$$$$$$$
 $$ $$$$$$      $$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$       $$$$$$$$
 $$$$$$$$$     $$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$    $$$$$$$$
   $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  $$$$$$
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$
     $$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$$
    $$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$$
    $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$$$$$$$$$
  $$$$       $$$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$      $$$$
             $$$$$     $$$$$$$$$$$$$$$$$$$$$$$$$         $$$
               $$$$          $$$$$$$$$$$$$$$           $$$$
                $$$$$                                $$$$$
                 $$$$$$      $$$$$$$$$$$$$$        $$$$$
                   $$$$$$$$     $$$$$$$$$$$$$   $$$$$$$
                      $$$$$$$$$$$  $$$$$$$$$$$$$$$$$
                         $$$$$$$$$$$$$$$$$$$$$$
                                 $$$$$$$$$$$$$$$
                                     $$$$$$$$$$$$
                                      $$$$$$$$$$$
                                       $$$$$$$$

Rubin, 110

Gleiche Technik. Weniger Code. Weniger kunstvoll. Sieht aus, als hätte jemand einen Plastik-Smiley geschmolzen. : -}

w=?$;"TXANdAKQGZAHSI[AGaGRAFaIRAFPGeAGQJ_AHURQAJkANc
TX".codepoints{|r|r-=68;$><<(r<0??\n:(w=w==?$?' ':?$)*r)}

Ausgabe:

                $$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$     $$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$   $$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$$$$$$$$$$$
  $$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$$$              $$$$$$$$$$$$$
      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                $$$$$$$$$$$$$$$$$$$$
Darren Stone
quelle
Zählt das zweite Beispiel? Es gibt keinen Kreis um das Gesicht.
Kevin - Reinstate Monica
1
@ Kevin, guter Punkt. Geändert.
Darren Stone
24

QBasic ASCII, 134 (nicht optimiert)

SCREEN 1
PRINT CHR$(1)
FOR i = 0 TO 64
  x = i \ 8
  y = i MOD 8
  LOCATE y + 2, x + 1
  IF POINT(x, y) THEN PRINT "X"
NEXT

Diese Antwort schummelt völlig, indem sie das ASCII-Zeichen 1 für ihren Smiley verwendet. Im Gegensatz zu den Antworten BF und "Nur-Text" werden jedoch die Regeln eingehalten, indem ASCII-Grafiken auf der Grundlage der Pixel des Smiley-Zeichens erstellt werden, anstatt das Zeichen einfach als vollständige Lösung zu drucken. Die nicht optimierte Version gibt an, wie die IDE von QBasic die Dateien speichert. Die IDE ist "hilfreich", um die Syntax für uns zu korrigieren und viel Leerzeichen hinzuzufügen, wenn dies "benötigt" wird.

Ausgabe: QBasic ASCII-Smiley nicht optimiert

QBasic ASCII, 80 (optimiert)

SCREEN 1
?"☺"
FOR i=0TO 64
x=i\8
y=i MOD 8
LOCATE y+2,x+1
?CHR$(POINT(x,y))
NEXT

Dies ist eine optimierte Version des ersten Codebeispiels, das noch in QBasic geladen wird. Dinge, die getan wurden:

  • Alle unnötigen Leerzeichen wurden entfernt. (D'uh!)
  • Die CRLF-Zeilenumbrüche wurden nur in LF geändert.
  • Wird CHR$(1)durch eine Zeichenfolge ersetzt, die das tatsächliche Zeichen enthält. (Hier mit einem passenden Unicode-Zeichen dargestellt. Wenn Sie den Code tatsächlich ausprobieren möchten, ersetzen Sie ihn mit einem Hex-Editor durch ein echtes ASCII-Zeichen 1.)
  • Ersetzt PRINTdurch ?, wie es die BASIC-Tradition vorsieht.
  • Ersetzte die IFZeile durch eine Zeile, die Zeichen basierend auf dem Quellpixelwert druckt. Dies ist entweder 0 oder 3. 0 ist die Farbe Schwarz. Zeichen 0 gibt ein Nullzeichen aus, das wie ein Leerzeichen behandelt wird. 3 ist die Farbe Weiß in der 4-Farben-Palette von CGA. ASCII-Zeichen 3 ist ein Herz.

Ausgabe: QBasic ASCII smile optimiert

QBasic grafisch, 83 (Whitespace optimiert)

SCREEN 1
CIRCLE(50,50),50
CIRCLE(50,50),30,,4,5.4
CIRCLE(30,40),10
CIRCLE(70,40),10

Warten Sie, ich frage Sie hier, können Sie nicht einfach die integrierten Grafikbefehle von QBasic verwenden? Sicher, aber das spart Ihnen aufgrund der Ausführlichkeit der Sprache eigentlich keine Bytes. Aber es hat eine eingebaute Funktion, um nur einen Kreisbogen zwischen zwei gegebenen Winkeln zu zeichnen, was schön ist. Die Winkel werden im Bogenmaß angegeben 4und entsprechen in 5.4etwa einem Kreisbogen, der symmetrisch zentriert ist π*3/2, oder wenn Sie sich der guten Seite angeschlossen haben τ*3/4.

Ausgabe: QBasic grafischer Smiley optimiert

Hinweis: Die Größenangaben in dieser Antwort geben an, wie groß die Datei in Byte ist.

nitro2k01
quelle
Ich fühle, dass ich die jüngste Person hier sein kann, die noch QBASIC lesen kann ... :) Nice one
Apnorton
12

APL, 97 Zeichen / Byte *

(63⍴1 0)\' /%'[1+(12≥⊃+/¨2*⍨m+¨⊂6 ¯6)+((⍉18<(⍴n)⍴⍳32)∧28≥|100-n)+256≥n←⊃+/¨2*⍨m←x∘.,|x←¯16.5+⍳32]

Es funktioniert, indem ein paar Kreisgleichungen berechnet werden. Getestet auf GNU APL .

Ausgabe Smiley-Ausgabe ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL kann in einem eigenen (älteren) Einzelbyte -Zeichensatz geschrieben werden, der APL-Symbole den oberen 128-Byte-Werten zuordnet
. Aus diesem Grund kann ein Programm mit N Zeichen , das nur ASCII-Zeichen und APL-Symbole verwendet, als N Byte lang betrachtet werden.

Tobia
quelle
11

Bash, 63 Zeichen

echo $'$the_cow=""'>.cow;cowsay -f ./.cow $'O O\n\n\_/';rm .cow

Ausgabe:

 _____
/ O O \
|     |
\ \_/ /
 -----

Kunst:

Kühe.

ymbirtt
quelle
9

Bash, 22 Zeichen

wget x.co/3WG0m -q -O-

Beispielausgabe: Bildbeschreibung hier eingeben

Bearbeiten: Dies könnte weiter golfen werden, wie von mehreren Personen vorgeschlagen. Die kürzeste in sich geschlossene Version, die bisher gefunden wurde, ist:

curl -L x.co/3WG0m

(danke nitro2k01)

Randalieren
quelle
2
Könnte optimiert werden curl -L x.co/3WG0m. Könnte weiter optimiert werden, wenn wir einen lokalen, aus einem Zeichen bestehenden Hostnamen haben, der auch die Daten direkt -L
zurückgibt
4
Wo ist die Herausforderung, einen Smiley im Pastebin zu posten und ihn mit wget herunterzuladen?
S3LPH
@the_Seppi: das ist genau der Witz. Es ist als eine Lösung gedacht, die das Denken über den Tellerrand hinaus ermöglicht.
Aufstand
1
Wir müssen jemanden mit Zugang zu den Root-Nameservern finden und ihn überzeugen, eine Domain hinzuzufügen Z, die auf einen Server verweist, auf dem die Datei gehostet wird.
Marinus
1
schön, das ist mein Favorit :)
jcora
9

Python 247 230 227 Charaktere - und eine niedlichere Version

from matplotlib.pyplot import*
from numpy import*
y=x=arange(-8,11,.1)
x,y=meshgrid(x,y)
contour(x,y,(x*x*(x**2+2*y*y-y-40)+y*y*(y*y-y-40)+25*y+393)*((x+3)**2+(y-5)**2-2)*((x-3)**2+(y-5)**2-2)*(x*x+(y-2)**2-64),[0])
show()

Bildbeschreibung hier eingeben

Python 243-Zeichen - Verwenden von Farben

from pylab import*
from numpy import*
y=x=arange(-9,11,.1)
x,y=meshgrid(x,y)
contourf(x,y,(x*x*(x**2+2*y*y-y-40)+y*y*(y*y-y-40)+25*y+393)*((x+3)**2+(y-5)**2-2)*((x-3)**2+(y-5)**2-2)*(x*x+(y-2)**2-64),1,colors=("#F0E68C",'#20B2AA'))
show()

Bildbeschreibung hier eingeben

Abhijit
quelle
8

C ++ - 122 Zeichen ohne unnötige Leerzeichen

Das ist das Realistischste, was ich mir einfallen lassen könnte:

#include <iostream>

int main() {
  std::cout << "  |||||\n 0 . . 0\n0   ^   0\n0  \\_/  0\n 0     0\n  00000\n   888\n    8\n\n";
}

Für diejenigen unter Ihnen, die etwas verpassen, wird Folgendes erstellt:

ASCII-Kunstbild

Hosch250
quelle
2
return 0;ist in ISO C ++ nicht erforderlich :)
Schuh
Vielen Dank. Das hilft, Zeichen in zukünftigen Rätseln zu schneiden.
Hosch250
6
cowsay -f calvin Hey, What´s up?
 _________________
< Hey, What´s up? >
 -----------------
 \                   .,
   \         .      .TR   d'
     \      k,l    .R.b  .t .Je
       \   .P q.   a|.b .f .Z%      
           .b .h  .E` # J: 2`     .
      .,.a .E  ,L.M'  ?:b `| ..J9!`.,
       q,.h.M`   `..,   ..,""` ..2"`
       .M, J8`   `:       `   3;
   .    Jk              ...,   `^7"90c.
    j,  ,!     .7"'`j,.|   .n.   ...
   j, 7'     .r`     4:      L   `...
  ..,m.      J`    ..,|..    J`  7TWi
  ..JJ,.:    %    oo      ,. ....,
    .,E      3     7`g.M:    P  41
   JT7"'      O.   .J,;     ``  V"7N.
   G.           ""Q+  .Zu.,!`      Z`
   .9.. .         J&..J!       .  ,:
      7"9a                    JM"!
         .5J.     ..        ..F`
            78a..   `    ..2'
                J9Ksaw0"'
               .EJ?A...a.
               q...g...gi
              .m...qa..,y:
              .HQFNB&...mm
               ,Z|,m.a.,dp
            .,?f` ,E?:"^7b
            `A| . .F^^7'^4,
             .MMMMMMMMMMMQzna,
         ...f"A.JdT     J:    Jp,
          `JNa..........A....af`
               `^^^^^'`
s3lph
quelle
5

PHP, viele andere Sprachen ... - 1601 Zeichen

                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$
   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$
oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$
"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$
  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$
   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$
    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o
   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o
   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o
  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$
  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""
 """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o      o$$$$$$o"$$$$o        o$$$$
                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""
                     ""$$$$$oooo  "$$$o$$$$$$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""  

Quelle für Smileys: Asciiworld.com: Smiley

Justin
quelle
4

HTML, CSS

Ich weiß, dass es weder eine kurze noch eine echte Codierung ist, aber ich wollte dies trotzdem posten

<head>
<style>

#a{
width:100px;
height:100px;
border-radius:50px;
border: 1px solid black; 
}
#b{
position: absolute;
top:30px;
left:30px;
width:20px;
height:20px;
border-radius:10px;
border: 1px solid black;
}
#c{
position: absolute;
top:0px;
left:40px;
width:20px;
height:20px;
border-radius:10px;
border: 1px solid black;
}#d{
position: absolute;
top:30px;
left:-30px;
width:40px;
height:20px;
border-radius:10px;
border: 1px solid black;
}
</style>
</head>
<body>
<div id="a">
<div id="b"/>
<div id="c"/>
<div id="d"/>
</div>
</body>

jsFiddle

s3lph
quelle
Vielleicht würde es besser aussehen mit #d{border-radius:20px/10px;}. Oder mit #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. Oder mit #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
Manatwork
4

Rebmu , 24 Zeichen

Oh, die minimale Menschlichkeit. :-) Das bisher am wenigsten beeindruckende Rebmu-Programm, bei dem pHp gezielt als Hommage an die blaue Pille in der Programmierwelt eingebettet wurde :

H{ -- }pHp{|..|^/|\/|}pH

Ausführung:

>> rebmu [H{ -- }pHp{|..|^/|\/|}pH]
 -- 
|..|
|\/|
 -- 

Erläuterung

Rebmu ist nur ein Dialekt von Rebol . Es erbt die Analysebeschränkungen, verwendet abgekürzte Begriffe ohne durch Großschreibung getrennte Leerzeichen. Es wird eine Sonderbehandlung angewendet, wenn der erste Durchgang aktiviert oder nicht aktiviert ist.

(Anstatt Begriffe wie AbcDefGhidiese zu trennen , kann man die Differenz zwischen ABCdefGHIund verwenden abcDEFghi, um ein bisschen Information herauszupressen. Sequenzen, deren Abläufe in Großbuchstaben beginnen, werden getrennt, so dass der erste Begriff ein "gesetztes Wort!" Darstellt, das oft kontextuell als Wunsch interpretiert wird für eine Aufgabe siehe Video )

Wenn Sie dies in native Rebol übersetzen möchten, müssen Sie solche Dinge akzeptieren, die mit einem Großbuchstaben H beginnen, um zu bedeuten, dass es sich tatsächlich um ein h:und nicht um ein handelt h. Die Quelle ist also analog zu:

h: { -- }
print h
print {|..|^/|\/|}
print h

Weist den String --h zu (mit asymmetrischen Stringtrennzeichen, weilprint {"Isn't it nice," said {Dr. Rebmu}, "when you have asymmetric multi-line string delimiters with no need for escaping matched nested pairs, and that accept apostrophes and quotes too?"}

Gibt h einmal aus, gibt einen anderen String aus, in dem ^/die Escape-Sequenz für Newline steht (Carets werden in der Software weniger verwendet als Backslashes, die häufig in Pfaden vorkommen) , gibt h erneut aus.

Dr. Rebmu
quelle
4

JavaScript 262 251

Edit: Bessere Augen hinzugefügt.

Druckt ein Smiley-Gesicht in die Konsole.

Möglicherweise gehen einige Zeichen verloren, um meine Bitmaske zu vereinfachen und ein weniger hübsches Gesicht zu drucken, oder Sie verwenden eine Kreisgleichung anstelle einer Ellipse, um den Zeichenabstand zu berücksichtigen - aber das ist nicht der Sinn.

Sie können die rVariable ändern, um die Größe zu ändern und ein mehr oder weniger detailliertes Gesicht zu erhalten. Jede Zahl >=7 && <=99liefert ein gutes Ergebnis und bleibt innerhalb der Zeichenbegrenzung.

function c(e,t,n){return t/2*Math.sqrt(1-e*e/(n*n))+.5|0}r=42;p=r/2;q=p/5;s="";for(y=-p;++y<p;){for(x=-r;++x<r;){d=c(y,r*2,p);e=c(y+q,r/5,q);f=e-p;g=e+p;h=c(y,r*1.3,r/3);s+=x>=d||x<=-d||x>=-g&&x<f||x<=g&&x>-f||y>q&&x>-h&&x<h?" ":0}s+="\n"}console.log(s)

Für Menschen lesbar:

function c(y,w,h){return w/2*Math.sqrt(1-y*y/(h*h))+0.5|0}
r = 42
p = r/2
q = p/5
s = ''
for (y = -p; ++y < p;) {
  for (x = -r; ++x < r;) {
    d = c(y,r*2,p)
    e = c(y+q,r/5,q)
    f = e - p
    g = e + p
    h = c(y,r*1.3,r/3)
    s+=(x>=d||x<=-d||(x>-g&&x<f)||(x<g&&x>-f)||(y>q&&(x>-h&&x<h)))?' ':0
  }
  s += '\n'
}
console.log(s)

Ausgabe:

Smiley in der Konsole

Mein erstes Golfspiel dürfte also einige Verbesserungen bringen.

George Reith
quelle
4

Perl, 106 Zeichen

Es handelt sich um einen Perl-Oneliner. Sie müssen ihn nur an der Eingabeaufforderung abrufen, sofern das Perl- Acme::EyeDropsModul bereits auf dem Computer installiert ist.

touch temp && perl -MAcme::EyeDrops='sightly' -e 'print sightly({Shape=>"smiley", SourceFile => "temp" } );'

Bildbeschreibung hier eingeben

Ein anderer Weg, ein Smiley mit Pulling a Face

     touch temp && perl -MAcme::EyeDrops='sightly' -e 'print sightly({Shape=>"smiley2",SourceFile=>"temp"});'

Bildbeschreibung hier eingeben

Noch ein anderer Weg, ein Smiley mit auf den Kopf gestelltem Gesicht,

 touch temp && perl -MAcme::EyeDrops='sightly' -e 'print sightly({Shape=>"smiley2",SourceFile=>"temp",RotateFlip=>'true',Rotate=>'180'});'

Bildbeschreibung hier eingeben

Neha Sangore
quelle
4

Bash + ImageMagick: 137 Zeichen

c=circle
convert -size 99x99 xc: -draw "fill #ff0 $c 49,49,49" -fill 0 -draw "$c 30,35,30,30 $c 70,35,70,30 ellipse 50,60,25,20,0,180" x:

Beispielausgabe:

grafischer smiley

Aber da dies eine Herausforderung für ...

Bash + ImageMagick: 172 Zeichen

d=-draw
p=-pointsize
convert -size 99x99 xc: -font times.ttf $p 140 -stroke 0 -fill \#ff0 $d 'text 0,96 O' $p 40 $d 'text 25,50 "o 0"' $p 50 $d 'rotate 95 text 50,-40 D' x:

Beispielausgabe:

ASCII-Smiley

Mann bei der Arbeit
quelle
3

GolfScript, 27

Dies gibt das 2. Beispiel genau so aus, wie es angegeben ist.

' .'3*.'
. o o .
. \_/ .
'\

Erstens kann man das genauso machen, aber ich finde das zweite sieht schöner aus :)

aditsu
quelle
2

Brainf *** - 2

+.

Drucke oder ASCII-Wert 1. (funktioniert möglicherweise auf einigen Plattformen nicht)

Justin
quelle
Nitpick: ASCII 1 ist SOH, ein nicht druckbares Zeichen. Dieser Smiley ist U + 263A oder 1 in CP437, was Sie wahrscheinlich verwenden. Leider wird die Bedingung nicht erfüllt, dass ausreichend Einheiten für Augen und Mund verwendet werden.
Christopher Creutzig
2
@ChristopherCreutzig Diese Bedingung ist nicht falsch. Jedes Auge hat ungefähr 1 Pixel, der Mund ist mehr als doppelt so groß.
Justin
Die exp. "ASCII ART" besteht aus zwei Teilen. Ich sehe keine von ihnen hier
31.12.13
2

Bash - Einzeiler: 442 Zeichen

c(){ e "define a(i){scale=scale(i);return(sqrt(i*i));};""$@"|bc -l;};e(){ echo "$@";};s(){ h=$1;c=$2;if [ -z $c ];then c=" ";fi;while (($((h=h-1))>0));do e -n "$c"; done; };m(){ t=`c 2*$1`;while (($((t=t-1))));do l=`c a\($1-$t\)+1`;s $l;q=`c 2*\($1-$l\)`;w=`s $q`;if (($l>$t&&$l<($t+3)&&$q>2)); then w=" "`s $((q-2)) 0`" ";elif (($t>($1+1)&&$q>3));then g=`s $(((q-1)/2)) 0`;w=" $g $g ";fi;e -n +;if [ ! -z "$w" ];then e -n "$w+";fi;e;done;};

Beispielausgabe: (aufgerufen von m 8)

       +
      + +
     +   +
    + 0 0 +
   + 00 00 +
  + 000 000 +
 +           +
+             +
 +           +
  +         +
   +       +
    + 000 +
     +   +
      + +
       +

Irgendwie verrückt, aber ich habe mich dafür entschieden, einen Diamanten anstelle eines Kreises zu verwenden. Die Augen sind von einer Schutzbrille bedeckt.

BASH - 252 Zeichen (danke @manatwork)

s(){ (($1>1))&&echo -n "${2:- }"&&s $[$1-1] $2;};m(){ ((t=2*$1));while ((t=t-1));do v=$[$1-t];l=$[${v#-}+1];s $l;q=$[2*($1-l)];w=`s $q`;((l>t&&l<t+3&&q>2))&&w=" `s $[q-2] 0` ";((t>$1+1&&q>3))&&{ g=`s $[(q-1)/2] 0`;w=" $g $g ";};echo "+${w:+$w+}";done;}
Tyzoid
quelle
1
Cool. Mit dieser Form könnte es mein Gravatar-Bild ersetzen. :) Es kann auf 252 Zeichen reduziert werden: s(){ (($1>1))&&echo -n "${2:- }"&&s $[$1-1] $2;};m(){ ((t=2*$1));while ((t=t-1));do v=$[$1-t];l=$[${v#-}+1];s $l;q=$[2*($1-l)];w=`s $q`;((l>t&&l<t+3&&q>2))&&w=" `s $[q-2] 0` ";((t>$1+1&&q>3))&&{ g=`s $[(q-1)/2] 0`;w=" $g $g ";};echo "+${w:+$w+}";done;}. Oder 245, wenn Sie die Funktion m aufgeben und den Code in eine Skriptdatei einfügen. Wahrscheinlich kann man die Zahl der Berechnungen noch weiter reduzieren, aber dafür habe ich jetzt keine Zeit.
Handarbeit
2

HTML + CSS, 83

<div><a>o<a>o</a><hr><hr><style>a,div{width:2em;border:2px solid;border-radius:8px

Screenshot (mit Firefox): Bildbeschreibung hier eingeben

schade, dass ich mit meiner antwort zu spät bin (habe +10 rep auch ziemlich spät ...)

Leo Pflug
quelle
Ich mag es mehr mit border-radius:50%und einer Single <hr>: dabblet.com/gist/8472397
manatwork
@manatwork oder so: jsfiddle.net/T9BdL/1
Tim Seguine
1
@ TimSeguine, mit einem wörtlichen nicht unterbrechenden Leerzeichen ist kürzer als &nbsp;: jsfiddle.net/T9BdL/2
manatwork
1
Augen, die das Gesicht überlappen, verstoßen gegen die Regeln, denke ich. Deshalb habe ich es so gemacht, wie es derzeit ist. Außerdem erinnert es mich ein bisschen an das Gesicht der Kanadier im South Park.
Leo Pflug
2
Nicht wirklich golfen, aber wie gewünscht, eine Nur- CSS-
Tim Seguine
1

GolfScript, 18

Dieses Programm verwendet einige binär codierte Werte, die in einem Texteditor als seltsame / ungültige Zeichen angezeigt werden.

Hier ist der Hex-Dump:

00000000  27 c1 94 80 a2 9c c1 27  7b 32 62 61 73 65 20 70  |'......'{2base p|
00000010  7d 25                                             |}%|

Hinweis: Es funktioniert nicht in einem UTF-8-Gebietsschema, aber zum Beispiel mit ISO-8859-1.

Die erweiterte Version mit Escapezeichen:

"\xc1\x94\x80\xa2\x9c\xc1"{2base p}%

Ausgabe:

[1 1 0 0 0 0 0 1]
[1 0 0 1 0 1 0 0]
[1 0 0 0 0 0 0 0]
[1 0 1 0 0 0 1 0]
[1 0 0 1 1 1 0 0]
[1 1 0 0 0 0 0 1]

Für eine schönere Ausgabe können Sie den Block ersetzen, durch {2base{38+}%n}den die Binärversion auf 23 Byte gebracht wird. Erweiterte Version:

"\xc1\x94\x80\xa2\x9c\xc1"{2base{38+}%n}%

Ausgabe:

''&&&&&'
'&&'&'&&
'&&&&&&&
'&'&&&'&
'&&'''&&
''&&&&&'
aditsu
quelle
1

JavaScript

Dieser Code muss f12auf dieser Seite eingegeben werden:

console.log(document.getElementsByTagName("code")[0].innerHTML)

Ausgabe:

 0 0 0    . . .
0 . . 0  . o o .
0 --- 0  . \_/ .
 0 0 0    . . .
kitcar2000
quelle
1

CJam, 18

Ich habe mich für einen kurzen Code entschieden ... Probieren Sie es hier aus .

" ##O#- #"2/{_(N}%

Erläuterung

" ##O#- #"      "Push a string onto the stack";
2/              "Split it into an array of two-character groups";
{_(N}%          "For each item in the array, execute _(N : duplicate the element,
                 remove the first character and place it onto the stack after what's left,
                 and push a new line.";

Dies nutzt die Symmetrie des von mir entworfenen Smileys aus.

Ausgabe

 ## 
#OO#
#--#
 ## 

quelle
1
Dieses Gesicht lächelt es nicht;).
Optimierer
@Optimizer Es kommt einem Lächeln näher als dies ... Aufgrund der Symmetrie kann man hier kein Lächeln haben.
Verwenden uufür das Lächeln ist eine Option, wenn Sie für diese "Katze" Art von Lächeln gehen ...
mbomb007
1

Python

smileyFace = '''
       000000000000000
      00000000000000000
     000000   00   00000
    0000000 . 00 . 000000
   00000000   00   0000000
  0000000000000000000000000
 000000 . 00000000 . 0000000
  000000 . 000000 . 0000000
   0000000 ....... 0000000
    000000000000000000000
     0000000000000000000
      00000000000000000'''
print(smileyFace)

print('  _________\n /         \\\n |  /\\ /\\  |\n |    -    |\n |  \\___/  |\n \\_________/');

Ausgabe:

  _________
 /         \
 |  /\ /\  |
 |    -    |
 |  \___/  |
 \_________/
Oliver Ni
quelle
Im zweiten Beispiel fehlt der Kreis
Jasen
@Jasen Ich habe es behoben.
Oliver Ni
0

Python, 42

print ' 0 0 0 \n0 . . 0\n0 --- 0\n 0 0 0 '
user80551
quelle
0

HTML 5: 321 Zeichen

<canvas id=a><script>_=document.getElementById("a"),c=_.getContext("2d"),p=Math.PI,P=2*p;C();c.arc(95,85,40,0,P);B();c.lineWidth=2;c.stroke();c.fillStyle="red";C();c.arc(75,75,5,0,P);B();C();c.arc(114,75,5,0,P);B();C();c.arc(95,90,26,p,P,true);B();function C(){c.beginPath()};function B(){c.closePath();c.fill()}</script>

Fiddle: http://jsfiddle.net/wfNGx/

Bildbeschreibung hier eingeben

Quelle: http://www.codecademy.com/courses/web-beginner-en-SWM11/0/1

Clyde Lobo
quelle
0

Shell-Befehl oder eingebaut

$ echo -e ' ,---.\n/ o o \\\n\ \\_/ /\n `---´'
 ,---.
/ o o \
\ \_/ /
 `---´
$ printf ' ,---.\n/ o o \\\n\ \\_/ /\n `---´\n'
 ,---.
/ o o \
\ \_/ /
 `---´

Abhängig von der Version Ihrer Shell oder Ihres Befehlssatzes echokönnen Sie Steuerzeichen mit oder ohne interpretieren oder nicht interpretieren -e(... und ich fordere, dass ich Vroomfondel sein darf oder nicht!) schlägt fehl, mit printfsollte eine sichere Wette sein ...

Yeti
quelle
0

C 178 Zeichen:

Quelle (Leerzeichen hinzugefügt - alle können entfernt werden, außer um int x

int x,y;
c(a,b,r)
{
  return  (x-a)*(x-a) + (y-b)*(y-b) < r*r;
}

main()
{
  for(x=9;x>=-9;--x)
  {
     for(y=-9;y<=9;++y)
       putchar(32<<(
         c(0,0,10)&&!(c(4,4,2)|c(4,-4,2)|c(3,0,8)&!c(7,0,10))
       ));
     putchar(10);}
 }

Ausgabe:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Jasen
quelle