[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 16:01 / Filesize : 349 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

七行プログラミング part2



1 名前:デフォルトの名無しさん [02/04/15 12:09]
7行×79文字なら言語は問いません。
過去作品は>>2-5を参照。

■前スレ
pc.2ch.net/test/read.cgi/tech/984182993/

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]
凄いのかもしれないけれど、ちょっといまいちの印象が抜けきらないな。
とりあえず、長くなってもいいからゲームとして成り立つソースを
是非アップして貰いたいと思いますがどうでしょう。
自分で作ってもいないのに生意気ですか?逝ってきます。

146 名前:S ◆Q14CxNhI mailto:sage [02/04/20 23:31]
多少遊びやすいバージョン
>>145 こんなもんで、どうでしょう?

<body onKeyDown=K=event.keyCode><pre><script>function Y(){E=B[t];i=4;if(K)if(K-
b){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(e){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];}e=1-e;for(i=240;
i--;X[i]=Z[i])D.all(6+i).innerHTML=i-11?X[i]?"□":" ":P;Z[5]?0:setTimeout(Y,9)
}B=[[-11],[-24],[2],[b=13],[-b],[-1],[2,-1]];D=document;A=12;Z=[];h=17;X=[];for
(e=K=t=P=i=0;i<480;D.write(i%b?"<b></b>":"\n"),X[i]=Z[i]=++i%A<2||i>228?1:0)B[i
%7].push(0,1,-A);Y()</script>


147 名前:145 mailto:sage [02/04/20 23:53]
>>146
キー操作が辛くてなんとも…
その部分を改良しないと、テトリスとしてはダメかなと、
僭越ながら思いました。とりあえずソース読んでみます

148 名前:デフォルトの名無しさん mailto:sage [02/04/21 00:01]
なんかテトリス不評だな。俺は7行ネタとしては面白いと思うけど、
ゲームとして見たら……うーん。
やっぱJSだからきついな

149 名前:デフォルトの名無しさん mailto:sage [02/04/21 00:17]
>>147
そうか?おれには簡単すぎていつまでも終わらない
ゲーム性はこれくらいでいい
これで7行したら紙

150 名前:デフォルトの名無しさん mailto:sage [02/04/21 00:21]
>>149
先人達に比べると、完成度をもう少し上げて欲しいと思わないか?
前スレのマインスイーパとかの完成度と比べてしまうと、どうも……
でもとりあえず7行にするのはそれでいいかもしれないけど、
S氏には期待しているので、もう少し頑張って欲しい、と無責任なことを言うテスト

151 名前:デフォルトの名無しさん mailto:sage [02/04/21 00:37]
>>150
先人達と比べるのは辛すぎるのではない?
Sさんもかなり頑張って縮めてると思うし、なによりこのやる気はいいと思う。

しかし、前スレの初期にいた人、来ないね。



152 名前:S ◆Q14CxNhI mailto:sage [02/04/21 02:48]
多少遊びやすい版でようやく >>138 に追いつく。今晩はここまでにします。

<body onKeyDown=K=event.keyCode><pre><script>X=[];function Y(){E=B[t];i=4;if(K)
if(K-b){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(e=!e){if(f){for(t=++t%7;i--;)Z[h+E[i]]=k=1;for(i=228;i--;h=5)if(
i%A)i-=i%A*!Z[i];else for(P+=k++,j=i+=A;--j>A;)Z[j]=Z[j-A]}h+=A}for(i=240;i--;X
[i]=Z[i])D.all(6+i).innerHTML=i-11?X[i]?"□":" ":P;Z[5]?0:setTimeout(Y,9)}B=[[
-11],[-24],[2],[b=13],[-b],[-1],[2,-1]];D=document;A=12;Z=[];h=17;for(e=K=t=P=i
=0;i<480;D.write(i%b?"<b></b>":"\n"),X[i]=Z[i]=++i%A<2||i>228?1:0)B[i%7].push(0
,1,-A);Y()</script>

153 名前:デフォルトの名無しさん mailto:sage [02/04/21 03:01]
>>152
お疲れ。

154 名前:S ◆Q14CxNhI [02/04/21 03:54]
ついに8行達成です。・・・遊びづらい版ですが・・・

<body onKeyDown=K=event.keyCode><pre><script>X=[];A=12;Z=[];function Y(){E=B[t]
c=g=f=0;d=K-37?1:-1;C=[];for(i=4;i--&&K;K-b?c+=!Z[h+p+d]:g+=!Z[h+(C[i]=p*A-Math
.round(p/A)*145)])p=E[i];t&&g==4?B[t]=C:c-4?0:h+=d;for(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]]=k=1;for(i=228;i--;h=5)if(i%A)i-=i%
A*!Z[i];else for(P+=k++,j=i+=A;--j>A;)Z[j]=Z[j-A]}h+=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],[b=13],[-b],[-1],[2,-1]];D=document;h=17;for(K=t=P=i=0;i<280;D.write(i%
b?"<b></b>":"\n"),X[i]=Z[i]=++i%A<2||i>228?1:0)B[i%7].push(0,1,-A);Y()</script>

眠い。

155 名前: ◆Air.TtTk mailto:sage [02/04/21 04:07]
ちゃんとした迷路(7行)
迷路って以外と簡単だったのね。
5行レベルかな…。

// M.java

public class M{int g,x,y,m[][]=new int[79][23];public static void main(String[]_
){new M();}M(){for(y=0;y<23;y++)m[0][y]=m[78][y]=1;for(x=0;x<79;x++)m[x][0]=m[x]
[22]=1;m[2][1]=m[76][21]=m[2][2]=1;while(true){g=1;for(x=2;x<77;x+=2)for(y=2;y<
21;y+=2){if(m[x][y]>0){D(0,-2);D(0,2);D(-2,0);D(2,0);}g&=m[x][y];}if(g>0)break;}
for(y=0;y<23;y++){for(x=0;x<79;x++){System.out.print(m[x][y]>0?" ":"@");}System.
out.println("");}}void D(int X,int Y){if(m[x+X][y+Y]<1&&Math.random()<0.1)m[x+X]
[y+Y]=m[x+X/2][y+Y/2]=1;}}


156 名前:デフォルトの名無しさん mailto:sage [02/04/21 10:17]
>>155
(´ー`)。o○(Java知らないから遊べねーや)

金ないから家ではBCCでコンパイルできるつしか試せない罠

157 名前:デフォルトの名無しさん mailto:sage [02/04/21 13:12]
>>156
Javaコンパイラは無料じゃー。

158 名前:デフォルトの名無しさん mailto:sage [02/04/21 15:08]
>>157
ええっそうなの?早速あさってみよ。
通信回線遅いうえに従量制なんで重いのは落とせない罠。

#初心者丸出しな自分に鬱

159 名前:デフォルトの名無しさん mailto:sage [02/04/21 15:23]
おれもマチヒチ勉強してみよっかなぁ

マチヒチっ何だよ。javaだよ。なんかカナロックか何かに取り付かれていたようだ。。。(w

160 名前:デフォルトの名無しさん mailto:sage [02/04/21 15:55]
ワラタ

161 名前:デフォルトの名無しさん mailto:sage [02/04/21 16:28]
cygwin があるから、c も FORTRAN も Pascal も perl も・・・
つーか、おれんちは Unix系 しかないから、むしろ Windows 環境が無い。



162 名前:perl16 mailto:sage [02/04/21 17:00]
javaむずい。つーかよく分からん。
perlしかやってないもんで。
perlでゲームは面白くない。CUI中心だから。

>>135
>トークナイザ作って括弧の対応調べて地道に改行
そうですね。一時的にハッシュとかに対応できるようにしても、
新たな問題が出てきますからね。
七行で完璧に近いインデントツール作るのは難しそうだ。

>>Java&JSプログラマーの皆さん
Java&JSのインデントツールは作らないんですか?


163 名前:デフォルトの名無しさん mailto:sage [02/04/21 17:18]
>>162
インデントツールという発想がいまいち言語にあわなくて…。
Cやマチヒチの場合、縮めた後ではインデントを揃えても見やすくならないでしょ?


164 名前:デフォルトの名無しさん mailto:sage [02/04/21 17:19]
>>161
割り切って1台くらいWin環境を入れたら?
gcc for Win32だとWindowsプログラムの開発も出来るよ。

165 名前:Javaさん mailto:sage [02/04/21 17:31]
前スレ770です。。
いつの間にやらPart2突入していたんですね。

>>155
ぱっと見削れる部分を削ってみました。
class M{int g,x=0,y=0,m[][]=new int[79][23];static void main(String[]_){new M()
;}M(){for(;++y<23;m[0][y]=m[78][y]=1);for(;++x<79;m[x][0]=m[x][22]=1);m[2][1]=m
[76][21]=m[2][2]=1;for(;;g=1){for(x=2;x<77;x+=2)for(y=2;y<21;y+=2){if(m[x][y]>0
){D(0,-2);D(0,2);D(-2,0);D(2,0);}g&=m[x][y];}if(g>0)break;}for(y=-1;y++<22;x=0)
for(;x<79;System.out.print(m[x++][y]>0?" ":x>77?"@\n":"@"));}void D(int X,int Y
){if(m[x+X][y+Y]<1&&Math.random()<0.1)m[x+X][y+Y]=m[x+X/2][y+Y/2]=1;}}

やっぱJavaは読みやすいなぁ、、。

さて、前スレで書いたHTTP鯖にバグあったから手直し、、、。
こうやって休日がつぶれていくわけです。鬱


166 名前:デフォルトの名無しさん [02/04/21 17:43]
以前見かけて面白かったスレですが、ちょっとネタを思いついたので。
急スレに書き込んでしまったのですが、写します。
ーーーーーーーーーーーーー
プラパズルNo5とかどうでしょうか。
全組み合わせを探し出し、できれば表示する。
ルール
正方形が5つ集まってできたコマが
12種類(5つの正方形を組み合わせて出きる全通りです)あります。
これを6*10マスに収まるように並べる並べ方をしらべます。
ちなみに組み合わせは全部で2339通りあります。
もちろんコードが短ければ短いほど、全通りの検出が速ければ速いほど イイ! ってかんじで。
ーーーーーーー
全組み合わせ合わせの取得まで、私がテキトーに作った(全然7行じゃないですよ)奴で3日、まじめに作り直して5分かかりました。
結構真剣にやって10秒ぐらいまで縮みました。
7行でも3日ぐらいの奴ならできそうに思うんですが、ここの方ならスピードも・・・
なお、マシンはPenIII500でした。

167 名前:デフォルトの名無しさん mailto:sage [02/04/21 17:46]
ソースキボン

168 名前:デフォルトの名無しさん mailto:sage [02/04/21 17:48]
ネタ提供だけ?
とりあえず自分で縮められるところまで縮めてくれ。

169 名前:perl16 mailto:sage [02/04/21 17:59]
>>163
確かにそうですね。
ツール使ってインデントしても、
ただ改行してるだけですからね…
字下げもするか…

170 名前:デフォルトの名無しさん mailto:sage [02/04/21 19:18]
>>169
そういう問題ではなく、たとえば
if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*i;while(m[v]-t);
をインデントしても、
if(v-p-*i&&m[v]==t&&(s=a=v=p,d))
  do
    m[v]=t,v+=*i;
  while(m[v]-t);
にしかならないぞ、という事ではないかな?
これで読みやすくなるわけでは無いよね。無いよりはマシだけど

171 名前: ◆Air.TtTk mailto:sage [02/04/21 19:48]
ちゃんとした迷路(5行)

// M.java

public class M{public static void main(String[]_){new M();}M(){for(;p<1617;p++)m
[p+80+p/77*2]=1;m[81]=m[160]=m[1735]=0;for(;g>0;){g=0;for(p=160;p<1658;p+=(p+3)%
79<1?((p+82)%158<1?84:5):2){if(m[p]<1){D(-158);D(158);D(-2);D(2);}g|=m[p];}}for(
p=0;p<1817;p++)System.out.print(m[p]<1?(p%79<1?"\n ":" "):"@");}void D(int P){if
(m[p+P]>0&&Math.random()<0.2)m[p+P]=m[p+P/2]=0;}int g=1,p,m[]=new int[1817];}

>>165
M は public じゃないといけないし、
j2sdk1.4.0 なら main も public じゃないといけないらしいぞ。




172 名前:S ◆Q14CxNhI [02/04/21 21:56]
テトリス多少遊びやすい版も8行到達です。

<body onKeyDown=K=event.keyCode><pre><script>X=[];function Y(){(E=B[t]).push(c=
0,1,-A);C=[d=K-37?1:-1];for(i=4;i--&&K;K-b?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.
round(p/A)*145)])p=E[i];t&&c<-3?B[t]=C:c-4?0:h+=d;for(f=K=i=0;i<4;f+=Z[A+p])X[p
=h+E[i++]]=1;if(e=!e){if(f){for(t=++t%7;i--;)Z[h+E[i]]=k=1;for(i=228;i--;h=5)if
(i%A)i-=i%A*!Z[i];else for(P+=k++,j=i+=A;--j>A;)Z[j]=Z[j-A]}h+=A}for(i=240;i--;
X[i]=Z[i])D.all(6+i).innerHTML=i-11?X[i]?"□":" ":P;Z[5]?0:setTimeout(Y,9)}B=[
[-11],[-24],[2],[b=13],[-b],[-1],[2,-1]];D=document;A=12;Z=[];h=17;for(e=K=t=P=
i=0;i<280;X[i]=Z[i]=++i%A<2||i>228?1:0)D.write(i%b?"<b></b>":"\n");Y()</script>

173 名前:perl16 mailto:sage [02/04/21 22:29]
>>170
あ、そうか。
うーん。完璧にインデントするのは難しい。

174 名前:Javaさん mailto:sage [02/04/21 22:43]
>>171
とうとう5行ですか。
ロジックの変更お疲れ様です。
ここまでくると、残りの2行で何か出来そうですね。

>M は public じゃないといけないし、
>j2sdk1.4.0 なら main も public じゃないといけないらしいぞ。

Thanks.
でも動くならいいやというノリで、削ってしまう今日この頃なのでアリマス。鬱氏


175 名前:Javaさん mailto:sage [02/04/21 22:46]
>>173
インデントのことでなく、変数名のことを言っているんじゃないかな?


176 名前:S ◆Q14CxNhI mailto:sage [02/04/21 22:47]
表示系を変更したんですが、どうでしょうか?

<body onKeyDown=K=event.keyCode><script>Z=[];B=[[-11],[-24],[2],[b=13],[-b],[-1
],[2,-1]];function Y(){(E=B[t]).push(c=0,1,-A);C=[d=K-37?1:-1];for(i=4;i--&&K;K
-b?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/A)*145)])p=E[i];t&&c<-3?B[t]=C:c
-4?0:h+=d;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+E[i++]]=1;if(e=!e){if(f){for(t=++t%7;
i--;)Z[h+E[i]]=k=1;for(i=228;i--;h=5)if(i%A)i-=i%A*!Z[i];else for(P+=k++,j=i+=A
;--j>A;)Z[j]=Z[j-A]}h+=A}for(S="",i=0;i<240;S+=i-11?X[i]?"■":"_":P,X[i]=Z[i++
])S+=i%A?"":"<br>";document.all(3).innerHTML=S;Z[5]?0:setTimeout(Y,150)}X=[];A=
12;for(e=K=t=P=i=0;i<280;h=17)X[i]=Z[i]=++i%A<2||i>228?1:0;Y()</script>

177 名前:デフォルトの名無しさん [02/04/22 00:34]
>>168
ネタ提供だけのつもりだったんですが・・・
ソースはなくしちゃって。また作っても良いんですが、最近忙しくて・・・

178 名前:perl16 mailto:sage [02/04/22 01:07]
よく分からなくなってきた。
なんか僕、書き込むたびにつっこまれているような…。

179 名前:デフォルトの名無しさん mailto:sage [02/04/22 01:40]
>>178 有名税ってことで。

180 名前:厨々房某 mailto:sage [02/04/22 04:18]
プログラムのことはよくわからないんですが、
ネットで対戦できるゲーム作れますかね。

181 名前:デフォルトの名無しさん mailto:sage [02/04/22 04:21]
7行でできたら神だ・・・・
まず言語は何がいいか?詳しくないからわからないけど、
Cじゃ厳しそうだな。



182 名前:デフォルトの名無しさん mailto:sage [02/04/22 11:10]
>180
じゃんけんぐらいならすぐできるぞ。

183 名前:S ◆Q14CxNhI mailto:sage [02/04/22 20:39]
ゲーム性能向上も狙ってみたんですが・・・

<body onKeyDown=K=event.keyCode><script>function Y(){(E=B[t]).push(c=0,1,-A);C=
[d=K-37?1:-1];for(i=4;i--&&K;K-b?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/A)
*145)])p=E[i];t&&c<-3?B[t]=C:c-4?0:h+=d;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+E[i++]]
=1;if(e=!e){if(f){for(t=++t%7;i--;)Z[h+E[i]]=k=1;for(i=228;i--;h=5)if(i%A)i-=i%
A*!Z[i];else for(P+=k++,j=i+=A;--j>A;)Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;S+=i-11
?X[i]?"■":"_":P,X[i]=Z[i++])S+=i%A?"":"<br>";document.body.innerHTML=S;Z[5]?0
:setTimeout(Y,99-P)}X=[B=[[-11],[-24],[2],[b=13],[-b],[-1],[2,-1]]];for(Z=[A=12
],e=K=t=P=i=0;i<280;h=17)X[i]=Z[i]=++i%A<2||i>228?1:0;Y()</script>






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<349KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef