Распечатать смайлик


48

Требования

Для вызова давайте определим единицу :

Под единицей понимается любая точка, составляющая сетку, в которой нарисовано лицо (пиксели для экрана, символы для ASCII-рисунка и т. Д.).

Эти минимальные требования для лица являются:

Смайлик состоит из формы, которая напоминает круг (не обязательно идеальный) любого радиуса. Должно быть по крайней мере 1 единица для каждого из двух глаз и по крайней мере 2 единицы для рта. Оба глаза и рот должны быть в форме лица. Рот может быть ориентирован так, как вы хотите (счастливый, грустный, безразличный и т. Д.).

Вот пример вывода:

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

цели

Конечно, главная цель - найти максимально короткий код, но искусство также важно.

победитель

Победитель выбирается исходя из количества голосов пользователей, по крайней мере, в ближайшие 5 дней.



5
Ух, 8 вопросов в горячем списке вопросов. Наш сайт должен получать больше трафика.
Джастин

Разве безразличному лицу строго легче, чем счастливому, а грустному иногда сложнее?
о0 '.

2
Я не собираюсь давать этот ответ, так как он не соответствует минимальным требованиям, но я хотел бы присоединиться к нему ... alt + 1и alt + 2произведу ☺ и ☻ соответственно. В качестве аргумента я рассмотрю altнажатие клавиши на символ и назову это 2 символа.
Драйден Лонг,

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
Теперь это работает. Мне
потребовалось

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

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 символами
avall

@avall Отлично, спасибо :-)
брезгливое ossifrage

158 символов и теперь центрирует волосы, чтобы они хорошо выглядели на экране любого размера. jsfiddle.net/TdPkF/5
Средняя Марка

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>

Рендерит так:

Smiley


Бесконечные единицы?
user80551

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

Я бы не сказал, что SVG действительно язык программирования
Оливер Ни

@Oliver Это такой же язык программирования, как HTML ... (а это не так).
mbomb007

37

Руби, 224

Дуглас Адамс будет в ужасе. :-П

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. Что было сделано:

  • Убраны все лишние пробелы. (D'ммм!)
  • Изменены разрывы строк CRLF только на LF.
  • Заменяется CHR$(1)на строку, содержащую фактический символ. (Здесь показано с соответствующим символом Unicode. Если вы действительно хотите попробовать код, замените его реальным символом ASCII 1 с помощью шестнадцатеричного редактора.)
  • Заменено PRINTна ?, как позволяет традиция BASIC.
  • Заменили IFстроку строкой, которая печатает символы на основе значения исходного пикселя. Это будет либо 0, либо 3. 0 - это черный цвет. Символ 0 печатает нулевой символ, который рассматривается как пробел. 3 - белый цвет в 4-цветовой палитре CGA. ASCII символ 3 - это сердце.

Выход: QBasic ASCII smile оптимизирован

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необходимость переключения для перенаправления).
nitro2k01

4
Где проблема в размещении смайлика в pastebin и загрузке его с помощью 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]
 -- 
|..|
|\/|
 -- 

объяснение

Rebmu это просто диалект Rebol . Он наследует ограничения разбора, использует сокращенные термины без пробелов, разделенных пробелами. Он имеет особый режим, когда первый прогон пишется с большой буквы по сравнению с некапитализированным.

(Таким образом, вместо того, чтобы разделять такие термины, как AbcDefGhiэто, можно использовать разницу между ABCdefGHIи abcDEFghiвыжать немного информации. Последовательности, чьи серии начинаются с заглавной буквы, разделяются, поэтому первый термин представляет собой «набор слов!», Часто контекстуально интерпретируемый как желание для назначения. смотрите видео )

Если вы хотите перевести это на нативный Rebol, вы должны принять такие вещи, которые начинаются с заглавной буквы H, означающей, что это на самом деле 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 один раз, печатает другую строку, где ^/есть escape-последовательность для новой строки (каретки используются в программном обеспечении меньше, чем обратные слэши, которые часто появляются в путях) , печатает 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

Это выводит 2-й пример в точности как указано.

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

Первый можно сделать таким же образом, но я думаю, что второй выглядит лучше :)


2

Brainf *** - 2

+.

Prints или ascii value 1. (может не работать с некоторыми платформами)


Nitpick: ASCII 1 - это SOH, непечатный символ. Этот смайлик U + 263A или 1 в CP437, что вы, вероятно, используете. К сожалению, ваш вывод не соответствует условию использования «единиц» для глаз и рта.
Кристофер Кройциг

2
@ChristopherCreutzig Это не нарушает это условие. Каждый глаз составляет около 1 пикселя, а рот более чем в два раза больше.
Джастин

Эксп. «ASCII ART» состоит из двух частей. Я не вижу
никого

2

Баш - один вкладыш: 442 символа

c(){ e "define a(i){scale=scale(i);return(sqrt(i*i));};""$@"|bc -l;};e(){ echo "$@";};s(){ h=$1;c=$2;if [ -z $c ];then c=" ";fi;while (($((h=h-1))>0));do e -n "$c"; done; };m(){ t=`c 2*$1`;while (($((t=t-1))));do l=`c a\($1-$t\)+1`;s $l;q=`c 2*\($1-$l\)`;w=`s $q`;if (($l>$t&&$l<($t+3)&&$q>2)); then w=" "`s $((q-2)) 0`" ";elif (($t>($1+1)&&$q>3));then g=`s $(((q-1)/2)) 0`;w=" $g $g ";fi;e -n +;if [ ! -z "$w" ];then e -n "$w+";fi;e;done;};

Пример вывода: (вызывается m 8)

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

Вид сумасшедший, но я решил использовать алмаз вместо круга. Глаза закрыты защитными очками.

BASH - 252 символа (спасибо @manatwork)

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

1
Здорово. С этой формой это может заменить мое граватарное изображение. :) Это может быть уменьшено до 252 символов: s(){ (($1>1))&&echo -n "${2:- }"&&s $[$1-1] $2;};m(){ ((t=2*$1));while ((t=t-1));do v=$[$1-t];l=$[${v#-}+1];s $l;q=$[2*($1-l)];w=`s $q`;((l>t&&l<t+3&&q>2))&&w=" `s $[q-2] 0` ";((t>$1+1&&q>3))&&{ g=`s $[(q-1)/2] 0`;w=" $g $g ";};echo "+${w:+$w+}";done;}. Или 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
Тим 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
Это лицо ему не улыбалось;).
Оптимизатор

@ Оптимизатор Это ближе к улыбке, чем это ... Из-за того, как я использовал симметрию, ты не можешь улыбаться здесь.

Использование 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

@Jasen Я исправил это.
Оливер Ni


0

HTML 5: 321 символов

<canvas id=a><script>_=document.getElementById("a"),c=_.getContext("2d"),p=Math.PI,P=2*p;C();c.arc(95,85,40,0,P);B();c.lineWidth=2;c.stroke();c.fillStyle="red";C();c.arc(75,75,5,0,P);B();C();c.arc(114,75,5,0,P);B();C();c.arc(95,90,26,p,P,true);B();function C(){c.beginPath()};function B(){c.closePath();c.fill()}</script>

Скрипка: http://jsfiddle.net/wfNGx/

введите описание изображения здесь

Источник: http://www.codecademy.com/courses/web-beginner-en-SWM11/0/1


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.