スマイリーフェイスを印刷する


48

必要条件

チャレンジのために、ユニットを定義しましょう:

ユニットは、顔が描画されるグリッドを構成する任意のポイントとして定義されます(画面のピクセル、ASCIIアートの文字など)。

顔の最小要件は次のとおりです。

スマイリーフェイスは、任意の半径の円(必ずしも完全ではない)に似た形状で構成されます。2つの目それぞれに少なくとも1ユニット、口に少なくとも2ユニットが必要です。目と口の両方が顔の形の中にある必要があります。好きなように口を向けることができます(幸せ、悲しい、無関心など)。

出力の例を次に示します。

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

目標

もちろん、主な目標は可能な限り最短のコードを作成することですが、アートも重要です。

勝者

勝者は、少なくとも次の5日間のユーザーの投票数に基づいて選択されます。



5
うわー、ホットな質問リストの8つの質問。私たちのサイトはより多くのトラフィックを得ているはずです。
ジャスティン

無関心な顔は幸せよりも厳密に簡単ではなく、悲しいことはもっと難しいですか?
o0 '。

2
それが最低限の要件に適合していませんが、私はチャイムに望んでいた...ので、この答えにするつもりはないalt + 1し、alt + 2それぞれ☻☺生産となります。議論のために、altキーが文字を押し、その2文字を呼び出すと考えます。
ドライデンロング

1
このスレッドは終了しますか?:)
avall 14年

回答:


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コンソールに貼り付けることができます。ああ、ページ上のポップアップを有効にしてください:)。

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
ユダヤのBwianの名前で、これは何ですか
-nitro2k01

2
今では機能しています。すべてのポップアップを閉じるには約2m連れて行ってくれました
s3lph

7
迷惑なポップアップを無効にしようと非常に多くの時間を費やした後、それらを有効にすることは困難です。私はadBLockを無効にし、ブラウザですべてのポップアップを許可しました...顔の半分が表示された後、ブロッカーをオンに戻すことにしました!
チャリティレシンスキー

4
すぐに使えるすばらしいアイデア!私はこのようなことを決してしようとは思わないでしょう。
ガリBN 14年

4
それは非常に独創的です!
オベロン

66

HTML、200 141文字

availのおかげで、これを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素晴らしい、ありがとう:-)
squeamish ossifrage

158文字で、髪の中央に配置されるため、どのサイズの画面でも見栄えがよくなります。jsfiddle.net/TdPkF/5
AverageMarcus

1
@squeamishossifrage 3本以外の毛をすべて取り除くと、ホーマーシンプソンになります!
mbomb007

55

Brainfuck:583文字(空白を含まない)

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

出力:

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

11
(あなたは本当にハードにしよう...)元のコードは少し顔のように見える、私は...それは両方のコードと出力を作る顔するだろういかに難しいだろう
w4etwetewtwet

1
@handuelどちらも顔ですが、異なっています。コードと出力が馬のように同じであることを意味しましたか?私はそれができると確信しています。
シルウェスター

コードが顔のように見えることを意図しただけで、意図的なものであることに気づきませんでした。
w4etwetewtwet

1
Brainfuckでは、制御キャラクターではないものはすべてコメントです。そのため、ソースコードを笑顔のように見せることができます。
エミールヴィクストローム14年

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
適切な仕事に最適なツール。
アルファ14年

私は、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)}

出力:

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

2番目の例は重要ですか?顔の周りに円はありません。
ケビン-モニカの復活

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アートを作成することにより、実際にルールに従います。最適化されていないバージョンは、QBasicのIDEがファイルを保存する方法を表します。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文字で示しています。実際にコードを試したい場合は、16進エディターを使用して実際のASCII文字1に置き換えてください。)
  • 置き換えPRINT?BASICの伝統をすることができますよう、。
  • IF行を、ソースピクセル値に基づいて文字を印刷する行に置き換えました。0または3になります。0は黒です。文字0は、空白のように扱われるヌル文字を出力します。3は、CGAの4色パレットの白色です。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の組み込みグラフィックスコマンドを使用することはできませんか?確かに、しかしそれは言語の冗長性のために実際にあなたのバイトを節約しません。ただし、2つの与えられた角度の間でのみ円弧を描く組み込み関数があります。角度はラジアンで与えられ、を中心に対称的に円弧45.4近似しπ*3/2ます。または、良い側に結合し場合は、τ*3/4

出力: QBasicグラフィカルスマイリーの最適化

注:この回答のサイズは、ファイルの大きさをバイト単位で示しています。


私は...私はまだQBASICを読むことができ、ここで、最年少者であってもよいことを感じ:)ニース1
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バイト値にマップする独自の(レガシー)シングルバイト文字セットで書き込むことができます。したがって、スコアリングの目的のために、ASCII文字とAPLシンボルのみを使用する N文字のプログラムは、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。我々はまた、直接データを返すローカル、1文字のホスト名がある場合はさらに最適化することができた(排除-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を1回印刷し^/、改行のエスケープシーケンスである別の文字列を印刷します(パスに頻繁に表示されるバックスラッシュよりもソフトウェアでキャレットの使用が少ない)、再び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 Acme::EyeDropsモジュールが既にマシンにインストールされている場合、コマンドプロンプトでC&Pするだけで、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:

サンプル出力:

アスキースマイリー


3

GolfScript、27

これにより、2番目の例が指定どおりに出力されます。

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

最初の方法は同じ方法で実行できますが、2番目の方法の方が見栄えが良いと思います:)


2

Brainf ***-2

+.

prints またはascii値1(一部のプラットフォームでは機能しない場合があります)


Nitpick:ASCII 1はSOH、印刷不能文字です。そのスマイリーは、おそらく使用しているU + 263A、またはCP437の1です。残念ながら、出力は目と口に十分な「ユニット」を使用する条件を満たしていません。
クリストファー・クロイツィヒ

2
@ChristopherCreutzigそれはその条件に失敗しません。各目は1ピクセル程度で、口の大きさは2倍以上です。
ジャスティン

経験値 「ASCII ART」は2つの部分で構成されています。私はここで、どちらもそれらの見ていない
s3lph

2

Bash-ライナー1つ: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;}。または、関数mを放棄してコードをスクリプトファイルに配置した場合は245。おそらく、計算を微調整することでさらに削減できますが、今は時間がありません。
マナトワーク

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 repもかなり遅れました...)


私はそれborder-radius:50%とシングルが好きです<hr>dabblet.com/gist/8472397
manatwork

@manatworkまたはこのような:jsfiddle.net/T9BdL/1
ティムSeguine

1
@TimSeguine、リテラルの改行しないスペース文字を使用すると、以下よりも短くなり&nbsp;ます:jsfiddle.net/T9BdL/2
manatwork

1
顔に重なる目はルールに反すると思います。それが、現在のようにそれをした理由です。また、サウスパークでカナダ人が直面していることを思い出します。
レオPflug 14年

2
本当にgolfedが、要求、CSSのみのバージョンとしてではない:jsfiddle.net/T9BdL/9
ティムSeguine

1

GolfScript、18

このプログラムは、テキストエディターで奇妙な/無効な文字として表示されるバイナリエンコード値を使用します。

16進ダンプは次のとおりです。

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
この顔は笑っていない;)。
オプティマイザー14

@Optimizerそれの近くに笑顔よりも、この ...ので、私は対称性を使用しました方法には、あなたはここで笑顔を持つことができません。

uuその「猫」のような笑顔を求めているなら、笑顔に使用するのはオプションです
...-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 \\_________/');

出力:

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

第二の例では、円不足している
Jasen

@Jasen修正しました。
オリバーNi 14



0

シェルコマンドまたは組み込み

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

シェルまたはコマンドセットのフレーバーに応じて、echo制御文字を解釈する-e場合としない場合があります...失敗します、使用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);}
 }

出力:

     @@@@@@@@@
    @@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
 @@@   @@@@@   @@@
@@@@   @@@@@   @@@@
@@@@   @@@@@   @@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@
@@@ @@@@@@@@@@@ @@@
@@@  @@@@@@@@@  @@@
@@@@           @@@@
@@@@@@       @@@@@@
 @@@@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
  @@@@@@@@@@@@@@@
    @@@@@@@@@@@
     @@@@@@@@@
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.