Imprime una cara sonriente


48

Requisitos

Por el bien del desafío, definamos una unidad :

Una unidad se define como cualquier punto que componga la cuadrícula en la que se dibuja la cara (píxeles para la pantalla, caracteres para el arte ASCII, etc.).

Los requisitos mínimos para la cara son:

Una cara sonriente se compone de una forma que se asemeja a un círculo (no necesariamente perfecto) de cualquier radio. Debe haber al menos 1 unidad para cada uno de los dos ojos y al menos 2 unidades para la boca. Tanto los ojos como la boca deben estar dentro de la forma de la cara. La boca puede orientarse como quieras (feliz, triste, indiferente, etc.).

Aquí hay un ejemplo de la salida:

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

Metas

Por supuesto, el objetivo principal es encontrar el código más corto posible, pero el arte también es importante.

Ganador

El ganador se elige en función de la cantidad de votos de los usuarios, en, al menos, los próximos 5 días.



55
Wow, 8 preguntas en la lista de preguntas calientes. Nuestro sitio debería estar recibiendo más tráfico.
Justin

¿No es la cara indiferente estrictamente más fácil que la feliz, y triste a veces más difícil?
o0 '.

2
No voy a hacer de esto una respuesta ya que no cumple con los requisitos mínimos, pero quería intervenir ... alt + 1y alt + 2produciré ☺ y ☻ respectivamente. En aras de la discusión, consideraré que la alttecla presiona un carácter y llamaré a eso 2 caracteres.
Dryden Long

1
¿Este hilo terminará alguna vez? :)
Avall

Respuestas:


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

versión optimizada (con algunas mejoras y sin espacios en blanco innecesarios)

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

Bueno ... tal vez no sea tan corto como te gustaría, pero no es convencional. Se ve mejor cuando su navegador está maximizado. Realmente disfruté tu pregunta! Si desea aumentar los detalles, simplemente reduzca dligeramente la variable.

editar: Desafortunadamente no puedo ejecutarlo en jsfiddle pero puedes pegarlo en la consola Javascript en cualquier navegador. Ah, y habilite las ventanas emergentes en la página :).

edit2: puede ejecutarlo haciendo un nuevo archivo html y pegar el código en él:

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

Luego, cuando lo ejecute y no ocurra nada, simplemente habilite las ventanas emergentes y vuelva a cargar la página. Además pego captura de pantalla


23
En nombre de Bwian de Judea, ¿qué es esto ...
Nitro2k01

2
Ahora funciona. Me tomó unos 2m cerrar todas las ventanas emergentes
s3lph

77
Después de pasar tanto tiempo tratando de deshabilitar ventanas emergentes molestas, habilitarlas es difícil. Inhabilité adBLock y permití todas las ventanas emergentes en mi navegador ... después de que aparece la mitad de la cara, ¡decide volver a activar el bloqueador!
Charity Leschinski

44
¡Increíble pensamiento listo para usar! Nunca pensaría hacer algo como esto.
Gari BN

44
¡Eso es excepcionalmente original!
Oberon

66

HTML, 200 141 caracteres

Gracias a la disponibilidad , he reducido esto a 141 caracteres :

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

Aquí está el HTML original:

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

Funciona mejor en pantallas pequeñas:

: - |


44
Esto es arte : P
Zapato

3
No tiene que cerrar la mayoría de sus etiquetas (la mayoría de los navegadores lo manejarán), no necesita definir el tipo de entrada (el texto es el predeterminado) y no cerrar <br> (html5). Aquí está el código optimizado con sólo 150 caracteres :): jsfiddle.net/avall/TdPkF
Avall

@avall Excelente, gracias :-)
squeamish ossifrage

158 caracteres y ahora centra el cabello para que se vea bien en pantallas de cualquier tamaño. jsfiddle.net/TdPkF/5
AverageMarcus

1
@squeamishossifrage Deberías eliminar todos menos 3 de los pelos, ¡y entonces sería Homer Simpson!
mbomb007

55

Brainfuck: 583 caracteres (sin contar espacios en blanco)

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

Salida:

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

11
El código original parece un poco a una cara (si intenta realmente duro ...), me pregunto lo difícil que sería hacer que el código de salida y ser ambas caras ...
w4etwetewtwet

1
@handuel Ambas son caras, pero diferentes. ¿Querías decir que el código y la salida son los mismos que una quine? Estoy seguro de que se puede hacer.
Sylwester

Solo quería que el código se pareciera más a una cara, no me di cuenta de que era intencional.
w4etwetewtwet

1
En Brainfuck, todo lo que no es un personaje de control es un comentario. Es por eso que se puede hacer que el código fuente parezca un 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>

Renders como este:

Smiley


Unidades infinitas?
user80551

66
La herramienta adecuada para el trabajo correcto.
Alfa el

No diría que SVG es realmente un lenguaje de programación
Oliver Ni

@Oliver Es tanto un lenguaje de programación como HTML ... (que no lo es).
mbomb007

37

Rubí, 224

Douglas Adams estaría horrorizado. :-PAGS

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

Salida:

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

Ruby, 110

La misma técnica Menos código Menos ingenioso Parece que alguien derritió una carita de plástico. : -}

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

Salida:

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

¿Cuenta el segundo ejemplo? No hay círculo alrededor de la cara.
Kevin - Restablece a Mónica el

1
@ Kevin, buen punto. Enmendado
Darren Stone

24

Q ASCII básico, 134 (sin optimizar)

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

Esta respuesta engaña totalmente al usar el carácter ASCII 1 para su carita sonriente. Sin embargo, a diferencia de las respuestas BF y "texto sin formato", en realidad obedece las reglas al hacer arte ASCII basado en los píxeles del carácter sonriente, en lugar de simplemente imprimir el carácter como su solución completa. La versión no optimizada representa cómo el IDE de QBasic guarda los archivos. El IDE está "ayudando" arreglando la sintaxis para nosotros y agregando mucho espacio en blanco donde "se necesita".

Salida: Smiley ASCII QBasic sin optimizar

QBasic ASCII, 80 (optimizado)

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

Esta es una versión optimizada del primer ejemplo de código, que aún se carga en QBasic. Cosas que se hicieron:

  • Se eliminaron todos los espacios en blanco innecesarios. (D'uh!)
  • Cambió los saltos de línea CRLF a LF solamente.
  • Reemplazado CHR$(1)con una cadena que contiene el carácter real. (Aquí se ilustra con un carácter Unicode correspondiente. Si realmente desea probar el código, reemplácelo con un carácter ASCII real 1 usando un editor hexadecimal).
  • Reemplazado PRINTcon ?, como la tradición BÁSICO permite.
  • Reemplazó la IFlínea con una línea que imprime caracteres en función del valor de píxel de origen. Será 0 o 3. 0 es el color negro. El carácter 0 imprime un carácter nulo que se trata como un espacio. 3 es el color blanco en la paleta de 4 colores de CGA. El carácter ASCII 3 es un corazón.

Salida: Sonrisa ASCII QBasic optimizada

QBasic gráfica, 83 (espacio en blanco optimizado)

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

Pero espera, aquí te preguntas, ¿no puedes usar los comandos gráficos integrados de QBasic? Claro, pero eso en realidad no le ahorrará bytes, debido a la verbosidad del idioma. Pero tiene una función incorporada para dibujar solo un arco circular entre dos ángulos dados, lo cual es bueno. Los ángulos se dan en radianes, y 4y 5.4se aproximan a un arco de círculo de forma simétrica en torno a π*3/2, o si se ha unido el lado bueno , τ*3/4.

Salida: Smiley gráfico QBasic optimizado

Nota: Los tamaños en esta respuesta indican lo grande que es el archivo, en bytes.


Siento que puedo ser la persona más joven aquí que todavía puede leer QBASIC ... :) Nice one
apnorton

12

APL, 97 caracteres / bytes *

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

Funciona calculando algunas ecuaciones circulares. Probado en GNU APL .

Salida salida sonriente ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL se puede escribir en su propio juego de
caracteres de un solo byte (heredado) que asigna símbolos APL a los valores superiores de 128 bytes. Por lo tanto, para fines de puntuación, un programa de N caracteres que solo usa caracteres ASCII y símbolos APL puede considerarse que tiene una longitud de N bytes.


11

Bash, 63 caracteres

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

Salida:

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

Arte:

Vacas


9

Bash, 22 caracteres

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

Salida de muestra: ingrese la descripción de la imagen aquí

Editar: esto podría ser más golf como lo sugieren varias personas. La versión autónoma más corta encontrada hasta ahora es:

curl -L x.co/3WG0m

(gracias nitro2k01)


2
Podría ser optimizado para curl -L x.co/3WG0m. Podría optimizarse aún más si tenemos una, el nombre de host de un carácter local, que también devolver los datos directamente (eliminando el -Linterruptor necesario para seguir redirecciones.)
nitro2k01

44
¿Dónde está el desafío al publicar un smiley en pastebin y descargarlo usando wget?
s3lph

@the_Seppi: esa es exactamente la broma. Está pensado como una solución innovadora.
Riot

1
Necesitamos encontrar a alguien con acceso a los servidores de nombres raíz y convencerlo de que agregue un dominio llamado Zque apunta a un servidor que aloja el archivo.
marinus

1
hermoso, este es mi favorito :)
jcora

9

Python 247 230 227 Personajes - y una versión más linda

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

ingrese la descripción de la imagen aquí

Personajes de Python 243: uso de colores

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

ingrese la descripción de la imagen aquí


8

C ++ - 122 caracteres sin espacios innecesarios

Esto es lo más realista que se me ocurrió:

#include <iostream>

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

Para aquellos de ustedes que se están perdiendo, esto crea esto:

Imagen de arte ASCII


2
return 0;no se requiere en ISO C ++ :)
Zapato

Gracias. Eso ayudará a cortar personajes en futuros rompecabezas.
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, muchos otros idiomas ... - 1601 caracteres

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

Fuente sonriente: Asciiworld.com: Smiley


4

html, css

Sé que no es una codificación corta ni real, pero todavía quería publicar esto

<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


Tal vez se vería mejor 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;}.
manatwork

4

Rebmu , 24 caracteres

Oh, la humanidad mínima . :-) Menos impresionante programa de Rebmu todavía, por lo que incrustar deliberadamente pHp como un tributo a la píldora azul en el mundo de la programación :

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

Ejecución:

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

Explicación

Rebmu es solo un dialecto de Rebol . Hereda las restricciones de análisis, utiliza términos abreviados sin espacios separados por corridas de mayúsculas. Tiene un tratamiento especial cuando la primera corrida se capitaliza vs no capitalizada.

(Por lo tanto, en lugar de separar términos como AbcDefGhieste, puede usar la diferencia entre ABCdefGHIy abcDEFghipara extraer un poco de información. Las secuencias cuyas ejecuciones comienzan en mayúsculas se separan de manera que el primer término representa una "palabra clave", a menudo interpretada contextualmente como un deseo para una tarea ver video )

Si desea traducir esto a Rebol nativo, debe aceptar cosas como esa, comienza con una H mayúscula para significar que en realidad es una h:y no una h. La fuente es, por lo tanto, análoga a:

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

Asigna la cadena -- a h (usando delimitadores de cadena asimétricos porqueprint {"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?"}

Imprime h una vez, imprime otra cadena donde ^/está la secuencia de escape para la nueva línea (los cuidados se usan menos en el software que las barras invertidas que aparecen a menudo en las rutas) , imprime h nuevamente.


4

JavaScript 262 251

Editar: agregó mejores ojos.

Imprime una cara sonriente en la consola.

Podría perder bastantes caracteres para simplificar mi máscara de bits e imprimir una cara menos bonita, o usar una ecuación circular en lugar de una elipse para explicar el espaciado entre caracteres, pero ese no es el espíritu.

Puede cambiar la rvariable para cambiar el tamaño y obtener una cara más o menos detallada; cualquier número >=7 && <=99dará un buen resultado y se mantendrá dentro del límite de caracteres.

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)

Legible por humanos:

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)

Salida:

smiley en consola

Es probable que mi primer juego de golf tenga algunas mejoras.


4

Perl, 106 caracteres

Es una línea de Perl, solo tiene que C&P en el símbolo del sistema, siempre que el Acme::EyeDropsmódulo Perl ya esté instalado en la máquina.

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

ingrese la descripción de la imagen aquí

Otra forma, una carita sonriente con una cara

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

ingrese la descripción de la imagen aquí

Otra forma más, un smiley con poner una cara al revés,

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

ingrese la descripción de la imagen aquí


4

Bash + ImageMagick: 137 caracteres

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:

Salida de muestra:

smiley gráfico

Pero como este es un desafío de ...

Bash + ImageMagick: 172 caracteres

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:

Salida de muestra:

Smiley ASCII


3

GolfScript, 27

Esto genera el segundo ejemplo exactamente como se indica.

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

La primera se puede hacer de la misma manera, pero creo que la segunda se ve mejor :)


2

Brainf *** - 2

+.

Impresiones o valor ascii 1. (podría no funcionar con algunas plataformas)


Nitpick: ASCII 1 es SOH, un carácter no imprimible. Ese smiley es U + 263A, o 1 en CP437, lo que probablemente estés usando. Desafortunadamente, su salida falla la condición de usar suficientes "unidades" para los ojos y la boca.
Christopher Creutzig

2
@ChristopherCreutzig No falla esa condición. Cada ojo tiene 1 o más píxeles, la boca es más del doble de grande.
Justin

El exp. El "ARTE ASCII" consta de dos partes. No veo ninguno de ellos aquí
s3lph

2

Bash - one liner: 442 caracteres

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

Ejemplo de salida: (llamado por m 8)

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

Un poco loco, pero elegí usar un diamante en lugar de un círculo. Los ojos están cubiertos por gafas de seguridad.

BASH - 252 caracteres (gracias @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
Bueno. Con esa forma podría reemplazar mi imagen gravatar. :) Puede ser reducido a 252 caracteres: 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;}. O 245 si abandonas la función my pones el código en un archivo de script. Probablemente se puede reducir aún más ajustando los cálculos, pero no tengo tiempo para eso ahora.
manatwork

2

HTML + CSS, 83

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

captura de pantalla (usando firefox): ingrese la descripción de la imagen aquí

lástima que llegue demasiado tarde con mi respuesta (obtuve +10 rep también bastante tarde ...)


Me gusta más con border-radius:50%un solo <hr>: dabblet.com/gist/8472397
manatwork

@manatwork o como este: jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine, el uso de un carácter de espacio literal que no se rompe es más corto que &nbsp;: jsfiddle.net/T9BdL/2
manatwork

1
Los ojos que se superponen a la cara están en contra de las reglas, creo. Por eso lo hice como es actualmente. También me recuerda un poco a la cara de los canadienses en South Park.
Leo Pflug

2
En realidad no es golf, pero como se solicitó, una versión solo css: jsfiddle.net/T9BdL/9
Tim Seguine

1

GolfScript, 18

Este programa utiliza algunos valores codificados en binario que aparecen como caracteres extraños / inválidos en un editor de texto.

Aquí está el volcado hexadecimal:

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

Nota: no funciona en un entorno local UTF-8, pero funciona bien con ISO-8859-1, por ejemplo.

La versión expandida con caracteres escapados:

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

Salida:

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

Para una salida más agradable, puede reemplazar el bloque con el {2base{38+}%n}que la versión binaria llega a 23 bytes. Versión ampliada:

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

Salida:

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

1

JavaScript

Este código debe ejecutarse en f12esta página:

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

Salida:

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

1

CJam, 18

Decidí ir por un código corto ... Pruébalo aquí .

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

Explicación

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

Esto explota la simetría de la cara sonriente que diseñé.

Salida

 ## 
#OO#
#--#
 ## 

1
Esta cara no sonríe;).
Optimizador

@Optimizer Está más cerca de una sonrisa que esto ... Debido a cómo he usado la simetría, no puedes tener una sonrisa aquí.

El uso uude la sonrisa es una opción, si usted va para que "gato" tipo de sonrisa ...
mbomb007

1

Pitón

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

Salida:

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

segundo ejemplo falta el círculo
Jasen

@Jasen lo arreglé.
Oliver Ni



0

Comando de shell o incorporado

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

Dependiendo del sabor de su shell o conjunto de comandos, echopuede o no interpretar caracteres de control con o sin -e... (... ¡y exijo que pueda o no ser Vroomfondel!) Solo intente ... y si todo lo demás falla, usar printfdebería ser una apuesta segura ...


0

C 178 caracteres:

fuente (espacio en blanco agregado: todo se puede eliminar excepto en 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);}
 }

salida:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.