Cetak wajah tersenyum


48

Persyaratan

Demi tantangan, mari kita tentukan sebuah unit :

Unit didefinisikan sebagai titik mana pun yang menyusun kisi di mana wajah digambar (piksel untuk layar, karakter untuk seni ASCII, dll.).

The persyaratan minimal untuk wajah adalah:

Wajah tersenyum terdiri dari bentuk yang menyerupai lingkaran (belum tentu sempurna) dari radius apa pun. Harus ada setidaknya 1 unit untuk masing-masing dari dua mata dan setidaknya 2 unit untuk mulut. Mata dan mulut harus dalam bentuk wajah. Mulut dapat berorientasi seperti yang Anda inginkan (bahagia, sedih, acuh tak acuh, dll.).

Berikut ini contoh outputnya:

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

Tujuan

Tentu saja tujuan utamanya adalah menghasilkan kode sesingkat mungkin, tetapi seni juga penting.

Pemenang

Pemenang dipilih berdasarkan jumlah suara dari pengguna, dalam, setidaknya, 5 hari ke depan.



5
Wow, 8 pertanyaan di daftar pertanyaan panas. Situs kami harus mendapatkan lebih banyak lalu lintas.
Justin

Bukankah wajah acuh tak acuh lebih mudah daripada bahagia, dan sedih kadang lebih sulit?
o0 '.

2
Tidak akan membuat ini menjadi jawaban karena tidak sesuai dengan persyaratan minimum, tapi saya ingin berpadu ... alt + 1dan alt + 2akan menghasilkan ☺ dan ☻ masing-masing. Demi argumen, saya akan mempertimbangkan alttombol tekan karakter dan memanggil 2 karakter.
Dryden Long

1
Akankah utas ini pernah berakhir? :)
avall

Jawaban:


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

versi yang dioptimalkan (dengan beberapa peningkatan & tanpa spasi putih yang tidak perlu)

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

Yah .. mungkin itu tidak sesingkat yang Anda inginkan tetapi tidak konvensional pasti. Ini terlihat lebih baik ketika browser Anda dimaksimalkan. Saya sangat menikmati pertanyaan Anda! Jika Anda ingin menambah detail, kurangi dsedikit variabel.

sunting: Sayangnya saya tidak dapat menjalankannya di jsfiddle tetapi Anda dapat menempelkannya ke konsol Javascript di browser yang ada. Oh, dan aktifkan munculan di halaman :).

edit2: Anda dapat menjalankannya membuat file html baru dan menempelkan kode ke dalamnya:

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

Kemudian ketika Anda menjalankannya dan tidak ada yang terjadi, cukup aktifkan jendela sembulan dan muat ulang laman. Selain itu saya tempel tangkapan layar


23
Atas nama Bwian dari Yudea, apa ini ...
nitro2k01

2
Sekarang berhasil. Butuh waktu sekitar 2m untuk menutup semua popup
s3lph

7
Setelah menghabiskan banyak waktu untuk menonaktifkan popup yang mengganggu, mengaktifkannya sulit. Saya menonaktifkan adBLock dan mengizinkan semua munculan di browser saya ... setelah setengah wajah muncul, ia memutuskan untuk mengaktifkan kembali pemblokir!
Charity Leschinski

4
Pikiran luar biasa yang luar biasa! Saya tidak akan pernah berpikir untuk melakukan hal seperti ini.
Gari BN

4
Itu luar biasa orisinal!
Oberon

66

HTML, 200 141 karakter

Berkat berhasil , saya mengurangi ini menjadi 141 karakter :

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

Inilah HTML asli:

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

Berfungsi paling baik di layar kecil:

: - |


4
Ini adalah seni : P
Shoe

3
Anda tidak harus menutup sebagian besar tag Anda (sebagian besar browser akan menanganinya), Anda tidak perlu menentukan jenis input (teks default) dan tidak menutup <br> (html5). Berikut kode yang dioptimalkan dengan hanya 150 karakter :): jsfiddle.net/avall/TdPkF
avall

@avall Sempurna, terima kasih :-)
squeamish ossifrage

158 karakter dan sekarang memusatkan rambut sehingga terlihat bagus di layar ukuran berapa pun. jsfiddle.net/TdPkF/5
AverageMarcus

1
@squeamishossifrage Anda harus menghapus semua kecuali 3 rambut, dan itu akan menjadi Homer Simpson!
mbomb007

55

Brainfuck: 583 karakter (tanpa menghitung spasi)

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

Keluaran:

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

11
Kode asli terlihat sedikit seperti wajah (jika Anda berusaha sangat keras ...), saya bertanya-tanya seberapa sulit untuk membuat kode dan keluaran keduanya menjadi wajah ...
w4etwetewtwet

1
@ handuel Keduanya wajah, tetapi berbeda. Apakah maksud Anda kode dan outputnya sama seperti quine? Saya yakin itu bisa dilakukan.
Sylwester

Saya hanya bermaksud agar kode itu terlihat lebih seperti wajah, saya tidak menyadari itu disengaja.
w4etwetewtwet

1
Dalam Brainfuck, semua yang bukan karakter kontrol adalah komentar. Itulah sebabnya kode sumber dapat dibuat agar terlihat seperti 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>

Render seperti ini:

Smiley


Unit tanpa batas?
user80551

6
Alat yang tepat untuk pekerjaan yang tepat.
Alpha

Saya tidak akan mengatakan SVG benar-benar bahasa pemrograman
Oliver Ni

@Liver Ini adalah bahasa pemrograman seperti halnya HTML ... (yang bukan).
mbomb007

37

Ruby, 224

Douglas Adams akan ngeri. :-P

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

Keluaran:

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

Ruby, 110

Teknik yang sama. Kode lebih sedikit. Kurang berseni. Sepertinya seseorang melelehkan plastik yang tersenyum. : -}

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

Keluaran:

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

Apakah contoh kedua dihitung? Tidak ada lingkaran di sekitar wajah.
Kevin - Reinstate Monica

1
@ Kevin, poin bagus. Diubah.
Darren Stone

24

QBasic ASCII, 134 (tidak dioptimalkan)

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

Jawaban ini benar-benar menipu dengan menggunakan karakter ASCII 1 untuk senyumannya. Namun, tidak seperti jawaban BF dan "teks biasa", itu benar-benar mematuhi aturan dengan membuat ASCII seni berdasarkan piksel karakter smiley, daripada sekadar mencetak karakter sebagai solusi penuh. Versi yang tidak dioptimalkan menunjukkan bagaimana IDE QBasic menyimpan file. IDE adalah "membantu" memperbaiki sintaks untuk kita dan menambahkan banyak spasi di mana "dibutuhkan".

Keluaran: QBasic ASCII tersenyum tidak dioptimalkan

QBasic ASCII, 80 (dioptimalkan)

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

Ini adalah versi yang dioptimalkan dari contoh kode pertama, yang masih dimuat dalam QBasic. Hal-hal yang dilakukan:

  • Menghapus semua spasi putih yang tidak perlu. (Duh!)
  • Mengubah jalur CRLF hanya menjadi LF.
  • Diganti CHR$(1)dengan string yang berisi karakter sebenarnya. (Di sini diilustrasikan dengan karakter Unicode yang cocok. Jika Anda benar-benar ingin mencoba kode, harap ganti dengan karakter ASCII 1 nyata menggunakan hex editor.)
  • Diganti PRINTdengan ?, sebagaimana tradisi BASIC memungkinkan.
  • Mengganti IFgaris dengan garis yang mencetak karakter berdasarkan nilai piksel sumber. Ini akan menjadi 0 atau 3. 0 adalah warna hitam. Character 0 mencetak karakter nol yang diperlakukan seperti spasi. 3 adalah warna putih dalam palet 4-warna CGA. Karakter ASCII 3 adalah hati.

Keluaran: QBasic ASCII smile dioptimalkan

QBasic graphical, 83 (whitespace dioptimalkan)

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

Tapi tunggu, saya di sini Anda bertanya, tidak bisakah Anda menggunakan perintah grafis bawaan QBasic? Tentu, tetapi itu tidak akan benar-benar menyelamatkan Anda byte, karena verbositas bahasa. Tetapi memang memiliki fungsi built-in untuk hanya menggambar busur lingkaran antara dua sudut yang diberikan, yang bagus. Sudut diberikan dalam radian, dan 4dan 5.4perkiraan lingkaran busur simetris yang berpusat di sekitar π*3/2, atau jika Anda telah bergabung sisi baik , τ*3/4.

Keluaran: QBasic smiley grafis dioptimalkan

Catatan: Ukuran dalam jawaban ini menunjukkan seberapa besar file tersebut, dalam byte.


Saya merasa bahwa saya mungkin orang termuda di sini yang masih bisa membaca QBASIC ... :) Nice one
apnorton

12

APL, 97 karakter / 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]

Ia bekerja dengan menghitung beberapa persamaan lingkaran. Diuji pada GNU APL .

Output hasil tersenyum ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL dapat ditulis dalam charset single-byte (warisan) sendiri yang memetakan simbol APL ke nilai 128 byte atas. Oleh karena itu, untuk tujuan penilaian, program karakter N yang hanya menggunakan karakter ASCII dan simbol APL dapat dianggap sebagai panjang N byte.


11

Bash, 63 karakter

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

Keluaran:

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

Kesenian:

Sapi


9

Bash, 22 karakter

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

Output sampel: masukkan deskripsi gambar di sini

Sunting: ini bisa dipagari lebih lanjut seperti yang disarankan oleh beberapa orang. Versi mandiri terpendek yang ditemukan sejauh ini adalah:

curl -L x.co/3WG0m

(terima kasih nitro2k01)


2
Dapat dioptimalkan untuk curl -L x.co/3WG0m. Lebih lanjut dapat dioptimalkan jika kita memiliki nama host lokal satu karakter yang juga mengembalikan data secara langsung (menghilangkan -Lsaklar yang diperlukan untuk mengikuti
arahan

4
Di mana tantangan dalam memposting smiley di pastebin dan mengunduhnya menggunakan wget?
s3lph

@the_Seppi: itulah leluconnya. Ini dimaksudkan sebagai solusi berpikir di luar kotak.
Kerusuhan

1
Kita perlu menemukan seseorang dengan akses ke server nama root dan meyakinkan dia untuk menambahkan domain yang disebut Zyang menunjuk ke server yang menjadi tuan rumah file tersebut.
marinus

1
cantik, ini favoritku :)
jcora

9

Python 247 230 227 Karakter - dan versi imut

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

masukkan deskripsi gambar di sini

Python 243 Karakter - Menggunakan warna

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

masukkan deskripsi gambar di sini


8

C ++ - 122 karakter tanpa spasi yang tidak perlu

Ini yang paling realistis yang bisa saya pikirkan:

#include <iostream>

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

Bagi Anda yang kehilangan, itu menciptakan ini:

Gambar seni ASCII


2
return 0;tidak diperlukan dalam ISO C ++ :)
Sepatu

Terima kasih. Itu akan membantu memotong karakter dalam teka-teki masa depan.
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, banyak bahasa lain ... - 1601 karakter

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

Sumber Smiley: Asciiworld.com: Smiley


4

html, css

Saya tahu ini bukan pengkodean pendek atau nyata, tetapi saya masih ingin memposting ini

<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


Mungkin akan terlihat lebih baik dengan #d{border-radius:20px/10px;}. Atau dengan #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. Atau dengan #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
manatwork

4

Rebmu , 24 karakter

Oh, kemanusiaan minimal . :-) Belum ada program Rebmu yang mengesankan, dengan sengaja menanamkan pHp sebagai penghargaan untuk pil biru di dunia pemrograman :

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

Eksekusi:

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

Penjelasan

Rebmu hanyalah dialek Rebol . Ini mewarisi batasan parse, menggunakan istilah disingkat tanpa spasi yang dipisahkan oleh huruf kapital. Ini memiliki perlakuan khusus ketika dijalankan pertama dikapitalisasi vs tidak dikapitalisasi.

(Jadi, bukannya memisahkan istilah seperti AbcDefGhiitu dapat menggunakan perbedaan antara ABCdefGHIdan abcDEFghiuntuk memeras sedikit informasi. Urutan yang berjalan mulai dalam semua huruf kapital dipisahkan sehingga istilah pertama mewakili "kata-kata!", Sering diartikan secara kontekstual sebagai keinginan untuk tugas. lihat video )

Jika Anda ingin menerjemahkan ini ke Rebol asli, Anda harus menerima hal-hal seperti itu dimulai dengan huruf H yang berarti itu sebenarnya h:dan bukan h. Sumbernya analog dengan:

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

Menetapkan string --ke h (menggunakan pembatas string asimetris karenaprint {"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?"}

Mencetak h sekali, mencetak string lain di mana ^/urutan pelarian untuk baris baru (tanda yang lebih jarang digunakan dalam perangkat lunak daripada garis miring terbalik yang sering muncul di jalur) , mencetak h lagi.


4

JavaScript 262 251

Sunting: menambahkan mata yang lebih baik.

Mencetak wajah tersenyum ke konsol.

Bisa kehilangan beberapa karakter untuk membuat bitmask saya lebih sederhana dan mencetak wajah yang kurang cantik, atau menggunakan persamaan lingkaran daripada elips untuk menjelaskan jarak karakter - tapi itu bukan semangat.

Anda dapat mengubah rvariabel untuk mengubah ukuran dan mendapatkan wajah yang kurang lebih detail; nomor berapa pun >=7 && <=99akan memberikan hasil yang baik dan tetap dalam batas karakter.

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)

Dapat dibaca manusia:

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)

Keluaran:

smiley di konsol

Gim golf pertama saya sepertinya akan beberapa perbaikan.


4

Perl, 106 karakter

Ini adalah Perl oneliner, hanya perlu C&P pada command prompt, asalkan Acme::EyeDropsmodul Perl sudah diinstal pada mesin.

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

masukkan deskripsi gambar di sini

Cara lain, tersenyum dengan Menarik mukanya

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

masukkan deskripsi gambar di sini

Namun cara lain, senyum dengan Menarik wajah terbalik,

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

masukkan deskripsi gambar di sini


4

Bash + ImageMagick: 137 karakter

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:

Output sampel:

smiley grafis

Tapi karena ini adalah tantangan ...

Bash + ImageMagick: 172 karakter

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:

Output sampel:

ASCII tersenyum


3

GolfScript, 27

Ini menghasilkan contoh ke-2 persis seperti yang diberikan.

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

Yang pertama bisa dilakukan dengan cara yang sama, tapi saya pikir yang ke-2 terlihat lebih bagus :)


2

Brainf *** - 2

+.

Mencetak atau nilai ascii 1. (mungkin tidak bekerja dengan beberapa platform)


Nitpick: ASCII 1 adalah SOH, karakter yang tidak dapat dicetak. Smiley itu adalah U + 263A, atau 1 di CP437, apa yang mungkin Anda gunakan. Sayangnya, output Anda gagal dalam kondisi menggunakan "unit" yang cukup untuk mata dan mulut.
Christopher Creutzig

2
@ChristopherCreutzig Tidak gagal kondisi itu. Setiap mata berukuran 1 atau lebih piksel, mulut lebih dari dua kali lebih besar.
Justin

Exp. "ASCII ART" terdiri dari dua bagian. Saya tidak melihat satu pun dari mereka di sini
s3lph

2

Bash - one liner: 442 karakter

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

Contoh output: (dipanggil oleh m 8)

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

Agak gila, tapi saya memilih menggunakan berlian daripada lingkaran. Mata ditutupi oleh kacamata pengaman.

BASH - 252 karakter (terima kasih @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
Keren. Dengan bentuk itu bisa menggantikan gambar gravatar saya. :) Hal ini dapat dikurangi menjadi 252 karakter: 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;}. Atau 245 jika Anda menyerahkan fungsi m dan meletakkan kode dalam file skrip. Mungkin dapat dikurangi bahkan lebih dengan mengubah perhitungan, tetapi saya tidak punya waktu untuk itu sekarang.
manatwork

2

HTML + CSS, 83

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

tangkapan layar (menggunakan firefox): masukkan deskripsi gambar di sini

Sayang sekali saya terlambat dengan jawaban saya (mendapat +10 perwakilan juga cukup terlambat ...)


Saya lebih menyukainya border-radius:50%dan satu <hr>: dabblet.com/gist/8472397
manatwork

@manatwork atau seperti ini: jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine, menggunakan karakter spasi non-breaking literal lebih pendek dari &nbsp;: jsfiddle.net/T9BdL/2
manatwork

1
Mata yang tumpang tindih wajahnya bertentangan dengan aturan, saya pikir. Itu sebabnya saya melakukannya seperti saat ini. Juga agak mengingatkan saya pada wajah Kanada di taman selatan.
Leo Pflug

2
Tidak benar-benar bermain
golf

1

GolfScript, 18

Program ini menggunakan beberapa nilai yang dikodekan biner yang muncul sebagai karakter aneh / tidak valid dalam editor teks.

Inilah hex dump:

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

Catatan: tidak berfungsi di lokal UTF-8, tetapi berfungsi baik dengan ISO-8859-1 misalnya.

Versi yang diperluas dengan karakter yang lolos:

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

Keluaran:

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

Untuk output yang lebih bagus, Anda dapat mengganti blok {2base{38+}%n}yang membawa versi biner ke 23 byte. Versi yang diperluas:

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

Keluaran:

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

1

JavaScript

Kode ini harus dijalankan di f12halaman ini:

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

Keluaran:

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

1

CJam, 18

Saya memutuskan untuk mencari kode pendek ... Coba di sini .

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

Penjelasan

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

Ini mengeksploitasi simetri wajah tersenyum yang saya rancang.

Keluaran

 ## 
#OO#
#--#
 ## 

1
Wajah ini tidak tersenyum;).
Pengoptimal

@Optimizer Lebih dekat dengan senyuman daripada ini ... Karena cara saya menggunakan simetri, Anda tidak dapat memiliki senyum di sini.

Menggunakan uuuntuk senyum adalah sebuah pilihan, jika Anda ingin senyum "kucing" itu ...
mbomb007

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

Keluaran:

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

Contoh kedua hilang lingkaran
Jasen

@ Yasen saya memperbaikinya.
Oliver Ni



0

Perintah atau builtin shell

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

Bergantung pada rasa shell atau set perintah Anda, echomungkin atau mungkin tidak menafsirkan karakter kontrol dengan atau tanpa -e... (... dan saya menuntut agar saya mungkin atau mungkin bukan Vroomfondel!) Coba saja ... dan jika semua yang lain gagal, menggunakan printfharus menjadi taruhan yang aman ...


0

C 178 karakter:

source (whitespace ditambahkan - semua dapat dihapus kecuali pada 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);}
 }

keluaran:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.