打印一张笑脸


48

要求

为了挑战,让我们定义一个单位

单位定义为组成绘制面孔的网格的任何点(屏幕的像素,ASCII艺术的字符等)。

脸部的最低要求是:

笑脸的形状类​​似于任何半径的圆(不一定是完美的)。两只眼睛中的每只眼睛必须至少有1个单位,而嘴巴必须至少有2个单位。眼睛和嘴巴都应该在面部形状内。可以根据需要调整嘴巴的方向(快乐,悲伤,冷漠等)。

这是输出示例:

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

目标

当然,主要目标是想出尽可能短的代码,但是艺术也很重要。

优胜者

至少在接下来的5天内,根据用户的投票量选出获胜者。



5
哇,热门问题列表上有8个问题。我们的网站应该获得更多的流量。
贾斯汀

冷漠的面孔难道不比幸福容易,难过有时更难吗?
o0'。

2
因为它不符合最低要求,所以不会回答这个问题,但是我想插入... alt + 1并将alt + 2分别产生☺和☻。为了便于讨论,我将考虑alt按一个字符并将其称为2个字符。
Dryden Long

1
这个线程会永远结束吗?:)
avall 2014年

Answers:


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

优化版本(进行了一些改进并且没有不必要的空格)

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

好吧..也许它不像您想要的那么短,但是可以肯定的是它是非常规的。当您的浏览器最大化时,它看起来更好。我真的很喜欢你的问题!如果要增加细节,只需d稍微减小变量即可。

编辑:不幸的是,我无法在jsfiddle上运行它,但是您可以将其粘贴到aby浏览器中的Javascript控制台中。哦,在页面上启用弹出窗口:)。

edit2: 您可以运行它以创建一个新的html文件,并将代码粘贴到其中:

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

然后,当您运行它并没有任何反应时,只需启用弹出窗口并重新加载页面即可。另外我贴 screenshot


23
以犹大的Bwian的名义,这是什么...
nitro2k01 2013年

2
现在可以了。带我大约2m关闭所有弹出窗口
s3lph 2013年

7
在花费大量时间尝试禁用烦人的弹出窗口之后,启用它们非常困难。我禁用了adBLock并允许浏览器中的所有弹出窗口...出现一半面孔后,它决定重新打开阻止程序!
Charles Leschinski

4
开箱即用的惊人想法!我永远也不想做这样的事情。
Gari BN 2014年

4
那是非常原始的!
Oberon 2014年

66

HTML,200141个字符

多亏了avail,我将其缩减为141个字符

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

这是原始的HTML:

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

在小屏幕上效果最佳:

:-|


4
这是艺术:P
Shoe

3
您不必关闭大多数标签(大多数浏览器会处理它),无需定义输入类型(默认为文本),也不必关闭<br>(html5)。这是只有150个字符的优化代码:):jsfiddle.net/avall/TdPkF
avall 2013年

@avall太好了,谢谢:-)
吱吱作响的ossifrage

158个字符,现在使头发居中,因此在任何尺寸的屏幕上都看起来不错。jsfiddle.net/TdPkF/5
AverageMarcus 2013年

1
@squeamishossifrage您应该除3根外的所有毛,然后是荷马·辛普森(Homer Simpson)!
mbomb007

55

Brainfuck:583个字符(不计空格)

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

输出:

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

11
原始代码看起来有点像一张面孔(如果您真的努力的话……),我想知道制作代码并输出都变成面孔会多么困难...
w4etwetewtwet

1
@handuel两者都是面孔,但有所不同。您的意思是说代码和输出就像奎因一样吗?我确定可以做到。
Sylwester

我只是想让代码看起来更像一张脸,但我没有意识到这是故意的。
w4etwetewtwet

1
在Brainfuck中,不是控制字符的所有内容都是注释。这就是为什么可以使源代码看起来像一个笑脸的原因。
EmilVikström2014年

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>

渲染如下:

笑脸


无限单位?
user80551 2013年

6
适合正确工作的正确工具。
Alpha

我不会说SVG真的是一种编程语言
Oliver Ni

@Oliver它和HTML一样是一种编程语言……(不是)。
mbomb007

37

红宝石224

道格拉斯·亚当斯会被吓到。:-P

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

输出:

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

露比110

相同的技术。更少的代码。少巧。好像有人融化了塑料笑脸。:-}

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

输出:

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

第二个例子算吗?脸上没有圆圈。
凯文-恢复莫妮卡

1
@凯文,好点。已修改。
达伦·斯通

24

QBasic ASCII,134(未优化)

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

通过使用ASCII字符1作为笑脸,此答案完全作弊。但是,与BF和“纯文本”答案不同,它实际上是通过根据笑脸字符的像素制作ASCII艺术字来遵守规则的,而不仅仅是简单地打印字符作为其完整解决方案。未优化的版本表示QBasic的IDE如何保存文件。IDE正在“有帮助”地为我们修复语法,并在“需要”处添加了许多空格。

输出: QBasic ASCII笑脸未优化

QBasic ASCII,80(已优化)

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

这是第一个代码示例的优化版本,仍在QBasic中加载。完成的事情:

  • 删除了所有不必要的空格。(D!)
  • 将CRLF换行符更改为仅LF。
  • 替换CHR$(1)为包含实际字符的字符串。(此处显示了与之匹配的Unicode字符。如果您确实想尝试该代码,请使用十六进制编辑器将其替换为真实的ASCII字符1。)
  • 替换PRINT?,这是BASIC传统所允许的。
  • IF行替换为根据源像素值打印字符的行。这将是0或3。0是黑色。字符0打印一个空字符,将其视为空格。3是CGA 4色调色板中的白色。ASCII字符3是心脏。

输出: QBasic ASCII微笑已优化

QBasic图形83(已优化空白)

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

但是,等等,我在这里问您,您不能只使用QBasic的内置图形命令吗?当然可以,但是由于语言的冗长性,实际上并不会节省任何字节。但是它确实具有内置功能,只能在两个给定角度之间绘制圆弧,这很好。角度以弧度给出,4以及5.4近似圆弧对称地围绕着π*3/2,或者,如果你已经加入了好的一面τ*3/4

输出: QBasic图形笑脸优化

注意:此答案中的大小表示文件的大小(以字节为单位)。


我觉得我可能是最年轻的人,仍然可以阅读QBASIC ... :)好人
apnorton 2013年

12

APL,97个字符/字节*

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

它通过计算一些圆方程来工作。在GNU APL上测试。

输出 笑脸输出 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*:APL可以用其自己的(旧式)单字节字符集编写,该字符集将APL符号映射到高128个字节的值。因此,出于评分的目的,仅使用ASCII字符和APL符号的N个字符的程序可以视为N个字节长。


11

Bash,63个字符

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

输出:

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

艺术性:

牛。


9

Bash,22个字符

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

样本输出: 在此处输入图片说明

编辑:这可以像几个人建议的那样进一步打高尔夫球。迄今为止发现的最短的独立版本是:

curl -L x.co/3WG0m

(感谢nitro2k01)


2
可以优化为curl -L x.co/3WG0m。可以进一步优化,如果我们有一个地方,一个个字符的主机名这也直接返回的数据(消除了-L跟随重定向所需的开关。)
nitro2k01

4
在pastebin中发布笑脸并使用wget下载笑脸的挑战在哪里?
s3lph 2013年

@the_Seppi:真是个笑话。它旨在作为一种即席即用的解决方案。
骚乱

1
我们需要找到一个有权访问根名称服务器的人,并说服他添加一个名为的域Z,该域指向托管该文件的服务器。
marinus 2013年

1
美丽,这是我的最爱:)
jcora 2013年

9

Python的247 230 227字符-和一个可爱版

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

在此处输入图片说明

Python 243字符-使用颜色

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

在此处输入图片说明


8

C ++-122个字符,没有多余的空格

这是我能想到的最现实的:

#include <iostream>

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

对于那些错过的人,它会创建以下代码:

ASCII艺术图片


2
return 0;在ISO C ++中不是必需的:)
Shoe

谢谢。这将有助于减少未来难题中的角色。
Hosch250 2013年

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,许多其他语言...-1601个字符

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

笑脸来源:Asciiworld.com:笑脸


4

HTML,CSS

我知道这既不是简短的编码也不是真正的编码,但是我仍然想发布这个

<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


也许看起来会更好#d{border-radius:20px/10px;}。或与#d{border-radius:0 0 20px 20px/0 0 10px 10px;}。或与#d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}
manatwork 2013年

4

雷布姆(24个字符)

哦,最低限度的人性化。:-)迄今为止,Rebmu程序效果不佳,因此有意将pHp嵌入程序,以向编程世界中的蓝色药丸致敬:

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

执行:

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

说明

雷伯(Rebmu)只是雷伯(Rebol)的方言。它继承了解析约束,使用缩写词,且没有大写字母分隔的空格。当首轮进行大写或不大写时,它具有特殊的处理方式。

(因此,而不是分离方面像AbcDefGhi它可以使用差异之间ABCdefGHIabcDEFghi挤出一个比特的信息。序列,其运行开始在所有的资本都分开,以便第一项表示“集字!”,往往根据上下文理解为一个愿望进行分配。 请参见视频

如果要将其翻译为本地Rebol,则必须接受以大写字母H开头的内容,即实际上是an h:而不是an h。因此,源类似于:

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

将字符串分配--给h(使用非对称字符串定界符,因为print {"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?"}

一次打印h,打印另一个字符串,其中^/换行符的转义序列脱字符号在软件中使用的频率比路径中经常出现的反斜杠少),再次打印h。


4

JavaScript的262 251

编辑:增加了更好的眼睛。

在控制台中打印一张笑脸。

可能会丢失很多字符,以使我的位掩码更简单并打印出不太美观的面孔,或者使用圆形方程而不是椭圆形来说明字符间距-但这不是精神。

您可以更改r变量以更改大小并获得或多或少的详细信息。任何数字>=7 && <=99都会产生良好的效果,并且不会超出字符数限制。

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)

可读性:

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)

输出:

控制台中的笑脸

我的第一场高尔夫比赛可能会有所改善。


4

Perl,106个字符

这是一个Perl oneliner,只要Acme::EyeDrops在机器上已经安装了Perl 模块,就必须在命令提示符下对其进行C&P 。

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

在此处输入图片说明

换种方式,用拉脸笑脸

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

在此处输入图片说明

还有另一种方式,一个笑脸,脸朝下,

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

在此处输入图片说明


4

Bash + ImageMagick:137个字符

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:

样本输出:

图形笑脸

但因为这是一个的挑战...

Bash + ImageMagick:172个字符

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:

样本输出:

ASCII笑脸


3

GolfScript,27岁

这将完全按照给定的方式输出第二个示例。

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

第一个可以用相同的方式完成,但我认为第二个看起来更好:)


2

Brainf ***-2

+.

打印或ascii值1。(可能不适用于某些平台)


Nitpick:ASCII 1是SOH,是不可打印的字符。那个笑脸是U + 263A,或CP437中的1(您可能正在使用)。不幸的是,您的输出无法满足为眼睛和嘴巴使用足够的“单位”的条件。
Christopher Creutzig 2013年

2
@ChristopherCreutzig它不会失败该条件。每只眼睛大约1像素,嘴巴则大两倍。
贾斯汀

经验 “ ASCII ART”由两部分组成。我在这里都看不到它们
s3lph

2

重击-一线:442个字符

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

输出示例:(由调用m 8

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

有点疯狂,但我选择使用菱形而不是圆形。眼睛被安全护目镜遮盖。

BASH-252个字符(感谢@manatwork)

s(){ (($1>1))&&echo -n "${2:- }"&&s $[$1-1] $2;};m(){ ((t=2*$1));while ((t=t-1));do v=$[$1-t];l=$[${v#-}+1];s $l;q=$[2*($1-l)];w=`s $q`;((l>t&&l<t+3&&q>2))&&w=" `s $[q-2] 0` ";((t>$1+1&&q>3))&&{ g=`s $[(q-1)/2] 0`;w=" $g $g ";};echo "+${w:+$w+}";done;}

1
凉。有了这种形状,它可以代替我的图像。:)可以减少到252个字符: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;}。如果您放弃函数m并将代码放在脚本文件中,则为245。通过调整计算,可能可以进一步减少,但是我现在没有时间。
manatwork 2013年

2

HTML + CSS,83

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

屏幕截图(使用Firefox): 在此处输入图片说明

太糟糕了,我回答得太晚了(获得+10代表也很晚...)


我更喜欢border-radius:50%单曲<hr>dabblet.com/gist/8472397
manatwork 2014年

@manatwork或类似的代码:jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine,使用文字不间断的空格字符比&nbsp;jsfiddle.net/T9BdL/2
manatwork 2014年

1
我认为,双眼重叠是违规的。这就是为什么我像现在这样做。这也让我想起了加拿大南部公园的面孔。
Leo Pflug 2014年

2
并不是真正的高尔夫球手,而是根据要求提供的仅CSS版本:jsfiddle.net/T9BdL/9
Tim Seguine

1

GolfScript,18岁

该程序使用一些二进制编码的值,这些值在文本编辑器中显示为奇怪/无效的字符。

这是十六进制转储:

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

注意:它在UTF-8语言环境中不起作用,但是对于ISO-8859-1来说可以正常工作。

带有转义字符的扩展版本:

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

输出:

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

为了获得更好的输出,可以替换{2base{38+}%n}将二进制版本增加到23个字节的块。扩展版本:

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

输出:

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

1

的JavaScript

此代码必须f12在此页面上运行:

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

输出:

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

1

18岁的CJam

我决定去输入短代码... 在这里尝试

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

说明

" ##O#- #"      "Push a string onto the stack";
2/              "Split it into an array of two-character groups";
{_(N}%          "For each item in the array, execute _(N : duplicate the element,
                 remove the first character and place it onto the stack after what's left,
                 and push a new line.";

这利用了我设计的笑脸的对称性。

输出量

 ## 
#OO#
#--#
 ## 

1
这脸不笑;)。
Optimizer

@Optimizer比更接近微笑...由于我使用对称性的方式,您在这里不能微笑。

使用uu的微笑是一个选项,如果你要为“猫”慈祥的笑容......
mbomb007

1

蟒蛇

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

输出:

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

第二个例子是错过了圈子
Jasen 2014年

@Jasen我修复了它。
奥利弗·尼


0

HTML 5:321个字符

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

小提琴:http : //jsfiddle.net/wfNGx/

在此处输入图片说明

来源:http : //www.codecademy.com/courses/web-beginner-zh-SWM11/0/1


0

Shell命令或内置

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

根据您的shell或命令集的风格,echo可能会或可能不会使用witout来解释控制字符-e...(……而且我要求我可能不是Vroomfondel!)请尝试...以及所有其他方法失败,使用printf应该是安全的选择...


0

C 178个字符:

源(添加了空格-可以删除所有内容,除了位于 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);}
 }

输出:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.