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.



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


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:

: - |


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

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


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:

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

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.


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.


11

Bash, 63 caracteres

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

Resultado:

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

Arte:

Vacas.


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)


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


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


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`
               `^^^^^'`

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


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


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.


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.


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


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


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


2

Brainf *** - 2

+.

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


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

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


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:

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

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

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

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:

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

segundo exemplo está faltando o círculo
Jasen

@ Jasen eu consertei.
Oliver Ni



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


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:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.