1 名前:デフォルトの名無しさん [02/04/15 12:09] 7行×79文字なら言語は問いません。 過去作品は>>2-5 を参照。 ■前スレ pc.2ch.net/test/read.cgi/tech/984182993/
45 名前:22 mailto:sage [02/04/16 23:59] すまぬ、荒らすつもりは無かったんだが、言い方が悪かったな。 なんだか前スレで、いい作品が評価されず、いまいちの作品が よく話題に挙がっているのが勿体なく感じてしまって。 それでも本当にいい作品はちゃんと評価されているんだけれどね。 ま、>>34 に同意というわけで、前言撤回します。スマヌ。 ついでにネタを振ると、Windowsでテトリスを作ってくだされ>>特にトリッキーの1氏
46 名前:前スレ904 [02/04/17 00:25] GCCで警告が出ない範囲でさらに縮めてみました。 #include <stdio.h> #include <stdlib.h> int y,m=-1,s,d;int main(int h,char**v){printf("%9s%5d\nSu Mo Tu We Th Fr Sa\n", "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec"+(m+=atoi(v[1]))*4, y=atoi(v[2]));d="&%&%&&%&%&"[m]-6+(m-1&&(y%400?(y%100&&(y%4?0:1)):1));if(m<2) y--;y=s=(y+y/4-y/100+y/400+"#&%(#&($')%'"[m]-34)%7;while(y--)printf(" ");for( ;-y<d;y--)printf("%2d%c",-y,(s-y)%7?0:'\n');puts("");return 0;}
47 名前:デフォルトの名無しさん mailto:sage [02/04/17 00:29] Windowsでテトリスは不可能だっつーの 内容のないスケルトン(砂嵐)でさえぎりぎりだったんだから。
48 名前:デフォルトの名無しさん mailto:sage [02/04/17 00:32] Excel VBA でテトリスとかできないかね。
49 名前:22 mailto:sage [02/04/17 00:33] >>47 C++とは言っていないがダメかな?
50 名前: ◆Air.TtTk mailto:sage [02/04/17 00:56] PDT びゅーわ(9行) import java.awt.*;import java.io.*;public class P extends Frame{byte m,s[];int w ,h,S=12,c,v,M,Q=0,q[],n;Image I;static void main(String[]_){(new P(new File(_[0] ))).show();}P(File f){s=new byte[(int)f.length()];try{(new FileInputStream(f)). read(s);}catch(Exception e){}w=L(4);h=L(4);S=32;q=new int[n=w*h];while(Q<n){m=s[ S++];for(M=0;M<8&&Q<n;M++){if((m<<M&128)>0)q[Q++]=255<<24|L(3);else{v=(s[S+1]& 255)<<4;v+=(s[S]>>4 &15)+1;for(c=s[S]&15;c>=0;c--)q[Q]=q[Q++-v];S+=2;}}}setSize(w +80,h+80);I=createImage(new java.awt.image.MemoryImageSource(w,h,q,0,w));}public void paint(Graphics g){g.drawImage(I,40,40,this);}int L(int l){v=c=0;while(c<l)v +=(s[S++]&255)<<c++*8;return v;}} InputStreamを close() していません。(ぉ
51 名前:デフォルトの名無しさん mailto:sage [02/04/17 01:12] >>50 > java P xxx.pdt Main method not public. といわれました(報告)
52 名前:デフォルトの名無しさん mailto:sage [02/04/17 01:19] >>50 宣言部分以外では、>>44 の方が大分短いやんけ
53 名前:S ◆Q14CxNhI mailto:sage [02/04/17 01:24] かきこいっぱいですねぇ。 >>52 そんなに短くはないかと。Java は難しいですね。 import java.awt.*;import java.io.*;public class P extends Frame{byte[]s;int m,w ,h,S=12,c,v,M,Q=0,q[];Image I;public static void main(String[]_){(new P(new File(_[0]))).show();}P(File f){try{(new FileInputStream(f)).read(s=new byte[( int)f.length()]);}catch(Exception e){}w=L(4);h=L(4);S=32;for(q=new int[w*h];Q<w *h;)for(m=s[S++],M=0;M<8&&Q<w*h;){if((m<<M++&128)>0)q[Q++]=255<<24|L(3);else{ for(c=s[S]&15;c-->=0;)q[Q]=q[Q++-(s[S+1]&255)*16-(s[S]>>4 &15)-1];S+=2;}}setSize (w+80,h+80);I=createImage(new java.awt.image.MemoryImageSource(w,h,q,0,w));} public void paint(Graphics g){g.drawImage(I,40,40,this);}int L(int l){for(v=c=0 ;c<l;v+=(s[S++]&255)<<c++*8);return v;}}
54 名前: ◆Air.TtTk mailto:sage [02/04/17 01:44] >51 あらまっ。ボクのPC(Win98)では JDK1.2.2_007 動作。 JDK1.3.1_01 動作。 JDK1.4.0 エラー。 となりました。 >52 何かをimportしなかったので、何かが増えたわけですね。
55 名前:デフォルトの名無しさん mailto:sage [02/04/17 09:56] >>36 小手先よりもまずアルゴリズムの見直しからスタートするから 結構役に立つと思うよ。 組み込み系用にいくつかここからパクったアイデアあるし。
56 名前:前スレ843 [02/04/17 12:55] トリッキーの1氏は見てないの? もう一度舞い降りれ!
57 名前: ◆Air.TtTk mailto:sage [02/04/17 15:49] PDT びゅーわ(8行) import java.awt.*;import java.io.*;public class P extends Frame{Image I;int w,h, S=12,c,v,m,M=0,Q=0,q[];public static void main(String[]_){new P(new File(_[0])); }P(File f){try{(new FileInputStream(f)).read(s=new byte[(int)f.length()]);}catch (Exception e){}w=L(4);h=L(4);S=32;for(q=new int[w*h];Q<w*h;){if(--M<0){M=7;m=L(1 );}if((m>>M&1)>0)q[Q++]=255<<24|L(3);else for(v=L(1)>>4 |L(1)<<4,c=s[S-2]&15;c-- >=0;)q[Q]=q[Q++-v-1];}I=createImage(new java.awt.image.MemoryImageSource(w,h,q,0 ,w));setSize(w+80,h+80);show();}int L(int l){for(v=c=0;c<l;)v+=(s[S++]&255)<<c++ *8;return v;}byte[]s;public void paint(Graphics g){g.drawImage(I,40,40,this);}} プログラムというよりパズルですわ。 さすがに7行は無理な気がする。
58 名前:デフォルトの名無しさん mailto:sage [02/04/17 16:03] まあ、何度も絶対不可能が縮まったわけだからがんばれ 一念発起してVisualC++をアンインストールしちまったけどな うらやましいだろ、みなさん また来週に入れなきゃいけなさそうなんであれですけど
59 名前:S ◆Q14CxNhI mailto:sage [02/04/17 19:21] テトリスだけど、JavaScript で現在11行でできています。 バグバグでまだとても公開できないですが、近日中に必ずアプします。 アルゴリズムの最適化もほとんどしていない状態で11行なので、 最終的には7行になるのではないかと、期待しています。
60 名前:デフォルトの名無しさん [02/04/17 22:31] >>59 見せてアゲ
61 名前:S ◆Q14CxNhI [02/04/17 23:46] テトリス。現在10行。 カーソルキーの左右で移動、スペースキーで回転。 ゲームバランス悪いし、もっと縮めてからとも思ったのですが、 明日はネットに接続できないので、今日アプしておきます。 左右移動と落下、ライン消去の部分をもっと削ることができるかと思います。 <body onKeyDown=K=event.keyCode><pre><script>function Y(){Z[11]=P;f=0;E=B[t];if (K)if(K-32){d=[-1,0,1,0][K-37];for(i=4;--i;)Z[h+E[i]+d]==S?f=1:0;f?0:h+=d}else{ C=[];for(i=0;i<4;Z[h+(C[i++]=p*12-v*145)]==S?f=1:0)p=E[i],v=Math.round(p/12);!f &&t?E=B[t]=C:0}f=K=0;for(i=W;i--;Z[W+i]=Z[i]);for(i=4;i--;Z[W+p]=S)if(Z[12+(p=h +E[i])]==S)f=1;if(f==1){for(i=4;i--;)Z[h+E[i]]=S;t=(t+1)%7;h=5}h+=12;for(f=1,i= 19;i--;){for(j=11;--j&&Z[i*12+j]==S;);if(!j)for(P+=f++,j=i++;j>=1;j--)for(k=1;k <11;k++)Z[l=j*12+k]=Z[l-12]}for(i=W;i--;D.all(6+i).innerHTML=Z[W+i]);if(Z[5]!=S )setTimeout(Y,99)}S="□";W=240;D=document;Z=[];B=[[-11],[-24],[2],[13],[-13],[- 1],[2,-1]];for(K=t=P=i=0;i<W;){if(i<7)B[i].push(0,1,-12);Z[i]=(i+1)%12<2||i>228 ?S:" ";D.write(i++%12?"":"\n","<b></b>")}h=17;Y()</script>
62 名前:デフォルトの名無しさん mailto:sage [02/04/18 00:21] >>61 良くできているけれど、結構バグがあるね。 とりあえずテトリス棒が壁とかにめり込む事が頻繁にあるみたいです。 あと、回転するとめり込むこともありました。
63 名前:デフォルトの名無しさん mailto:sage [02/04/18 00:25] >>61 ライフゲームの時は良かったが、 テトリスみたいな真っ当なゲームだとキーの反応がどうしてもね…… でも結構いいんじゃない?ブロックをどのような構造で管理してる?
64 名前:S ◆Q14CxNhI mailto:sage [02/04/18 00:36] >>62 >>63 どもです。 キー入力は、ループ中に2回判定させようかと思ってます。文字数増えるけど。 ブロックは中心と上と右を固定し、それ+1個で形を決定します。 テトリス棒だけは直線にするために、+2個を配列の最初に確保 [2,-1]し、 はみ出す上を無視するようにしました。 バグは・・・何とかします、しましょう、してください・・・
65 名前:デフォルトの名無しさん mailto:sage [02/04/18 11:40] このスレの問題点として、縮める前のコードがないために 他の人がいっしょに縮めることが難しくなってる。 前スレのトリッキー1、60、あたりが良く一緒に縮めていたけれど、 あれは特殊な例だと思う。 (それとも彼らレベルになれば、縮んでいても普通に読めるのかも) かといってみんなが縮める前のコードをウプしたら、 かなり鬱陶しいだろうし、難しい問題だよな。 このスレを七行になったもの専門にして、 別に七行作業スレッドとかを作ってそっちで議論するとか・・・
66 名前:デフォルトの名無しさん mailto:sage [02/04/18 12:00] むしろ7行モード・インデントして読みやすいモードを変換するフィルタを7行で書く。
67 名前:前スレ [02/04/18 12:31] >>66 perlのインデントツールは現在製作中ですが何か?
68 名前:デフォルトの名無しさん mailto:sage [02/04/18 12:38] >>66-67 65とちょっとずれてないか?
69 名前:perl16 [02/04/18 13:26] >>67 訂正 s/前スレ/前スレ843/;
70 名前:デフォルトの名無しさん mailto:sage [02/04/18 14:20] 57◆Air.TtTk氏のPDT びゅーわを詰めてみました。7行。 import java.awt.image.*;public class P{public static void main(String[]_){new java.awt.Frame(){int w,h,c,v,m,M,Q,q[],r,i;BufferedImage I;{L(12);w=L(4);h=L(4 );L(12);for(q=new int[w*h];Q<w*h;){if(--M<0){M=7;m=L(1);}if((m>>M&1)>0)q[Q++]= L(3);else for(v=(c=L(1))>>4 |L(1)<<4,c=c&15;c-->=0;)q[Q]=q[Q++-v-1];}setSize(w+ 80,h+80);(I=new BufferedImage(w,h,1)).setRGB(0,0,w,h,q,0,w);}public void paint (java.awt.Graphics g){g.drawImage(I,40,40,this);}int L(int l){try{for(r=i=0;i< l;)r+=System.in.read()<<8*i++;}catch(Exception e){}return r;}}.show();}}
71 名前:デフォルトの名無しさん mailto:sage [02/04/18 18:16] >>66 ■インデント揃え pc.2ch.net/test/read.cgi/tech/984182993/116 (pc.2ch.net/test/read.cgi/tech/984182993/126 pc.2ch.net/test/read.cgi/tech/984182993/138 ) pc.2ch.net/test/read.cgi/tech/984182993/688 ノーマル→7行のフィルタは…どうだろう。俺は、手で縮めるときは 79文字を効率的に使えるように色々並べ替えたりするので、 そこまで考えてくれるのが7行で作れたら面白いかもシレン。
72 名前:perl16 mailto:sage [02/04/18 22:38] >>71 インデントツール完成したら、作ってみるYO!(・∀・) だけど、インデントツール作るのにも相当苦労してるから、 ノーマル→7行は難しそうだ。 関数なんかも考慮しないかんし・・・ Perlだけど。
73 名前:デフォルトの名無しさん mailto:sage [02/04/18 22:56] >>72 関数なんか関係ない。 デリミタを識別して、その前後の空白文字を詰める。 他の場所は空白文字が2個以上続いたら1つに正規化するだけ。
74 名前:デフォルトの名無しさん [02/04/19 09:11] 超高速素数列挙 #include<stdio.h> #include<stdlib.h> #include<math.h> void main(int argc, char *argv[]){unsigned long max, q, r; if(argc!=2){return;}else{max=atoi(argv[1]);}char *P=new char[max]; for(q=3; q<sqrt(max); q+=2){if(P[q]!=1){for(r=q*q; r<max; r+=q+q){P[r]=1;}}} printf("2\n");for(q=3; q<max; q+=2){if(P[q]!=1){printf("%u\n", q);}}} 誰でもできるか…しかもちょっとズルしてるし
75 名前:クレジャパン mailto:??? [02/04/19 09:12] 10 cls 20 'ぎゃはははははははは 30 a=100 40 print"ハァ(;´Д`)ハァ(;´Д`)ハァ(;´Д`)ハァ(;´Д`)" 50 if a<1 then goto 10000 60 a=a-1 70 goto 40
76 名前:クレジャパン mailto:??? [02/04/19 09:32] int main(int argc,char *argv[]) { int loop00=0; /* Cプログラマ死んでくれ */ for (loop00 = 0;loop00<10000;loop00++) { printf("Cが出来るからってエバるなや\n"); } return 0; }
77 名前:クレジャパン mailto:??? [02/04/19 09:36] c ** 頼むから死んでくれ ** do 5 loop00=0,(10000-1) write(*, 600 ) 600 format('Cが出来るからってエバるなや') 5 continue stop end
78 名前:クレジャパン mailto:??? [02/04/19 09:52] /* タウンページたら「パソコン教えます」ってかいてあったんだよ */ /* んでなそこに行って「C言語教えて下さい」って言ったら */ /* 「アナタには無理だ、私でも一人前になるのに12年もかかった」 */ /* って言われたんだよ */ /* Cプログラマーって種族は人の顔見ただけでそう言う事判断するのかよ */ /* アアン?何にか言って見ろゴルァ(゚Д゚メ) */ /* そんなに偉いのかよ?C使えたら */
79 名前:デフォルトの名無しさん mailto:sage [02/04/19 11:29] >>73 有る程度の構文解析は必要かと……
80 名前:デフォルトの名無しさん mailto:sage [02/04/19 11:31] >>74 短くしようという気迫に欠けすぎているので却下。 ・void main? ・変数名が2文字以上?? ・#include <Math.h>???
81 名前:デフォルトの名無しさん mailto:sage [02/04/19 11:56] センセー、>>74 を縮めてみましたぁ〜 extern "C"{int printf(const char*,...);long atoi(const char*);} main(int c,char *v[]){unsigned long m,q,r;if(c>1){m=atoi(v[1]); char*P=new char[m];for(q=3;q<sqrt(m);q+=2){if(P[q]!=1){for(r=q*q;r<m;r+=q+q){ P[r]=1;}}}printf("2\n");for(q=3;q<m;q+=2){if(P[q]!=1){printf("%u\n",q);}}}}
82 名前:ヽ(´ー`)ノ [02/04/19 13:50] >>75-78 のヒッキー君、スルーされてます
83 名前:ヽ(´ー`)ノ [02/04/19 13:52] >>75-78 上からn88、Cまたはジャバ、フォートランですかね? ヽ(´ー`)ノヽ(´ー`)ノヽ(´ー`)ノ ヽ(´ー`)ノヽ(´ー`)ノヽ(´ー`)ノ
84 名前:デフォルトの名無しさん [02/04/19 13:56] HTMLでenterキーやbackspaceで画面遷移しないようにするにはどうしたらいいでしょう
85 名前:ヽ(´ー`)ノ [02/04/19 13:57] 遷移←日本語に訳して
86 名前:デフォルトの名無しさん [02/04/19 13:58] submitしないようにしたいのです
87 名前:ヽ(´ー`)ノ [02/04/19 14:00] osなんやねん?
88 名前:デフォルトの名無しさん [02/04/19 14:02] windows2000です
89 名前:ヽ(´ー`)ノ [02/04/19 14:06] ブラウザなんやねん
90 名前:デフォルトの名無しさん [02/04/19 14:07] IE5.5です
91 名前:デフォルトの名無しさん [02/04/19 14:09] JavaScriptかなんかで制御できたらと思っているのですが
92 名前:ヽ(´ー`)ノ [02/04/19 14:12] ワカランナー(・∀・)
93 名前:ビッダーズ向上委員長 [02/04/19 14:16] ヤフーは、どこをどうとっても最悪。 ビッダーズが一番!!!↓ www.bidders.co.jp/bpu/1072049 皆、左上の会員登録をクリックして、 入会しよう。
94 名前:デフォルトの名無しさん mailto:sage [02/04/19 15:11] >>85 辞書くらい(略 dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%C1%AB%B0%DC&sw=2
95 名前:デフォルトの名無しさん mailto:sage [02/04/19 15:26] >>81 最後にreturn 0;を忘れずに
96 名前:デフォルトの名無しさん mailto:sage [02/04/19 15:40] をを、良スレ。しらなかった。
97 名前:S ◆Q14CxNhI mailto:sage [02/04/19 18:07] プログラムの概念がわかれば、言語を知らなくても参加できるぞぃ。 たとえばおいらは JavaScript をほとんど全くしらなかったが、 蛇にはまり、ライフゲームを改造し、ついには自分でスロットやテトリスを書けるようになった。 今だ JavaScript はよくわかっていないが、7行そのままで読解もできるようになった。 これは Java についても同じ。
98 名前:S ◆Q14CxNhI [02/04/19 18:25] for文ひとつ減らせた <body onKeyDown=K=event.keyCode><pre><script>B=[[-11],[-24],[2],[13],[-13],[-1] ,[2,-1]];function Y(){Z[11]=P;f=0;E=B[t];if(K)if(K-32){d=K-37?1:-1;for(i=4;--i; )Z[h+E[i]+d]==S?f=1:0;f?0:h+=d}else{C=[];for(i=0;i<4;Z[h+(C[i++]=p*A-v*145)]==S ?f=1:0)p=E[i],v=Math.round(p/A);t&&!f?E=B[t]=C:0}f=K=0;for(i=W;i--;Z[W+i]=Z[i]) ;for(i=4;i--;Z[W+p]=S)if(Z[A+(p=h+E[i])]==S)f=1;if(f==1){for(i=4;i--;)Z[h+E[i]] =S;t=(t+1)%7;h=5}h+=A;for(f=1,i=19;i--;){for(j=11;--j&&Z[i*A+j]==S;);if(!j)for( P+=f++,j=++i*A;j>A*2;)Z[j]=Z[j---A]}for(i=W;i--;D.all(6+i).innerHTML=Z[W+i]);if (Z[5]!=S)setTimeout(Y,99)}S="□";h=17;W=240;A=12;D=document;Z=[];for(K=t=P=i=0; i<W;){if(i<7)B[i].push(0,1,-A);Z[i]=(i+1)%A<2||i>228?S:" ";D.write(i++%A?"": "\n","<b></b>")}Y()</script>
99 名前:74 [02/04/19 18:40] >>80 すんません。自分でちょっと前に書いたコードを適当に縮めただけだったので… あと?の意味がわかりません。何故なんでしょうか? C歴1ヶ月未満の厨房です。スマソ
100 名前:74 [02/04/19 18:44] あと>>81 は #include <Math.h> しないと動かないんですが… 100get。
101 名前:デフォルトの名無しさん mailto:sage [02/04/19 18:59] >>99 7行プログラミングとは言っているが、やはり縮められるだけ縮めたいもの。 そのため、変数・関数名は最初に1文字にしておくのが、チヂマー(縮める人?)の基本。 7行達成したからといって、無駄(に見える)をなくすべし! ということを >>80 は言おうとしているんだろうよ。 それから void main() と main 関数の返値に void を指定するのは間違いというのがCの基本(と言われている)。 もちろん縮める上で有効ならば、皆それ(Warning)くらいは無視するよ。
102 名前:S ◆Q14CxNhI [02/04/19 19:21] ほぼ9行。このままでも、もう少し縮みそう。 <body onKeyDown=K=event.keyCode><pre><script>B=[[-11],[-24],[2],[13],[-13],[-1] ,[2,-1]];function Y(){Z[11]=P;f=0;E=B[t];if(K)if(K-13){d=K-37?1:-1;for(i=4;--i; )f+=Z[h+E[i]+d]==S;f?0:h+=d}else{C=[];for(i=0;i<4;f+=Z[h+(C[i++]=p*A-Math.round (p/A)*145)]==S)p=E[i];t&&!f?E=B[t]=C:0}f=K=0;for(i=4;i--;Z[W+p]=S)f+=Z[A+(p=h+E [i])]==S;if(f){for(i=4;i--;)Z[h+E[i]]=S;t=(t+1)%7;h=5}h+=A;for(k=1,i=19;i--;){ for(j=11;--j&&Z[i*A+j]==S;);if(!j)for(P+=k++,j=++i*A;j>2*A;)Z[j]=Z[j---A]}for(i =W;i--;Z[W+i]=Z[i])D.all(6+i).innerHTML=Z[W+i];if(Z[5]!=S)setTimeout(Y,99)}h=17 S="□";W=240;A=12;D=document;Z=[];for(K=t=P=i=0;i<W;){if(i<7)B[i].push(0,1,-A); Z[W+i]=Z[i]=(i+1)%A<2||i>228?S:" ";D.write(i++%A?"":"\n","<b></b>")}Y() </script>
103 名前:デフォルトの名無しさん [02/04/19 19:23] age
104 名前:74 [02/04/19 19:43] >>101 丁寧にありがとうございました。 出直してきます。 皆さんがんばってください。
105 名前:perl16 mailto:sage [02/04/19 20:25] 口先だけか、といわれるのは嫌なので、 とりあえずperlのインデントツール。 1行オーバー。 しかも完璧じゃないし。鬱。 #--- indent.pl ---# chop($f=<>);open(F,"<$f")||die$!;while(<F>){s/\s?\n$//;$_.=" "if/sub$/;$d.=$_; }close(F);$d=~s/(;|\{|\})/$1\n/g;$d=~s/\\\//\&\&\&/g;$d=~s/\\"/\@\@\@/g;while( $d=~/(q|qq|=~m|=~)\/.*?\//s){&g;}&ad;while($d=~/=~(s|tr|y)\/.*?\/.*?\//s){&g;} &ad;while($d=~/\(.*?\)/s){&g;}&ad;while($d=~/('|").*?\1.*?;/s){&g;}&ad;$d=~ s/\&\&\&/\\\//g;$d=~s/\@\@\@/\\"/g;$d=~s/\$\$\$/"/g;$d=~s/\%\%\%/'/g;$f.=".bak ";open(F,">$f");print F$d;close(F);sub g{$o[$c]=$`;$j[$c++]=$&;$d=$';}sub ad{ $c=0;for(@j){s/\n//g;s/"/\$\$\$/g;s/'/\%\%\%/g;$t.="$o[$c++]$_";}$d="$t$d";$t= "";$c=0;$#o=$#j=-1;} ↑のインデントバージョン www2.freejpn.com/~az1028/indent/indent.txt ↑のツールを使って自分自身を実行した結果。 www2.freejpn.com/~az1028/indent/indent2.txt
106 名前:デフォルトの名無しさん mailto:sage [02/04/19 20:52] >>101 >>95 は無視してないようだが(w
107 名前:C_sugar [02/04/19 21:07] テトリスは結構すごいね。 普通にJavaScriptでテトリスを作ろうとすると数百行になるからね。
108 名前:SYN ◆mMJ0UaoA mailto:sage [02/04/19 21:28] // 引数に0-999(50-950辺りが面白い?)を与えると、自己平方フラクタル画像を出力。 // 言語はVC++ #include <string> char*p,d[786486]={66,77,54};main(int c,char**g){FILE*f=fopen("f.bmp","wb");d[10 ]=54;d[36]=d[4]=12;d[14]=40;d[26]=1;d[23]=d[19]=2;d[28]=24;d[42]=d[38]=196;d[43 ]=d[39]=14;int x,y,n,w=512;double r=1,i,u,v,e=1.5/w,b,a=(atoi(g[1])/999.0)*2.0- 1.0,s=-0.75;u=1-a*a;do{i=r;r=(u/r+r)/2;}while(r<i);b=i*0.85;a=-0.62*a-0.13;p=d+ 54;for(y=0;y<w;y++){for(x=0;x<w;x++){r=s+x*e;i=s+y*e;for(n=0;n<63;n++){u=r*r;v= i*i;i=2*r*i+b;r=u-v+a;if(u+v>4)break;}p[y*w*3+x*3]=n*4;}}fwrite(d,1,786486,f);}
109 名前:デフォルトの名無しさん mailto:sage [02/04/19 21:41] あんたGCAの作者か?
110 名前:デフォルトの名無しさん mailto:sage [02/04/19 21:42] なんつーか、惰性で続いてる感が拭えない。 前スレ500前後で終わるべきだったかと。 range corderはオモロかったけどね。
111 名前:デフォルトの名無しさん mailto:sage [02/04/19 21:43] >>109 SもSYNも某圧縮アルゴリズム掲示板の住人 前スレのRange corder作ったのも縮めたのもSだっか。
112 名前:SYN ◆mMJ0UaoA mailto:sage [02/04/19 21:59] >>110 pc.2ch.net/test/read.cgi/tech/984182993/775 を見て何か描けたらいいなって思ったけど、ショボくてスマソ。
113 名前:110 mailto:sage [02/04/19 22:08] >>112 いや、誰がショボイとかそういう話じゃなく。 「これを縮めるぞ」みたいなやる気の出る作品が出てこないなぁって話
114 名前:デフォルトの名無しさん mailto:sage [02/04/19 23:06] >>111 別に誰だろうとあんま関係ないよ。 まぁ、面白いかつまらないかはあるけどな。
115 名前:S ◆Q14CxNhI [02/04/20 00:18] 9行。 アルゴリズムか仕様を今以上に工夫しないと、8行も難しいかもしれません。 <body onKeyDown=K=event.keyCode><pre><script>B=[[-11],[-24],[2],[13],[-13],[-1] ,[2,-1]];function Y(){Z[11]=P;f=0;E=B[t];i=4;if(K)if(K-13){for(d=K-37?1:-1;i--; )f+=Z[h+E[i]+d]==S;f?0:h+=d;}else{for(C=[];i--;f+=Z[h+(C[i]=p*A-Math.round(p/A) *145)]==S)p=E[i];t*!f?E=B[t]=C:0;}for(f=K=i=0;i<4;Z[W+p]=S)f+=Z[A+(p=h+E[i++])] ==S;if(f){for(t=++t%7;i--;)Z[h+E[i]]=S;h=5}h+=A;for(k=1,i=19;i--;){for(j=11;--j &&Z[i*A+j]==S;);if(!j)for(P+=k++,j=++i*A;j>2*A;)Z[j]=Z[j---A]}for(i=W;i--;Z[W+i ]=Z[i])D.all(6+i).innerHTML=Z[W+i];Z[5]!=S?setTimeout(Y,99):0;}D=document;W=240 A=12;h=17;Z=[];for(K=t=P=i=0;i<W;D.write(i%A?"":"\n","<b></b>"),Z[W+i]=Z[i]=++i %A<2||i>228?S="□":" ")i<7?B[i].push(0,1,-A):0;Y()</script>
116 名前:デフォルトの名無しさん mailto:sage [02/04/20 01:15] >>100 math使わなくても、二乗したのを比較すればいいのでは?? >>115 読めないのだよ…… 過去スレの354みたいに書いてくれると嬉しい…… pc.2ch.net/test/read.cgi/tech/984182993/354
117 名前:S ◆Q14CxNhI [02/04/20 02:06] <body onKeyDown=K=event.keyCode><pre><script>function Y(){ Z[11]=P; // 得点を表示バッファに書き込み E=B[t]; // 現在落下中のブロック f=0; // 移動・回転決定用フラグ if(K) // キーが押されているか if(K!=32){ // 横移動 d=K-37?1:-1 // d:x方向の差分 for(i=0;i<4;i++) // 横移動判定 f+=Z[h+E[i]+d]==S; // 移動先が空白かどうか f?0:h+=d; // すべて空白なので移動決定 }else{ // 回転 C=[]; // 回転先の座標保持用 for(i=0;i<4;i++){ // 回転判定 p=E[i]; // ブロックの各位置 v=Math.round(p/12); // 回転先の x 座標 w=p-v*12; // 回転先の y 座標 C[i]=w*12-v; // 回転先の座標計算 if(Z[h+C[i]]==S)f=1; // 回転先が空白かどうか } t*!f?E=B[t]=C:0; // すべて空白なので回転決定 } K=0; // キー入力キャンセル for(f=i=0;i<4;i++){ // 落下判定 f+=Z[12+(p=h+E[i])]==S; // 落下先が空白かどうか Z[240+p]=S // ブロック表示のために表示バッファへコピー } if(f){ // 落下できない for(i=0;i<4;i++)Z[h+E[i]]=S; // ブロック停止 t=++t%7; // 次のブロック決定(現在順送り) h=17 // 位置初期化 }else h+=12; // 一段落下 for(k=1,i=19;i--;){ // ラインがそろったか判定 for(j=11;--j&&Z[i*12+j]==S;); // そろったラインを検索 if(!j){ // そろった P+=k++; // 得点 1ライン 1点, ..., テトリス 10点 になる for(j=++i*12;j>2*12;)Z[j]=Z[j---12] // 全体を一段下げる }} for(i=240;i--;){ D.all(6+i).innerHTML=Z[240+i]; // 表示用バッファを表示 Z[240+i]=Z[i] // 表示バッファのクリア } Z[5]!=S?setTimeout(Y,99):0; // 入り口にブロックがあったら終了 } // ブロックの作成 // 中心からの差分で配置する。棒を除くすべてのブロックはL字にブロックがあり、 B=[[-11],[-24],[2],[13],[-13],[-1],[2,-1]]; // それ以外の1個だけを別にする for(i=0;i<7;i++)B[i].push(0,1,-12); // ブロック共通部分追加 D=document; // 位置は、縦方向1マスは 12 単位となる 座標(x,y) なら h=x+y*12 h=17; // ブロックの中心位置初期化 Z=[]; // バッファ [0-239]:固定したブロック用 [240-479]:表示用バッファ for(K=t=P=i=0;i<240;){ D.write(i%12?"":"\n","<b></b>"); // HTML表示領域の描画 Z[240+i]=Z[i]=++i%12<2||i>228?S="□":" "; // 床と壁の設定、番兵にもなる } Y() </script>
118 名前:デフォルトの名無しさん mailto:sage [02/04/20 02:06] >>117 いやそれはsageてくれ
119 名前:S ◆Q14CxNhI mailto:sage [02/04/20 02:19] >>118 スマソ。改行エラーがでてばかりなので sage 忘れてしまった
120 名前:116 mailto:sage [02/04/20 02:26] >>119 thx。可能なら縮めるのに協力します
121 名前:デフォルトの名無しさん mailto:sage [02/04/20 03:05] >>116 速度に違いは? いや、短くするのが趣旨なのはわかってるんだけど
122 名前:デフォルトの名無しさん mailto:sage [02/04/20 03:34] >>121 q < sqrt(m) より q*q < mのほうが速いに決まってるだろ
123 名前:デフォルトの名無しさん mailto:sage [02/04/20 03:52] >>122 ウチで動かしたらq*q<mの方が平均0.2〜3秒遅くなったのだが。 …逝ってくる VBなら間違いなく前者の方が早いな(関係無い)
124 名前:S ◆Q14CxNhI [02/04/20 04:12] テトリス8行31文字。プログラム全体を見直しました。 <body onKeyDown=K=event.keyCode><pre><script>B=[[-11],[-24],[2],[13],[-13],[-1] ,[2,-1]];W=240;Z=[];h=17;function Y(){f=0;E=B[t];i=4;if(K)if(K-13){for(d=K-37?1 :-1;i--;)f+=Z[h+E[i]+d];h+=d*!f;}else{for(C=[];i--;f+=Z[h+(C[i]=p*A-Math.round( p/A)*145)])p=E[i];t*!f?E=B[t]=C:0;}for(f=K=i=0;i<4;Z[W+p]=1)f+=Z[A+(p=h+E[i++]) ];if(f){for(t=++t%7;i--;)Z[h+E[i]]=1;h=5}h+=A;for(k=1,i=W-A;i--;)if(i%A)Z[i]?0: i-=i%A;else for(P+=k++,j=i+=A;--j>A*2;)Z[j]=Z[j-A];for(i=W;i--;Z[W+i]=Z[i])D. all(6+i).innerHTML=i-11?Z[W+i]?"□":" ":P;Z[5]?0:setTimeout(Y,99);}D=document; A=12;for(K=t=P=i=0;i<W*2;D.write(i%A?"":"\n","<b></b>"),Z[i]=++i%A<2||i>228?1:0 )B[i%7].push(0,1,-A);Y()</script> >>120 ありがとうございます。
125 名前:S ◆Q14CxNhI mailto:sage [02/04/20 04:16] >>124 画面がスクロールする恐れがあるため、回転は「リターンキー」にしました。
126 名前:デフォルトの名無しさん [02/04/20 04:40] CかC++でオセロかインベーダ作ってください。 おながいします
127 名前:デフォルトの名無しさん mailto:sage [02/04/20 08:25] >>126 前スレに6行オセロ(コンピュータ対戦可能)という神の作品はあったぞ。
128 名前:前スレ853 mailto:sage [02/04/20 08:28] >>105 ん? Perl4 対応を考えてる?
129 名前:perl16 [02/04/20 11:51] >>128 あっ、考えてない。 perl5だけしか… >>105 を改良、7行になったけどバグあり。 #--- indent.pl ---# chop($f=<>);open(F,"<$f")||die$!;while(<F>){s/\s?\n$//;$_.=" "if/sub$/;$d.=$_; }close(F);$d=~s/(;|\{|\})/$1\n/g;$d=~s/\\\//\&\&\&/g;$d=~s/\\"/\@\@\@/g;@p=( '(q|qq|=~m|=~)\/.*?\/','(s|tr|y)\/.*?\/.*?\/','\(.*?\)','(\'|").*?\1.*?;');for (@p){while($d=~/$_/s){$o[$c]=$`;$j[$c++]=$&;$d=$';}$c=0;for(@j){s/\n//g; s/"/\$\$\$/g;s/'/\%\%\%/g;$t.="$o[$c++]$_";}$d="$t$d";$t="";$c=0;$#o=$#j=-1;} $d=~s/\&\&\&/\\\//g;$d=~s/\@\@\@/\\"/g;$d=~s/\$\$\$/"/g;$d=~s/\%\%\%/'/g;$f.= ".bak";open(F,">$f");print F$d;close(F); ↑のインデントバージョン www2.freejpn.com/~az1028/indent/indent.txt ↑のツールを使って自分自身を実行した結果。 www2.freejpn.com/~az1028/indent/indent2.txt
130 名前:perl16 mailto:sage [02/04/20 11:55] バグって言うか、ちゃんと改行されない。
131 名前:775 mailto:sage [02/04/20 12:09] #include <stdio.h> /* BMPGEN - 2 ムリダ・・*/ #define P(A,N,B,M) for(i=0;i<N;i++) putc(A, f); for(i=0;i<M;i++) fputc(B, f); enum{L=320,N=240};int k,i,j,m[L],n[L];main(){FILE *f=fopen("c.bmp","wb");P(66, 1,77,1)P(54,1,132,1)P(3,1,0,5)P(54,1,0,3)P(40,1,0,3)P(64,1,1,1)P(0,2,N,1)P(0,3 ,1,1)P(0,1,24,1)P(0,6,132,1)P(3,1,0,1)P(196,1,14,1)P(0,2,196,1)P(14,1,0,10)for (i=0;i++<L;)m[i]=0;for(i=j=1;i++<99;)m[j=(i*99+j)%L]=N;for(i=0;i++<N;){for(j=0 ;j++<L;)for(k=0;k++<3;)fputc(m[j],f);for(j=1;j++<319;n[j]=(m[j-1]+m[j+1])/2); for(j=0;j++<L;m[j]=n[j]);}} それにしてもすごいスレだ・・。
132 名前:デフォルトの名無しさん mailto:sage [02/04/20 12:35] >>126 6行オセロは必見だぞ。 あの短さ、バグなし、コンピュータ対戦、あれは間違いなく芸術
133 名前:775 mailto:sage [02/04/20 12:54] ああ、>>108 にもっと頭良いのが出てましたね・・・。 すいませんでした、逝ってきます。
134 名前:デフォルトの名無しさん [02/04/20 13:05] >>131 すげーbmpを吐いたぞ
135 名前:前スレ853 mailto:sage [02/04/20 15:24] >>129 ファイルの入出力方法が冗長に感じたんで indent.pl srcfile > dstfile てな使い方に変えてみて 5 行。 sub l{('(qq?|=~m?)\/.*?\/','(s|tr|y)\/.*?\/.*?\/','\(.*?\)','(\'|").*?\1.*?;')} $_=join'',map{s/\s+$//;s/\w$/$& /;$_}<>;s/[;{}]/$&\n/g;$a='@@@';$m='&&&';$p= '%%%';s|\\/|$m|g;s|\\"|$a|g;$d=$_;for(l){1while$d=~s/\G$_/$o[$c]=$`;$j[$c++]=$& ;''/egs;$c=0;for(@j){s/\n//g;s/"/\$\$\$/g;s/'/$p/g;$t.="$o[$c++]$_"}($d,$t,$c, @o,@j)=("$t$d")}$_=$d;s|$m|\\/|g;s/$a/\\"/g;s/\$\$\$/"/g;s/$p/'/g;print でもコレ、ハッシュとかまで改行しちゃうよね(汗)。 トークナイザ作って括弧の対応調べて地道に改行しないと綺麗にはならないと思う。
136 名前:デフォルトの名無しさん [02/04/20 17:15] >>102 のやつ、回転できなかったけど、直ってるかな?ドキドキ。
137 名前:デフォルトの名無しさん mailto:sage [02/04/20 17:17] sage忘れた、 アナログ回線切って、オフラインでコーヒーブレークしてから、CPU頭に載せて自冊・・・
138 名前:S ◆Q14CxNhI [02/04/20 17:31] >>136 >>102 から回転がリターンキーになってます。 書き忘れちゃったんです、宇都。 8行達成が、ぎりぎりかも・・・ <body onKeyDown=K=event.keyCode><pre><script>B=[[-11],[-24],[2],[13],[-13],[-1] ,[2,-1]];W=240;function Y(){E=B[t];i=4;if(K)if(K-13){for(d=K-37?1:-1;i--;)d*=!Z [h+E[i]+d];h+=d}else{for(C=[];i--&&!Z[h+(C[i]=E[i]*A-Math.round(E[i]/A)*145)];) ;t*i<0?E=B[t]=C:0}for(f=K=i=0;i<4;Z[W+p]=1)f+=Z[A+(p=h+E[i++])];if(f){for(t=++t %7;i--;)Z[h+E[i]]=1;h=5}h+=A;for(k=1,i=W-A;i--;)if(i%A)Z[i]?0:i-=i%A;else for(P +=k++,j=i+=A;--j>A;)Z[j]=Z[j-A];for(i=W;i--;Z[W+i]=Z[i])D.all(6+i).innerHTML=i- 11?Z[W+i]?"□":" ":P;Z[5]?0:setTimeout(Y,99)}h=17;A=12;Z=[];D=document;for(K=t =P=i=0;i<W*2;D.write(i%13?"<b></b>":"\n"),Z[i]=++i%A<2||i>228?1:0)B[i%7].push(0 ,1,-A);Y()</script>
139 名前:S ◆Q14CxNhI mailto:sage [02/04/20 18:19] あまり減らなかったので、sage 進行 <body onKeyDown=K=event.keyCode><pre><script>function Y(){E=B[t];i=4;if(K)if(K- 13){for(d=K-37?1:-1;i--;)d*=!Z[h+E[i]+d];h+=d}else{for(C=[];i--&&!Z[h+(C[i]=E[i ]*A-Math.round(E[i]/A)*145)];);t*i<0?B[t]=C:0}for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+E [i++]]=1;if(f){for(t=++t%7;i--;)Z[h+E[i]]=1;h=5}h+=A;for(k=1,i=228;i--;)if(i%A) Z[i]?0:i-=i%A;else for(P+=k++,j=i+=A;--j>A;)Z[j]=Z[j-A];for(i=240;i--;X[i]=Z[i] )D.all(6+i).innerHTML=i-11?X[i]?"□":" ":P;Z[5]?0:setTimeout(Y,99)}B=[[-11],[- 24],[2],[13],[-13],[-1],[2,-1]];D=document;A=12;Z=[];h=17;X=[];for(K=t=P=i=0;i< 480;D.write(i%13?"<b></b>":"\n"),X[i]=Z[i]=++i%A<2||i>228?1:0)B[i%7].push(0,1,- A);Y()</script>
140 名前:デフォルトの名無しさん mailto:sage [02/04/20 20:03] >>138 >>117 はスペース回転だったけど? >>117 ベースで機能を追加すると死んでしまった・・・ 所詮折れのスキルはこんなものなのか?と、悔しいから奮闘中。 Sタン、更新ハヤイヨー(スゴイナ-。 7行の壁を破りたい・・・
141 名前:デフォルトの名無しさん mailto:sage [02/04/20 20:13] >>139 本題じゃないけどこのテトリス、ゲームとしてシビアすぎない?。
142 名前:デフォルトの名無しさん mailto:sage [02/04/20 21:06] >>141 ちょっと、ね。キーが鈍いし、ブロックは早いし。 まぁ、自分で調節すればいいんだけど。
143 名前:S ◆Q14CxNhI mailto:sage [02/04/20 21:06] >>140 わかりやすさを優先するために >>117 は少し以前のものをベースに、その時点での最新版と融合させました。 >>141 1段落下に対して、横移動あるいは回転のどちらか1つしかできませんので。 2〜3回操作可能にすると、バランスが良くなるでしょう。 落下を任意(カーソル下)、得点に応じて速くなるとすることもできるでしょう。 ただ、どちらにしろ、文字数が・・・
144 名前:デフォルトの名無しさん mailto:sage [02/04/20 21:13] ちょうどテトリスつくりたかったこともあって、参戦。 dめおえj、JavaScriptやったことないんだよね。 そうか、ブロックのデータはそうやって考えると小さくなるのか。 パパ、がんばっちゃうぞー
145 名前:デフォルトの名無しさん mailto:sage [02/04/20 23:20] 凄いのかもしれないけれど、ちょっといまいちの印象が抜けきらないな。 とりあえず、長くなってもいいからゲームとして成り立つソースを 是非アップして貰いたいと思いますがどうでしょう。 自分で作ってもいないのに生意気ですか?逝ってきます。