Stampa una faccina sorridente


48

Requisiti

Per il bene della sfida definiamo un'unità :

Un'unità è definita come qualsiasi punto che componga la griglia in cui viene disegnata la faccia (pixel per lo schermo, caratteri per l'arte ASCII, ecc.).

I requisiti minimi per il viso sono:

Una faccina è composta da una forma che ricorda un cerchio (non necessariamente perfetto) di qualsiasi raggio. Ci deve essere almeno 1 unità per ciascuno dei due occhi e almeno 2 unità per la bocca. Sia gli occhi che la bocca dovrebbero essere nella forma del viso. La bocca può essere orientata come vuoi (felice, triste, indifferente, ecc.).

Ecco un esempio dell'output:

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

obiettivi

Naturalmente l'obiettivo principale è quello di trovare il codice più breve possibile, ma anche l' arte è importante.

Vincitore

Il vincitore viene scelto in base alla quantità di voti degli utenti, almeno nei prossimi 5 giorni.



5
Caspita, 8 domande sulla lista delle domande calde. Il nostro sito dovrebbe ricevere più traffico.
Justin il

Il viso indifferente non è forse più facile che felice, e talvolta triste più difficile?
o0 '.

2
Non ho intenzione di farne una risposta dal momento che non soddisfa i requisiti minimi, ma volevo suonare ... alt + 1e alt + 2produrrà ☺ e ☻ rispettivamente. Per ragioni di argomenti, prenderò in considerazione il alttasto premere un carattere e chiamarlo con 2 caratteri.
Dryden Long

1
Questa discussione finirà mai? :)
Avall

Risposte:


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

versione ottimizzata (con alcuni miglioramenti e senza spazi bianchi non necessari)

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

Beh .. forse non è così corto come vorresti, ma non è certo convenzionale. Sembra migliore quando il tuo browser è ingrandito. Mi è davvero piaciuta la tua domanda! Se vuoi aumentare i dettagli, riduci dleggermente la variabile.

modifica: Sfortunatamente non posso eseguirlo su jsfiddle ma puoi incollarlo sulla console Javascript nel browser aby. Oh, e attiva i popup nella pagina :).

edit2: Puoi eseguirlo creando un nuovo file html e incollare il codice in esso:

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

Quindi quando lo esegui e non succede nulla, abilita solo le finestre popup e ricarica la pagina. Inoltre incollo immagine dello schermo


23
Nel nome di Bwian di Giudea, che cos'è questo ...
nitro2k01

2
Adesso funziona. Mi ci sono voluti circa 2m per chiudere tutti i popup
s3lph

7
Dopo aver trascorso così tanto tempo a provare a disabilitare i popup fastidiosi, abilitarli è difficile. Ho disabilitato adBLock e ho permesso tutti i popup nel mio browser ... dopo che appare metà del viso, decide di riattivare il blocco!
Carità Leschinski il

4
Incredibile pensiero immediato! Non avrei mai pensato di fare qualcosa del genere.
Gari BN,

4
È straordinariamente originale!
Oberon,

66

HTML, 200 141 caratteri

Grazie a inutilmente , ho tagliato questo fino a 141 caratteri :

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

Ecco l'HTML originale:

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

Funziona meglio su piccoli schermi:

: - |


4
Questa è arte : P
Scarpa

3
Non è necessario chiudere la maggior parte dei tag (la maggior parte dei browser lo gestirà), non è necessario definire il tipo di input (il testo è predefinito) e non chiudere <br> (html5). Ecco il codice ottimizzato con solo 150 caratteri :): jsfiddle.net/avall/TdPkF
avall

@avall Eccellente, grazie :-)
ossifrage schizzinoso

158 caratteri e ora centra i capelli in modo che appaia bene su qualsiasi schermo di dimensioni. jsfiddle.net/TdPkF/5
AverageMarcus

1
@squeamishossifrage Dovresti rimuovere tutti i peli tranne 3, e poi sarebbe Homer Simpson!
mbomb007,

55

Brainfuck: 583 caratteri (senza contare gli spazi bianchi)

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

Produzione:

\|/ ____ \|/       
 @~/ ,. \~@        
/_( \__/ )_\       
   \__U_/

11
Il codice originale sembra un po 'una faccia (se ci provi davvero ...), mi chiedo quanto sarebbe difficile rendere il codice e l'output entrambi facce ...
w4etwetewtwet,

1
@handuel Entrambi sono volti, ma diversi. Intendevi che il codice e l'output erano gli stessi di un quine? Sono sicuro che si può fare.
Sylwester,

Volevo solo che il codice fosse più simile a un volto, non mi rendevo conto che fosse intenzionale.
w4etwetewtwet,

1
In Brainfuck, tutto ciò che non è un personaggio di controllo è un commento. Ecco perché il codice sorgente può essere fatto sembrare uno smiley.
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>

Rendering in questo modo:

Smiley


Unità infinite?
user80551

6
Lo strumento giusto per il lavoro giusto.
Alpha,

Non direi che SVG sia davvero un linguaggio di programmazione
Oliver Ni

@Oliver È un linguaggio di programmazione tanto quanto l'HTML è ... (che non lo è).
mbomb007,

37

Ruby, 224

Douglas Adams sarebbe inorridito. :-P

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

Produzione:

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

Ruby, 110

Stessa tecnica. Meno codice. Meno abile. Sembra che qualcuno abbia sciolto uno smiley di plastica. : -}

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

Produzione:

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

Il secondo esempio conta? Non c'è cerchio attorno al viso.
Kevin - Ripristina Monica il

1
@ Kevin, buon punto. Modificato.
Darren Stone,

24

QBasic ASCII, 134 (non ottimizzato)

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

Questa risposta tradisce totalmente usando il carattere ASCII 1 per la sua faccina. Tuttavia, a differenza delle risposte BF e "testo semplice", in realtà obbedisce alle regole rendendo l'arte ASCII basata sui pixel del personaggio sorridente, piuttosto che semplicemente stampare il personaggio come soluzione completa. La versione non ottimizzata rappresenta il modo in cui l'IDE di QBasic salva i file. L'IDE sta "utilmente" sistemando la sintassi per noi e aggiungendo molto spazio bianco dove "necessario".

Produzione: Faccina ASCII di base non ottimizzata

QBasic ASCII, 80 (ottimizzato)

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

Questa è una versione ottimizzata del primo esempio di codice, che viene comunque caricato in QBasic. Cose che sono state fatte:

  • Rimosso tutto lo spazio bianco non necessario. (D'uh!)
  • Modificata la linea CRLF si interrompe solo in LF.
  • Sostituito CHR$(1)con una stringa contenente il carattere effettivo. (Qui illustrato con un carattere Unicode corrispondente. Se si desidera effettivamente provare il codice, si prega di sostituirlo con un vero carattere ASCII 1 utilizzando un editor esadecimale.)
  • Sostituito PRINTcon ?, come consente la tradizione BASIC.
  • Sostituita la IFriga con una riga che stampa i caratteri in base al valore del pixel di origine. Questo sarà 0 o 3. 0 è il colore nero. Character 0 stampa un carattere null che viene trattato come uno spazio. 3 è il colore bianco nella tavolozza a 4 colori di CGA. Il carattere ASCII 3 è un cuore.

Produzione: QBasic ASCII smile ottimizzato

QBasic graphic, 83 (spazi bianchi ottimizzati)

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

Ma aspetta, ti chiedo qui, non puoi semplicemente usare i comandi grafici integrati di QBasic? Certo, ma questo non ti farà risparmiare alcun byte, a causa della verbosità della lingua. Ma ha una funzione integrata per disegnare solo un arco circolare tra due angoli dati, il che è bello. Gli angoli sono date in radianti, ed 4e 5.4approssimano un arco di cerchio simmetricamente centrato intorno π*3/2, o se hai aderito il lato buono , τ*3/4.

Produzione: Faccina grafica QBasic ottimizzata

Nota: le dimensioni in questa risposta indicano la dimensione del file, in byte.


Sento che potrei essere la persona più giovane qui che può ancora leggere QBASIC ... :) Bello
apnorton

12

APL, 97 caratteri / 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]

Funziona calcolando alcune equazioni circolari. Testato su GNU APL .

Output uscita di smiley ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL può essere scritto nel proprio set di caratteri a byte singolo (legacy) che associa i simboli APL ai valori superiori di 128 byte. Pertanto, ai fini del calcolo del punteggio, un programma di N caratteri che utilizza solo caratteri ASCII e simboli APL può essere considerato lungo N byte.


11

Bash, 63 caratteri

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

Produzione:

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

artistry:

Mucche.


9

Bash, 22 caratteri

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

Uscita campione: inserisci qui la descrizione dell'immagine

Modifica: questo potrebbe essere ulteriormente approfondito, come suggerito da diverse persone. La versione autonoma più corta trovata finora è:

curl -L x.co/3WG0m

(grazie nitro2k01)


2
Potrebbe essere ottimizzato per curl -L x.co/3WG0m. Potrebbe essere ulteriormente ottimizzato se disponiamo di un nome host locale di un carattere che restituisce anche i dati direttamente (eliminando lo -Lswitch necessario per seguire i reindirizzamenti).
nitro2k01

4
Dov'è la sfida nel pubblicare una faccina in pastebin e scaricarla usando wget?
s3lph,

@the_Seppi: questo è esattamente lo scherzo. È inteso come una soluzione fuori dagli schemi.
Rivolta il

1
Dobbiamo trovare qualcuno con accesso ai nameserver di root e convincerlo ad aggiungere un dominio chiamato Zche punti a un server che ospita il file.
Marin

1
bellissimo, questo è il mio preferito :)
jcora il

9

Personaggi Python 247 230 227 - e una versione più carina

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()

inserisci qui la descrizione dell'immagine

Personaggi di Python 243 - Uso dei colori

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()

inserisci qui la descrizione dell'immagine


8

C ++ - 122 caratteri senza spazi non necessari

Questo è il più realistico che potrei inventare:

#include <iostream>

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

Per quelli di voi che si stanno perdendo, crea questo:

Immagine d'arte ASCII


2
return 0;non è richiesto in ISO C ++ :)
Scarpa

Grazie. Ciò contribuirà a tagliare i personaggi nei puzzle futuri.
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`
               `^^^^^'`

5

PHP, molte altre lingue ... - 1601 caratteri

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

Faccina fonte: Asciiworld.com: Faccina


4

HTML, CSS

So che non è né un codice breve né reale, ma volevo ancora pubblicare questo

<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


Forse starebbe meglio con #d{border-radius:20px/10px;}. O con #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. O con #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
arte

4

Rebmu , 24 caratteri

Oh, il minimo umanità. :-) Almeno il programma Rebmu meno impressionante, così intenzionalmente incorporando pHp come tributo alla pillola blu nel mondo della programmazione :

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

Esecuzione:

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

Spiegazione

Rebmu è solo un dialetto di Rebol . Eredita i vincoli di analisi, utilizza termini abbreviati senza spazi separati da serie di maiuscole. Ha un trattamento speciale quando la prima manche è capitalizzata contro non capitalizzata.

(Quindi piuttosto che separare termini come AbcDefGhiquesto può usare la differenza tra ABCdefGHIe abcDEFghiper estrarre un po 'di informazioni. Le sequenze le cui corse iniziano in maiuscolo sono separate in modo che il primo termine rappresenti una "parola-set!", Spesso contestualmente interpretata come un desiderio per un compito. vedi video )

Se vuoi tradurre questo in nativo Rebol, devi accettare cose del genere che iniziano con una H maiuscola per significare che in realtà è un h:e non un h. La fonte è quindi analoga a:

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

Assegna la stringa --a h (usando delimitatori di stringa asimmetrici perchéprint {"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?"}

Stampa h una volta, stampa un'altra stringa in cui si ^/trova la sequenza di escape per newline (i carrelli sono meno utilizzati nel software rispetto alle barre rovesciate che appaiono spesso nei percorsi) , stampa di nuovo h.


4

JavaScript 262 251

Modifica: aggiunti occhi migliori.

Stampa una faccina sorridente nella console.

Potrei perdere un bel po 'di caratteri per rendere la mia maschera di bit più semplice e stampare una faccia meno carina, oppure usare un'equazione del cerchio invece di un'ellisse per tenere conto della spaziatura dei personaggi, ma non è questo lo spirito.

È possibile modificare la rvariabile per cambiare la dimensione e ottenere una faccia più o meno dettagliata; qualsiasi numero >=7 && <=99darà un buon risultato e rimarrà nel limite del personaggio.

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)

Leggibile dagli umani:

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)

Produzione:

smiley in console

Il mio primo gioco di golf è quindi probabilmente un miglioramento.


4

Perl, 106 caratteri

È un onliner Perl, devi solo C&P al prompt dei comandi, a condizione che il Acme::EyeDropsmodulo Perl sia già installato sulla macchina.

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

inserisci qui la descrizione dell'immagine

Un altro modo, una faccina con Tirare una faccia

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

inserisci qui la descrizione dell'immagine

Ancora un altro modo, una faccina sorridente con la faccia capovolta,

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

inserisci qui la descrizione dell'immagine


4

Bash + ImageMagick: 137 caratteri

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:

Uscita campione:

faccina grafica

Ma poiché questa è una sfida di ...

Bash + ImageMagick: 172 caratteri

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:

Uscita campione:

Faccina ASCII


3

GolfScript, 27

Questo produce il secondo esempio esattamente come indicato.

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

Il primo può essere fatto allo stesso modo, ma penso che il secondo sia più bello :)


2

Brainf *** - 2

+.

Stampa o valore ascii 1. (potrebbe non funzionare con alcune piattaforme)


Nitpick: ASCII 1 è SOH, un carattere non stampabile. Quella faccina è U + 263A, o 1 in CP437, quello che probabilmente stai usando. Sfortunatamente, l'output non riesce a utilizzare abbastanza "unità" per gli occhi e la bocca.
Christopher Creutzig,

2
@ChristopherCreutzig Non manca questa condizione. Ogni occhio è di circa 1 pixel, la bocca è più del doppio.
Giustino,

L'esp. "ASCII ART" è composta da due parti. Non vedo nessuno dei due qui
s3lph

2

Bash - una fodera: 442 caratteri

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

Esempio di output: (chiamato da m 8)

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

Un po 'pazzo, ma ho scelto di usare un diamante invece di un cerchio. Gli occhi sono coperti da occhiali di sicurezza.

BASH - 252 caratteri (grazie @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;}

1
Freddo. Con quella forma potrebbe sostituire la mia immagine gravatar. :) Si può essere ridotta a 252 caratteri: 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;}. Oppure 245 se si rinuncia alla funzione m e si inserisce il codice in un file di script. Probabilmente può essere ridotto ancora di più modificando i calcoli, ma non ho tempo per quello ora.
arte

2

HTML + CSS, 83

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

screenshot (usando firefox): inserisci qui la descrizione dell'immagine

peccato che sia troppo tardi con la mia risposta (ho ricevuto +10 rep anche abbastanza tardi ...)


Mi piace di più con border-radius:50%un singolo <hr>: dabblet.com/gist/8472397
manatwork

@manatwork o in questo modo: jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine, usando un carattere letterale di spazio non-break è più breve di &nbsp;: jsfiddle.net/T9BdL/2
manatwork

1
Gli occhi sovrapposti al viso sono contro le regole, penso. Ecco perché l'ho fatto così com'è attualmente. Inoltre mi ricorda un po 'la faccia dei canadesi a South Park.
Leo Pflug,

2
Non proprio golf, ma come richiesto, una versione solo css: jsfiddle.net/T9BdL/9
Tim Seguine

1

GolfScript, 18

Questo programma utilizza alcuni valori con codifica binaria che appaiono come caratteri strani / non validi in un editor di testo.

Ecco la discarica esadecimale:

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

Nota: non funziona in una locale UTF-8, ma funziona bene con ISO-8859-1 per esempio.

La versione espansa con caratteri di escape:

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

Produzione:

[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]

Per un output migliore, è possibile sostituire il blocco con il {2base{38+}%n}quale porta la versione binaria a 23 byte. Versione estesa:

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

Produzione:

''&&&&&'
'&&'&'&&
'&&&&&&&
'&'&&&'&
'&&'''&&
''&&&&&'

1

JavaScript

Questo codice deve essere eseguito in f12questa pagina:

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

Produzione:

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

1

CJam, 18 anni

Ho deciso di cercare un codice funzione ... Provalo qui .

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

Spiegazione

" ##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.";

Questo sfrutta la simmetria della faccina che ho disegnato.

Produzione

 ## 
#OO#
#--#
 ## 

1
Questa faccia non sorride;).
Ottimizzatore il

@Optimizer È più vicino a un sorriso di questo ... A causa di come ho usato la simmetria, non puoi avere un sorriso qui.

Usare uuper il sorriso è un'opzione, se stai cercando quel tipo di sorriso "gatto" ...
mbomb007,

1

Pitone

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 \\_________/');

Produzione:

  _________
 /         \
 |  /\ /\  |
 |    -    |
 |  \___/  |
 \_________/

nel secondo esempio manca il cerchio
Jasen il

@Jasen l'ho risolto.
Oliver Ni il



0

Comando Shell o incorporato

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

A seconda del sapore della shell o del set di comandi, echopuò o meno interpretare i personaggi di controllo con o senza -e... (... e chiedo che io possa o meno essere Vroomfondel!) Provate ... e se tutto il resto fallisce, usare printfdovrebbe essere una scommessa sicura ...


0

C 178 caratteri:

sorgente (spazi bianchi aggiunti - tutto può essere rimosso tranne a 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);}
 }

produzione:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.