Надрукуйте смайлик


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клавішу натискання символу та зателефоную цьому двом символам.
Dryden Long

1
Чи закінчиться ця нитка коли-небудь? :)
avall

Відповіді:


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, але ви можете вставити його на консоль Javascript у веб-переглядачі aby. О, і ввімкніть спливаючі вікна на сторінці :).

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>

Потім, коли ви запускаєте його, і нічого не відбувається, просто увімкніть спливаючі вікна та перезавантажте сторінку. Крім того я пасту скріншот


23
На ім’я Бвіана з Юдеї, що це ...
nitro2k01

2
Зараз це працює. Взяв мене близько 2 м, щоб закрити всі спливаючі вікна
s3lph

7
Провівши стільки часу, намагаючись відключити набридливі спливаючі вікна, ввімкнути їх важко. Я вимкнув adBLock і дозволив усім спливаючих вікон у своєму браузері ... після появи половини обличчя він вирішить увімкнути блокатор!
Благодійність Лещинських

4
Дивовижна нестандартна думка! Я б ніколи не думав робити щось подібне.
Гарі БН

4
Це надзвичайно оригінально!
Оберон

66

HTML, 200 141 символ

Завдяки успіху я скоротив це до 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
взуття

3
Вам не доведеться закривати більшість тегів (більшість браузерів це обробляє), вам не потрібно визначати тип введення (текст за замовчуванням) і не закривати <br> (html5). Ось оптимізований код із 150 символами :): jsfiddle.net/avall/TdPkF
avall

@avall Відмінно, спасибі :-)
гидливо грифа

158 символів і тепер центрує волосся, щоб воно добре виглядало на екрані будь-якого розміру. jsfiddle.net/TdPkF/5
AverageMarcus

1
@squeamishossifrage Ви повинні видалити всі волоски, крім 3, і тоді це був би Гомер Сімпсон!
mbomb007

55

Brainfuck: 583 символи (без урахування пробілів)

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

Вихід:

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

11
Оригінальний код схожий на обличчя (якщо ви дуже стараєтесь ...), мені цікаво, як важко було б зробити код і вивести обидва обличчя ...
w4etwetewtwet

1
@handuel Обидва обличчя, але різні. Ви мали на увазі, що код і вихід будуть такими ж, як у квінти? Я впевнений, що це можна зробити.
Сільвестер

Я просто мав на увазі, щоб код виглядав як обличчя, я не розумів, що це навмисно.
w4etwetewtwet

1
У Brainfuck все, що не є контрольним персонажем, - це коментар. Ось чому вихідний код можна зробити так, щоб він був схожий на смайлик.
Еміль Вікстрьом

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

6
Правильний інструмент для правильної роботи.
Альфа

Я б не сказав, що SVG - це дійсно мова програмування
Олівер Ні

@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 на основі пікселів усміхненого персонажа, а не просто роздруковуючи персонаж як його повне рішення. Неоптимізована версія представляє, як IDE QBasic зберігає файли. 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. Що було зроблено:

  • Видалено всі непотрібні пробіли. (Ду!)
  • Змінено розриви рядка CRLF лише на LF.
  • Замінено CHR$(1)на рядок, що містить фактичний символ. (Тут проілюстровано відповідний символ Unicode. Якщо ви дійсно хочете спробувати код, будь ласка, замініть його справжнім символом ASCII 1 за допомогою шестигранного редактора.)
  • Замінено PRINTна ?, як це дозволяє традиція BASIC.
  • Замінено IFрядок лінією, яка друкує символи на основі значення вихідного пікселя. Це буде або 0, або 3. 0 - колір чорний. Символ 0 друкує нульовий символ, який трактується як пробіл. 3 - білий колір у 4-х кольоровій палітрі CGA. 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

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 байт. Таким чином, з метою підрахунку можна визначити, що програма з N символів, яка використовує лише символи ASCII та символи APL, має довжину N байтів.


11

Баш, 63 чари

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

Вихід:

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

Артистичність:

Корови.


9

Баш, 22 ч

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

Вибірка зразка: введіть тут опис зображення

Редагувати: це може бути гольф далі, як пропонують кілька людей. Найкоротша знайдена до цього часу версія:

curl -L x.co/3WG0m

(спасибі nitro2k01)


2
Неможливо оптимізувати до curl -L x.co/3WG0m. Можна додатково оптимізувати, якщо ми матимемо локальне -L
односимвольне

4
Де виклик: розмістити смайлик у пастібі та завантажити його за допомогою wget?
s3lph

@the_Seppi: саме такий жарт. Він задуманий як мислення поза межами коробки.
Бунт

1
Нам потрібно знайти когось із доступом до кореневих серверів імен та переконати його додати домен, який називається, Zщо вказує на сервер, на якому розміщений файл.
Марін

1
красиво, це мій улюблений :)
jcora

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 ++ :)
взуття

Дякую. Це допоможе вирізати персонажів у майбутніх пазлах.
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, багато інших мов ... - 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;}.
манастирство

4

Ребму , 24 ч

О, мінімальність людства. :-) Найменш вражаюча програма Rebmu поки що, так цілеспрямовано вбудовуючи pHp як данину синій таблетці у світі програмування :

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

Виконання:

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

Пояснення

Ребму - це лише діалект Ребола . Він успадковує обмеження синтаксичного аналізу, використовує скорочені терміни без пробілів, розділених пробілами великої літери. Він має спеціальний режим, коли перший пробіг складається з великої літери проти некапіталізованого.

(Отже, замість того, щоб розділяти такі терміни, як AbcDefGhiвін, можна використовувати різницю між ABCdefGHIі abcDEFghiвидавити трохи інформації. Послідовності, запуски яких починаються з усіх великих літер, відокремлюються, тому перший термін являє собою "задане слово!", Часто контекстуально трактується як бажання для завдання. дивіться відео )

Якщо ви хочете перекласти це на рідний Ребол, ви повинні прийняти такі речі, як це починається з великої літери Н, а це означає, що це насправді є, h:а не є 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, просто потрібно C & P його в командному рядку, за умови, що Acme::EyeDropsмодуль Perl вже встановлений на машині.

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

Брейнф *** - 2

+.

Друкує або значення ascii 1. (може не працювати з деякими платформами)


Nitpick: ASCII 1 - SOH, символ, який не можна друкувати. Цей смайлик - це U + 263A, або 1 у CP437, чим ви, ймовірно, користуєтесь. На жаль, ваш вихід не відповідає умові використання достатньої кількості "одиниць" для очей та рота.
Крістофер Кройціг

2
@ChristopherCreutzig Це умова не підводить. Кожне око має 1 або більше пікселів, рот більш ніж удвічі більший.
Джастін

Досвід "ASCII ART" складається з двох частин. Я не бачу жодного з них тут
s3lph

2

Bash - один вкладиш: 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;}. Або 245, якщо ви відмовитесь від функції m і помістите код у файл сценарію. Напевно, можна зменшити ще більше, підпрацювавши обчислення, але зараз у мене немає часу на це.
манатура

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

@manatwork або подібне: jsfiddle.net/T9BdL/1
Tim Seguine

1
@TimSeguine, використовуючи буквально пробільний символ простору, коротше, ніж &nbsp;: jsfiddle.net/T9BdL/2
manatwork

1
Я думаю, що очі, що перекриваються обличчям, суперечать правилам. Тому я зробив це так, як є зараз. Також це ніби нагадує мені обличчя канадців у південному парку.
Лев Плуг

2
Насправді не в гольфі, але, як вимагається, версія лише для css: jsfiddle.net/T9BdL/9
Тім Сегейн

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

CJam, 18

Я вирішив піти на короткий код ... Спробуйте тут .

" ##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 Це ближче до посмішки, ніж до цього ... Через те, як я використовував симетрію, ти тут не можеш мати посмішки.

Використання 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 Я це виправив.
Олівер Ні



0

Команда оболонки або вбудована

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

Залежно від аромату вашої оболонки або набору команд, ви echoможете чи не інтерпретувати контрольні символи з або без -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);}
 }

вихід:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.