フォームとコンテンツの統一

ここで、あるプログラマーがCでおもしろいラウンドプログラムを送ってくれました。下線を定義する#defineがあり、下線とマイナスから円が描かれました。



             _-_-_-_
        _-_-_-_-_-_-_-_-_
     _-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
   _-_-_-_-_-_-_-_-_-_-_-_-_-_
     _-_-_-_-_-_-_-_-_-_-_-_
         _-_-_-_-_-_-_-_
             _-_-_-_




この式を計算すると、数πが得られました。 まあ、実際には、何かがそこに移動し、πの代わりに0.250になりましたが、それはポイントではありません。







最初はこのプログラムを「デバッグ」したかったのですが、実際には絵が描かれたプログラムがたくさんあると思いました。 しかし、幾何学的な意味を与えることができます!



それは言われています-完了、ここに数πを計算するためのプログラムがあります:

 #define O o ++;
 #define K k ++;
 double o = 0;
 double k = 0;

メイン()
 {

           OOOOOOKKKKKKKKK
       OOOOOOOOOOKKKKKKKK
     OOOOOOOOOOOOKKKKKKKK
     OOOOOOOOOOOOKKKKKKKK
   OOOOOOOOOOOOOOKKKKKKK K
   OOOOOOOOOOOOOOKKKKKKK K
   OOOOOOOOOOOOOOKKKKKKK K
 OOOOOOOOOOOOOOOOKKKKK KKK
 OOOOOOOOOOOOOOOOKKKKK KKK
 OOOOOOOOOOOOOOOOOO
 OOOOOOOOOOOOOOOOOO
   OOOOOOOOOOOOOO
   OOOOOOOOOOOOOO
   OOOOOOOOOOOOOO
    おおおおおおおおおおおおお
    おおおおおおおおおおおおお
      おおおおおおおおおおお
           OOOOOO

 printf( "%f \ n"、o / k);
 } 




それは3.1666であることが判明します...しかし、より大きな絵を描くと、精度が向上します。



円の面積はπR²です。つまり、円の面積を正方形の面積で割ると、その辺はこの円の半径に等しくなり、πが得られます。 2つの変数を取り、1つの変数の増分で円を描き、別の変数の増分で正方形を描きます。 その結果、これらの変数の比率は、図の面積の比率に等しくなります。



更新 :実際、私にインスピレーションを与えたプログラムも幾何学的な意味で終わった。

彼女のストーリーと全文は、 国際難読化Cコードコンテストにあります。

この投稿へのコメントには説明があります。



しかし、彼は私から逃げました。 ところで、コメントには最新のプリプロセッサ用に修正されたオプションがありますが、円の直径は既に定数(0xF)に縫い込まれているため、幾何学的な意味はすでに部分的に失われています。



私の頭に灰を振りかけ、私のバージョンがより透明であり、私は直接ではないが(そしてそれを実現することさえない)、アイデアの元のソースをほのめかしたことを喜んでいます。



All Articles