Imprimir um rosto sorridente

48

Exigências

Para o desafio, vamos definir uma unidade :

Uma unidade é definida como qualquer ponto que compõe a grade na qual a face é desenhada (pixels para tela, caracteres para arte ASCII, etc.).

Os requisitos mínimos para o rosto são:

Um rosto sorridente é composto de uma forma que se assemelha a um círculo (não necessariamente perfeito) de qualquer raio. Deve haver pelo menos 1 unidade para cada um dos dois olhos e pelo menos 2 unidades para a boca. Os olhos e a boca devem estar no formato do rosto. A boca pode ser orientada como você quiser (feliz, triste, indiferente, etc.).

Aqui está um exemplo da saída:

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

Metas

Obviamente, o objetivo principal é criar o código mais curto possível, mas a arte também é importante.

Vencedora

O vencedor é escolhido com base na quantidade de votos dos usuários, pelo menos nos próximos 5 dias.

Sapato
fonte
5
Uau, 8 perguntas na lista de perguntas mais importantes. Nosso site deve estar recebendo mais tráfego.
Justin
O rosto indiferente não é estritamente mais fácil do que feliz e triste às vezes mais difícil?
o0 '.
2
Não vou fazer disso uma resposta, uma vez que não se encaixa nos requisitos mínimos, mas eu queria entrar em sintonia ... alt + 1e alt + 2produzirá ☺ e ☻ respectivamente. Por uma questão de argumento, considerarei a alttecla pressionada como um caractere e chamo isso de 2 caracteres.
Dryden Long
11
Esse tópico terminará? :)
avall

Respostas:

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

versão otimizada (com algumas melhorias e sem espaços em branco desnecessários)

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

Bem ... talvez não seja tão curto quanto você gostaria, mas não é convencional, com certeza. Parece melhor quando o seu navegador é maximizado. Gostei muito da sua pergunta! Se você deseja aumentar os detalhes, reduza dligeiramente a variável.

edit: Infelizmente não posso executá-lo no jsfiddle, mas você pode colá-lo no console Javascript no aby browser. Ah, e ative pop-ups na página :).

edit2: você pode executá-lo criando um novo arquivo html e colar o código nele:

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

Então, quando você executá-lo e nada acontecer, basta ativar as janelas pop-up e recarregar a página. Além disso, colo captura de tela

avall
fonte
23
Em nome de Bwian da Judéia, o que é isso ... #
nitro2k01 29/12/13
2
Agora está funcionando.
Demorei
7
Depois de gastar tanto tempo tentando desativar pop-ups irritantes, é difícil ativá-las. Desativei o adBLock e permiti todos os pop-ups no meu navegador ... depois que metade do rosto aparecer, ele decide ativar o bloqueador novamente!
Charity Leschinski
4
Incrível pensamento pronto para uso! Eu nunca pensaria em fazer algo assim.
precisa saber é o seguinte
4
Isso é excepcionalmente original!
Oberon
66

HTML, 200 141 caracteres

Graças a disponibilidade , reduzi isso para 141 caracteres :

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

Aqui está o 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 melhor em telas pequenas:

: - |

ossifrage melindroso
fonte
4
Isto é arte : P
Shoe
3
Você não precisa fechar a maioria das suas tags (a maioria dos navegadores lidará com isso), não precisa definir o tipo de entrada (o texto é o padrão) e não fecha <br> (html5). Aqui está o código otimizado com apenas 150 caracteres :): jsfiddle.net/avall/TdPkF
avall
@avall Excelente, graças :-)
ossifrage escrúpulos
158 caracteres e agora centraliza o cabelo para que fique bem em qualquer tamanho de tela. jsfiddle.net/TdPkF/5
AverageMarcus
11
@squeamishossifrage Você deve remover todos os cabelos, com exceção de três, e depois seria Homer Simpson!
mbomb007
55

Brainfuck: 583 caracteres (sem contar o espaço em branco)

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

Resultado:

\|/ ____ \|/       
 @~/ ,. \~@        
/_( \__/ )_\       
   \__U_/
Sylwester
fonte
11
O código original parece um pouco com uma cara (se você tentar realmente difícil ...), eu me pergunto o quão difícil seria fazer o código e saída de ambos estar rostos ...
w4etwetewtwet
11
@handuel Ambos são rostos, mas diferentes. Você quis dizer o código e a saída como os mesmos de um quine? Tenho certeza que isso pode ser feito.
Sylwester
Eu só queria que o código parecesse mais um rosto, não sabia que era intencional.
W4etwetewtwet
11
No Brainfuck, tudo o que não é um personagem de controle é um comentário. É por isso que o código fonte pode ser feito para parecer um 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>

Renderiza assim:

risonho

Nwellnhof
fonte
Unidades infinitas?
user80551
6
A ferramenta certa para o trabalho certo.
Alpha
Eu não diria que SVG é realmente uma linguagem de programação
Oliver Ni
@ Oliver É tanto uma linguagem de programação como HTML é ... (o que não é).
mbomb007
37

Ruby, 224

Douglas Adams ficaria horrorizado. :-P

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

Resultado:

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

Ruby, 110

Mesma técnica. Menos código. Menos astuto. Parece que alguém derreteu um smiley de plástico. : -}

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

Resultado:

                $$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$     $$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$   $$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$$$$$$$$$$$
  $$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$$$              $$$$$$$$$$$$$
      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                $$$$$$$$$$$$$$$$$$$$
Darren Stone
fonte
O segundo exemplo conta? Não há círculo ao redor do rosto.
Kevin - Restabelece Monica
11
@ Kevin, bom ponto. Alterados.
Darren Pedra
24

QBasic ASCII, 134 (não otimizado)

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

Essa resposta é totalmente enganosa, usando o caractere ASCII 1 para seu smiley. No entanto, diferentemente das respostas BF e "texto sem formatação", ele realmente obedece às regras criando arte ASCII com base nos pixels do personagem sorridente, em vez de simplesmente imprimir o personagem como sua solução completa. A versão não otimizada representa como o IDE do QBasic salva os arquivos. O IDE é "útil" corrigindo a sintaxe para nós e adicionando muito espaço em branco onde "necessário".

Resultado: Smiley QBasic ASCII não otimizado

QBasic ASCII, 80 (otimizado)

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

Esta é uma versão otimizada do primeiro exemplo de código, que ainda carrega no QBasic. Coisas que foram feitas:

  • Removido todo o espaço em branco desnecessário. (D'uh!)
  • Alteradas as quebras de linha CRLF para LF apenas.
  • Substituído CHR$(1)por uma sequência que contém o caractere real. (Aqui ilustrado com um caractere Unicode correspondente. Se você realmente quiser experimentar o código, substitua-o por um caractere ASCII real 1 usando um editor hexadecimal.)
  • Substituído PRINTpor ?, como a tradição BASIC permite.
  • Substituiu a IFlinha por uma linha que imprime caracteres com base no valor do pixel de origem. Será 0 ou 3. 0 é a cor preta. O caractere 0 imprime um caractere nulo que é tratado como um espaço. 3 é a cor branca na paleta de 4 cores da CGA. O caractere ASCII 3 é um coração.

Resultado: Sorriso QBasic ASCII otimizado

QBasic graphic, 83 (espaço em branco otimizado)

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

Mas espere, pergunto aqui, você não pode simplesmente usar os comandos gráficos internos do QBasic? Claro, mas isso não vai te salvar nenhum bytes, devido à verbosidade do idioma. Mas ele tem uma função embutida para desenhar apenas um arco circular entre dois ângulos, o que é bom. Os ângulos são dadas em radianos e 4e 5.4aproximar um arco de círculo simetricamente centrado em torno π*3/2, ou se você se juntou o lado bom , τ*3/4.

Resultado: Smiley gráfico QBasic otimizado

Nota: Os tamanhos nesta resposta indicam o tamanho do arquivo, em bytes.

nitro2k01
fonte
Eu sinto que posso ser a pessoa mais jovem aqui que ainda pode ler 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 algumas equações circulares. Testado no GNU APL .

Saída saída de smiley ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: o APL pode ser gravado em seu próprio conjunto de caracteres de byte (legado) que mapeia os símbolos do APL para os valores superiores de 128 bytes. Portanto, para fins de pontuação, um programa de N caracteres que usa apenas caracteres ASCII e símbolos APL pode ser considerado como N bytes.

Tobia
fonte
11

Bash, 63 caracteres

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

Resultado:

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

Arte:

Vacas.

ymbirtt
fonte
9

Bash, 22 caracteres

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

Saída de amostra: insira a descrição da imagem aqui

Edit: isso pode ser jogado mais como sugerido por várias pessoas. A versão mais curta e independente encontrada até agora é:

curl -L x.co/3WG0m

(obrigado nitro2k01)

Tumulto
fonte
2
Pode ser otimizado para curl -L x.co/3WG0m. Poderia ser optimizadas se tivermos um local, hostname de um caráter que também retornam os dados diretamente (eliminando a -Lchave necessária para seguir redirecionamentos.)
nitro2k01
4
Onde está o desafio de postar um smiley em pastebin e baixá-lo usando o wget?
S3lph
@ the_Seppi: essa é exatamente a piada. Pretende-se como uma solução de pensamento fora da caixa.
Riot
11
Precisamos encontrar alguém com acesso aos servidores de nomes raiz e convencê-lo a adicionar um domínio chamado Zque aponta para um servidor que hospeda o arquivo.
marinus
11
bonito, este é o meu favorito :)
jcora
9

Python 247 230 227 caracteres - e uma versão mais bonita

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

insira a descrição da imagem aqui

Python 243 caracteres - Usando cores

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

insira a descrição da imagem aqui

Abhijit
fonte
8

C ++ - 122 caracteres sem espaços desnecessários

Este é o mais realista que eu poderia ter:

#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 aqueles que estão perdendo, isso cria o seguinte:

Imagem de arte ASCII

Hosch250
fonte
2
return 0;não é obrigatório no ISO C ++ :)
Shoe
Obrigado. Isso ajudará a cortar personagens em futuros quebra-cabeças.
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
fonte
5

PHP, muitas outras línguas ... - 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 $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""  

Smiley fonte: Asciiworld.com: Smiley

Justin
fonte
4

html, css

Eu sei que não é uma codificação curta nem real, mas eu ainda queria postar isso

<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
fonte
Talvez ficaria melhor com #d{border-radius:20px/10px;}. Ou com #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. Ou com #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
manatwork
4

Rebmu , 24 caracteres

Oh, a humanidade mínima . :-) Programa Rebmu menos impressionante ainda, incorporando o pHp de forma tão proposital como uma homenagem à pílula azul no mundo da programação :

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

Execução:

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

Explicação

Rebmu é apenas um dialeto da Rebol . Ele herda as restrições de análise, usa termos abreviados sem espaços separados por execuções de capitalização. Ele tem um tratamento especial quando a primeira execução é capitalizada versus não capitalizada.

(Assim, em vez de separar termos como AbcDefGhiele, pode usar a diferença entre ABCdefGHIe abcDEFghiextrair um pouco de informação. Seqüências cujas execuções começam em maiúsculas são separadas para que o primeiro termo represente uma "palavra-chave!", Muitas vezes interpretada contextualmente como um desejo para uma tarefa, veja o vídeo )

Se você quiser traduzir isso para o Rebol nativo, terá de aceitar coisas assim, que começam com H maiúsculo para significar que é realmente um h:e não um h. A fonte é, portanto, análoga a:

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

Atribui a string --a h (usando delimitadores de string assimé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 uma vez, imprime outra sequência onde ^/está a sequência de escape da nova linha (os pontos de intercalação são menos usados ​​em software do que as barras invertidas que aparecem frequentemente nos caminhos) , imprime h novamente.

Dr. Rebmu
fonte
4

JavaScript 262 251

Edit: adicionou melhores olhos.

Imprime um rosto sorridente no console.

Poderia perder alguns caracteres para simplificar minha máscara de bit e imprimir um rosto menos bonito, ou usar uma equação de círculo em vez de uma elipse para explicar o espaçamento entre caracteres - mas esse não é o espírito.

Você pode alterar a rvariável para alterar o tamanho e obter uma face mais ou menos detalhada; qualquer número >=7 && <=99dará um bom resultado e permanecerá dentro do limite 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)

Legível 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)

Resultado:

smiley no console

Meu primeiro jogo de golfe provavelmente será algumas melhorias.

George Reith
fonte
4

Perl, 106 caracteres

É um onliner do Perl, basta executar o comando C&P no prompt de comando, desde que o Acme::EyeDropsmódulo Perl já esteja instalado na máquina.

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

insira a descrição da imagem aqui

Outra maneira, um smiley com Puxando um rosto

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

insira a descrição da imagem aqui

Ainda de outra maneira, um smiley com Puxando um rosto de cabeça para baixo,

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

insira a descrição da imagem aqui

Neha Sangore
fonte
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:

Saída de amostra:

smiley gráfico

Mas como esse é um desafio da

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:

Saída de amostra:

Smiley ASCII

homem a trabalhar
fonte
3

GolfScript, 27

Isso gera o segundo exemplo exatamente como fornecido.

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

O primeiro pode ser feito da mesma maneira, mas acho que o segundo parece melhor :)

aditsu
fonte
2

Brainf *** - 2

+.

Imprime ou valor ascii 1. (pode não funcionar com algumas plataformas)

Justin
fonte
Nitpick: ASCII 1 é SOH, um caractere não imprimível. Esse smiley é U + 263A, ou 1 no CP437, o que você provavelmente está usando. Infelizmente, sua saída falha na condição de usar "unidades" suficientes para os olhos e a boca.
Christopher Creutzig
2
@ChristopherCreutzig Não falha nessa condição. Cada olho tem 1 ou mais pixels, a boca é mais que o dobro da largura.
29713 Justin
A exp. "ARTE ASCII" consiste em duas partes. Não vejo nenhum deles aqui
s3lph
2

Bash - um forro: 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;};

Exemplo de saída: (chamado por m 8)

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

Meio louco, mas eu escolhi usar um diamante em vez de um círculo. Os olhos estão cobertos por óculos de segurança.

BASH - 252 caracteres (obrigado @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
fonte
11
Legal. Com essa forma, poderia substituir minha imagem do gravatar. :) Ele pode ser reduzido para 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;}. Ou 245, se você desistir da função me colocar o código em um arquivo de script. Provavelmente pode ser reduzido ainda mais ajustando os cálculos, mas não tenho tempo para isso agora.
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 tela (usando o Firefox): insira a descrição da imagem aqui

pena que eu esteja muito atrasado com a minha resposta (recebi +10 repetições também muito tarde ...)

Leo Pflug
fonte
Eu gosto mais com border-radius:50%e um single <hr>: dabblet.com/gist/8472397
manatwork
@manatwork ou assim: jsfiddle.net/T9BdL/1
Tim Seguine
11
@TimSeguine, usando um caractere de espaço literal non-breaking é menor do que &nbsp;: jsfiddle.net/T9BdL/2
manatwork
11
Olhos sobrepondo o rosto são contra as regras, eu acho. É por isso que eu fiz como é atualmente. Também me lembra o rosto dos canadenses em South Park.
precisa
2
Não realmente golfed, mas conforme solicitado, um css única versão: jsfiddle.net/T9BdL/9
Tim Seguine
1

GolfScript, 18

Este programa usa alguns valores codificados em binário que aparecem como caracteres estranhos / inválidos em um editor de texto.

Aqui está o dump hexadecimal:

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

Nota: ele não funciona em uma localidade UTF-8, mas funciona bem com a ISO-8859-1, por exemplo.

A versão expandida com caracteres de escape:

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

Resultado:

[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 uma saída melhor, você pode substituir o bloco pelo {2base{38+}%n}qual a versão binária chega a 23 bytes. Versão expandida:

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

Resultado:

''&&&&&'
'&&'&'&&
'&&&&&&&
'&'&&&'&
'&&'''&&
''&&&&&'
aditsu
fonte
1

Javascript

Este código deve ser executado f12nesta página:

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

Resultado:

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

CJam, 18

Decidi usar código curto ... Experimente aqui .

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

Explicação

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

Isso explora a simetria do rosto sorridente que eu projetei.

Resultado

 ## 
#OO#
#--#
 ## 

fonte
11
Este cara não está sorrindo;).
Optimizer
@Optimizer Está mais perto de um sorriso do que isso ... Por causa de como eu usei a simetria, você não pode sorrir aqui.
Usando uuo sorriso é uma opção, se você estiver indo para isso "gato" tipo de sorriso ...
mbomb007
1

Pitão

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

Resultado:

  _________
 /         \
 |  /\ /\  |
 |    -    |
 |  \___/  |
 \_________/
Oliver Ni
fonte
segundo exemplo está faltando o círculo
Jasen
@ Jasen eu consertei.
Oliver Ni
0

Python, 42

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

HTML 5: 321 caracteres

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

insira a descrição da imagem aqui

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

Clyde Lobo
fonte
0

Comando do shell ou interno

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

Dependendo do sabor do seu shell ou conjunto de comandos, echopode ou não interpretar caracteres de controle com ou sem -e... (... e exijo que eu possa ou não ser Vroomfondel!) Tente ... e se tudo mais falha, usar printfdeve ser uma aposta segura ...

yeti
fonte
0

Caracteres C 178:

fonte (espaço em branco adicionado - todos podem ser removidos, exceto em 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);}
 }

resultado:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Jasen
fonte