TOP >> マニアックなプログラミング
トリッキーコードネット トリッキーなコード

【7行プログラミング/ショートコーディング】幾何学模様表示 基本編 (C言語)

さてさて、いきなりですが、
下記コードを実行すると、画面に幾何学模様を描画してくれます Σ(゚Д゚)Oh!!
main(){int x,y,X,Y,T;short s[2];puts("ヨコ タテ モヨウ(1-3)ヲニュウリョク");scanf("%d %d %d" ,&X,&Y,&T);srand(time(0));for(y=0;y<Y;y++){for(x=0;x<X;x++){switch(T){case 1:s [0]=rand()%2?'/':'\';break;case 2:s[0]=(((2+((x-X/2+((y-Y/2)>>9))>>8)+((y-Y/ 2)>>9))%2)<<8)==0?'/':'\';break;case 3:s[0]=((((4410+x*y/(x+y+1))%2)<<8))==0 ?'/':'\';}s[1]='\0';printf("%s",(char*)&s);}puts("");}getch();}

幾何学模様プログラムの使い方

① プログラムを実行すると、「ヨコ タテ モヨウ(1-3)ヲニュウリョク」というメッセージが表示されます。 「横サイズ」「縦サイズ」「模様の種類(1~3の間)」を任意で入力し、Enterキーを押します。 幾何学模様プログラミング - 設定 ② ①でEnterキーを押すと、幾何学模様が表示されます。 (入力した縦横サイズ、模様の種類によって、表示される模様が変化) ex) 幾何学模様1 【ランダム】 幾何学模様プログラミング - ランダム ex) 幾何学模様2 【渦巻き】 幾何学模様プログラミング - 渦巻き ex) 幾何学模様3 【規則的】 幾何学模様プログラミング - 規則的 ③ 最後に、何かキーを押すとプログラムが終了します。

幾何学模様プログラミングの解説

プログラミングノウハウとしては、特に特筆する点もないのですが、一応補足します^^;) 上記コードは、2ちゃんねるのカキコを元に筆者が以下のコードを作成し、それを最適化して5行にまとめたものです。
1 : #include <stdio.h> 2 : #include <stdlib.h> 3 : #include <time.h> 4 : 5 : int main(void) 6 : { 7 : int x, y, maxX, maxY, drawType; 8 : short str[2]; 9 : 10 : printf("横サイズ、縦サイズ、描画模様(1~3) を入力して下さい ->"); 11 : scanf("%d %d %d", &maxX, &maxY, &drawType); 12 : 13 : srand((unsigned int)time(NULL)); 14 : 15 : for (y = 0; y < maxY; y++) { 16 : for (x=0; x < maxX; x++) { 17 : str[0] = str[1] = NULL; 18 : 19 : switch (drawType) { 20 : case 1: str[0] = rand() % 2 ? '/' : '\'; break; 21 : case 2: str[0] = (((2+((x- maxX/2 +((y-maxY/2)>>9))>>8)+((y-maxY/2)>>9))%2)<<8) == 0 ? '/' : '\'; break; 22 : case 3: str[0] = ((((4410+ x*y/(x+y+1))%2)<<8)) == 0 ? '/' : '\'; 23 : } 24 : str[1] = '\0'; 25 : 26 : printf("%s", (char *)&str); 27 : } 28 : puts(""); 29 : } 30 : 31 : getch(); 32 : 33 : return 0; 34 : }
縦横サイズをscanf()で入力し、ループで回しながら '/' または '\' をshort型の配列に入れ、 それをchar *にキャスティングし、printf()で出力しています。 (※ 24行目でstr[1]にNULLを入れているのはその為です。) プログラミングとしては三流でも、実行結果は面白いので、まぁそれはそれで良いのではないでしょうか?? ・・・という自己満w ( ̄ー ̄)ニヤリ 幾何学模様 C++版へ続きます。
トリッキーコードネット の TOPへ HOTNEWS の 総合TOPへ