Imprimer un visage souriant

48

Exigences

Pour relever le défi, définissons une unité :

Une unité est définie comme tout point composant la grille dans laquelle le visage est dessiné (pixels pour l'écran, caractères pour l'art ASCII, etc.).

Les exigences minimales pour le visage sont:

Un visage souriant est composé d'une forme qui ressemble à un cercle (pas nécessairement parfait) de tout rayon. Il doit y avoir au moins 1 unité pour chacun des deux yeux et au moins 2 unités pour la bouche. Les yeux et la bouche doivent être dans la forme du visage. La bouche peut être orientée comme vous le souhaitez (heureuse, triste, indifférente, etc.).

Voici un exemple de la sortie:

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

Buts

Bien entendu, l’objectif principal est de proposer le code le plus court possible, mais l’ art est également important.

Gagnant

Le gagnant est choisi en fonction du nombre de votes des utilisateurs, au moins dans les 5 prochains jours.

Chaussure
la source
5
Wow, 8 questions sur la liste des questions chaudes. Notre site devrait recevoir plus de trafic.
Justin
Le visage indifférent n'est-il pas strictement plus facile que heureux et triste parfois plus difficile?
o0 '.
2
Ne va pas faire cette réponse car il ne correspond pas aux exigences minimales, mais je voulais carillon ... alt + 1et alt + 2produirai ☺ et ☻ respectivement. Par souci d'argumentation, je considérerai que la alttouche appuie sur un caractère et appelle 2 caractères.
Dryden Long
1
Ce fil finira-t-il jamais? :)
Avall

Réponses:

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

version optimisée (avec quelques améliorations et sans espaces blancs inutiles)

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

Bien… peut-être que ce n'est pas aussi court que vous voudriez mais c'est non conventionnel à coup sûr. Il semble mieux lorsque votre navigateur est maximisé. J'ai vraiment apprécié votre question! Si vous voulez augmenter les détails, réduisez dlégèrement la variable.

edit: Malheureusement, je ne peux pas l’exécuter sur jsfiddle, mais vous pouvez le coller sur la console Javascript dans le navigateur Aby. Oh, et activer les popups sur la page :).

edit2: Vous pouvez l'exécuter pour créer un nouveau fichier html et y coller le code:

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

Ensuite, lorsque vous l'exécutez et que rien ne se passe, activez simplement les fenêtres contextuelles et rechargez la page. En plus je colle capture d'écran

avall
la source
23
Au nom de Bwian de Judée, qu'est-ce que c'est ...
nitro2k01
2
Maintenant ça marche. M'a pris environ 2m pour fermer tous les popups
s3lph
7
Après avoir passé tant de temps à essayer de désactiver les popups gênants, il est difficile de les activer. J'ai désactivé adBLock et autorisé tous les popups dans mon navigateur ... après que la moitié du visage apparaisse, il décide de réactiver le bloqueur!
Charity Leschinski
4
Incroyable pensée originale! Je ne penserais jamais à faire quelque chose comme ça.
Gari BN
4
C'est remarquablement original!
Oberon
66

HTML, 200 141 caractères

Merci d'avoir profité , j'ai réduit ce nombre à 141 caractères :

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

Voici le code 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>

Fonctionne mieux sur de petits écrans:

: - |

ossifrage délirant
la source
4
C'est art : P
Chaussure
3
Vous n'êtes pas obligé de fermer la plupart de vos balises (la plupart des navigateurs s'en chargeront), vous n'avez pas besoin de définir le type d'entrée (le texte par défaut) et de ne pas fermer <br> (html5). Voici le code optimisé avec seulement 150 caractères :): jsfiddle.net/avall/TdPkF
avall
@avall Excellent, merci :-)
ossifrage
158 caractères et maintenant le cheveu centré, de sorte qu'il ait fière allure sur un écran de toute taille. jsfiddle.net/TdPkF/5
MoyenneMarcus
1
@squeamishossifrage Vous devriez enlever tous les poils sauf trois, et ce serait alors Homer Simpson!
mbomb007
55

Brainfuck: 583 caractères (sans compter les espaces)

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

Sortie:

\|/ ____ \|/       
 @~/ ,. \~@        
/_( \__/ )_\       
   \__U_/
Sylwester
la source
11
Le code original ressemble un peu à un visage (si vous essayez très dur ...), je me demande combien il serait difficile de faire en sorte que le code et la sortie soient tous les deux ...
w4etwetewtwet
1
@handuel Les deux sont des visages, mais différents. Vouliez-vous dire que le code et la sortie sont les mêmes qu'une quine? Je suis sûr que cela peut être fait.
Sylwester
Je voulais juste que le code ressemble davantage à un visage, je n'avais pas réalisé que c'était intentionnel.
w4etwetewtwet
1
Dans Brainfuck, tout ce qui n'est pas un caractère de contrôle est un commentaire. C'est pourquoi le code source peut ressembler à 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 comme ceci:

Smiley

Nwellnhof
la source
Unités infinies?
user80551
6
Le bon outil pour le bon travail.
Alpha
Je ne dirais pas que SVG est vraiment un langage de programmation
Oliver Ni le
@ Oliver C'est autant un langage de programmation que HTML ... (ce qui n'est pas le cas).
mbomb007
37

Ruby, 224

Douglas Adams serait horrifié. :-P

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

Sortie:

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

Ruby, 110

Même technique. Moins de code. Moins astucieux. On dirait que quelqu'un a fondu un smiley en plastique. : -}

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

Sortie:

                $$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$     $$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$   $$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$$$$$$$$$$$
  $$$$$$$$$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
   $$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$
    $$$$$$$$$$$$$$$$$              $$$$$$$$$$$$$
      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                $$$$$$$$$$$$$$$$$$$$
Darren Stone
la source
Le deuxième exemple compte-t-il? Il n'y a pas de cercle autour du visage.
Kevin - Réintégrer Monica
1
@ Kevin, bon point. Modifié.
Darren Stone
24

QBasic ASCII, 134 (non optimisé)

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

Cette réponse trompe totalement en utilisant le caractère ASCII 1 pour son smiley. Cependant, contrairement aux réponses BF et "texte brut", il obéit aux règles en créant un art ASCII basé sur les pixels du caractère souriant, plutôt que d'imprimer simplement le caractère en tant que solution complète. La version non optimisée représente la manière dont l'EDI de QBasic enregistre les fichiers. L'EDI est "utilement" en train de corriger la syntaxe pour nous et d'ajouter beaucoup d'espaces où "nécessaire".

Sortie: Smile ASCII QBasic non optimisé

QBasic ASCII, 80 (optimisé)

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

Il s'agit d'une version optimisée du premier exemple de code, qui se charge toujours dans QBasic. Des choses qui ont été faites:

  • Suppression de tous les espaces inutiles. (D'uh!)
  • Changement des sauts de ligne CRLF en LF uniquement.
  • Remplacé CHR$(1)par une chaîne contenant le caractère réel. (Ici illustré avec un caractère Unicode correspondant. Si vous voulez réellement essayer le code, veuillez le remplacer par un vrai caractère ASCII 1 à l'aide d'un éditeur hexadécimal.)
  • Remplacé PRINTpar ?, comme le permet la tradition BASIC.
  • Remplacé la IFligne par une ligne imprimant des caractères en fonction de la valeur de pixel source. Ce sera soit 0 ou 3. 0 est la couleur noire. Caractère 0 imprime un caractère nul qui est traité comme un espace. 3 est la couleur blanche de la palette 4 couleurs de CGA. Le caractère ASCII 3 est un coeur.

Sortie: QBasic ASCII smile optimisé

QBasic graphique, 83 (optimisé pour les espaces)

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

Mais attendez, je vous le demande, vous ne pouvez pas utiliser les commandes graphiques intégrées de QBasic? Bien sûr, mais cela ne vous épargnera aucun octet, à cause de la verbosité du langage. Mais il a une fonction intégrée pour ne dessiner qu'un arc de cercle entre deux angles donnés, ce qui est agréable. Les angles sont donnés en radians, et 4et se 5.4rapproche d' un arc de cercle symétriquement centrée autour π*3/2, ou si vous avez rejoint le bon côté , τ*3/4.

Sortie: Smiley graphique QBasic optimisé

Remarque: Les tailles de cette réponse indiquent la taille du fichier, en octets.

nitro2k01
la source
Je sens que je suis peut-être la plus jeune personne ici qui peut encore lire QBASIC ... :) Nice one
apnorton
12

APL, 97 caractères / octets *

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

Cela fonctionne en calculant quelques équations de cercle. Testé sur GNU APL .

Sortie sortie smiley ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL peut être écrit dans son propre jeu de caractères codé sur un octet (existant) qui mappe les symboles APL sur les valeurs supérieures à 128 octets. Par conséquent, aux fins de la notation, un programme de N caractères qui utilise uniquement des caractères ASCII et des symboles APL peut être considéré comme ayant une longueur de N octets.

Tobia
la source
11

Bash, 63 caractères

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

Sortie:

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

Talent artistique:

Vaches.

Ymbirtt
la source
9

Bash, 22 caractères

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

Exemple de sortie: entrez la description de l'image ici

Edit: cela pourrait être joué plus loin comme suggéré par plusieurs personnes. La version autonome la plus courte trouvée à ce jour est:

curl -L x.co/3WG0m

(merci nitro2k01)

Émeute
la source
2
Pourrait être optimisé pour curl -L x.co/3WG0m. Pourrait être optimisé si nous avions un nom d’hôte local à un caractère qui renvoie également les données directement (ce qui élimine le -Lcommutateur nécessaire pour suivre les redirections.)
nitro2k01
4
Où est le défi de poster un smiley dans pastebin et de le télécharger en utilisant wget?
S3lph
@ the_Seppi: c'est exactement la blague. Il s'agit d'une solution innovante.
Riot
1
Nous devons trouver quelqu'un ayant accès aux serveurs de noms racine et le convaincre d'ajouter un domaine appelé Zpointant vers un serveur hébergeant le fichier.
marinus
1
magnifique, c'est mon préféré :)
jcora
9

Python 247 230 227 Caractères - et une version plus jolie

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

entrez la description de l'image ici

Caractères Python 243 - Utilisation des couleurs

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

entrez la description de l'image ici

Abhijit
la source
8

C ++ - 122 caractères sans espaces inutiles

C’est le plus réaliste que je puisse trouver:

#include <iostream>

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

Pour ceux d'entre vous qui manquent, cela crée ceci:

Image d'art ASCII

Hosch250
la source
2
return 0;n'est pas requis dans ISO C ++ :)
Shoe
Merci. Cela aidera à réduire les caractères dans les futurs casse-tête.
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
la source
5

PHP, beaucoup d'autres langues ... - 1601 caractères

                          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 source: Asciiworld.com: Smiley

Justin
la source
4

html, css

Je sais que le codage n’est ni court ni réel, mais je voulais quand même poster ce message.

<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
la source
Peut-être que ça irait mieux avec #d{border-radius:20px/10px;}. Ou avec #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. Ou avec #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
manatwork
4

Rebmu , 24 caractères

Oh, l' humanité minimale . :-) Le programme Rebmu le moins impressionnant à ce jour, incorporant si volontairement pHp en hommage à la pilule bleue dans le monde de la programmation :

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

Exécution:

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

Explication

Rebmu est juste un dialecte de Rebol . Il hérite des contraintes d'analyse, utilise des termes abrégés sans espaces séparés par des suites de majuscules. Il bénéficie d'un traitement spécial lorsque le premier cycle est capitalisé ou non capitalisé.

(Ainsi, plutôt que de séparer les termes, AbcDefGhiil peut utiliser la différence entre ABCdefGHIet abcDEFghipour extraire un morceau d’information. Les séquences dont les séquences commencent par des majuscules sont séparées, de sorte que le premier terme représente un "mot de réglage!", Souvent interprété contextuellement comme un désir. pour une mission voir vidéo )

Si vous voulez traduire cela en Rebol natif, vous devez accepter des choses comme celle-ci. Cela commence par un H majuscule qui signifie en réalité un h:et non un h. La source est donc analogue à:

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

Assigne la chaîne --à h (en utilisant des délimiteurs de chaîne asymétriques carprint {"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 une fois, imprime une autre chaîne contenant ^/la séquence d'échappement de la nouvelle ligne (carets étant moins utilisés dans les logiciels que les barres obliques inverses apparaissant souvent dans les chemins) , imprime à nouveau h.

Dr. Rebmu
la source
4

JavaScript 262 251

Edit: ajouté de meilleurs yeux.

Imprime un visage souriant dans la console.

Pourrait perdre quelques caractères afin de simplifier mon masque binaire et d’imprimer un visage moins joli, ou d’utiliser une équation de cercle au lieu d’une ellipse pour rendre compte de l’espacement des caractères - mais ce n’est pas l’esprit.

Vous pouvez changer la rvariable pour changer la taille et obtenir un visage plus ou moins détaillé; n'importe quel nombre >=7 && <=99donnera un bon résultat et restera dans la limite de caractères.

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)

Lisible par l'homme:

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)

Sortie:

smiley en console

Mon premier match de golf sera probablement une amélioration.

George Reith
la source
4

Perl, 106 caractères

C’est un Perl oneliner, il suffit de le commander sur invite de commande, à condition que le Acme::EyeDropsmodule Perl soit déjà installé sur la machine.

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

entrez la description de l'image ici

Une autre façon, un smiley avec Tirant un visage

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

entrez la description de l'image ici

Encore une autre façon, un smiley avec Tirant un visage à l'envers,

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

entrez la description de l'image ici

Neha Sangore
la source
4

Bash + ImageMagick: 137 caractères

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:

Exemple de sortie:

smiley graphique

Mais comme il s’agit d’un défi

Bash + ImageMagick: 172 caractères

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:

Exemple de sortie:

Smiley ASCII

homme au travail
la source
3

GolfScript, 27

Ceci sort le 2ème exemple exactement comme donné.

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

La première peut être faite de la même façon, mais je pense que la deuxième est plus jolie :)

Aditsu
la source
2

Brainf *** - 2

+.

Imprime ou ascii value 1. (pourrait ne pas fonctionner avec certaines plates-formes)

Justin
la source
Nitpick: ASCII 1 est SOH, un caractère non imprimable. Ce smiley est U + 263A, ou 1 dans CP437, ce que vous utilisez probablement. Malheureusement, votre sortie ne permet pas d'utiliser suffisamment d '«unités» pour les yeux et la bouche.
Christopher Creutzig
2
@ChristopherCreutzig Il ne manque pas cette condition. Chaque œil mesure environ 1 pixel, la bouche est plus de deux fois plus grande.
Justin
L'exp. "ART ASCII" se compose de deux parties. Je ne vois ni l'un ni l'autre ici
s3lph
2

Bash - une doublure: 442 caractères

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

Exemple de sortie: (appelé par m 8)

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

Un peu fou, mais j'ai choisi d'utiliser un diamant au lieu d'un cercle. Les yeux sont couverts par des lunettes de protection.

BASH - 252 caractères (merci @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
la source
1
Cool. Avec cette forme, il pourrait remplacer mon image gravatar. :) Il peut être réduit à 252 caractères: 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 bien si vous abandonnez la fonction m et placez le code dans un fichier script. On peut probablement réduire encore davantage en peaufinant les calculs, mais je n’ai pas le temps de le faire pour le moment.
manatwork
2

HTML + CSS, 83

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

capture d'écran (en utilisant firefox): entrez la description de l'image ici

dommage que je sois trop en retard avec ma réponse (+10 répétitions aussi assez tard ...)

Leo Pflug
la source
Je l’aime plus avec border-radius:50%et un single <hr>: dabblet.com/gist/8472397
manatwork
@manatwork ou comme ceci: jsfiddle.net/T9BdL/1
Tim Seguine
1
@TimSeguine, utiliser un caractère d'espacement insécable est plus court que &nbsp;: jsfiddle.net/T9BdL/2
manatwork
1
Les yeux qui chevauchent le visage sont contre les règles, je pense. C'est pourquoi je l'ai fait comme c'est actuellement. De plus, cela me rappelle un peu le visage des canadiens à South Park.
Leo Pflug
2
Pas vraiment joué au golf, mais comme demandé, une version css uniquement: jsfiddle.net/T9BdL/9
Tim Seguine
1

GolfScript, 18 ans

Ce programme utilise des valeurs codées en binaire qui apparaissent sous forme de caractères étranges / non valides dans un éditeur de texte.

Voici le vidage hexadécimal:

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

Remarque: cela ne fonctionne pas dans les paramètres régionaux UTF-8, mais fonctionne parfaitement avec ISO-8859-1 par exemple.

La version développée avec des caractères d'échappement:

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

Sortie:

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

Pour une sortie plus agréable, vous pouvez remplacer le bloc avec {2base{38+}%n}lequel porte la version binaire à 23 octets. Version étendue:

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

Sortie:

''&&&&&'
'&&'&'&&
'&&&&&&&
'&'&&&'&
'&&'''&&
''&&&&&'
Aditsu
la source
1

JavaScript

Ce code doit être exécuté f12sur cette page:

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

Sortie:

 0 0 0    . . .
0 . . 0  . o o .
0 --- 0  . \_/ .
 0 0 0    . . .
kitcar2000
la source
1

CJam, 18 ans

J'ai décidé d'aller chercher un code court ... Essayez-le ici .

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

Explication

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

Cela exploite la symétrie du visage souriant que j'ai créé.

Sortie

 ## 
#OO#
#--#
 ## 

la source
1
Ce visage ne sourit pas;).
Optimiseur
@Optimizer C'est plus un sourire que ça ... En raison de la façon dont j'ai utilisé la symétrie, vous ne pouvez pas sourire ici.
Utiliser uupour le sourire est une option, si vous
optez
1

Python

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

Sortie:

  _________
 /         \
 |  /\ /\  |
 |    -    |
 |  \___/  |
 \_________/
Oliver Ni
la source
deuxième cercle manque le cercle
Jasen
@Jasen je l'ai corrigé.
Oliver Ni
0

Python, 42

print ' 0 0 0 \n0 . . 0\n0 --- 0\n 0 0 0 '
utilisateur80551
la source
0

HTML 5: 321 caractères

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

entrez la description de l'image ici

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

Clyde Lobo
la source
0

Commande shell ou intégrée

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

Selon la saveur de votre shell ou de votre jeu de commandes, echointerprétez ou non les caractères de contrôle avec ou sans -e... (... et j'exige que je sois ou non Vroomfondel!). Essayez ... et si tout le reste échoue, utiliser printfdevrait être une valeur sûre ...

disparu
la source
0

C 178 caractères:

source (espace ajouté - tout peut être supprimé sauf à 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);}
 }

sortie:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Jasen
la source