In một khuôn mặt cười


48

Yêu cầu

Vì lợi ích của thử thách, hãy xác định một đơn vị :

Một đơn vị được định nghĩa là bất kỳ điểm nào tạo lưới trong đó mặt được vẽ (pixel cho màn hình, ký tự cho nghệ thuật ASCII, v.v.).

Các yêu cầu tối thiểu cho khuôn mặt là:

Một khuôn mặt cười bao gồm một hình dạng giống như một vòng tròn (không nhất thiết phải hoàn hảo) của bất kỳ bán kính nào. Phải có ít nhất 1 đơn vị cho mỗi hai mắt và ít nhất 2 đơn vị cho miệng. Cả mắt và miệng phải nằm trong hình dạng khuôn mặt. Miệng có thể được định hướng theo cách bạn muốn (vui, buồn, thờ ơ, v.v.).

Đây là một ví dụ về đầu ra:

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

Bàn thắng

Tất nhiên mục tiêu chính là đưa ra mã ngắn nhất có thể, nhưng nghệ thuật cũng rất quan trọng.

Người chiến thắng

Người chiến thắng được chọn dựa trên số phiếu bầu từ người dùng, ít nhất là trong 5 ngày tới.



5
Wow, 8 câu hỏi trong danh sách câu hỏi nóng. Trang web của chúng tôi sẽ nhận được nhiều lưu lượng hơn.
Justin

Không phải khuôn mặt thờ ơ dễ dàng hơn hạnh phúc, và đôi khi buồn khó khăn hơn?
o0 '.

2
Sẽ không làm cho câu trả lời này vì nó không phù hợp với các yêu cầu tối thiểu, nhưng tôi muốn hòa nhập vào ... alt + 1alt + 2sẽ tạo ra ☺ và ☻ tương ứng. Để tranh luận, tôi sẽ xem xét altphím bấm một ký tự và gọi 2 ký tự đó.
Dryden Long

1
Chủ đề này sẽ bao giờ kết thúc? :)
trước

Câu trả lời:


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

phiên bản tối ưu hóa (với một số cải tiến & không có khoảng trắng không cần thiết)

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

Chà .. có thể nó không ngắn như bạn muốn nhưng chắc chắn nó không theo thông lệ. Nó trông tốt hơn khi trình duyệt của bạn được tối đa hóa. Tôi thực sự rất thích câu hỏi của bạn! Nếu bạn muốn tăng chi tiết chỉ cần giảm dnhẹ biến.

chỉnh sửa: Thật không may, tôi không thể chạy nó trên jsfiddle nhưng bạn có thể dán nó vào bảng điều khiển Javascript trong trình duyệt aby. Ồ, và kích hoạt cửa sổ bật lên trên trang :).

edit2: Bạn có thể chạy nó tạo một tệp html mới và dán mã vào đó:

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

Sau đó, khi bạn chạy nó và không có gì xảy ra, chỉ cần kích hoạt các cửa sổ bật lên và tải lại trang. Ngoài ra tôi dán ảnh chụp màn hình


23
Nhân danh Bwian of Judea, đây là gì ...
nitro2k01

2
Bây giờ nó đang hoạt động. Mất khoảng 2m để đóng tất cả các cửa sổ bật lên
s3lph

7
Sau khi dành quá nhiều thời gian để cố gắng vô hiệu hóa các quảng cáo gây phiền nhiễu, việc kích hoạt chúng thật khó khăn. Tôi đã tắt adBLock và cho phép tất cả các cửa sổ bật lên trong trình duyệt của mình ... sau khi một nửa khuôn mặt xuất hiện, nó quyết định bật lại trình chặn!
Từ thiện Leschinski

4
Tuyệt vời nghĩ ra! Tôi sẽ không bao giờ nghĩ sẽ làm một cái gì đó như thế này.
Gari BN

4
Đó là bản gốc tuyệt vời!
Oberon

66

HTML, 200 141 ký tự

Nhờ avail , tôi đã cắt giảm này để 141 ký tự :

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

Đây là HTML gốc:

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

Hoạt động tốt nhất trên màn hình nhỏ:

: - |


4
Đây là nghệ thuật : P
Giày

3
Bạn không phải đóng hầu hết các thẻ của mình (hầu hết các trình duyệt sẽ xử lý nó), bạn không cần xác định loại đầu vào (văn bản là mặc định) và không đóng <br> (html5). Dưới đây là đoạn code tối ưu hóa với chỉ 150 ký tự :): jsfiddle.net/avall/TdPkF
avall

@avall Tuyệt vời, nhờ :-)
ossifrage squeamish

158 chars và bây giờ tập trung vào tóc để nó trông tốt trên bất kỳ màn hình kích thước. jsfiddle.net/TdPkF/5
AverageMarcus 30/12/13

1
@squeamishossifrage Bạn nên loại bỏ tất cả trừ 3 sợi lông, và sau đó sẽ là Homer Simpson!
mbomb007

55

Brainfuck: 583 ký tự (không tính khoảng trắng)

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

Đầu ra:

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

11
Mã ban đầu trông hơi giống khuôn mặt (nếu bạn thực sự cố gắng ...), tôi tự hỏi làm thế nào khó để tạo mã và xuất cả hai mặt ...
w4etwetewtwet

1
@handuel Cả hai đều là khuôn mặt, nhưng khác nhau. Ý của bạn là mã và đầu ra giống như một quine? Tôi chắc chắn rằng nó có thể được thực hiện.
Sylwester

Tôi chỉ có nghĩa là để mã trông giống khuôn mặt hơn, tôi không nhận ra đó là cố ý.
w4etwetewtwet

1
Trong Brainfuck, mọi thứ không phải là nhân vật điều khiển đều là một nhận xét. Đó là lý do tại sao mã nguồn có thể được thực hiện để trông giống như một mặt cười.
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>

Những người thích như thế này:

Cười


Đơn vị vô hạn?
dùng80551

6
Công cụ phù hợp cho công việc phù hợp.
Alpha

Tôi sẽ không nói SVG thực sự là một ngôn ngữ lập trình
Oliver Ni

@Oliver Đó là ngôn ngữ lập trình nhiều như HTML là ... (không phải ngôn ngữ).
mbomb007

37

Hồng ngọc, 224

Douglas Adams sẽ kinh hoàng. :-P

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

Đầu ra:

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

Hồng ngọc, 110

Kỹ thuật tương tự. Ít mã hơn. Ít nghệ thuật. Hình như ai đó làm tan chảy một nụ cười dẻo. : -}

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

Đầu ra:

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

Liệu ví dụ thứ hai có tính không? Không có vòng tròn quanh mặt.
Kevin - Tái lập Monica

1
@Kevin, điểm tốt. Sửa đổi.
Darren Stone

24

QBasic ASCII, 134 (không tối ưu hóa)

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

Câu trả lời này hoàn toàn gian lận bằng cách sử dụng ký tự ASCII 1 cho mặt cười của nó. Tuy nhiên, không giống như câu trả lời BF và "văn bản đơn giản", nó thực sự tuân thủ các quy tắc bằng cách tạo ra nghệ thuật ASCII dựa trên các pixel của nhân vật mặt cười, thay vì chỉ in đơn giản là ký tự như là giải pháp đầy đủ của nó. Phiên bản chưa được tối ưu hóa thể hiện cách IDE của QBasic lưu các tệp. IDE "hữu ích" sửa lỗi cú pháp cho chúng tôi và thêm rất nhiều khoảng trắng trong đó "cần thiết".

Đầu ra: Nụ cười QBasic ASCII không được tối ưu hóa

QBasic ASCII, 80 (được tối ưu hóa)

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

Đây là phiên bản tối ưu hóa của mẫu mã đầu tiên, vẫn tải trong QBasic. Những việc đã được thực hiện:

  • Đã xóa tất cả các khoảng trắng không cần thiết. (Tât nhiên!)
  • Đã thay đổi ngắt dòng CRLF thành LF.
  • Thay thế CHR$(1)bằng một chuỗi chứa ký tự thực tế. (Ở đây được minh họa bằng ký tự Unicode phù hợp. Nếu bạn thực sự muốn thử mã, vui lòng thay thế bằng ký tự ASCII thực 1 bằng trình soạn thảo hex.)
  • Thay thế PRINTbằng ?, như truyền thống BASIC cho phép.
  • Thay thế IFdòng bằng một dòng in các ký tự dựa trên giá trị pixel nguồn. Đây sẽ là 0 hoặc 3. 0 là màu đen. Ký tự 0 in ký tự null được coi như khoảng trắng. 3 là màu trắng trong bảng màu 4 màu của CGA. ASCII ký tự 3 là một trái tim.

Đầu ra: Tối ưu hóa nụ cười QBasic ASCII

Đồ họa QBasic, 83 (tối ưu hóa khoảng trắng)

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

Nhưng chờ đã, tôi hỏi bạn, bạn có thể sử dụng các lệnh đồ họa tích hợp của QBasic không? Chắc chắn, nhưng điều đó sẽ không thực sự giúp bạn tiết kiệm bất kỳ byte nào, vì tính dài dòng của ngôn ngữ. Nhưng nó có chức năng tích hợp để chỉ vẽ một vòng cung tròn giữa hai góc đã cho, thật tuyệt. Các góc được tính theo radian 45.4xấp xỉ một vòng cung tròn đối xứng tập trung xung quanh π*3/2hoặc nếu bạn đã tham gia mặt tốt , τ*3/4.

Đầu ra: Đồ họa QBasic được tối ưu hóa

Lưu ý: Kích thước trong câu trả lời này biểu thị mức độ lớn của tệp, tính bằng byte.


Tôi cảm thấy rằng tôi có thể là người trẻ nhất ở đây vẫn có thể đọc QBASIC ... :) Một người tuyệt vời
apnorton

12

APL, 97 ký tự / byte *

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

Nó hoạt động bằng cách tính toán một vài phương trình vòng tròn. Đã thử nghiệm trên GNU APL .

Đầu ra sản lượng mặt cười ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL có thể được viết bằng bộ ký tự byte đơn (di sản) riêng để ánh xạ các ký hiệu APL đến các giá trị 128 byte trên. Do đó, với mục đích ghi điểm, một chương trình gồm các ký tự N chỉ sử dụng các ký tự ASCII và các ký hiệu APL có thể được coi là dài N byte.


11

Bash, 63 ký tự

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

Đầu ra:

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

Nghệ thuật:

Bò cái.


9

Bash, 22 ký tự

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

Đầu ra mẫu: nhập mô tả hình ảnh ở đây

Chỉnh sửa: điều này có thể được đánh gôn hơn theo đề xuất của một số người. Phiên bản độc lập ngắn nhất được tìm thấy cho đến nay là:

curl -L x.co/3WG0m

(cảm ơn nitro2k01)


2
Có thể được tối ưu hóa để curl -L x.co/3WG0m. Có thể được tối ưu hóa hơn nữa nếu chúng ta có tên máy chủ cục bộ, một ký tự cũng trả lại dữ liệu trực tiếp (loại bỏ công -Ltắc cần thiết để theo chuyển hướng.)
nitro2k01

4
Đâu là challange trong việc đăng một mặt cười trong pastebin và tải xuống bằng wget?
s3lph

@the_Seppi: đó chính xác là trò đùa. Nó được dự định là một giải pháp tư duy bên ngoài.
Bạo loạn

1
Chúng ta cần tìm một người có quyền truy cập vào máy chủ tên gốc và thuyết phục anh ta thêm một tên miền được gọi là Zmáy chủ lưu trữ tệp.
bến tàu

1
đẹp, đây là sở thích của tôi :)
jcora 31/12/13

9

Python 247 230 227 Ký tự - và phiên bản dễ thương hơn

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

nhập mô tả hình ảnh ở đây

Ký tự Python 243 - Sử dụng màu sắc

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

nhập mô tả hình ảnh ở đây


8

C ++ - 122 ký tự không có khoảng trắng không cần thiết

Đây là thực tế nhất mà tôi có thể đưa ra:

#include <iostream>

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

Đối với những người bạn đang bỏ lỡ, nó tạo ra điều này:

Hình ảnh nghệ thuật ASCII


2
return 0;không bắt buộc trong ISO C ++ :)
Giày

Cảm ơn. Điều đó sẽ giúp cắt các nhân vật trong các câu đố trong tương lai.
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, nhiều ngôn ngữ khác ... - 1601 ký tự

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

Nguồn cười: Asciiworld.com: Smiley


4

html, css

Tôi biết nó không ngắn cũng không phải mã thực, nhưng tôi vẫn muốn đăng bài này

<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


Có lẽ sẽ nhìn tốt hơn với #d{border-radius:20px/10px;}. Hoặc với #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. Hoặc với #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
manatwork 30/12/13

4

Rebmu , 24 ký tự

Ôi, nhân loại tối thiểu . :-) Chương trình Rebmu ấn tượng nhất, vì vậy, cố tình nhúng pHp như một sự tôn vinh cho viên thuốc màu xanh trong thế giới lập trình :

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

Chấp hành:

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

Giải trình

Rebmu chỉ là một phương ngữ của Rebol . Nó kế thừa các ràng buộc phân tích cú pháp, sử dụng các thuật ngữ viết tắt mà không có khoảng cách được phân tách bằng cách viết hoa. Nó có một điều trị đặc biệt khi lần chạy đầu tiên được viết hoa so với không được cung cấp.

(Vì vậy, chứ không phải là tách thuật ngữ như AbcDefGhinó có thể sử dụng sự khác biệt giữa ABCdefGHIabcDEFghiđể bóp ra một chút thông tin. Trình tự mà chạy bắt đầu trong tất cả các vốn được tách ra nên nhiệm kỳ đầu tiên đại diện cho một "bộ chữ!", Thường theo ngữ cảnh hiểu là một mong muốn cho một nhiệm vụ. xem video )

Nếu bạn muốn dịch nó sang Rebol bản địa, bạn phải chấp nhận những thứ như thế bắt đầu bằng chữ H viết hoa nghĩa là đó thực sự là một h:chứ không phải một h. Do đó, nguồn tương tự như:

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

Gán chuỗi --cho h (sử dụng các dấu phân cách chuỗi không đối xứng vì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?"}

In h một lần, in một chuỗi khác trong đó ^/là chuỗi thoát cho dòng mới (dấu mũ được sử dụng ít hơn trong phần mềm so với dấu gạch chéo thường xuất hiện trong đường dẫn) , in lại h.


4

JavaScript 262 251

Chỉnh sửa: thêm mắt tốt hơn.

In một khuôn mặt cười vào bảng điều khiển.

Có thể mất khá nhiều ký tự để làm cho bitmask của tôi đơn giản hơn và in khuôn mặt kém xinh hơn hoặc sử dụng phương trình đường tròn thay vì hình elip để tính khoảng cách ký tự - nhưng đó không phải là tinh thần.

Bạn có thể thay đổi rbiến để thay đổi kích thước và có được khuôn mặt chi tiết hơn hoặc ít hơn; bất kỳ số nào >=7 && <=99sẽ cho kết quả tốt và nằm trong giới hạn ký tự.

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)

Con người có thể đọc được:

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)

Đầu ra:

cười trong bảng điều khiển

Trò chơi golf đầu tiên của tôi rất có thể là một số cải tiến.


4

Perl, 106 ký tự

Nó là một onliner Perl, chỉ cần C & P nó trên dấu nhắc lệnh, miễn là Acme::EyeDropsmô-đun Perl đã được cài đặt trên máy.

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

nhập mô tả hình ảnh ở đây

Một cách khác, một nụ cười với Kéo mặt

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

nhập mô tả hình ảnh ở đây

Một cách khác, một nụ cười với Kéo mặt lộn ngược,

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

nhập mô tả hình ảnh ở đây


4

Bash + ImageMagick: 137 ký tự

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:

Đầu ra mẫu:

mặt cười

Nhưng vì đây là một thử thách

Bash + ImageMagick: 172 ký tự

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:

Đầu ra mẫu:

Nụ cười ASCII


3

GolfScript, 27

Điều này đưa ra ví dụ thứ 2 chính xác như được đưa ra.

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

Cái đầu tiên có thể được thực hiện theo cách tương tự, nhưng tôi nghĩ cái thứ hai trông đẹp hơn :)


2

Brainf *** - 2

+.

In hoặc giá trị ascii 1. (có thể không hoạt động với một số nền tảng)


Nitpick: ASCII 1 là SOH, một ký tự không in được. Nụ cười đó là U + 263A, hoặc 1 trong CP437, những gì bạn có thể đang sử dụng. Thật không may, đầu ra của bạn không đạt được điều kiện sử dụng đủ các đơn vị MẠNH cho mắt và miệng.
Christopher Creutzig

2
@ChristopherCreutzig Nó không thất bại điều kiện đó. Mỗi mắt có 1 pixel hoặc hơn, miệng lớn hơn gấp đôi.
Justin

Các điểm kinh nghiệm "ASCII ART" bao gồm hai phần. Tôi không thấy ai trong số họ ở đây
s3lph

2

Bash - một lớp lót: 442 ký tự

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

Kết quả ví dụ: (được gọi bởi m 8)

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

Hơi điên, nhưng tôi chọn dùng kim cương thay vì hình tròn. Đôi mắt được bao phủ bởi kính bảo hộ.

BASH - 252 ký tự (cảm ơn @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
Mát mẻ. Với hình dạng đó, nó có thể thay thế hình ảnh gravatar của tôi. :) Nó có thể được giảm xuống còn 252 ký tự : 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;}. Hoặc 245 nếu bạn từ bỏ chức năng m và đặt mã vào tệp tập lệnh. Có lẽ có thể giảm hơn nữa bằng cách điều chỉnh các tính toán, nhưng tôi không có thời gian cho việc đó bây giờ.
manatwork 30/12/13

2

HTML + CSS, 83

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

ảnh chụp màn hình (sử dụng firefox): nhập mô tả hình ảnh ở đây

thật tệ khi tôi quá muộn với câu trả lời của mình (có +10 đại diện cũng khá muộn ...)


Tôi thích nó nhiều hơn border-radius:50%và duy nhất <hr>: dabblet.com/gist/8472397
manatwork

@manatwork hoặc như thế này: jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine, sử dụng ký tự không gian không phá vỡ theo nghĩa đen ngắn hơn &nbsp;: jsfiddle.net/T9BdL/2
manatwork

1
Đôi mắt chồng lên mặt là trái với quy tắc, tôi nghĩ vậy. Đó là lý do tại sao tôi đã làm nó như hiện tại. Ngoài ra, nó làm tôi nhớ đến khuôn mặt người Canada ở công viên phía nam.
Leo Pflug

2
Không thực sự chơi gôn, nhưng theo yêu cầu, phiên bản css duy nhất: jsfiddle.net/T9BdL/9
Tim Seguine

1

GolfScript, 18

Chương trình này sử dụng một số giá trị được mã hóa nhị phân xuất hiện dưới dạng các ký tự lạ / không hợp lệ trong trình soạn thảo văn bản.

Đây là bãi chứa hex:

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

Lưu ý: nó không hoạt động trong miền địa phương UTF-8, nhưng hoạt động tốt với ISO-8859-1 chẳng hạn.

Phiên bản mở rộng với các ký tự thoát:

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

Đầu ra:

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

Để đầu ra đẹp hơn, bạn có thể thay thế khối {2base{38+}%n}mang phiên bản nhị phân lên 23 byte. Phiên bản mở rộng:

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

Đầu ra:

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

1

JavaScript

Mã này phải được chạy f12trên trang này:

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

Đầu ra:

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

1

CJam, 18

Tôi quyết định chọn mã ngắn ... Hãy thử ở đây .

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

Giải trình

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

Điều này khai thác tính đối xứng của khuôn mặt cười tôi thiết kế.

Đầu ra

 ## 
#OO#
#--#
 ## 

1
Khuôn mặt này nó không cười;).
Trình tối ưu hóa

@Optimizer Nó gần với một nụ cười hơn thế này ... Vì cách tôi đã sử dụng tính đối xứng, bạn không thể có một nụ cười ở đây.

Sử dụng uucho nụ cười là một lựa chọn, nếu bạn đang dùng loại nụ cười "mèo" đó ...
mbomb007

1

Con trăn

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

Đầu ra:

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

ví dụ thứ hai là thiếu vòng tròn
Jasen 26/12/14

@Jasen Tôi đã sửa nó.
Oliver Ni



0

Lệnh Shell hoặc dựng sẵn

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

Tùy thuộc vào hương vị của vỏ hoặc bộ lệnh của bạn, echocó thể hoặc không thể giải thích các ký tự điều khiển bằng hoặc dí dỏm -e... (... và tôi yêu cầu rằng tôi có thể hoặc không thể là Vroomfondel!) Chỉ cần thử ... và nếu tất cả đều khác thất bại, sử dụng printfnên là một đặt cược an toàn ...


0

C 178 ký tự:

nguồn (khoảng trắng được thêm vào - tất cả có thể được loại bỏ ngoại trừ tại 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);}
 }

đầu ra:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.