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.
fonte
alt + 1
ealt + 2
produzirá ☺ e ☻ respectivamente. Por uma questão de argumento, considerarei aalt
tecla pressionada como um caractere e chamo isso de 2 caracteres.Respostas:
Javascript, 340
Javascript, 283
versão otimizada (com algumas melhorias e sem espaços em branco desnecessários)
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
d
ligeiramente 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:
Então, quando você executá-lo e nada acontecer, basta ativar as janelas pop-up e recarregar a página. Além disso, colo
fonte
HTML,
200141 caracteresGraças a disponibilidade , reduzi isso para 141 caracteres :
Aqui está o HTML original:
Funciona melhor em telas pequenas:
fonte
Brainfuck: 583 caracteres (sem contar o espaço em branco)
Resultado:
fonte
SVG
Renderiza assim:
fonte
Ruby, 224
Douglas Adams ficaria horrorizado. :-P
Resultado:
Ruby, 110
Mesma técnica. Menos código. Menos astuto. Parece que alguém derreteu um smiley de plástico. : -}
Resultado:
fonte
QBasic ASCII, 134 (não otimizado)
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:
QBasic ASCII, 80 (otimizado)
Esta é uma versão otimizada do primeiro exemplo de código, que ainda carrega no QBasic. Coisas que foram feitas:
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.)PRINT
por?
, como a tradição BASIC permite.IF
linha 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:
QBasic graphic, 83 (espaço em branco otimizado)
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
4
e5.4
aproximar um arco de círculo simetricamente centrado em tornoπ*3/2
, ou se você se juntou o lado bom ,τ*3/4
.Resultado:
Nota: Os tamanhos nesta resposta indicam o tamanho do arquivo, em bytes.
fonte
APL, 97 caracteres / bytes *
Funciona calculando algumas equações circulares. Testado no GNU APL .
Saída ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: 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.
fonte
Bash, 63 caracteres
Resultado:
Arte:
Vacas.
fonte
Bash, 22 caracteres
Saída de amostra:
Edit: isso pode ser jogado mais como sugerido por várias pessoas. A versão mais curta e independente encontrada até agora é:
(obrigado nitro2k01)
fonte
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-L
chave necessária para seguir redirecionamentos.)Z
que aponta para um servidor que hospeda o arquivo.Python
247230227 caracteres - e uma versão mais bonitaPython 243 caracteres - Usando cores
fonte
C ++ - 122 caracteres sem espaços desnecessários
Este é o mais realista que eu poderia ter:
Para aqueles que estão perdendo, isso cria o seguinte:
fonte
return 0;
não é obrigatório no ISO C ++ :)fonte
PHP, muitas outras línguas ... - 1601 caracteres
Smiley fonte: Asciiworld.com: Smiley
fonte
html, css
Eu sei que não é uma codificação curta nem real, mas eu ainda queria postar isso
jsFiddle
fonte
#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;}
.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:
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
AbcDefGhi
ele, pode usar a diferença entreABCdefGHI
eabcDEFghi
extrair 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 umh
. A fonte é, portanto, análoga a: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.fonte
JavaScript
262251Edit: 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
r
variável para alterar o tamanho e obter uma face mais ou menos detalhada; qualquer número>=7 && <=99
dará um bom resultado e permanecerá dentro do limite de caracteres.Legível por humanos:
Resultado:
Meu primeiro jogo de golfe provavelmente será algumas melhorias.
fonte
Perl, 106 caracteres
É um onliner do Perl, basta executar o comando C&P no prompt de comando, desde que o
Acme::EyeDrops
módulo Perl já esteja instalado na máquina.Outra maneira, um smiley com Puxando um rosto
Ainda de outra maneira, um smiley com Puxando um rosto de cabeça para baixo,
fonte
Bash + ImageMagick: 137 caracteres
Saída de amostra:
Mas como esse é um desafio da ascii-art …
Bash + ImageMagick: 172 caracteres
Saída de amostra:
fonte
GolfScript, 27
Isso gera o segundo exemplo exatamente como fornecido.
O primeiro pode ser feito da mesma maneira, mas acho que o segundo parece melhor :)
fonte
Brainf *** - 2
Imprime
☺
ou valor ascii 1. (pode não funcionar com algumas plataformas)fonte
Bash - um forro: 442 caracteres
Exemplo de saída: (chamado por
m 8
)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)
fonte
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.HTML + CSS, 83
captura de tela (usando o Firefox):
pena que eu esteja muito atrasado com a minha resposta (recebi +10 repetições também muito tarde ...)
fonte
border-radius:50%
e um single<hr>
: dabblet.com/gist/8472397
: jsfiddle.net/T9BdL/2GolfScript, 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:
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:
Resultado:
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:Resultado:
fonte
Javascript
Este código deve ser executado
f12
nesta página:Resultado:
fonte
CJam, 18
Decidi usar código curto ... Experimente aqui .
Explicação
Isso explora a simetria do rosto sorridente que eu projetei.
Resultado
fonte
uu
o sorriso é uma opção, se você estiver indo para isso "gato" tipo de sorriso ...Pitão
Resultado:
fonte
Python, 42
fonte
HTML 5: 321 caracteres
Fiddle: http://jsfiddle.net/wfNGx/
Fonte: http://www.codecademy.com/courses/web-beginner-en-SWM11/0/1
fonte
Comando do shell ou interno
Dependendo do sabor do seu shell ou conjunto de comandos,
echo
pode 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, usarprintf
deve ser uma aposta segura ...fonte
Caracteres C 178:
fonte (espaço em branco adicionado - todos podem ser removidos, exceto em
int x
resultado:
fonte