Gülen yüz yazdırın


48

Gereksinimler

Mücadele uğruna bir birim tanımlayalım :

Birim, yüzün çizildiği ızgarayı oluşturan herhangi bir nokta olarak tanımlanır (ekran için pikseller, ASCII resmi için karakterler, vb.).

Asgari gereklilikler Yüz için şunlardır:

Gülen yüz, herhangi bir yarıçapı olan bir daireye (mutlaka kusursuz değil) benzeyen bir şekilden oluşur. İki gözün her biri için en az 1 birim ve ağız için en az 2 birim olmalıdır. Hem gözler hem de ağız yüz şeklinde olmalıdır. Ağız istediğiniz şekilde yönlendirilebilir (mutlu, üzgün, kayıtsız vb.).

İşte çıktının bir örneği:

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

Hedef

Tabii ki asıl amaç mümkün olan en kısa kodu bulmaktır, ancak sanat da önemlidir.

kazanan

Kazanan, kullanıcıların en azından 5 gün içinde aldığı oy sayısına göre seçilir.



5
Vay, sıcak soru listesinde 8 soru. Sitemiz daha fazla trafik alıyor olmalı.
Justin,

Kayıtsız yüz kesinlikle mutlu olmaktan daha kolay ve üzgün bazen daha zor değil mi?
'.

2
Asgari şartlara uymadığı için bu cevabı vermeyeceğim, ama ben de ... chime alt + 1ve alt + 2☺ üreteceğim. Argüman uğruna, alttuşa bir karakter basın ve 2 karakter olarak adlandırın.
Dryden Long

1
Bu konu hiç bitecek mi? :)
avall

Yanıtlar:


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

optimize edilmiş versiyon (bazı iyileştirmelerle ve gereksiz beyaz boşluklar olmadan)

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

Peki .. belki de istediğin kadar kısa değil ama kesin değil. Tarayıcınız en üst düzeye çıkarıldığında daha iyi görünür. Sorunuzdan gerçekten zevk aldım! Ayrıntıları artırmak istiyorsanız, sadece ddeğişkenleri biraz azaltın .

düzenleme: Ne yazık ki jsfiddle'da çalıştıramıyorum ama aby tarayıcısında Javascript konsoluna yapıştırabilirsiniz. Oh, ve sayfada açılır pencereleri etkinleştirmek :).

edit2: Yeni bir html dosyası yaparak çalıştırabilir ve kodu içine yapıştırabilirsiniz:

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

Sonra çalıştırdığınızda ve hiçbir şey olmadığında, açılır pencereleri etkinleştirin ve sayfayı yeniden yükleyin. Ek olarak yapıştırıyorum ekran görüntüsü


23
Bwian of Judea adına, bu ne ...
nitro2k01

2
Şimdi çalışıyor. Tüm pop-up'ları kapatmak için 2
milyon

7
Can sıkıcı pop-up'ları devre dışı bırakmaya çalışırken çok fazla zaman harcadıktan sonra, bunları etkinleştirmek zordur. AdBLock'u devre dışı bıraktım ve tarayıcımdaki tüm açılır pencerelere izin verdim ... yüzün yarısı göründükten sonra engelleyiciyi tekrar açmaya karar veriyor!
Charity Leschinski,

4
Mükemmel düşünce! Böyle bir şey yapmayı asla düşünmem.
Gari BN

4
Bu olağanüstü bir orijinal!
Oberon

66

HTML, 200 141 karakter

Boşuna teşekkürler , bunu 141 karaktere indirdim :

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

İşte orijinal 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>

Küçük ekranlarda en iyi şekilde çalışır:

: - |


4
Bu sanattır : P
Ayakkabı

3
Etiketlerinizin çoğunu kapatmanız gerekmez (çoğu tarayıcı bunu kullanır), giriş türünü tanımlamanız gerekmez (metin varsayılandır) ve <br> (html5) 'ı kapatmayın. İşte sadece 150 karakterlik optimize kod: :): jsfiddle.net/avall/TdPkF
avall

@avall Mükemmel, teşekkürler :-)
squeamish ossifrage

158 karakter ve şimdi saçları ortalayın, böylece her boyuttaki ekranda güzel görünmesini sağlar. jsfiddle.net/TdPkF/5
AverageMarcus

1
@squeamishossifrage Kılların 3'ü dışında tümünü çıkarmalısınız, sonra Homer Simpson olur!
mbomb007

55

Brainfuck: 583 karakter (boşluk saymadan)

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

Çıktı:

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

11
Orijinal kod bir yüze benziyor (gerçekten çok denerseniz ...), hem kodun hem de çıktının her ikisi de yüz olmak ne kadar zor olacağını merak ediyorum ...
w4etwetewtwet

1
@handuel Her ikisi de yüz, ama farklı. Kod ve çıktının bir quine gibi olmasını mı demek istediniz? Yapılabileceğinden eminim.
Sylwester

Sadece kodun bir surat gibi görünmesini istemiştim, kasıtlı olduğunun farkında değildim.
w4wetewtwetwet

1
Brainfuck'ta kontrol karakteri olmayan her şey bir yorumdur. Kaynak kodun bir surat gibi görünmesi için yapılmasının nedeni budur.
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>

Bu gibi işler:

Smiley


Sonsuz birimler?
user80551

6
Doğru iş için doğru alet.
Alpha

SVG'nin gerçekten bir programlama dili olduğunu söyleyemem
Oliver Ni

@Oliver Bu HTML olduğu kadar bir programlama dili ... (ki değil).
mbomb007

37

Ruby, 224

Douglas Adams çok korkardı. :-P

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

Çıktı:

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

Ruby, 110

Aynı teknik Az kod. Daha az sanatsal. Plastik bir surat eritmiş gibi görünüyor. : -}

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

Çıktı:

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

İkinci örnek sayılır mı? Yüzün etrafında daire yok.
Kevin - Monica

1
@Kevin, iyi nokta. Değişik.
Darren Stone,

24

QBasic ASCII, 134 (korumasız)

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

Bu cevap, gülümsemesi için ASCII karakter 1'i kullanarak tamamen hile yapar. Bununla birlikte, BF ve "düz metin" cevaplarının aksine, aslında karakteri tam çözüm olarak yazdırmak yerine, gülen karakterin piksellerine dayanarak ASCII sanatını yaparak kurallara uyuyor. Geliştirilmemiş sürüm, QBasic'in IDE'sinin dosyaları nasıl kaydettiğini gösterir. IDE, bizim için sözdizimini düzelten ve "ihtiyaç duyulan" yerlere çok fazla boşluk ekleyen "yardımcı" dır.

Çıktı: QBasic ASCII smiley korumasız

QBasic ASCII, 80 (optimize edilmiş)

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

Bu, QBasic'te hala yüklenen ilk kod örneğinin optimize edilmiş bir sürümüdür. Yapılan şeyler:

  • Gereksiz tüm boşlukları kaldırdık. (D'ah!)
  • Değiştirilen CRLF satır sonları yalnızca LF'ye.
  • CHR$(1)Gerçek karakteri içeren bir dize ile değiştirildi . (Burada eşleşen bir Unicode karakteriyle gösterilmiştir. Eğer gerçekten kodu denemek istiyorsanız, lütfen bir hex editörü kullanarak gerçek ASCII karakter 1 ile değiştirin.)
  • BASIC geleneğinin izin verdiği şekilde PRINTile yer değiştirdi ?.
  • IFSatırı, kaynak piksel değerine göre karakterleri basan bir satırla değiştirdi . Bu, 0 veya 3 olacaktır. 0, siyah renktir. Karakter 0, boşluk gibi işlem gören boş bir karakter yazdırır. Şekil 3, CGA'nın 4 renk paletinde beyaz renktir. ASCII karakter 3 bir kalbidir.

Çıktı: QBasic ASCII gülümseme optimize edildi

QBasic graphicical, 83 (boşluklar optimize edilmiş)

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

Bekle, burada soruyorum, sadece QBasic'in yerleşik grafik komutlarını kullanamaz mısın? Tabi, ama bu aslında dilin ayrıntılarından dolayı sizi baytlardan kurtarmayacak. Ancak, sadece verilen iki açı arasında daire şeklinde bir yay çizilmesi yerleşik bir işleve sahiptir, ki bu hoş. Açılar radyan olarak verilir ile, ve 4ve 5.4yaklaşık olarak simetrik etrafında bir çember yayı π*3/2ya Katıldığınız eğer iyi tarafı , τ*3/4.

Çıktı: QBasic grafik surat optimize edilmiş

Not: Bu cevaptaki boyutlar, dosyanın bayt cinsinden ne kadar büyük olduğunu gösterir.



12

APL, 97 karakter / bayt *

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

Birkaç daire denklemini hesaplayarak çalışır. GNU APL'de test edilmiştir .

Çıktı gülen çıkış ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ *: APL, APL sembollerini 128 baytlık değerlerle eşleyen kendi (eski) tek baytlık karakter setinde
yazılabilir. Bu nedenle, puanlama amacıyla, yalnızca ASCII karakterlerini ve APL sembollerini kullanan bir N karakter programı N bayt uzunluğunda kabul edilebilir.


11

Bash, 63 karakter

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

Çıktı:

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

Artistik:

İnekler.


9

Bash, 22 karakter

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

Örnek çıktı: görüntü tanımını buraya girin

Düzenleme: Bu birkaç kişi tarafından önerildiği gibi daha da golf olabilir. Şimdiye kadar bulunan en kısa bağımsız sürüm:

curl -L x.co/3WG0m

(teşekkürler nitro2k01)


2
İçin optimize edilmiş olabilir curl -L x.co/3WG0m. Verileri doğrudan döndüren yerel, tek karakterli bir ana bilgisayar -L
ismimiz

4
Pastebin'e bir surat gönderme ve wget kullanarak indirme sorunu nerede?
s3lph

@ the_Seppi: Bu tam olarak şaka. Kutunun dışında düşünen bir çözüm olarak tasarlanmıştır.
Riot

1
Kök ad sunucularına erişebilecek birini bulmalı ve onu Z, dosyayı barındıran bir sunucuya işaret eden bir etki alanı eklemeye ikna etmeliyiz.
marinus

1
güzel, bu benim favorim :)
jcora

9

Python 247 230 227 Karakterler - ve daha şirin bir versiyon

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

görüntü tanımını buraya girin

Python 243 Karakterler - Renkleri kullanma

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

görüntü tanımını buraya girin


8

C ++ - Gereksiz boşluk bırakmadan 122 karakter

Bu bulabildiğim en gerçekçi şey:

#include <iostream>

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

Kayıp olanlar için, bunu yaratır:

ASCII sanat resmi


2
return 0;C ++ 'da gerekli değildir :)
Ayakkabı

Teşekkürler. Bu, gelecekteki bulmacalarda karakterleri kesmeye yardımcı olacaktır.
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, diğer birçok dil ... - 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 $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""  

Smiley kaynağı: Asciiworld.com: Smiley


4

html, css

Bunun ne kısa ne de gerçek kodlama olduğunu biliyorum, ama yine de bunu göndermek istedim.

<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


Belki daha iyi görünürdü #d{border-radius:20px/10px;}. Veya ile #d{border-radius:0 0 20px 20px/0 0 10px 10px;}. Veya ile #d{height:10px;border-radius:0 0 20px 20px/0 0 10px 10px;margin-top:10px;}.
İnsan yapımı

4

Rebmu , 24 karakter

Oh, asgari insanlık. :-) Şimdiye kadarki en etkileyici Rebmu programı, böylece pHp'i programlama dünyasında mavi haplara bir hediye olarak dahil etmek :

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

Yürütme:

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

açıklama

Rebmu, sadece bir Rebol lehçesidir . Ayrıştırma kısıtlamalarını miras alır, büyük harf kullanımı ile ayrılmış boşluklar olmadan kısaltılmış terimler kullanır. İlk çalıştırmada kapitalize edilmemiş vs büyük harf kullanıldığında özel bir muamele görür.

(Bu nedenle, terimleri ayırmak yerine, biraz bilgiyi sıkmak ve AbcDefGhiarasındaki farkı kullanmak için kullanabilirsiniz . Çalışmaları büyük harfle başlayan diziler birbirinden ayrılır, böylece ilk terim genellikle bağlamsal olarak arzu olarak yorumlanan bir "küme kelimeyi!" Temsil eder. ödev için videoya bakınız )ABCdefGHIabcDEFghi

Bunu yerel Rebol'a çevirmek istiyorsanız, bunun aslında bir h:değil de olduğu anlamına gelir h. Bu nedenle kaynak şuna benzer:

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

Dize --h atar (çünkü asimetrik dize sınırlayıcıları kullanır, çünkü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?"}

Bir kez h basar ^/, yeni satır için kaçış dizisi olan başka bir dize basar (karteller yazılımda sıklıkla yollarda görünen ters eğik çizgilerden daha az kullanılır) , h tekrar basar.


4

JavaScript 262 251

Düzenleme: daha iyi gözler eklendi.

Konsola gülen bir yüz yazdırır.

Bit maskemi daha basit hale getirmek ve daha az güzel bir yüz yazdırmak için birkaç karakterimi kaybedebilir ya da karakter aralığını hesaba katmak için elips yerine daire denklemi kullanabilirsiniz - ama bu ruh değil.

rBoyutu değiştirmek ve daha az ya da çok ayrıntılı bir yüz elde etmek için değişkeni değiştirebilirsiniz; herhangi bir sayı >=7 && <=99iyi bir sonuç verir ve karakter sınırlarında kalır.

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)

İnsan okunabilir:

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)

Çıktı:

konsolda gülen

İlk golf oyunumun bazı gelişmeler olması muhtemel.


4

Perl, 106 karakter

Perl oneliner, Perl Acme::EyeDropsmodülünün zaten makineye kurulu olması şartıyla, komut isteminde C&P'ye basmanız yeterli .

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

görüntü tanımını buraya girin

Başka bir yol, bir yüz çekerek bir surat

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

görüntü tanımını buraya girin

Başka bir yol, baş aşağı bir yüz çekerek bir surat,

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

görüntü tanımını buraya girin


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:

Örnek çıktı:

grafik gülen

Fakat bu bir mücadelesi olduğu için…

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:

Örnek çıktı:

ASCII gülen


3

GolfScript, 27

Bu 2. örneği tam olarak verildiği şekilde verir.

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

Birincisi aynı şekilde yapılabilir, ama bence ikincisi daha güzel görünüyor :)


2

Brainf *** - 2

+.

1 değerini yazdırır veya ascii (bazı platformlarda çalışmayabilir)


Nitpick: ASCII 1, yazdırılamayan bir karakter olan SOH'dir. Bu gülen yüz, muhtemelen kullandığınız U + 263A veya CP437'de 1'dir. Maalesef, çıktınız gözler ve ağız için yeterli “birim” kullanma koşulunu yerine getirmiyor.
Christopher Creutzig

2
@ChristopherCreutzig Bu durum başarısız olmaz. Her göz 1 piksel kadardır, ağız iki katından fazla büyüktür.
Justin,

Exp. “ASCII ART” iki bölümden oluşmaktadır. Burada ikisini de göremiyorum
s3lph

2

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

Örnek çıktı: (denir m 8)

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

Biraz çılgınca, ama daire yerine elmas kullanmayı seçtim. Gözler koruyucu gözlüklerle kapatılmıştır.

BASH - 252 karakter (teşekkürler @ 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
Güzel. Bu şekilde Gravatar imajımı değiştirebilir. :) O 252 karakterle azaltılabilir: 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 işlevini bırakıp kodu bir komut dosyasına koyarsanız 245. Muhtemelen hesaplamaları değiştirerek daha da azaltılabilir, fakat şimdi bunun için zamanım yok.
Manatwork

2

HTML + CSS, 83

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

ekran görüntüsü (firefox kullanarak): görüntü tanımını buraya girin

cevabım için çok geç kalmam çok kötü (+10 temsilcisi de oldukça geç kaldı ...)


Daha fazlasını border-radius:50%ve bir tanesini daha çok seviyorum <hr>: dabblet.com/gist/8472397
manatwork

@manatwork veya şunun gibi: jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine, değişmez bir boşluk bırakmayan boşluk karakterini kullanmak şu değerden daha kısadır &nbsp;: jsfiddle.net/T9BdL/2
manatwork 17:14

1
Yüzünü örtüşen gözler kurallara aykırı. Bu yüzden şu anda olduğu gibi yaptım. Ayrıca bana güney parkındaki Kanadalıların yüzünü hatırlatıyor.
Leo Pflug

2
Gerçekten golf oynanmadı, ancak istendiği gibi, sadece bir css sürümü var: jsfiddle.net/T9BdL/9
Tim Seguine

1

GolfScript, 18

Bu program, bir metin editöründe tuhaf / geçersiz karakterler olarak görünen bazı ikili kodlanmış değerleri kullanır.

İşte onaltılık çöplüğü:

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

Not: UTF-8 yerel ayarında çalışmaz, ancak örneğin ISO-8859-1 ile çalışır.

Çıkış karakterleriyle genişletilmiş sürüm:

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

Çıktı:

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

Daha iyi çıktılar için, {2base{38+}%n}ikili sürümü 23 bayta getiren bloğu değiştirebilirsiniz . Genişletilmiş sürüm:

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

Çıktı:

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

1

JavaScript

Bu kod f12bu sayfada çalıştırılmalıdır :

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

Çıktı:

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

1

CJam, 18

Kısa kod için gitmeye karar verdim ... Burada dene .

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

açıklama

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

Bu, tasarladığım gülen yüzün simetrisinden yararlanıyor.

Çıktı

 ## 
#OO#
#--#
 ## 

1
Bu yüz gülümseyen değil;).
Doktor

Bu daha yakın bir gülümseme daha var @Optimizer bu ... Çünkü kullanılan simetriyi ettik biçiminden dolayı, burada bir gülümseme olamaz.

uuGülümseme için kullanmak bir seçenek, eğer o "kedi" tür gülüşe
gidecekseniz

1

piton

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

Çıktı:

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

ikinci örnekte daireyi eksik
Jasen

@ Jasen Ben tamir ettim.
Oliver Ni,



0

Kabuk komutu veya yerleşik

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

Kabuğunuzun veya komut setinizin lezzetine bağlı olarak, echokontrol karakterlerini veya karakteriyle yorumlayabilir veya yorumlayamayabilir -e... (... ve Vroomfondel! Olmamı veya olmamasını istiyorum!) başarısız olursa, kullanmak printfgüvenli bir bahis olmalı ...


0

C 178 karakter:

kaynak (boşluk eklendi - tümü hariç 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);}
 }

çıktı:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.