1 :
デフォルトの名無しさん :
03/04/30 20:49
惰性で2ゲッツ
議論は入れないで、ソースで語ろうね!
========== 終 了 ==========
サイズ・形式限定のBMPモザイクフィルター(little endian用) >mosaic src.bmp dst.bmp #include<stdio.h> char B[1<<24];int*P=B+20,x,y,X,C,D,s,t,u;A(a,b){return(a&b)+(0x7f7f7f7f&(a^b)>> 1);}G(o,n){return(n/=2)?A(A(G(o,n),G(o+n,n)),A(G(X*n+o,n),G(X*n+o+n,n))):P[o];} main(Y,v)char**v;{FILE*f=fopen(v[1],"rb");for(fread(B+2,1,54,f),X=*P,Y=P[1],P+= 9,D=C=X*Y;C--;)fread(P+C,1,3,f);for(;y<Y;y+=16)for(x=-X/2;x<X/2;x+=16)if(x*x+(y -Y/2)*(y-Y/2)<65536)for(C=G(u=y*X+x+X/2,t=16);t--;)for(s=16;s--;)P[u+s+t*X]=C; fwrite(B+2,1,54,f=fopen(v[2],"wb"));for(;D--;)fwrite(P+D,1,3,f);}
========== 終了 ==========
8 :
デフォルトの名無しさん :03/05/02 04:46
ピース(A〜J)と方向(2,4,6,8)をペアで入力すると動きます 見辛いし遊び辛いので誰か改良してくらはい #include<stdio.h> char*m="XXXXXX\nXABBCX\nXABBCX\nXDEEFX\nXDGHFX\nXI JX\nXXXXXX\n",b[49],c;main( i,j){for(;m[30]-66||m[38]-66;){puts(m);gets(b);sscanf(b,"%c%d",&c,&i);i="07/1)" [i/2]-48;for(j=49;j--;)b[j]=m[j]==c?m[j]=32,c:0;for(j=49;j--&&!(b[j]&&m[j+i]&c) ;);for(i=~j?0:i,j=49;j--;)b[j]?m[j+i]=c:0;}printf("%s\nおめ\n",m);}
11 :
デフォルトの名無しさん :03/05/04 12:23
age
12 :
デフォルトの名無しさん :03/05/07 21:44
#include<stdio.h> main() { int a; int b=1; long c=0; printf("1000ikanosuujiwonyuuryousitekudasai:"); scanf("%d",&a); while(a<1001) { while(b<=a) { c=c+b; b=b+2; } a=1001; } printf("%ld",c); }
13 :
デフォルトの名無しさん :03/05/07 22:08
>>12 #include<stdio.h>
main(){long a;scanf("%ld",&a);a<1001&&((a=(a-1)/2+1),printf("%ld",a*a*(a>0)));}
14 :
デフォルトの名無しさん :03/05/07 23:07
sub main() do msgbox "ふ〜ん、それで?" loop end sub これをVBで実行せよ。最強の5行プログラム
10 PRINT "はぁ〜...":GO TO 10
>>12 他のスレ見ても気になってたんだけど、printf で出す
メッセージって最後に \n が無くても出るの?
普通 stdout はバッファリングするので出ない気がするんだけど
C++ の endl は改行+フラッシュという仕様だけど、 printf には何かそういう仕様はあったっけ?
ShellがRawでなくCookedだと改行入るまで表示されないかと.
>>12 ところで、この while や for を if 代わりに使うコードって、
何かの本にでも書いてるの?
別のスレでも見たんだけど。
もしそうなら、その本破り捨てて
トイレットペーパーにでもした方がいいね!
>>20 whileをifの代わりに使っていませんが。
while(a<1001){ … a=1001; } 実質 if(a<1001)
24 :
デフォルトの名無しさん :03/05/09 21:39
age
>>16 行バッファリングだからscanfによってバッファはフラッシュされる。
JIS X 3010の7.9.3参照。(C99だと章番号が違うかもしれないが)
Cマガの連載に詳しい解説が載ってたんだが単行本化してくれない…
typedef struct{double x,y,z}vec;vec U,black,amb={.02,.02,.02};struct sphere{ vec cen,color;double rad,kd,ks,kt,kl,ir}*s,*best,sph[]={0.,6.,.5,1.,1.,1.,.9, .05,.2,.85,0.,1.7,-1.,8.,-.5,1.,.5,.2,1.,.7,.3,0.,.05,1.2,1.,8.,-.5,.1,.8,.8, 1.,.3,.7,0.,0.,1.2,3.,-6.,15.,1.,.8,1.,7.,0.,0.,0.,.6,1.5,-3.,-3.,12.,.8,1., 1.,5.,0.,0.,0.,.5,1.5,};yx;double u,b,tmin,sqrt(),tan();double vdot(A,B)vec A ,B;{return A.x*B.x+A.y*B.y+A.z*B.z;}vec vcomb(a,A,B)double a;vec A,B;{B.x+=a* A.x;B.y+=a*A.y;B.z+=a*A.z;return B;}vec vunit(A)vec A;{return vcomb(1./sqrt( vdot(A,A)),A,black);}struct sphere*intersect(P,D)vec P,D;{best=0;tmin=1e30;s= sph+5;while(s-->sph)b=vdot(D,U=vcomb(-1.,P,s->cen)),u=b*b-vdot(U,U)+s->rad*s ->rad,u=u>0?sqrt(u):1e31,u=b-u>1e-7?b-u:b+u,tmin=u>=1e-7&&u<tmin?best=s,u: tmin;return best;}vec trace(level,P,D)vec P,D;{double d,eta,e;vec N,color; struct sphere*s,*l;if(!level--)return black;if(s=intersect(P,D));else return amb;color=amb;eta=s->ir;d= -vdot(D,N=vunit(vcomb(-1.,P=vcomb(tmin,D,P),s->cen )));if(d<0)N=vcomb(-1.,N,black),eta=1/eta,d= -d;l=sph+5;while(l-->sph)if((e=l ->kl*vdot(N,U=vunit(vcomb(-1.,P,l->cen))))>0&&intersect(P,U)==l)color=vcomb(e ,l->color,color);U=s->color;color.x*=U.x;color.y*=U.y;color.z*=U.z;e=1-eta* eta*(1-d*d);return vcomb(s->kt,e>0?trace(level,P,vcomb(eta,D,vcomb(eta*d-sqrt (e),N,black))):black,vcomb(s->ks,trace(level,P,vcomb(2*d,N,D)),vcomb(s->kd, color,vcomb(s->kl,U,black))));}main(){printf("%d %d\n",32,32);while(yx<32*32) U.x=yx%32-32/2,U.z=32/2-yx++/32,U.y=32/2/tan(25/114.5915590261),U=vcomb(255., trace(3,black,vunit(U)),black),printf("%.0f %.0f %.0f\n",U);}/*minray!*/
>>26 転載いやソ ... せめてコンパイルが通るくらいの修正をしてから ...
まだあったのか…。 もうそろそろいらないよ、このスレ。
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
|
>>28 君さぁ スルーすりゃいいのに |
Λ_Λ | わざわざいらないとかクソレスしてるから |
( ´∀`)< 厨房って言われちゃうんだよ |
( ΛΛ つ >―――――――――――――――――――‐<
( ゚Д゚) < おまえのことを必要としてる奴なんて |
/つつ | いないんだからさっさと回線切って首吊れ |
\____________________/
このAA久々にみたな
やった〜!ようやく厨房になれた!
32 :
デフォルトの名無しさん :03/05/14 11:49
age
33 :
デフォルトの名無しさん :03/05/14 11:53
誰かがワンクリックするだけで10円の報酬が自分に入るよ!!
アクセス数の多い掲示板等に貼り付けるだけでかなり稼げます。
下のURLをコピペして(※直リン禁止なのでクリックでは入れません)GO!
そして、左のメニューに「リンクスタッフ詳細」があるのでクリック。
メールアドレスと、好きなパスワード入れるだけで登録完了。もちろん無料。
しかも今なら、登録したら自動的に1000円貰えます♪
フリーメールでも大丈夫です。
メルレよりずっと楽だし、ちゃんと報酬を貰えます。
ttp://accessplus.jp/staff/in.cgi?id=11258
以前の書き込みにあったperlの倉庫番に刺激されて、 rubyで倉庫番を書いてみました。 sttyでrawモードに切替えてあるのでunix系のみの限定です。 $ ruby s.rb マップデータ で実行してください。 マップデータはperlで書かれていたものと共通です。 m=$<.read;w=m.index(/\n/);m.delete!"\n";h=m.size/w;p=m.index'P';g=[];(0..w*h). each{|i|g<<i if m[i]==?$};u=[];(0..w*h).each{|i|u<<i if m[i]==?_};o={?j,w,?h, -1,?l,1,?k,-w,?\C-c,0};m[p]='.';g.each{|i|m[i]='.'};begin;loop{t=m.dup;g. each{|i|t[i]='$'};t[p]='P';system"clear";(0..h).each{|i|puts t.slice(i*w,w)}; break if u==g.sort;`stty raw -echo`;v=o[$<.getc];`stty -raw echo`;next if v. nil?;break if v==0;d=p+v;if m[d].chr!='#';if i=g.index(d);if t[d+v]. chr[/[\$#]/];next;else;g[i]=d+v;end;end;p=d;end};ensure;`stty -raw echo`;end
念のために追記しておきます。 上のコマンドラインのまま実行するにはスクリプトの ファイル名をs.txtとして保存して下さい。
36 :
デフォルトの名無しさん :03/05/18 10:01
>>20 じゃ、やけにfor文を使う参考書は?
実際、あるよ。
すみません。 まだ、書き忘れていたことがありました。 スクリプトを読めば解かることなんですが 移動はviと同じhjklです.
24bit画像のグレースケール #include<stdio.h> main(int c,char*v[]){FILE*R,*S;int i=0,h,s,Y,X,t;char RC,G,B;R=fopen (v[1],"rb");S=fopen(v[2],"wb");while(i<54){fputc(fgetc(R),S);i++;} fseek(R,18,SEEK_SET);fread(&s,4,1,R);fread(&h,4,1,R);fseek(R,54,SEEK_SET); fseek(S,54,SEEK_SET);i=s;while(i>=4)i-=4;for(Y=0;Y<h;Y++){for (X=0;X<s;X++) {B=fgetc(R);G=fgetc(R);RC=fgetc(R);B=RC+G+B/3;fputc(B,S);fputc(B,S);fputc(B,S);}t=0; while(t<i){fputc(0x00,S);t++;}fseek(R,i,SEEK_CUR);}fputc(0x00,S);fclose(R);fclose(S);} やけに永遠ループがでた。。。製作1時間
↑の使い方。 コマンドから、実行ファイル名 元のBMP名 保存するBMP名 もし、保存するBMPを書かなかったら、エラーです。 (けど、だれも使わないか)一応書いたけど。
>>38-39 を勝手に修正。
#include<stdio.h>
FILE*R,*S;int i=0,h,s,Y,X,t,p[3];void I(){for(i=t=0;i<4;t|=fgetc(R)<<(i++*8))
;}main(int c,char*v[]){R=fopen(v[1],"rb");S=fopen(v[2],"wb");for(;i<54;fputc(
fgetc(R),S),i++) ;fseek(R,18,0);I();s=t;I();h=t;fseek(R,54,0);fseek(S,54,0);
i=s;while(i>=4)i-=4;for(Y=0;Y<h;Y++){for(X=0;X<s;X++){for(c=0;c<3;c++)p[c]
=fgetc(R);t=(p[2]*77+p[1]*28+*p*151)
>>8 ;for(c=0;c<3;c++)fputc(t,S);}t=0;while
(t<i){fputc(0,S);t++;}fseek(R,i,1);}fputc(0,S);fclose(R);fclose(S);return 0;}
41 :
ソース変更された人 :03/05/18 23:06
>>40 よく、がんばった。
けど、何が気になった?
なんで変えたの?
>>41 diffを取ってみたら?
と発言しかけたが無意味だったな
>>41 動機?
マカーだからエンディアンが気になった
>>42 そういやbdiffなんてあったな
>>36 if の代わりに for 使うの?
それはトイレットペーパー並の価値、
いや、それ以下だね!
>>41 色々変わってるけど,一番大きな違いは輝度値の計算だね.
ぱっと見た感じ,今までのではまともに動かなかったはず…….
明らかに色の重みがおかしかったから.
24bitBMPをグレースケールにして,24bitBMPで保存するのは無駄すぎ.
8bitにてテーブルカラーで保存されー.
(自分でやれ?時間があれば……)
#include<stdio.h>
FILE*R,*S;int i=0,h,s,Y,X,t,p,q,r,(*g)(FILE*)=fgetc;void I(){for(h=0;h++<4;t=
unsigned(t)
>>8 |g(R)<<24);}main(int c,char**v){R=fopen(v[1],"rb");S=fopen(v[2],
"wb");while(i++<54)fputc(g(R),S);fseek(R,18,0);I();i=(s=t)%4;I();h=t;fseek(R,54,
0);for(Y=h;Y--;){for(X=s;X--;){p=g(R);q=g(R);r=g(R);t=(r*77+q*28+p*151)
>>8 ;for(c
=0;c++<3;)fputc(t,S);}for(t=0;t<i;t++)fputc(g(R),S);}fputc(0,S);fclose(R);fclose
(S);return 0;}
8bitインデックスカラーへの布石.
思ったより縮んでないけど,まだまだ行けるはず!
47 :
デフォルトの名無しさん :03/05/20 15:34
>>45 輝度値の計算のことはありがとう。気づかなかった。
そんで、8bitでの保存は、とても
1行+6行*79文字では表せそうにないことがわかったので、
断念した。やけに、コードが増えてしまう・・・
そんで、24bit→24bitグレースケールになっていた理由は、
Game上で24bitのドットデータを変換するのに使う関数を改造したから。
いい、アドバイスありがとう。けど、無理だ。
#include<stdio.h>
FILE*R,*S;int i=0,h,s,t,p,q,r,(*g)(FILE*)=fgetc;void I(){for(i=0;i++<4;t=
unsigned(t)
>>8 |g(R)<<24);}main(int c,char**v){R=fopen(v[1],"rb");S=fopen(v[2],
"wb");while(i++<54)fputc(g(R),S);fseek(R,18,0);I();s=t;I();h=t*s;fseek(R,54,0);
while(h--){for(p=g(R),q=g(R),r=g(R),c=3;c--;)fputc((r*77+q*28+p*151)
>>8 ,S);for(
t=s%4;t--;)h%s?fputc(g(R),S):0;}fputc(0,S);fclose(R);fclose(S);return 0;}
>>47 8bit@7行が見えてきたと思わないか?
テーブル出力はまだしもファイルサイズ書き込みが入るかな?
fseekとリトルエンディアンが問題だ
fputcの3重ループが削れるから……(ぶつぶつ
>>48 ?〜:0;ではなく,?0:〜;でした...
>>48 すげー。今、「どんだけやっても、
paintとプレビューで表示してくれん。」
とか、思って来てみたら、できてる人がいる。
そのソース見て勉強させてもらうよ。今から。
>>48 情報:
さっき、ソース解体して調べたら、実は
fclose()前のfputc(0,S);がいらないことが判明。
消しても大丈夫。ただのゴミだから。
//24bit→8bitグレースケール //85文字ほどオーバーしたが一応載せておく #include<stdio.h> FILE*R,*S;int i,h,s,Y,X,t,T,G,B;main(int c,char**v){R=fopen(v[1],"rb");S=fopen( v[2],"wb");while(i<54){fputc(fgetc(R),S);i++;}fseek(R,18,0);fread(&s,4,1,R); fread(&h,4,1,R);fseek(S,2,0);i=s;while(i>=4)i-=4;X=1078+s*h+h*(4-i);fwrite(&X,4, 1,S);fseek(S,10,0);Y=1078;fwrite(&Y,4,1,S);fseek(S,28,0);X=8;fwrite(&X,2,1,S); fseek(S,54,0);fseek(R,54,0);while(B<256){putc(B,S);putc(B,S);putc(B,S);putc(0,S) ;B++;}for(Y=0;Y<h;Y++){for(X=0;X<s;X++){B=fgetc(R);G=fgetc(R);T=fgetc(R);B=(T+B+ G)/3;fputc(B,S);}t=0;while(t<(4-i)){fputc(0x00,S);t++;}fseek(R,i,1);}fclose(R); fclose(S);} //79*7に入ったら、もう一回載せる。輝度は修正しました
>>52 fgetc,fputs はすべて getc,putc にしてもよいと思うが。
fclose もその場でプログラム終了するからいらないね。
while もすべて for にしる。
main(int c,char**v) を main(c,v)char**v; にしる。
0x00 を 0 にしる。
i>=4 を i>3 にしる。
↑のやつは(<<52)LoadImageで読み込めない BITMAPを作っちゃいます。 すいません。これ、おかしかったです。 使わないで。
>>54 ループを
for(X=s*h;X--;putc((T+B+G)/3,S))B=getc(R),G=getc(R),T=getc(R);
に変更すれば大丈夫でない?
>>53 ごめん。まさか、書き込みが来るとおもわなかった(↑とか書いたし。
けど、まずは、LoadImageで読み込める、
フォーマットどおりのBitmap作るようにするよ。
ちゃんと変換されていると思うけど、どうよ? #include<stdio.h> FILE*R,*S;int i=54,h,s,Y,X,t,T,G,B;main(c,v)char**v;{R=fopen(v[1],"rb");S=fopen (v[2],"wb");for(;i--;)putc(getc(R),S);fseek(R,18,0);fread(&s,4,1,R);fread(&h,4, 1,R);fseek(S,2,0);i=s%4;X=1078+s*h+h*(4-i);fwrite(&X,4,1,S);fseek(S,10,0);Y= 1078;fwrite(&Y,4,1,S);fseek(S,28,0);X=8;fwrite(&X,2,1,S);fseek(S,54,0);fseek(R, 54,0);for(;B<256;B++)putc(B,S),putc(B,S),putc(B,S),putc(0,S);for(X=s*h;X--;putc ((T+B+G)/3,S))B=getc(R),G=getc(R),T=getc(R);for(t=0;t<4-i;t++)fputc(0,S);fseek( R,i,1);}
>>58 最後の fseek(R,i,1); って、うちではなくても大丈夫そうだった。
そしたら7行だね...はやぁ
bmp ってリトルエンディアン固定なんでしたっけ?
順列を辞書順に出力(Java) public class A{private static int N,b[];private static void p(int i){int j,k,t; if (i<N){for(j=i;j<N+1;j++){t=b[j];for(k=j;k>i;k--)b[k]=b[k-1]; b[i]=t;p(i+1);for(k=i;k<j;k++)b[k]=b[k+1];b[j]=t;}}else{ for(j=1;j<N+1;j++)System.out.print(b[j]+" ");System.out.println();}} public static void main(String[] a){ try{N=Integer.parseInt(a[0]);}catch(Exception e){System.exit(1);} b=new int[N+1];for(int i=0;i<N+1;i++)b[i]=i;p(1);}}
>>47 RGB平均≠輝度ってのは覚えておくといいかも。詳しくはYUVとか検索。
で、今更だが
>>40 の輝度、GとBの係数が逆だったのに気づいた。
77,151,28が正解なんだが5,9,2
>>4 でも結果に大した違いがなかった罠。
>>60 固定だと思う。RIFFでも見たことないし
8bitだと7行でエンディアン依存無しは無理か・・・
>>59 fseekは必要です。
横のデータは4の倍数バイトに決まってるので、
その修正用です。横のサイズが4の倍数以外の
BMPだと狂うはずです。
あと、#includeは七行に入らないの?
//みんなの力借りてなんとかできました。7*79ギリギリですが。
//LoadImageで読み込めませんがPaintで読み込めます。(なぜか)
#include<stdio.h>
FILE*R,*S;int i=54,h,s,Y,X,t;main(c,v)char**v;{R=fopen(v[1],"rb");S=fopen(v[2],
"wb");for(;i--;)putc(getc(R),S);fseek(R,18,0);fread(&s,4,1,R);fread(&h,4,1,R);
fseek(S,2,0);i=s%4;X=1078+s*h+h*i;fwrite(&X,4,1,S);fseek(S,4,1);Y=1078;fwrite(&
Y,4,1,S);fseek(S,28,0);X=8;fwrite(&X,2,1,S);fseek(S,54,0);fseek(R,54,0);for(;t<
256;t++)putc(t,S),putc(t,S),putc(t,S),putc(0,S);for(Y=h;Y--;){for(X=s;X--;putc(
getc(R)*151+getc(R)*77+getc(R)*28
>>8 ,S));for(t=i;t--;putc(0,S));fseek(R,i,1);}}
//協力有難うございます。
>>59 fseek(R,i,1);はlong境界にあわせるために必要.
横サイズが4の倍数でないファイル読ませると破綻します.
私はfseek使わずに読み込むことで進めさせましたが.
さて、じゃあエンディアン依存なしバージョンに朝鮮だな。
>>63 >>65 ほんとだ。ペイントだと見られるけど、すしえさんではだめだった。
お詫びに
>>67 のお題に挑戦させてください。
基本は>64のままだが、エンディアンは関係なくなった鴨
#include<stdio.h>
FILE*R,*S;int i=54,h,s,X,t,(*g)()=getc,(*k)()=fseek;p(c){putc(c,S);}I(n){for(;n
--;h=g(R)<<24|h
>>8 );}O(n){for(X=4;X--;n>>=8)p(n);}main(c,v)char**v;{R=fopen(v[1
],"rb");for(S=fopen(v[2],"wb");i--;)p(g(R));k(R,18,0);I(4);s=h;I(4);k(S,2,0);i=
s%4;O(1078+s*h+h*i);k(S,4,1);O(1078);k(S,28,0);p(8),p(0);k(S,54,0);k(R,54,0);
for(;t<256;p(0))p(t),p(t),p(t++);for(;h--;){for(X=s;X--;p(c
>>8 ))c=g(R)*28,c+=g(
R)*151,c+=g(R)*77;for(t=i;t--;p(0));k(R,i,1);}}
>>64 おれっちのところだと、横が4の倍数でないとずれまくるのだが何か変?
画像は 187x298x24
>>70 すいません。奇数でのテストを欠いてました。今度は大丈夫です。
他、LoadImageに対応した(フォーマット通りを作る)完成版です。
#include<stdio.h>
(*p)(FILE*,long,int)=fseek;FILE*R,*S;int i=54,h,s,Y,X,t,j,z=1078,d;main(c,v)char*
*v;{R=fopen(v[1],"rb");S=fopen(v[2],"wb");for(;i--;)putc(getc(R),S);p(R,18,0);
fread(&s,4,1,R);fread(&h,4,1,R);p(S,2,0);i=s%4;i>0?d=4-i:0;X=z+(j=h*s+h*d);fwrite
(&X,4,1,S);p(S,4,1);Y=z;fwrite(&Y,4,1,S);p(S,28,0);X=8;fwrite(&X,2,1,S);p(S,4,1);
fwrite(&j,4,1,S);p(S,54,0);p(R,54,0);for(;t<256;t++)putc(t,S),putc(t,S),putc(t,S)
,putc(0,S);for(Y=h;Y--;){for(X=s;X--;putc(getc(R)*151+getc(R)*77+getc(R)*28
>>8 ,S));
for(t=d;t--;putc(0,S));p(R,i,1);}}
ですが、7*79に収まってません。なんかアイデアありませんか?
>>71 今まで fopen やめて stdin/stdout を使うようにしてたけど
そうすれば十分収まったりしない?
漏れ的にも引数にファイル名とるよりfilterのような動作のほうが
何かと便利だったりすることのほうが多い。
できました。今、調整中です。ちょっとお待ちを。
>>71 #include<stdio.h>
(*p)()=fseek;(*q)()=fputc;FILE*R,*S;int i=54,h,s,Y,X,t,j,z=1078,d;main(c,v)char*
*v;{R=fopen(v[1],"rb");S=fopen(v[2],"wb");for(;i--;)q(getc(R),S);p(R,18,0);fread
(&s,4,1,R);fread(&h,4,1,R);p(S,2,0);i=s%4;i>0?d=4-i:0;X=z+(j=h*s+h*d);fwrite(&X,
4,1,S);p(S,4,1);Y=z;fwrite(&Y,4,1,S);p(S,28,0);putw(X=8,S);p(S,4,1);fwrite(&j,4,
1,S);p(S,54,0);p(R,54,0);for(;t<256;t++)q(t,S),q(t,S),q(t,S),q(0,S);for(Y=h;Y--;
){for(X=s;X--;q(getc(R)*151+getc(R)*77+getc(R)*28
>>8 ,S));for(t=d;t--;q(0,S));p(R
,i,1);}}
適当にやってみただけでテストしてない罠
x86 と SPARC でできたのでたぶん大丈夫かと思います。
#include<stdio.h>
FILE*R,*S;int(*f)()=fseek,i=54,h,s,Y,X=1078,t,j,d;g(v,i,k){for(i=k=0;i<v;)k|=
getc(R)<<i++*8;return k;}p(k,v,i){for(i=0;i<v;)putc(k>>i++*8,S);}main(c,v)char
**v;{R=fopen(v[1],"rb");S=fopen(v[2],"wb");for(;i--;)p(g(1),1);f(R,18,0);s=g(4)
;h=g(4);f(S,2,0);i=s%4;i?d=4-i:0;p(X+(j=h*s+h*d),4);f(S,4,1);p(X,4);f(S,28,0);p
(8,2);f(S,4,1);p(j,4);f(S,54,0);f(R,54,0);for(;t<256;t++)p(t<<16|t<<8|t,4);for(
Y=h;Y--;g(i)){for(X=s;X--;p(t+g(1)*28
>>8 ,1))t=g(1)*151,t+=g(1)*77;p(0,d);}}
#include<stdio.h>
FILE*R,*S;int i=54,h,s,t,p,(*k)(FILE*,long,int)=fseek;g(){return getc(R);}u(int
c){return putc(c,S);}void I(){for(i=4;i--;t=(unsigned)t
>>8 |g()<<24);}void O(int
v,int n=4){for(;n--;v>>=8)u(v);}main(int c,char**v){for(R=fopen(v[1],"rb"),S=
fopen(v[2],"wb");i--;u(g()));for(;i++<256;O(i<<16|i<<8|i));k(R,18,0);I();s=t;I(
);h=t*s;c=(s+3)/4*4*t;for(k(R,54,0);h--;h%s?0:(O(0,s%4?4-s%4:0),k(R,s%4,1)))p=g
()*28,p+=g()*151,p+=g()*77,u(p
>>8 );k(S,34,0);O(c);k(S,2,0);O(c+1078);k(S,5,1);u
(4);k(S,28,0);u(8);}
C++コンパイラを通そうとすると私にはこれが限界です.
なんか昼間からずっとやってる気がする……
きみらのやってる事はスキルアップに直接繋がると思うよ。 短く書く方法参考になった。
>>76 C++使うんだったら、fstream 使ったほうが便利でよろしいかと。
#include<stdio.h> FILE*R,*S;int i=54,h,s,t,p,(*k)(FILE*,long,int)=fseek;O(int v,int n=4){for(;n-- ;v>>=8)putc(v,S);}I(){for(t=i=0;i<4;t+=getc(R)<<i++*8);}main(int c,char**v){for (R=fopen(v[1],"rb"),S=fopen(v[2],"wb");i--;putc(getc(R),S));for(;i++<256;O(i<< 16|i<<8|i));k(R,18,0);I();s=t;I();h=t*s;c=(s+3)/4*4*t;for(k(R,54,0);h--;h%s?0:( O(0,s%4?4-s%4:0),k(R,s%4,1)))p=getc(R)*28,p+=getc(R)*151,p+=getc(R)*77,putc(p>> 8,S);k(S,34,0);O(c);k(S,2,0);O(c+1078);k(S,5,1);putc(4,S);k(S,28,0);putc(8,S);} C++で何とか7行達成. 関数の戻り値の型省略してるんで厳密にはC++になりきれてませんが,コンパイラの デフォルト警告Levelだとwarningで許してくれたのでご容赦の程……. (BCC32,VC.NET共にwarningですた.) fcloseやmainのreturn省略の辺りはとても残念です.
>>78 引数の型の省略がなんかずるい気がしてイヤだったんで,なんとか付けたままで出来ないかと頑張ってたんですよ.
短くしていく過程でデフォルト引数使ってしまったんで,C++と宣ってるだけでして.
結局私も妥協してしまったわけですが……
連続すいませぬ.
>>79-80 gcc(g++) と Sun Workshop CC では、
関数 O, I の返値でエラーが出てコンパイルできないです。
何とかがんばってみてください。
82 :
デフォルトの名無しさん :03/05/22 01:12
age
ねた切れ?
>>83 ここに挙がってるネタでやってないものならいくつもあるが
即興で作ってみた TelnetClientモドキ import java.net.*;import java.io.*;public class T extends Thread{InputStream i; OutputStream o;public T(InputStream I,OutputStream O){i=I;o=O;}public void run( ){try{int c;while(-1!=(c=i.read()))o.write(c);o.close();System.exit(0);}catch( Exception e){}}public static void main(String[] a){try{Socket s=new Socket(a[0] ,Integer.parseInt(a[1]));new T(s.getInputStream(),System.out).start();new T( System.in,s.getOutputStream()).start();}catch(Exception e){System.out.println( "Usage: java T HOST PORT\r\nヽ(`Д´)ノ もがしゃっ!");}}}
#include<winsock.h> char a[9999],b[9999],z[512];int o,p=1,r,s=1;H(char*c){strcat(c,"\r\n");send(o,c, strlen(c),0);}I(){while(p){gets(a);H(a);}_endthread();}main(c,v)char**v;{SOCKAD\ DR_IN q={2,htons(atoi(v[2]))};WSAStartup(257,z);q.sin_addr=*((PIN_ADDR)*(gethos\ tbyname(v[1]))->h_addr_list);if(connect(o=socket(2,1,0),&q,sizeof(q)))return;pr\ intf("ok\n");_beginthread(I, 0, NULL);for(;s;){memset(b,9999,0);s=recv(o,b,9999, 0);if(s>0)printf("%s\n",b);}p=0;closesocket(o);WSACleanup();} 83氏のを見て急に作りたくなってきた。 Telnetもどき telnet [ホスト名] [ポート]
動作がおかしかったのでちょっと修正 #include<winsock.h> char a[999],b[999],z[512];int o,p=1,r,s=1;H(char*c){strcat(c,"\r\n");send(o,c,s\ trlen(c),0);}I(){while(p){gets(a);H(a);}_endthread();}main(c,v)char**v;{SOCKADD\ R_IN q={2,htons(atoi(v[2]))};WSAStartup(257,z);q.sin_addr=*((PIN_ADDR)*(gethost\ byname(v[1]))->h_addr_list);if(connect(o=socket(2,1,0),&q,sizeof(q)))return;puts ("ok");_beginthread(I, 0, NULL);for(;s;){memset(b,0,999);s=recv(o,b,999,0);s>0? printf("%s",b):0;}p=0;closesocket(o);WSACleanup();}
昔の作品で7行実達成のものを, part2 の 131 から bmpgen.c
#include <stdio.h>
FILE*f;int k,i,L=320,N=240,x[]={0x424d3684,50331648,13824,10240,16385,61440,256
,402653184,132,50381838,50190,0,0,0},n[320],m[320],j;main(a){for(f=fopen("c.bm"
"p","wb");i<54;i++)putc(x[i/4]
>>8 *(3-i%4),f);for(i=j=1;i++<99;)m[j=(i*99+j)%L]=
N;for(i=N;i--;){for(j=L*3;j--;)putc(m[L-j/3-1],f);a=*m;for(j=0;++j<L;a=k)k=m[j]
,m[j]=(a+m[j+1])/2;}}
しもた。 m[321] としておいてくらさい。そして n[320] いりまへん。
〇神転生よりコードブレイカー import java.util.*;public class C{public static void main(String[]a){try{Random r=new Random();int[]A,B;int i,j,c,h=0,b=0,l=Integer.parseInt(a[0]);A=new int[10 ];B=new int[l];for(i=0;i<10;i++)A[i]=i;for(i=0;i<l;i++){c=(r.nextInt()&0x7fff)% (10-i);B[i]=A[c];for(j=c;j<9-i;j++)A[j]=A[j+1];}while(h<l){byte[]D=new byte[82] ;System.in.read(D);h=0;b=0;for(i=0;i<l;i++)for(j=0;j<l;j++)if(B[i]==D[j]-'0')if (i==j)h++;else b++;System.out.println("H"+h+":B"+b);}}catch(Exception e){System .out.println("Usage: java C COLUMN\r\nヽ(`Д´)ノ もがしゃっ!");}}}
まあなんだ、ソース投稿する時は上げろ
7行MMLプレイヤー ビルドする前にライブラリにwinmm.libを追加すること。 #include <windows.h> #include <mmsystem.h> HMIDIOUT h;char*a="cdefgab",*b,*d,e[7]={0,2,4,5,7,9,11},o=0,l=4,m;main(c,v)char* *v;{if(midiOutOpen(&h,0,0,0,0))return 0;for(b=v[1];*b;b++)(d=strchr(a,*b))?midi\ OutShortMsg(h,8335504+(e[d-a]+o*12)*256),Sleep((m=atoi(b+1))?l=m,4000/l:4000/l), midiOutShort\Msg(h,12416+(e[d-a]+o*12)*256):*b==111?o=atoi(++b)-4:0;midiOutClose (h);return;} mml [mml data] ※[mml data] cdefgab 音階。それぞれド,レ,ミ,ファ,ソ,ラ,シ。 音階の後に数字(1-2000)を入れると音の長さを指定できる。 省略時は最後に指定した長さになる。デフォルトは4。 o[0-10] オクターブ指定。デフォルトは4。
94 :
デフォルトでない名無しさん :03/05/23 23:31
mml data追加age #include <windows.h> #include <mmsystem.h> HMIDIOUT h;char*a="cdefgab",*b,*d,e[7]={0,2,4,5,7,9,11},o=0,l=4,m;main(c,v)char* *v;{if(midiOutOpen(&h,0,0,0,0))return 0;for(b=v[1];*b;b++)(d=strchr(a,*b))?midi\ OutShortMsg(h,8335504+(e[d-a]+o*12)*256),Sleep((m=atoi(b+1))?l=m,4000/l:4000/l), midiOutShortMsg(h,12416+(e[d-a]+o*12)*256):*b==111?o=atoi(++b)-4:*b==64?m=atoi( ++b),midiOutShortMsg(h,192+m*256):0;midiOutClose(h);return 0;} @[音色番号] 音色を変更します。
95 :
デフォルトでない名無しさん :03/05/24 10:19
さらに追加。 #include <windows.h> #include <mmsystem.h> HMIDIOUT h;char*a="cdefgab",*b,*d,e[7]={0,2,4,5,7,9,11},o=0,l=4,m;V(){(m=atoi(b+ 1))?l=m:0;Sleep(4000/l);}main(c,v)char**v;{if(!midiOutOpen(&h,0,0,0,0))for(b=v[1 ];*b;b++)(d=strchr(a,*b))?midiOutShortMsg(h,8335504+(e[d-a]+o*12)*256),V(),midi\ OutShortMsg(h,12416+(e[d-a]+o*12)*256):*b==111?o=atoi(++b)-4:*b==64?m=atoi(++b), midiOutShortMsg(h,192+m*256):*b==114?V():0;midiOutClose(h);return 0;} r 休符です。音階と同じ扱いを受けます
少しばかりソース圧縮。 #include <windows.h> #include <mmsystem.h> HMIDIOUT h;char*a="cdefgab",*b,*d,e[7]={0,2,4,5,7,9,11},o=0,l=4,m;V(){(m=atoi(b+ 1))?l=m:0;Sleep(4000/l);}main(c,v)char**v;{if(!midiOutOpen(&h,0,0,0,0))for(b=v[1 ];*b;b++)(d=strchr(a,*b))?c=(e[d-a]+o*12)*256,midiOutShortMsg(h,8335504+c),V(), midiOutShortMsg(h,12416+c):*b==111?o=atoi(++b)-4:*b==64?m=atoi(++b),midiOutShor\ tMsg(h,192+m*256):*b==114?V():0;midiOutClose(h);return 0;}
>>96 M(x){midiOutShortMsg(h,x)}を作る。
oはグローバルなのでo=0の初期化は不要。
大文字のCD FGAで半音に対応できない? たぶんe[]が要らなくなるから
その分でさらにテンポかなにか対応できれば。。
こんなのつくってみた。1行にまとめて引数にどうぞ。
@45c32d32e32g32o5c32d32e32g32o6c32d32e32g32o7c32d32e32g32o8c32o7g32e32d32c32o6g32e32d32c32o5g32e32d32c32o4g32e32d32
o3a32b32o4c32e32a32b32o5c32e32a32b32o6c32e32a32b32o7c32e32a32e32c32o6b32a32e32c32o5b32a32e32c32o4b32a32e32c32o3b32
o3f32g32a32o4c32f32g32a32o5c32f32g32a32o6c32f32g32a32o7c32f32c32o6a32g32f32c32o5a32g32f32c32o4a32g32f32c32o3a32g32
o3g32a32b32o4d32g32a32b32o5d32g32a32b32o6d32g32a32b32o7d32g32d32o6b32a32g32d32o5b32a32g32d32o4b32a32g32d32o3b32a32
こんな感じだったっけ?
>96 〜(e[d-a]+〜 を 〜("024579;"[d-a]-48+〜 とすればe[]の定義不要で11文字減る
97氏と98氏の指摘部分を修正しました。 そして半音に対応してみました。 HMIDIOUT h;char*a="cdefgab",*b,*d,*e,*f="-+",o,l=4,m,n;V(){(m=atoi(b+1))?l=m:0; Sleep(4000/l);}W(x){midiOutShortMsg(h,x);}main(c,v)char**v;{if(!midiOutOpen(&h,0 ,0,0,0))for(b=v[1];*b;b++)(d=strchr(a,*b))?e=strchr(f,b[1]),n=(e?b++,(e-f)*2-1:0 ),c=("024579;"[d-a]-48+n+o*12)*256,W(8335504+c),V(),W(12416+c):*b==111?o=atoi(++ b)-4:*b==64?m=atoi(++b),W(192+m*256):*b==114?V():0;midiOutClose(h);return 0;} + シャープです。音階の後に付けると半音上がります -フラットです。音階の後に付けると半音下がります (例の禁則は設けていません(;´д`)
100 :
デフォルトでない名無しさん :03/05/25 00:42
あ、シャープがあればフラット要りませんね・・・ #include <windows.h> #include <mmsystem.h> HMIDIOUT h;char*a="cdefgab",*b,*d,o,l=4,m,n;V(){(m=atoi(b+1))?l=m:0;Sleep(4000/l );}W(x){midiOutShortMsg(h,x);}main(c,v)char**v;{if(!midiOutOpen(&h,0,0,0,0))for( b=v[1];*b;b++)(d=strchr(a,*b))?n=(b[1]==43?b++,1:0),c=("024579;"[d-a]-48+n+o*12) *256,W(8335504+c),V(),W(12416+c):*b==111?o=atoi(++b)-4:*b==64?m=atoi(++b),W(192+ m*256):*b==114?V():0;midiOutClose(h);return 0;}
101 :
おみくじVB6 :03/05/25 03:07
Private Sub Frm_Load(): Randomize: End Sub Private Sub Cmd_Click(): With Me: Select Case Int(Rnd * 7): Case 0: .Caption _ = "大吉": Case 1: .Caption = "中吉": Case 2: .Caption = "小吉": Case 3 .Caption = "末吉": Case 4: .Caption = "吉": Case 5: .Caption = "凶": Case 6 .Caption = "大凶": End Select: End With: End Sub 5行ですた
アイタタタ
>>102 スマソ、おれにできるのはこれ位だ
もっと勉強してきまつ
ガンバッテネ
>>99 ベースの勝手に改造版
t直後の数字でテンポが変更可能(デフォルトはt60)
#include <windows.h>
#include <mmsystem.h>
HMIDIOUT h;char*a="cdefgab",*b,*d;int t=4000,o,l=4,m;V(){(m=atoi(b+1))?l=m:0;
Sleep(t/l);}W(x){midiOutShortMsg(h,x);}main(c,v)char**v;{if(!midiOutOpen(&h,0,0
,0,0))for(b=v[1];*b;b++)(d=strchr(a,*b))?c=("024579;"[d-a]-48+((m=(m=b[1])-45?m
==43:-1)&&++b,m)+o*12)<<8,W(8335504+c),V(),W(12416+c):*b==111?o=atoi(++b)-4:*b-
64?*b-114?*b==116?t=24e4/atoi(++b):0:V():W(192+atoi(++b)*256);midiOutClose(h);}
>>101 全く意味無いが3行にしてみた
Sub Main(): Randomize: Select Case Int(Rnd * 7): Case 0: a = "大吉": Case 1
a = "中吉": Case 2: a = "小吉": Case 3: a = "末吉": Case 4: a = "吉": Case 5
a = "凶": Case 6: a = "大凶": End Select: MsgBox "運勢は" & a: End: End Sub
ほんと意味無いなw
>>101 意味もなく2行。
Sub main(): Dim a(): Randomize: a = Array("大吉", "中吉", "小吉", "末吉", _
"吉", "凶", "大凶"): MsgBox "運勢は" & a(Int(Rnd * 7)): End: End Sub
いや、難しすぎるんだって。
>>100 (と
>>105 )
*a="cdefgab" を *a="c#d#ef#g#a#b" とし(別に#じゃなくてもいいけど)
n=(b[1]==43?b++,1:0),c=("024579;"[d-a]-48+n+o*12)*256 を
c=(d-a+(b[1]==43&&b++)+o*12)<<8 とする。nは不要。
さらに (b[1]==43&&b++) を (m=44-b[1],(m*m==1&&++b)*m) とすれば
-(フラット)に対応(
>>105 より短)。
また m=atoi(++b),W(192+m*256) を W(192|atoi(++b)<<8) とする。
<script language="javascript"> m = new Array("大吉", "中吉", "小吉", "末吉", "吉", "凶", "大凶"); alert("運勢は"+m[Math.ceil(Math.random()*7-1)]); </script> JavaScript実質2行。もっと短くできる?
>>107 配列 a() は不要。
Sub Main(): Randomize: MsgBox "運勢は" & Array("大吉", "中吉", "小吉", "末吉", _
"吉", "凶", "大凶")(Int(Rnd * 7)): End: End Sub
あるいは微妙に動作は違うけど...
Sub Main(): Randomize: MsgBox "運勢は" & Mid$("大吉中吉小吉末吉吉 凶 大凶", _
2 * Int(Rnd * 7) + 1, 2): End: End Sub
とか。
>>110 <script language="javascript">
m="大吉,中吉,小吉,末吉,吉,凶,大凶".split(",");
alert("運勢は"+m[Math.ceil(Math.random()*m.length)]);
</script>
お行儀悪いけど、文字数だけ短縮。
*7-1とか、バグの元は排除。
>>111 Array()に直に書けるのか。一つ勉強になった
>>111 一文字減らしてみた
Sub Main(): Randomize: MsgBox "運勢は" & Array("大吉", "中吉", "小吉", "末吉", _
"吉", "凶", "大凶")(Rnd * 7 \ 1): End: End Sub
>>111 スペースを全角→半角
int() → \ 1
+1 → 文字列の最初に半角スペース
で4文字減
Sub Main(): Randomize: MsgBox "運勢は" & Mid$(" 大吉中吉小吉末吉吉 凶 大凶", _
(Rnd * 7 \ 1) * 2, 2): End: End Sub
意味ないのでsage
すれ3 445-459 の md5
あと18文字で力尽きました。
double sin(),d;unsigned s[4],E[4],X[32],C,x,y,z,k,i,j=8,l=16,m,n,u=64,g=16;main
(char*a){for(a=E;j--;)n=a[j+8]=~(a[j]=1+j*34);for(a=X;n/u;memset(X,m=0,u)){for(
n=0;~(i=getchar())&&(a[n++]=i,n<u););for(C+=n*8,n-u?X[l=14+n/56*g]=C,a[n]|=128,
X[++l]=0:0;m<l;m+=g){for(memcpy(s,E,g);k="@AE@"[++j];)for(i=0;i<g;s[-i++&3]=x+(
y<<z|y
>>32 -z),k+="AECG"[j])x=s[1-i&3],y=s[2-i&3],z=s[~i&3],d=sin(j*g+i+1),y=s[-
i&3]+(j-3?j-2?j?x&z|y&~z:x&y|~x&z:x^y^z:y^(x|~z))+X[m+k%g]+(d<0?-d:d)*(~0U+1.),
z="GLQVEINTDKPWFJOU"[j*4+i%4]-u;for(;j--;E[j]+=s[j]);}}for(a=E;++j<g;printf("%"
"02x",a[j]&255));}
修正ソース拝借→指摘修正→ボリューム追加(エクスプレッションかもしれない) #include <windows.h> #include <mmsystem.h> HMIDIOUT h;char*a="c+d+ef+g+a+b",*b,*d;int t=4000,o,l=4,m;V(){(m=atoi(b+1))?l=m: 0;Sleep(t/l);}W(x){midiOutShortMsg(h,x);}main(c,v)char**v;{if(!midiOutOpen(&h,0, 0,0,0))for(b=v[1];*b;b++)(d=strchr(a,*b))?c=(d-a+(b[1]==43&&b++)+12+o*12)<<8,W( 8335504+c),V(),W(12416+c):*b-64?*b-111?*b-114?*b-116?*b==118?W(6522+atoi(++b)):0 :(t=24e4/atoi(++b)):V():(o=atoi(++b)-4):W(192+atoi(++b)*256);midiOutClose(h);} v[0- ] ボリュームです。音の大きさを変更できます あと、燃料投下。 #include <windows.h> #include <mmsystem.h> HMIDIOUT h;V(l,b,t)char*l,*b;{char m;(m=atoi(b+1))?*l=m:0;Sleep(t/(*l));}W(x){m\ idiOutShortMsg(h,x);}Y(v)char*v;{char*a="cdefgab",*b,*d,o=0,l=4,m=0,n=atoi(v);i\ nt c,t=4000;for(b=v;*b;b++)(d=strchr(a,*b))?c=("024579;"[d-a]-36+(b[1]==43&&b++) +o*12)<<8,W(8335504+c+n),V(&l,b,t),W(12416+c+n):*b==111?o=atoi(++b)-4:*b==64?m= atoi(++b),W(192+m*256+n):*b==114?V(&l,b,t):*b==116?t=24e4/atoi(++b):0;return 0;} main(c,v)char**v;{long t[16],n;if(!midiOutOpen(&h,0,0,0,0)){for(n=c;--c;)t[c]=_\ beginthread(Y,0,v[c]);for(;n--;)WaitForSingleObject(t[n],INFINITE);}midiOutClose (h);return 0;} MMLプレイヤー(最高16重奏が可能) mml [mml data] ... mmldataの最初にチャンネル番号を付ける事。
119 :
デフォルトでない名無しさん :03/05/25 14:01
W(6522+atoi(++b)) は W(6522+atoi(++b)<<16)の間違いです...
public class Aho { public static void main(String args[]) { System.out.println("おまえら、全員市ね"); Thread.sleep(1000000); System.out.println("だから、市ねって"); } }
>116
x+(y<<z|y
>>32 -z)>x+=y<<z|y
>>32 -z
(j-3?j-2?j?x&z|y&~z:x&y|~x&z:x^y^z:y^(x|~z))>(j?j>1?y^(j-3?x^z:x|~z):x&z|y&~z:x&y|~x&z)
sin(j*g+i+1)>sin(j*g-~i)
HSP用 暇なときにどうぞ ;其の1 randomize; repeat: wait 10; ;stick n: if( n & 0x200 ): break; rnd rx, 33: rnd ry, 33: ginfo 0; mouse prmx + rx - 16, prmy + ry - 16; loop; ;其の2 ginfo 0: mox = prmx: moy= prmy; repeat: await 20; ;getkey n, 2: if( n ): break; ginfo 0: mouse prmx * 2 - mox, prmy * 2 - moy; mox = prmx: moy = prmy; loop;
123 :
デフォルトの名無しさん :03/05/25 16:50
>>116 for(memcpy(s,E,g);k="@AE@"[++j];)
X[m+k%g]
,k+="AECG"[j]
↓
for(memcpy(s,E,g);++j<4;)
X[m+"@AE@"[j]+"AECG"[j]*i&15]
k の宣言消し
>>118 ・"c+d+ef+g+a+b"の方式にする。
・WaitForSingleObject()の引数に_beginthread()を直接与える。
main()のt[16]とnとfor文1つが除去可能。
・INFINITEを-1に(だめかも)。
・return 0;はなくてもよいのでは。あと、main()のif文も。Closeはわからん。
"rc+d+ef+g+a+b"とし、その中でrを個別に判定しベロシティ0にすれば、
V()を用意する必要がなくなり、多少短くなるかもしれない。
125 :
デフォルトの名無しさん :03/05/25 22:23
ここのスレはすっげーな。 七行でここまでいろいろ表現できるとは。
>>115 VB知らないんだけど、「吉」「凶」は纏められないんですかね?
小凶や末凶も増えるし・・
>>125 さて、レスしたからには挑戦しなければなりませんが。
>>115 微妙に変だから直しました
あとEndは無しでもいけそう
$も不必要かと
Sub Main(): Randomize: MsgBox "運勢は" & Mid("大吉中吉小吉末吉吉 凶 大凶", ( _
Rnd * 6 \ 1) * 2 + 1, 2): End Sub
末吉吉 の部分がどうしても気になる・・・のに、触ると余計に長くなってしまったりするジレンマ。
LittleEndian版の7行md5
但しコンパイル時にchar型のdefaultをunsignedとするオプション指定が必須(ぉ
double sin(),fabs();unsigned s[4],X[32],C,x,y,z,E[4],i,j=8,l,m,n,u,g;main(char*
a){for(a=E;j--;l=g=16)a[j+8]=~(a[j]=1+j*34);for(;n==u;){for(memset(a=X,m=n=0,u=
64);n<u&&~(x=getchar());++C)a[n++]=x;for(n-u?X[l=14+n/56*g]=C*8,a[n]=128,X[++l]
=C
>>29 :0;m<l;m+=g){for(memcpy(s,E,g);++j<4;)for(i=0;i<g;y=s[-i&3]+(j?j-1?y^(j-3
?x^z:x|~z):x&z|y&~z:x&y|~x&z)+X[m|"@AE@"[j]+"AECG"[j]*i&15]+fabs(sin(j*g+i+1.))
*(~0U+1.),z="GLQVEINTDKPWFJOU"[j*4|i&3]-u,s[-i++&3]=x+=y<<z|y>>32-z)x=s[1-i&3],
y=s[2-i&3],z=s[~i&3];for(;j--;E[j]+=s[j]);}}for(;++j<g;printf("%02x",j[a=E]));}
132 :
デフォルトで無い名無しさん :03/05/26 21:20
>>129 Splitでやってみる。
Sub Main(): Randomize: MsgBox "運勢は" & Split("大吉 中吉 小吉 末吉 吉 凶 " + _
"大凶", " ")(Rnd * 6): End Sub
ついでに。
Sub Main(): Randomize: MsgBox "運勢は" + Mid("大中小末 ", Rnd * 4 + 1, 1) & _
Mid("吉凶", Rnd + 1, 1): End Sub
>>132 > Sub Main(): Randomize: MsgBox "運勢は" & Split("大吉 中吉 小吉 末吉 吉 凶 " + _
> "大凶", " ")(Rnd * 6): End Sub
大凶と大吉が出にくいぞ。(対オリジナル)
> Sub Main(): Randomize: MsgBox "運勢は" + Mid("大中小末 ", Rnd * 4 + 1, 1) & _
> Mid("吉凶", Rnd + 1, 1): End Sub
"中凶", "小凶", "末凶" ってなんだ ?
普通のおみくじに小凶があるか とマジレス
順番って 大吉 中吉 吉 小吉 だよね?
逆ポーランド表記ちっくな計算機 import java.util.*;import java.math.*;public class P{public static void main( String[] a ){Stack s = new Stack();for(int i=0;i<a.length;i++){try{s.push(new BigDecimal(a[i]));}catch( Exception e){BigDecimal n=(BigDecimal)s.pop(); BigDecimal m=(BigDecimal)s.pop();if("+".equals(a[i]))s.push(m.add(n));if("-". equals(a[i]))s.push(m.subtract(n));if("*".equals(a[i]))s.push(m.multiply(n)); if("/".equals(a[i]))s.push(m.divide(n,0));}}System.out.println( s.pop() );}} java P 2 3 + 6 2 - "*" 見たいな感じで
139 :
デフォルトの名無しさん :03/05/27 23:52
age
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
>>137 縮めてみた
import java.util.*;import java.math.*;public class P{public static void main(
final String[]a){System.out.println(new Stack(){{for(int i=0;i<a.length;i++){
try{push(new BigDecimal(a[i]));}catch(Exception e){BigDecimal n=(BigDecimal)pop
(),m=(BigDecimal)pop();if("+".equals(a[i]))push(m.add(n));if("-".equals(a[i]))
push(m.subtract(n));if("*".equals(a[i]))push(m.multiply(n));if("/".equals(a[i])
)push(m.divide(n,0));}}}}.pop());}}
>>24 bitRGB->8bitMonochrome
明度ってR,G,B各要素で最大のものと教わったのですが,何故そのような色に重み付けをした変換でそれっぽくなるのでしょう?
145 :
デフォルトの名無しさん :03/05/29 15:39
<BODY onLoad='d();'><NOBR><SCRIPT> p='123456789一二三四五六七八九TUVWXYZ[\東南西北白発中';y=new A rray();t=new Array();function d(){for(i=0;i<t.length;i++)document.all['b'+i].val ue=p.charAt(t[i]);}function a(i){t[i]=99;t=t.sort(z);t[t.length-1]=y.pop();d();} function z(x,y){return x-y;}for(i=0;i<p.length;i++){for(j=0;j<4;j++){y[i*4+j]=i ;}}for(i=0;i<y.length;i++){j=Math.floor(Math.random()*y.length);s=y[i];y[j]=y[i ];y[i]=s;}for(i=0;i<t.length;i++){t[i]=y.pop();}t=t.sort(z);for(i=0;i<t.length;i ++){window.document.write('<BUTTON ID="b'+i+'" onClick="a('+i+');"></BUTTON>');} </SCRIPT></NOBR></BODY> JScript部分が七行って事で勘弁。.htaで動く一人麻雀(判定なし)です。 ほんとはt.sortのzが省略したいんだけど、省略すると文字列として並び替え されてしまうので、やむなくfunction zを指定してます。 (IE6で確認)
>>132 Splitは区切り文字が空白の場合は省略可能
Sub Main(): Randomize: MsgBox "運勢は" & Split("大吉 中吉 小吉 末吉 吉 凶 " + _
"大凶")(Rnd * 6): End Sub
147 :
デフォルトの名無しさん :03/05/31 22:44
age
148 :
デフォルトの名無しさん :03/05/31 22:45
>>147 だれか新しいソースうpしないと
ここは成り立たんな。
てなわけでage
149 :
デフォルトの名無しさん :03/05/31 22:50
#include <stdio.h> main() { int a; printf("テストは何点でしたか?\n"); scanf("%d",&a); if(a==100){ printf("完璧だね"); } elseif(a<50){ printf("まぁまぁだね"); } else{printf("頑張れよ"); } }
150 :
デフォルトの名無しさん :03/05/31 22:53
>>149 このソースをどうすればいい?
a<50はa>50だし、
101以上の値を入れたときの
処理がないぞ。
あと、int main(int argc,char**argv)って言ってるだろ
151 :
デフォルトの名無しさん :03/05/31 22:55
>>150 戻り値を省略した場合はint。
mainのプロトタイプは
main()
main(int)
main(int, char **)
main(int, char **, char **) // << MSのは対応してないやも
1番目と3番目のみ正しい。
153 :
デフォルトの名無しさん :03/05/31 23:01
154 :
デフォルトの名無しさん :03/05/31 23:03
>>153 そんな処理系バリバリ依存のキーワード持ち出すんだったら
void main()
でも別にかまわないだろ
ナにゆーてんの?
誰か return 0; がないのに突っ込もうよ。
>>157 2番目と4番目が仕様上は正しくないと言ってるんでしょ
このスレ的には短くなるなら多少の処理系依存はアリだったはずだが
処裏刑威尊上等
両方intでも問題無い。 明示castのペナルティあるけど
163 :
デフォルトの名無しさん :03/06/01 13:28
保守
>>158 C++としてコンパイルすればいいじゃん
165 :
デフォルトの名無しさん :03/06/01 15:39
>>164 別にCでもできるぞ。
ただ、警告になるが。
166 :
デフォルトの名無しさん :03/06/01 16:37
BCCコンパイルランチャー #include<stdio.h> #include<string.h> #include<stdlib.h> int main(int argc,char**argv){char option[64],CmdLine[256]="Bcc32 "; int i;printf("オプションを入力してください");gets(option);strcat (CmdLine,option);strcat(CmdLine," ");for(i=1;i<argc;i++)strcat(CmdLine, argv[i]);system(CmdLine);printf("キー入力すると終了します");gets(option);} *.c/cppの右クリックに追加して使えます。 なにげにオプション入力可能
167 :
デフォルトの名無しさん :03/06/01 16:44
149のをコンパイルしたら elseifは定義されていません。」だってさ
168 :
デフォルトの名無しさん :03/06/01 16:44
キー入力すると・・・は Enterを押すと・・・です。
169 :
デフォルトの名無しさん :03/06/01 17:34
暗号キー+XOP演算によるファイル暗号化 1.暗号キー作成 #include<stdio.h> #include<time.h> #include<stdlib.h> main(){int i=256;char k[256];FILE*f; srand((unsigned)time(NULL));for(;i--;) k[i]=rand()%256-127;f=fopen("Key.txt","wb"); fwrite(k,1,256,f);} 起動すると256Bの暗号キーファイル(key.txt)を作成します
170 :
デフォルトの名無しさん :03/06/01 17:37
暗号キー+XOP演算によるファイル暗号化 2.XOPによる暗号コード作成 #include<stdio.h> main(int c,char**v) {FILE *K,*R,*C;char a[256],b[256];int i;if(c<2)return 0; K=fopen(v[1],"rb");R=fopen(v[2],"rb");C=fopen("code.txt","wb"); if(K==0||R==0||C==0)return 0;fread(b,1,256,K);while((i=fread (a,1,256,R))==256){for(;i--;)a[i]=a[i]^b[i];fwrite(a,1,256, C);}c=i;for(;i--;)a[i]=a[i]^b[i];fwrite(a,1,c,C);} コマンドラインで v[1]=暗号キーファイル v[2]=元のファイルになるように すると、暗号コード(code.txt)を吐きます。
171 :
デフォルトの名無しさん :03/06/01 17:41
暗号キー+XOR演算によるファイル暗号化 3.XORによる復号化 #include<stdio.h> main(int c,char**v) {FILE *K,*R,*C;char a[256],b[256];int i;if(c<2)return 0; K=fopen(v[1],"rb");R=fopen(v[2],"rb");C=fopen("code.txt","wb"); if(K==0||R==0||C==0)return 0;fread(b,1,256,K);while((i=fread (a,1,256,R))==256){for(;i--;)a[i]=a[i]^b[i];fwrite(a,1,256, C);}c=i;for(;i--;)a[i]=a[i]^b[i];fwrite(a,1,c,C);} コマンドラインで v[1]=暗号キーファイル v[2]=暗号ファイルになるように すると、復号コード(source.txt)を吐きます。 実は暗号化とほとんどかわりません。"code.txt"を変えただけ
>>164 C++ なら cstdio で int main で std::printf, std::scanf じゃん。
173 :
デフォルトの名無しさん :03/06/02 00:23
XOP演算って何ですか? ぐぐっても出てきませんでした。
XOR なら知ってるが。 というか、なぜこのスレで?
little endianな7行md5
>131と違いcharの符号は問わない
検証してないが4GB超サイズでも逝ける筈
double sin(),fabs();unsigned s[64],X[32],B,C,x,y,z,E[64],j=8,l,m,n,u,g=16;main(
char*a){for(a=E;j--;l=g)a[j+8]=~(a[j]=1+j*34);for(;n==u;){for(memset(a=X,m=n=0,
u=64);n<u&&~(x=getchar());B+=!(C+=8))a[n++]=x;for(n-u?X[l=14+n/56*g]=C,a[n]=128
,X[++l]=B:0;m<l;m+=g){for(memcpy(s,E,g);++j<u;y=s[-j&3]+(j/g?j>31?y^(j&g?x|~z:x
^z):x&z|y&~z:x&y|~x&z)+X[m|"@AE@"[j/g]+"AECG"[j/g]*j&15]+(~0U+1.)*fabs(sin(j+1.
)),z="GLQVEINTDKPWFJOU"[j/g*4|j&3]-u,s[-j&3]=x+=y<<z|y
>>32 -z)x=s[1-j&3],y=s[2-j
&3],z=s[~j&3];for(;j--;E[j]+=s[j]);}}for(;++j<g;printf("%02x",255&j[a=E]));}
>>169-171 XORによる暗号化・復号
フィルタにしました。引数なしだと Key.txt にキー作成。
作成したキーファイルを引数にすると、標準入出力間で暗号化、もう一度かけると復号。
実質6行だし、もっと縮められそう。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int i,x=256;main(int c,char**v){char a[256];FILE*f=fopen(v[1],"rb");if(c<2){
srand((unsigned)time(NULL));for(i=x;i--;)a[i]=rand()%x-127;fwrite(a,1,x,fopen(
"Key.txt","wb"));}if(f)for(fread(a,1,x,f);~(c=getchar());i%=x)putchar(c^a[i++])
;}
179 :
デフォルトの名無しさん :03/06/03 19:47
>176に改行追加
double sin(),fabs();unsigned s[63],X[32],B,C,x,y,z,E[63],j=8,l=14,m,g=16;char*a
;main(c){for(a=E;j--;)a[j+8]=~(a[j]=1+j*34);for(;c;){for(memset(a=X,m=x=0,64);x
<64?c=~getchar():0;B+=!(C+=8))a[x++]=~c;for(c||(X[l+=x/56*g]=C,a[x]=128,X[l+1]=
B);m<l;m+=g){for(memcpy(s,E,g);j-63;s[-j&3]=x+=y<<z|y
>>32 -z)x=s[-j++&3],y=s[2-j
&3],z=s[~j&3],y=s[-j&3]+X[m|"@AE@"[j/g]+"AECG"[j/g]*j&15]+(j/g?j>31?y^(j&g?x|~z
:x^z):x&z|y&~z:x&y|~x&z)+(~0U+1.)*fabs(sin(j+1.)),z="GLQVEINTDKPWFJOU"[j/g*4|j&
3]&31;for(;j--;E[j]+=s[j]);}}for(;++j<g;printf("%02x",255&j[a=E]));puts("");}
181 :
デフォルトの名無しさん :03/06/10 17:48
age
短くするためには処理系依存もかまわないという考えが醜いな。昔はよかった
endian不問なSHA1&MD5 (と言いつつbig endianでは未検証)
/* unsigned=32bitなSHA1 */
unsigned*p,H[186],*q=H,n,d=8,z,l,h;F(v){q[n/4]|=(v&255)<<(~n&3)*8;}L(c){q=H+90;
F(c);if(++n>63){for(n=80,p=memcpy(q-5,H,20);n;1[p--]=d/4|d<<30)d=q[13]^q[8]^q[2
]^*q,q[16]=d
>>31 |d+d,d=p[1],z=p[2],c=p[3],p[-1]=(*p<<5|*p
>>27 )+p[4]+0x5a827999+
*q+++(--n/5&4?n>39?c^d&(z^c):882459459+(d&(z|c)|z&c):(39<n?341275144:0x6fe0483d
)+(d^z^c));for(memset(H+90,0,64);H-p--;)*p+=p[5];}}main(){for(;n=d--;n+=8,F(~z)
)n=d^3,F(z=d*34+1);for(q[4]=0xc3d2e1f0;z=~getchar();h+=!(l+=8))L(~z);for(L(128)
;n-56;)L(0);for(q[14]=h,n=63,L(q[15]=l);n<5;)printf("%08x",H[n++]);}
/* unsigned=32bitなMD5 */
double sin(),fabs();unsigned*q,s[63],X[63],B,C,x,y,E[63],j=8,g=16;F(v){q[y/4]|=
(v&255)<<y%4*8;}L(z){F(z);if(++y>63){for(memcpy(s,E,g);j-63;y=s[-j&3]+X["@AE@"[
j/g]+"AECG"[j/g]*j&15]+(j/g?j>31?y^(j&g?x|~z:x^z):x&z|y&~z:x&y|~x&z)+fabs(sin(j
+1.))*(~0U+1.),z="GLQVEINTDKPWFJOU"[j/g*4|j&3]&31,s[-j&3]=x+=y<<z|y>>32-z)x=s[-
j++&3],y=s[2-j&3],z=s[~j&3];for(;j--;E[j]+=s[j])X[j]=y=0;}}main(){for(q=E;y=j--
;y+=8,F(~x))F(x=--y*34+1);for(q=X;x=~getchar();B+=!(C+=8))L(~x);for(L(128);y-56
;)L(0);for(X[14]=C,X[15]=B,y=63,L(0);++j<g;printf("%02x",E[j/4]>>j%4*8&255));}
184 :
デフォルトの名無しさん :03/06/14 14:54
#include <stdio.h> main(){int q1,q2,a;do{printf("8桁の数字を入力して覚えてください:"); scanf("%d",&q1);}while(q1>99999999||q1<10000000);do{ printf("\nさっきとは違う8桁の数字を入力してください:");scanf("%d",&q2)} while(q2>99999999||q2<10000000||q2==q1);for(i=0;i<99;i++){printf("\n");} printf("最初に入力した数字をどうぞ:");scanf("%d",&a);if(q1==a){ printf("正解。\n次に入力した数字をどうぞ:");scanf("%d",&a);if(q2==a){for(i=0;i<99;i++){printf("\n");} printf("大正解。\nそれではもう一度最初に入力した数字をどうぞ:");scanf("%d",&a);if(q1==a){ printf("\nすごい・・・あなたは神です。\n");}else{printf("\n残念。正解は%dでした。\n",q1);} }else{printf("\nはずれ。正解は%d\n",q2);}}else{printf("\nアホですか?正解は\n1回目%d\n2回目%d\n",q1,q2);}} いくらプログラムを始めたばかりとはいえ、こんな糞プログラムも7行で作れないなんて・・・ みなさんすごいですね。
>>145 <SCRIPT>p='123456789一二三四五六七八九TUVWXYZ[\東南西北白発中'
y=[];t=[];q=document;function d(){for(i in t)q.all['b'+i].value=p.charAt(t[i])}
onload=d;function z(x,y){return x-y}for(i=0;i<34;i++)for(j=0;j<4;j++)y[i*4+j]=i
for(i in y){j=parseInt(Math.random()*135);s=y[i];y[j]=y[i];y[i]=s}for(i=0;i<12;
i++)t[i]=y.pop();t.sort(z);for(i in t)q.write('<BUTTON ID=b',i,' onClick=t[',i,
']=99;t.sort(z);t[11]=y.pop();d()></BUTTON>')</SCRIPT>
がんばれば5行いけそう。
>>183 Mac OS 9.2.2でSHA1は動作確認できました。
ただMD5の方は動かず。
プロトタイプのせいかと思い厳密に書き換えても変わりませんでした。
実行結果:
"" = 3973fc7d22cf0064330b8e9bada4e926
"a" = c1baf895b258ff07288aecb035ece53e
"abc" = c24dad17ee73db1464a5c8bd367f9ac0
"message digest" = 0d3cdbfdb20c7624283e63cd816dc8a6
コンパイラはMrC 5.0d3c1
>>187 ↓の追加・変更でMD5が正常に動くならsin()の演算精度の違いが原因かと
これでも異なる場合は>183のMD5にミスがあると思われ
unsigned T[]={
0xd76aa478,0xe8c7b756,0x242070db,0xc1bdceee,0xf57c0faf,0x4787c62a,0xa8304613,0xfd469501,
0x698098d8,0x8b44f7af,0xffff5bb1,0x895cd7be,0x6b901122,0xfd987193,0xa679438e,0x49b40821,
0xf61e2562,0xc040b340,0x265e5a51,0xe9b6c7aa,0xd62f105d,0x02441453,0xd8a1e681,0xe7d3fbc8,
0x21e1cde6,0xc33707d6,0xf4d50d87,0x455a14ed,0xa9e3e905,0xfcefa3f8,0x676f02d9,0x8d2a4c8a,
0xfffa3942,0x8771f681,0x6d9d6122,0xfde5380c,0xa4beea44,0x4bdecfa9,0xf6bb4b60,0xbebfbc70,
0x289b7ec6,0xeaa127fa,0xd4ef3085,0x04881d05,0xd9d4d039,0xe6db99e5,0x1fa27cf8,0xc4ac5665,
0xf4292244,0x432aff97,0xab9423a7,0xfc93a039,0x655b59c3,0x8f0ccc92,0xffeff47d,0x85845dd1,
0x6fa87e4f,0xfe2ce6e0,0xa3014314,0x4e0811a1,0xf7537e82,0xbd3af235,0x2ad7d2bb,0xeb86d391};
fabs(sin(j+1.))*(~0U+1.) -> T[j]
thx。テーブルに置き換えたら正しく動作しました。 その後置き換え部分のみ比較してみたら一致したので おやと思い置き換えた部分をいろいろいじった結果 fabs(sin(j+1.))*(~0U+1.)をunsignedにキャストすることでも動作。 どうやら原因は全ての数がdoubleにキャストされてから加算され unsignedへ戻す時にオーバーフローしてy==UINT_MAXになる為のようでした。 お騒がせしました。
オーバーフロー対策した7行MD5
double sin(),fabs();unsigned*q,s[65],X[63],B,C,x,y,E[65],j=8,g=16;L(z){q[y/4]|=
z<<y%4*8;if(!~j?s[y]=E[y],++y>63:0){for(;j-63;y=s[-j&3]+X["@AE@"[j/g]+"AECG"[j/
g]*j&15]+(j/g?j>31?y^(j&g?x|~z:x^z):x&z|y&~z:x&y|~x&z)+(unsigned)(fabs(sin(j+1.
))*(~0U+1.)),z="GLQVEINTDKPWFJOU"[j/g*4|j&3]&31,s[-j&3]=x+=y<<z|y
>>32 -z)x=s[3&-
j++],y=s[2-j&3],z=s[~j&3];for(;j--;E[j]+=s[j])X[j]=y=0;}}main(){for(q=E;y=j--;y
+=8,L(255&~x))L(x=--y*34+1);for(q=X;x=~getchar();B+=!(C+=8))L(~x);for(L(128);y-
56;)L(0);for(X[14]=C,X[15]=B,L(y=64);++j<g;printf("%02x",E[j/4]>>j%4*8&255));}
>>190 それでも7行に収めてしまうとは。感服しますた。
192 :
デフォルトの名無しさん :03/06/23 22:39
age
このスレ最高!!!
/*
>>190 を見てスゲーなと思いつつも、7行目の "X[14]=C,X[15]=B" が
エディアンに依存するのでは無いかと思ったり
fabs(sin(xxx))を毎回呼ぶと処理が重そうだなと思ったり…
と言う訳で頑張って挑戦してみました
七行プログラムは初めてなのでミスってたらスマソ
MD5 エディアン非依存 のハズ… */
double sin(),fabs();unsigned c,m=64,n,v,w,x,y,z,T[68],X[18];L(i){n||(w=*T+=w,x=
T[1]+=x,y=T[2]+=y,z=T[3]+=z);X[n/4]=X[n/4]
>>8 |i<<24;for(m=++n-64;m<64;n=m/16,v=
x,w+=T[m+4]+X["AECG"[n]*m+"PAEP"[n]&15]+(n?n-1?y^(n-2?x|~z:x^z):x&z|y&~z:x&y|~x
&z),c="GLQVEINTDKPWFJOU"[n*4|m++&3]&31,x+=w<<c|w>>32-c,w=z,z=y,y=v,n=0);}main()
{for(;m--;T[m/4]|=(m<8?1+34*m:526-34*m)<<m%4*8,T[m+4]=fabs(sin(m+1.))*(~0U+1.))
;for(;c=~getchar();L(~c),X[17]+=!(X[16]+=8));for(L(128);n-56;L(0));for(;n-32;L(
X[n/4+2]>>n%4*8&255),n<56&&n&1&&printf("%02x",T[n/8]>>n/2%4*8&255));puts("");}
>>194 で
>>190 は
>…がエディアンに依存するのでは
と書いてますけど、
>>190 のソースの半分位は理解出来なかったので
勘違いかもしれません。
と言う訳で、私の勘違いで気分を悪くされたら、ごめんなさいm(_ _)m
s/エディアン/エンディアン/g
/*
>>79 で出来てるようですが、C++だったので
C Only で作ってみましたが、少し余裕があったので
コンパイル時の警告やエラーを避けて作りました
本当は読み込みの規準を甘くしようとも考えましたが
フォーマットに手を出すときりが無く七行では無理っぽいので…
(なら実行時エラーを何とかしろと言う話もありますが…)
24bit画像 to 8bitグレースケール */
#include <stdio.h>
unsigned char b[1078];int j=1024,l=1078,x,y;FILE*I,*O;void R(int i){fread(b,1,i
,I);}void W(int i){fwrite(b,1,i,O);}void E(int i,int v){for(j=4;j--;b[i+j]=v
>>8 *j);}void D(int i){for(j=4;j--;y=y<<8|b[i+j]);}int main(int c,char*v[]){if(c==3
){I=fopen(v[1],"rb");O=fopen(v[2],"wb");for(;--j;b[j+53]=j&3?j/4:0);R(54);D(18)
;x=y;c=x+x*3%4;for(D(22),E(2,c*y+l),E(10,l),E(28,8),E(34,c*y),W(l);y--;R(x&3),E
(0,0),W(c-x))for(l=x;l--;R(3),*b=*b*.114+b[1]*.587+b[2]*.299,W(1));}return 0;}
/* fclose()を加えましたが関数の宣言が反則っぽいので
怒るコンパイラもあるかもしれませんが
手持ちのコンパイラでは大丈夫でした
24bit画像 to 8bitグレースケール ※ sizeof(size_t)==sizeof(int) */
typedef void v;typedef int s;unsigned char b[1078];v*I,*O,*fopen(v*,v*);s x,y,j
=1024,l=1078,fread(v*,s,s,v*),fwrite(v*,s,s,v*),fclose(v*);v R(s i){fread(b,1,i
,I);}v W(s i){fwrite(b,1,i,O);}v E(s i,s w){for(j=4;j--;b[i+j]=w
>>8 *j);}v D(s i
){for(j=4;j--;y=y<<8|b[i+j]);}s main(s c,char*a[]){if(c==3){I=fopen(a[1],"rb");
for(O=fopen(a[2],"wb");--j;b[j+53]=j&3?j/4:0);R(54);D(18);x=y;c=x+x*3%4;D(22);E
(2,c*y+l);E(10,l);E(28,8);E(34,c*y);for(W(l);y--;R(x&3),E(0,0),W(c-x))for(l=x;l
--;R(3),*b=*b*.114+b[1]*.587+b[2]*.299,W(1));fclose(O);fclose(I);}return 0;}
199 :
デフォルトの名無しさん :03/06/28 10:37
a
/* 使い道は無いと思いますが8ビット以下に対応しました
多数の警告が出ると思いますが (これ以上はムリポ)
取り敢えずコンパイルは出来ると思います (と思いたい)
〜8bit画像 -> 〜8bitグレースケール (色数は減らない)
24bit画像 -> 8bitグレースケール */
unsigned char b[54];int d,k,l,p,r,s,x,y,z;void*I,*O,*fopen();R(i){fread(b,1,i,I
);}W(i){for(r+=2;--r;fwrite(b,1,i,O));}E(i,j){for(k=4;k--;b[i+k]=j
>>8 *k);}D(i){
for(k=4;k--;d=d<<8|b[i+k]);}main(i,v)char**v;{I=fopen(v[1],"rb");R(i=54);D(18);
O=fopen(v[2],"wb");x=d;D(22);y=d;D(28);l=d>8?8:d;E(28,l);i+=4<<l;E(10,i);l=x*l+
31
>>5 <<2;s=l*y;E(2,s+i);E(34,s);W(54);for(i=0;(d<9?p=s,l=2,x=1,y=1<<d,z=2,0:256
)>i;W(4))E(0,i++*65793);for(;y--;R(x&3),E(0,0),W(l-x))for(i=x;i--;R(3),*b=.114*
*b+.587*b[1]+.299*b[2],W(1))r=z;for(;p--;W(1))R(1);}
/* 何度も何度もスマソ
グレースケールは多分(バグが無ければ)これで最後です
基本的には
>>200 と同じですが、Offsetに対応しました
そのため、逆にOffsetが不正だと変な動作を… */
unsigned char b[54];int d,k,l,p,r,x,y,z;void*I,*O,*fopen();F(i){for(r+=2;--r;i<
0?fwrite(b,1,-i,O):fread(b,1,i,I));}C(i,j){for(k=4;k--;i<0?d=d<<8|b[k-i]:(b[i+k
]=j
>>8 *k));}main(i,v)char**v;{I=fopen(v[1],"rb");O=fopen(v[2],"wb");F(i=54);C(-
28,0);z=d;C(-22,0);y=d;C(-18,0);x=d;C(-10,0);C(28,l=z<9?z:8);d-=i+=4<<l;l=31+x*
l
>>5 <<2;C(34,p=y*l);C(2,p+i);C(10,i);F(-54);for(z<9?x=1,y=1<<z,l=z=2:(i=z=p=0,r
=d+1023,F(1));i>255==z;F(-4))C(0,i++*65793);for(;y--;F(x&3),C(0,0),F(x-l))for(i
=x;i--;*b=.114**b+.587*b[1]+.299*b[2],r=z,F(-1))F(3);for(r=d;p--;F(-1))F(1);}
今の質をみていると、やはり糞スレだな。 パート1の初期のメンバーは熱かったな。
204 :
デフォルトの名無しさん :03/07/08 21:51
とりあえず表計算。 機能的には最悪だがサムだけはできる。 //0はなんでもよしという意味 //1 1 I 155 0 0 0 1行1列に155を代入 //4 5 A 1 4 6 5 4列5行に1列5行と6列5行の和を代入する。 //D 同じく割り算 //M 同じく引き算 //X 同じく掛け算 //4 5 S 1 2 0 5 4列5行に1列の2行から5行のサム //0 0 s 8 4 0 9 8行の4列から9列を昇順ソートする #include <stdio.h> #include <memory.h> void main(){short a,b,d,e,f,g,x=0,y=0,p[10][10],q;char c;memset(p,0,200);while(1) {for(y=0;y<10;y++){for(x=0;x<10;)printf("%d\t",p[x++][y]);printf("\n");} printf("指令を入力してください。");scanf("%d %d %c %d %d %d %d", &a,&b,&c,&d,&e,&f,&g);switch(c){case 'E':return;case 'I':p[a][b]=d;break;case 'M': p[a][b]=p[d][e]-p[f][g];break;case 'A':p[a][b]=p[d][e]+p[f][g];break;case 'X': p[a][b]=p[d][e]*p[f][g];break;case 'D':p[a][b]=p[d][e]/p[f][g];break;case 'S': p[a][b]=0;for(q=0;q<=g-e;q++)p[a][b]+=p[d][e+q];break;}}} ごめんなさい9行です。
#include <stdio.h>
#include <memory.h>
int a,b,c,d,e,f,g,x=0,y=0,p[10][10]={0},q;void main(){while(1){for(y=0;y<10;y++)
{for(x=0;x<10;)printf("%d\t\n",p[x++][y]);}printf("Command?");scanf("%d %d %c %"
"d %d %d %d",&a,&b,&c,&d,&e,&f,&g);p[a][b]=(c-65)?c-68?c-73?c-77?c-83?c-88?p[a][
b]:p[d][e]*p[f][g]:0:p[d][e]-p[f][g]:d:p[d][e]/p[f][g]:p[d][e]+p[f][g];switch(c)
{case 69:return;case 83:for(q=0;q<=g-e;q++)p[a][b]+=p[d][e+q];}}}
>>204 のを七行に縮めてみる
206 :
デフォルトの名無しさん :03/07/09 03:08
最後 for(q=e;q<=g;p[a][b]+=p[d][q++]); とかの方がよくね?
#include <stdio.h> int a,b,d,e,f,g,x,y,p[10][10]={0};char c=0;int main(){for(;c-69;scanf("%d %d %" "c %d %d %d %d",&a,&b,&c,&d,&e,&f,&g)){if(c){if(c-83)e=p[d][e],g=p[f][g],p[a][b ]=c-65?c-68?c-73?c-77?c-88?p[a][b]:e*g:e-g:d:e/g:e+g;else for(p[a][b]=0;e<=g;)p [a][b]+=p[d][e++];}for(y=-1;++y<10;puts(""))for(x=0;x<10;)printf("%d\t",p[x++][ y]);printf("指令を入力してください。");}return 0;}
( ⌒) ∩_ _ /,. ノ i .,,E) ./ /" / /" ./ / _、_ / ノ' _n / / ,_ノ` )/ / グッジョブ!! おまいら最高! ( l ( _、_ / _、_ \ \ヽ( <_,` ) |( ,_ノ` ) n ヽ___ ̄ ̄ )  ̄ \ ( E) / / フ /ヽ ヽ_//
グローバル変数の初期値が0であるというのは、仕様なのでしょうか、VC++などの実装なのでしょうか。
調べる余裕はないですが、もしそうなら
>>207 は6Byte短くなります。
また、
"%d %d %"(改行)"c %d %d %d %d" ではなくて、
"%d %d %\(改行)c %d %d %d %d" とすると、さらに1Byte減ります。
gccでは文句を言われるので判断は避けますが、return 0;は、void main()にすると短くなります。
途中で、c-=65;にして、条件式の2桁の数字群を1桁に落としてみると字数が減るかも。
学校に行くのでアイディアだけですみません。
>>209 > グローバル変数の初期値が0であるというのは
仕様。
x,y のループを x,y に分けないでひとつのforにしたら、短くなる。
そだね。xyに分けるのは人間の都合だよね
SHA1 と MD5 のコードはどういう風に使うんでしょうか。入力が分からない・・ヽ(´Д`;)ノ
>>213 コンソールから実行
※ SHA1→実行ファイル FILE→対象ファイル
SHA1 < FILE
バイナリファイルで正しい値が出ない時は
#include <stdio.h>
をソースの頭に加えて、矛盾する宣言等を手直しし、
main()の頭に
stdin=freopen("対象ファイル","rb",stdin);
を加えて何も指定せずに実行すれば正しい値がでるはず
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
>>214 五日ぶりにカキコ
できました、ありがとうございました。
217 :
デフォルトの名無しさん :03/07/17 02:17
//ヤター!エミュレータできたよ import java.awt.*;import java.awt.event.*;public class MorphyOne{ public static void main(String[] arguments) {Canvas canvas = new Canvas();canvas.setBackground(Color.black);canvas.setSize(640, 200); final Frame frame = new Frame("MorphyOne Emulator");frame.addWindowListener (new WindowAdapter() {public void windowClosing(WindowEvent e) { frame.dispose();}});frame.add(canvas, BorderLayout.CENTER); frame.pack();frame.show();}}
最近mainのreturn 0;とかincludeとかしっかり書いている人がいるね 書いてないのを作品と認めない俺としてはかなり評価しています。がんばれ!
219 :
デフォルトの名無しさん :03/07/17 23:52
オセロとテトリスのソースきぼんぬ。 自分でも作ってみたいので、参考にさせてください。
>>219 七行スレ嫁
つーか、絶対、知ってて言ってるだろ?
つーか、この後に、もっと短くしたソース晒して
自慢したいだけだろ?
222 :
デフォルトの名無しさん :03/07/18 00:04
>>220 過去スレ調べたけど、既に消えてました。
マジです。
お願いします。
>>221 そんなことないです
おまえら死ねよ
誰かさぁ、今まで出た七行プログラムのコード、コンパイルしてどっかに置いといてよ。 インタープリター系はそのままで。 頼むって。いや、マジで。
226 :
c_sugar :03/07/18 01:54
>>225 レスごとに、001.c 002.cpp 003.pl … の様にし、
ソース以外のレスを全てコメントで括ってやって
即コンパイル or 実行 出来るようにするなら分かるけど、
コンパイルした後のファイルなんて環境違ったら、意味無いし…
つーか、そう言うのは言い出しっぺがやるもんだ
#include <stdio.h> #include <conio.h> int main(){ puts("\n|゚∀゚)プッ\a") getch(); reurn 0; }
229 :
デフォルトの名無しさん :03/07/18 11:17
>>222 っていうか、オセロなんて7行で可能なの?
#include <stdio.h> int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i ;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v +=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for (p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0, puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
231 :
デフォルトの名無しさん :03/07/18 12:50
>>231 環境は何?あと、エラーメッセージとか。
ああ、オセロ6行はgccで通らないはず。確か (p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0, の行のk()が原因。確認はしていないけれど、 (p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k(),0:m[p]=9;for(a?d=a=p=9:s?s=0, にすればうまくいくのではないかな?
>>219 オセロもテトリスもあった。
テトリスはJavaScriptだったが。
>>225 7行コードだから良いわけで
ひさびさにオセロを見た 今インデントを展開して読んでみているのだが、凄まじいな
WinXPでBCCです。 エラーは「左辺値が必要」です。
237 :
デフォルトの名無しさん :03/07/18 16:53
>>233 僕のはVC6、Win98で通るが、展開してみたが、怪しそうなのは同じ
3項演算の所だった。
>>236 どこの位置にエラーがあるのかがわかんないよ。
でも、
>>233 と同じ所なのかな。それなら、
>>233 の方法か、
p%9?k():m[p]=9; → if(p%9)k();else m[p]=9;
t-6?scanf("%d%d",&p,&v),p+=v*9:++p;
↓
if(t-6){scanf("%d%d",&p,&v);p+=v*9;}else ++p;
と直すとか。
デバッガで追いかけても理解できない俺は屑ですか?
理解したいならソースに改行/タブを入れて見やすくしてから 見やすいように書き換えていくのがいい
・・・文が変だな
>>233 &&238
条件演算子は、void型には適用出来ない
p%9?k():m[p]=9; /* 何かしらの値を必要とするが k() は void型 */
また、代入より、条件演算子の方が、優先順位が高い
p%9?k():m[p]=9; /* 9を p%9?k():m[p] には代入出来ない */
よって、↓のようにすればコンパイル出来る
p%9?k(),0:(m[p]=9);
が、どっちみち、まともに動かない気がするが…?
>>242 まともにうごいているように見えるけど?
こうすればコンパイル問題ないよ 昔ずいぶん頑張って解読してこのソースコードは大体読めるようになったので、まず下のソースで間違いないと思う。 #include <stdio.h> int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i ;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v +=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for (p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k(),v:m[p]=9;for(a?d=a=p=9:s?s=0, puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;} 具体的には、 p%9?k():m[p]=9; → p%9?k(),v:m[p]=9; それにしても美しいソースコードです。
>>244 だから、
a=1+b=c; /* c を ( 1+b ) に代入出来ない */
と同じで、左辺値が必要なんだって言ってるの、OK?
p%9?k(),v:m[p]=9; /* 9 を ( p%9?k(),v:m[p] ) に代入する事は出来ない */
ちゃんと、優先順位を考えませう ( ?: の方が = より優先される )
ついでだから、もう少し。 変数と単項*演算子、[]演算子、->演算子は常に左辺値を生じさせる また、.演算子も通常、左辺値を生じさせが、その他演算子は左辺値を生じさせない by 規格 で、?:演算子で左辺値を生じさせる(↓のような)ものは規格外の動作 #include <stdio.h> int main() { int i=1,j=2,k=3; k>2?i:j=4; /* 4 を ( k>2 が真なら i に 偽なら j に ) 代入 */ printf("%d, %d, %d\n",i,j,k); return 0; }
このオセロってやっぱり人間V.S.人間?
>>247 規格が手元にないので間違ってるかもしれませんが…
g++はもちろん、bccでも左辺値は生じますので、左辺値は生ずるものと考えられます
ちなみに、CとC++では解釈が変わります
>>246 の?:演算子を例にすると、Cでは、
((k>2)?(i):(j))=4;
と解釈されますが、C++だと
(k>2)?(i):(j=4);
と解釈されます (:以降の扱いが変わる)
C++では、?〜:の間の動作と:以降の動作を同じにしたのだと思われます
と言う訳で、C++で左辺値を生じさせるためには
(k>2?i:j)=4;
のようにすればOKです ( g++ 及び bcc では動作確認 )
ちなみに、bccは駄目ですが、gccではCのソースでも、?:演算子は左辺値を生じます
が、↑に書いた通り、解釈が変わるので、同じソース (
>>246 ) をコンパイルしても
gcc と g++ で結果が変わります
すげぇー、CPUとの対戦かよ。 感動した!
じゃ、そこのコードは
(p=8;++p<82;k(),printf("・\0○\0●\0\n"+m[p]))p%9||(m[p]=9);for(a?d=a=p=9:s?s=0,
でどう?
int*i,p,t,a,d,v,m[90]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=p,d))do m[s]=t,s+=*
i;while(m[s]-t);}}main(){for(m[41]=m[49]=s=t=3,m[40]=m[50]=6;s-1;a=d=0){for(p=
9;p<82;k(),printf("・\0○\0●\0\n"+m[p++]))p%9||(m[p]=9);for(a?a=d=p=9:s?puts(
"pass"),s=0:s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
>>248 パート1は度肝を抜く作品の目白押しなので、一度ゆっくりと読んでみ。
>>251 実行してないから分からんが、そのコードは
p%9||(m[p]=9);k();
と等価になるけど、
p%9?k(),v:m[p]=9;
とは、k()の実行条件が明らかに異なるけど、大丈夫なの?
つーか、本当に、1度、ソースを解読したの?
253 :
デフォルトの名無しさん :03/07/21 00:27
>>252 理解できないなら、実行してしか判断できないのに、
実行せずに文句言ってはいかんな。
>>253 理解するも何も、そんなコード、
元のソースが無い限り、読む気にならんて
>>254 理解できないなら四の五の言わずに実行しろよ(w
>つーか、本当に、1度、ソースを解読したの? 自分が読めないからって(w いや俺も読めないけど(w
>>254 indentでも通したらいいんでないのか
いや漏れも読んでないけど
なんつーかな、(おそらく、244==251の)次の発言
>それにしても美しいソースコードです。
が、自我自賛にしか聞こえないから、
ソースを読む気にもならんし、実行する気にもなれんのよ…
まぁ、それでも、
>>244 の演算子の問題が無ければ、
素直にコンパイル&実行してた思うし、
>>252 の発言もしてないよ
つーか、問題無く本当に動くの?
理解できないことを棚に上げて、
妙竹林な理屈をたてて実行しないことが正当化のように装い
それだけならまだしも、実行もしていないソースコードを批判するなんて
なんというか陰鬱な性格だな。
言い訳と嫉妬の人生を
>>259 かいま見た。
>>260 だぁ、もうウゼェな…
読めば良いんだろ?読めば。
つーわけで、k()は
void k(){if(m[p]==0)…
で、m[p]が0でないと実効されない。よって、
p%9||(m[p]=9);k();
p%9?k(),v:m[p]=9;
の2つのコードは等価
つーか、演算子の優先順位も知らねーで、
解読しただの、美しいコードだの、アホじゃねーのか?
だいたい、オセロのソースくれって言ったの、お前じゃねーのか?
このスレにでるまえに、他のスレでやってたのも、お前じゃねーのか?
ただ単に、自我自賛したいだけの、自作自演じゃねーのか?
オナニーなら、オナニーらしく、勝手に独りでやってくれよ
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | 強い電波を感知しました .| |____________| / / / _ ビビビビビ /||__|∧ / 。.|.(O´∀`) / |≡( )) ))つ `ー| | | (__)_)
>>263 オセロを作った人は、もうこのスレを見ていないと思う。
というより、part1-2 あたりの人は、ほとんどきていないだろう。
激しく攻撃されていたからね。
>>251 > パート1は度肝を抜く作品の目白押しなので、一度ゆっくりと読んでみ。
了解っす。こんな凄いのがゴロゴロあるのか。
それらを作った神達はどこへ行ったんだろう?まだこのスレにいるのかな?
もうこの板から消えた可能性もあるんだよ
(^^)
素数を求めるプログラムを書いたら7行にまとめられそうだったのでやってみました。
HSP2.6です。
// ここから
t=10000:n="p.txt":z="2\n":title "0%":dim e,t+1:notesel z:notesave n
bsave n,z,3:a=3:s=3:repeat ,3:if a>t:break:if e.a=1{i=0}else{if(a!5)&(a\5=0){
i=0}else{i=1:b=cnt-2/4:if b<1{i=1}else{c=3:repeat b,3:if a\c=0 : i=0 : break
c+=2:loop}}}if i=1{h=a:str h:h+="\n":strlen l,h:bsave n,h,l,s:s+=l:d=a*3
if d<t{e.d=1}f=a*7:if f<t{e.f=1}g=a*11:if g<t{e.g=1}}r=a*100/t
if (p!r)&(r\10=0){title ""+r+"%"}p=r:a+=2:await:loop:title "100%":stop
// ここまで
1番最初にある変数tまでの素数を求め続けます。
10万までの素数を求めるのにpen3で約1分10秒かかりました。
元のソース
http://shobon.net/user/sword/prime.txt 実行ファイル
http://shobon.net/user/sword/prime7.zip
>>269 part2 の 802-810 を見るとよいよ。
1〜nまでの素数を求めるプログラム 見ればわかるがC言語 #include<stdio.h> #include<math.h> void main(){int n,a=0,i,j;scanf("%d",&n);printf("%7d ",2); for(i=3;i<=n;i+=2){for(j=3;j<=int(sqrt(i));j+=2)if(i%j==0){a=1;break;} if(a==0){printf("%7d ",i);}else{a=0;}}} 100万までの素数を求めるのにセレロン1.2GHzで10秒くらいかな? もっと短く、もっと速くできそうだけど短すぎるんで七行プログラミングにはどうかと・・・
>>271 part2 の 802-810 を見るとよいよ。
>>272 もちろん、見ました
でも、短くするためとはいえ非効率かと
素数ねぇ。ハァ。
7行で何かすることが目的だから別に役に立たなくてもOK。 だよね。
>>275 簡単に7行以下になる題材だと…
まぁ、本人にとってはいろんな意味で勉強になるだろうが。
JOJOオタには必要なものだぞ こころが安まる…
>>278 見てきたよ
うは、完全にコピペじゃん。
彼が、S◆Q14CxNhI 氏ならいいんだけどね
その他の「佳作」なんかも低レベルだし、なにそこ
そっちのスレにも書いてあったけど 優秀な作品作る人はもう来なくなるだろうね
283 :
デフォルトの名無しさん :03/08/05 21:22
久々に活発になってきましたね うれしいです。 7行でできることって限界がありますよね。 Windowsプログラムってしばらく出てませんよね。
おいおいおいおい、どこが活発なんだよ。 それとsageてね
>>284 すいませんでしたこれからはsageます。
>>278 みたいなやつが
俺は大学出だからな!
高卒死ね!
とか言ったりするんだろうな・・・
誰かその大学に伝えるべきだとは思うんだけどなぁ。
ちょっと前のことになるんだけど、
ttp://www.gsic.titech.ac.jp/supercon/supercon2003/yosen.html の回答を7行で作ってみた。
#include <stdio.h>
int m[10000],p,t,P,L,T,j,N=100;S(p,l,i){++l>L?P=p,L=l,T=t:0;for(;m[p]=i--;)j=(i
&1?N:1)*(i&2?1:-1)+p,(i&1?p/N:p%N)-(i&2?99:0)&&m[j]==t?S(j,l,3):0;m[p]=t;}main(
int A,char**B){FILE*f;if(A<2?puts("No argument.")*0:(f=fopen(B[1],"r"))||0*puts
("I/O error.")){for(;(t=getc(f))+1;t-10&&p<N*N?m[p++]=t:0);if(p-N*N)puts("Stra\
nge data.");else{for(;p--;)t=m[p],S(p,0,3);printf("x=%d,y=%d,t=%c,l=%d\n",P%N,P
/N,T,L);}}return 0;}
VC++6.0では警告も出ません。
実行速度については触れないで下さい(汗
久しぶりに投稿 パズル N Queen #include <stdio.h> int q=5,b[16][16],n,i,j,k,l,m,o;void main(c,v)char**v;{for(n=0;;q++){for(i=0;i<q ;i++)for(j=0;j<q;j++)b[j][i]=0;while(q!=n){for(i=0;i<q;puts(""),i++)for(j=0;j<q; printf(b[j][i]?"Q":"*"),j++);scanf("%d %d",&k,&l);b[k][l]=1;n++;puts("\n");for(i =0;i<q;i++){for(j=0;j<q;j++){if(i!=l||j!=k){m=b[j][i]&1;o=n;n-=(i==l)&m?m:0;n-=( j==k)&m?m:0;n-=(i-l==j-k)&m?m:0;b[j][i]-=!(o==n);}}}}puts("clear\n");}return;} x yで座標指定。 ・・・って六行になってしまった(;´Д`)
Nクィーン?8クィーンの亜種か?
普通、8-QueenつったらN-Queenを兼ねるわけだが。
>>291 逆じゃね?N-Queenつったら8-Queenをかねる。
N-Queen ⊃ 8-Queen
素数 (Ruby) p (a=(2..100).to_a).each{|i|a.reject!{|j|j%i==0&&j>i}} 54バイト perlならもっと短くできるかna.
7行テトリス更新です
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
297 :
デフォルトの名無しさん :03/08/20 22:02
からあげ
うまうま
299 :
デフォルトの名無しさん :03/08/26 19:24
たつた
−−−−−−−−−−−−−終了−−−−−−−−−−−−−
-----------再開----------------------
- - - - - - -一時停止- - - - - - -
- - - - - 山折り - - - - -
――― - ――― - ―谷折り― - ――― - ―――
閑古鳥が鳴いてるので。 変数機能付き逆ポーランド記法電卓 #include <stdio.h> int s[100],v[255],*t,j=0,l,k=0,c,m,o;void f(char *p){l=*t;c=*p;if(c=='+'){t--; *t+=l;}if(c=='-'){t--;*t-=l;}if(c=='*'){t--;*t*=l;}if(c=='/'){t--;*t/=l;}if(c== '^'){t--;for(m=1,o=*t;m<l;m++)*t*=o;}if(c==' '||c=='\0')if(k){t++;*t=j;j=0;k=0; }if(c=='\0')return;if(c>='0'&&c<='9'){j=j*10+c-'0';k=1;}if(c>='a'&&c<='z'){j= v[c];k=1;}f(p+1);}int main(){char n[1000];for(;;){t=s+1;gets(n);if(n[0]=='.') break;if(n[1]=='='){f(n+2);v[n[0]]=*t;}else{f(n);printf("%d\n",*t);}}return 0;} *"c=a 10 * b +"のように代入文が使えます。 *普通に"10 a +"のように入力すると計算結果を表示します。"a"とだけ入力するとaの中身を表示します *変数はa-zまでが使えます *使える演算子は+,-,*,/,^(べき乗)です
#include <stdio.h> int s[100],v[255],*t,j=0,l,k=0,c,m,o;void f(char *p){l=*t;c=*p;if(c=='+')*--t+=l; if(c=='-')*--t-=l;if(c=='*')*--t*=l;if(c=='/')*--t/=l;if(c=='%')*--t%=l;if(c== '^'){t--;for(m=1,o=*t;m<l;m++)*t*=o;}if(c==' '||c==0)if(k){*++t=j;j=k=0;}if(c== 0)return;if(c>='0'&&c<='9'){j=j*10+c-'0';k=1;}if(c>='a'&&c<='z'){j=v[c];k=1;} f(p+1);}int main(){char n[1000];for(;;){t=s+1;gets(n);if(n[0]=='.')break;if(n[1] =='='){f(n+2);v[n[0]]=*t;}else{f(n);printf("%d\n",*t);}}return 0;} 少し短縮して剰余演算子(%)を使えるようにした
せめて==を全部消してから書き込めよ…
>>308 >306 >307とは別人だけど、==の消し方がわかりません。
そのほかのところをあちこち削ったら5行くらいにはなったけど、==がどうしても気になって。
だいぶ変形しないと==を消すのって難しい気がしました。
んで、いい方法あったら教えてください。
俺としては'+'とかを数字にして欲しかったな。
大した物でもないし何度も投稿するのも悪いと思って投稿しなかったんだが…… #include <stdio.h> int s[99],v[255],*t=s,j=0,k,l,c,o;char n[99],*p;void f(){c=*p;c==32|!c?k?*++t=j, j=k=0:o:c-=41;if(c){l=*t;c==2?*--t+=l:c==4?*--t-=l:c==1?*--t*=l:c==6?*--t/=l:c== -4?*--t%=l:c>6&c<17?j=j*10+c-7,k=1:c>55?j=v[*p],k=1:--l;if(c==53)for(o=*--t;l;-- l)*t*=o;p++;f();}}int main(){while(*(p=gets(n))){if(n[1]-61)f();else p+=2,f(),v[ *n]=*t;printf("%d\n",*t);}return 0;} ==の効率的な減らし方が分からない…… 無理矢理消そうとすると余計に長くなる気がする
7行カラーテトリスができているのに、ここに書き込みしないのは、もう…
いちお、>310から縮めてみた。 #include <stdio.h> int s[99],v[255],*t=s,j,k,l,o;char*p,c,n[999];f(){c=*p;c-32&c?c-=41:k?*++t=j,j= k=0:o;if(c){l=*t;c==2?*--t+=l:c==4?*--t-=l:c==1?*--t*=l:c==6?*--t/=l:c==-4?*--t %=l:c>6&c<17?j=j*10+c-7,k=1:c>55?j=v[*p],k=1:--l;if(c==53)for(o=*--t;l--;)*t*=o ;f(++p);}}main(){while(*(p=gets(n)))n[1]==61?f(p+=2),v[*n]=*t:f(),printf("%d\n" ,*t);return 0;} 三項演算子の優先順位の関係で、この状態から==を減らすのは俺にはできない。。
>>313 そいつ痛いキャラになってしまったからなぁ
Sなら名無しを装って自作自演することも十分ありうるな
320 :
part2の1 :03/09/05 02:17
part2じゃなくてline2にしとけばよかった…。 と、言ってみるテスト(・∀・)
終了の予感
>>322 自分の作品?もう少し難しい(79*7に収まりそうに無い)お題に挑戦してみよう
324 :
デフォルトの名無しさん :03/09/06 02:39
7行にこだわりすぎるから、沈滞化したのかも。 このあたりで、7行改め553文字以内という制限にしてみては? つまり適当に改行を入れてコンパイルが通るようにすればOKとする。 例えば #include<windows.h>int main(...もOKとなって少し制限が緩くなる。
326 :
デフォルトの名無しさん :03/09/06 04:36
>>311 独り立ちしたと言う事で。
>>325 それだとあまり変わらないから、1レスプログラミング見たいなのが良いな。
工夫しなくてもいろんなのが作れてしまうが。
nullpo
galtu
純粋にレベルが下がったからじゃないか?<沈滞化
>純粋にレベルが下がったから っていうなら、お前が書けばいいだろって思う。
マクロ展開が結構使えてかなり変わってくると思うが。
>>331 そういう反応がレベルが下がったと言われる所以では?
パート1の猛者が何でいなくなったのかを考えれば自然とわかるはず…
334 :
デフォルトの名無しさん :03/09/08 23:39
//最大公約数を求める #include <stdio.h> unsigned int gcd(unsigned int a,unsigned int b){if(a<b)a^=b;b^=a;a^=b; a%=b;if(!a)return b;else return gcd(b,a);} int main(void){unsigned int a,b,c;while(1){printf("最大公約数を求めます\n"); printf(数字を2つ入力してください");"scanf("%d%d",&a,&b);if(a&&b)break;printf( "0は入力しないでください\n");}c=gcd(a,b);printf("%dと%dの最大公約数は%dです",a, b,c);return 0;}
>>334 ...7行スレなんだからせめてこのくらいは縮めてから書こうよ。
unsigned int gcd(unsigned int a,unsigned int b){return b?gcd(b,a%b):a;}
初心者が宿題を解くスレになってるぞ!
まあ、ちゃんとプロンプトが出てユーザーに親切なあたりはいいんじゃないでしょうか… てきとうに5行。 #include <stdio.h> typedef unsigned int U;U gcd(U a,U b){return b?gcd(b,a%b):a;}int main(void){ U a,b,c;while(1){printf("最大公約数を求めます\n数字を2つ入力してください"); scanf("%d%d",&a,&b);if(a&&b)break;printf("0は入力しないでください\n");} c=gcd(a,b);printf("%dと%dの最大公約数は%dです",a,b,c);return 0;}
ついでにプロンプト無し不親切版4行。3行になりそうなんだんがなあ。 #include <stdio.h> typedef unsigned int U;U g(U a,U b){return b?g(b,a%b):a;}int main(void){U a,b, c;while(1){scanf("%d%d",&a,&b);if(a&&b)break;}c=g(a,b);printf("GCD(%d,%d)=%d" ,a,b,c);return 0;}
3行なった。 が、コンパイラによってはreturnがないパスがあるとか言うかもしれん。 とりあえず手元のclとgccは何も言わなかったが… #include <stdio.h> typedef size_t U;U g(U a,U b){return b?g(b,a%b):a;}int main(){U a,b;for(;;){ scanf("%d%d",&a,&b);if(a&&b){printf("GCD(%d,%d)=%d",a,b,g(a,b));return 0;}}}
型を変えて、構造を前のに戻す。構造戻したのでreturnはちゃんと配置。 負数と負数のGCDは負数で計算出しちまうが…数学的にどうなんでしょう? #include <stdio.h> int g(int a,int b){return b?g(b,a%b):a;}int main(){int a,b;for(;;){scanf( "%d%d",&a,&b);if(a*b>0)break;}printf("GCD(%d,%d)=%d",a,b,g(a,b));return 0;} っていうかなにやってるんだ俺_| ̄|○
ま、その調子でもっと難しいお題に挑戦してくれ。
不親切/入力チェック無し/mainから値をreturnしてないのでC99で。 #include <stdio.h> g(a,b){return b?g(b,a%b):a;}main(a,b){scanf("%d%d",&a,&b);printf("%d",g(a,b));}
#include</dev/tty>
初心者なりにがんばってみました 円周率を7行で #include<stdio.h> #include<time.h> #include<stdlib.h> int main(){int i,num=10000000;float a,b,answer,counter=0,r=30000; srand((unsigned int)time(NULL));for(i=0;i<num;){if((a=rand())>r)continue; if((b=rand())>r)continue;i++;if(((a-r/2)*(a-r/2)+(b-r/2)*(b-r/2))<(r*r/4)) counter++;}answer=(counter/num)*4;printf("%2.5f",answer);return 0;}
#include<stdio.h> #include<time.h> #include<stdlib.h> 初心者なりにがんばってみました 円周率 int main(){int i,num=10000000;float a,b,answer,counter=0,r=30000; srand((unsigned int)time(NULL));for(i=0;i<num;){if((a=rand())>r)continue; if((b=rand())>r)continue;i++;if(((a-r/2)*(a-r/2)+(b-r/2)*(b-r/2))<(r*r/4)) counter++;}answer=(counter/num)*4;printf("%2.5f",answer);return 0;}
346 :
デフォルトの名無しさん :03/09/09 21:20
やべ、にかいかいてしまった
>>344 >>345 part2の827見れ。
100万桁くらいは求められるよ。
でも、スレを盛り上げようとしてるのはわかるから気にしないけどねヽ(´ー`)ノ
348 :
デフォルトの名無しさん :03/09/09 21:37
いや、過去の奴とは求め方が違うさ。 数式使わずに原始的な針投げ式使ってるあたりが高感度高いね。 というわけでざっと縮めてこんなもんかな? #include <stdio.h> #include <time.h> #include <stdlib.h> int main(){int i,n=9999999;float a,b,c=0,r=RAND_MAX;srand((unsigned)time(NULL) );for(i=0;i<n;i++){a=rand();b=rand();if(a*a+b*b+r*r/4<a*r+b*r)c++;}printf("%2" ".5f",c/n*4);return 0;}
×高感度 ○好感度 なにやってんだか…_no
まあ盛り上げようとしてくれてるんだから無駄にはすまい。 mainがreturnしなかったり、timeの戻り値がunsigned intだと仮定してたり、 NULLが0だと仮定してたり色々気持ち悪いけど5行本体2行。 …微妙、か? #include <stdio.h> #include <time.h> #include <stdlib.h> main(){int i,n=9<<21;double a,b,c=0,r=RAND_MAX;srand(time(0));for(i=0;i<n; i++){a=rand();b=rand();if(a*a+b*b+r*r/4<a*r+b*r)c++;}printf("%2.5f",c/n*4);}
352 :
デフォルトの名無しさん :03/09/09 22:09
#include <stdio.h> #include <time.h> #include <stdlib.h> main(){int i,n=9<<21;double a,b,c=0,r=RAND_MAX;srand(time(0));for(i=0;i<n; i++){a=rand();b=rand();if(a*a+b*b+r*r/4<a*r+b*r)c++;}return printf("%2.5f",c/n*4);}
353 :
デフォルトの名無しさん :03/09/09 22:12
> NULLが0だと仮定してたり コード上では0だが。 srand(time(0));のことを言っているんだろうが、time.hをインクルードしているから何の問題もない。
>NULLが0だと仮定してたり 激しく萎え
>>352 printfの戻り値をreturnするのはいいアイデアだが、
一行80桁の制約のためちと惜しい。
(ヘッダ省略)
int main(){int i,n=9<<21;double a,b,c=0,r=RAND_MAX;srand(time(0));for(i=0;i<n;
i++){a=rand();b=rand();if(a*a+b*b+r*r/4<a*r+b*r)c++;}return printf("%2.5f",c/n
*4);}
*4);}が気になるな
>>353 そうだったのか…
手元にあるtimeのマニュアル見ると「NULLも指定できる」と書いてあったんでな。
NULLが0かどうかは(Cでは)処理系依存じゃなかったか?
C++だと0らしいけど。
>>355 > NULLが0かどうかは(Cでは)処理系依存じゃなかったか?
1.NULLは0。
2.0はヌルポインタ。
3.ヌルポインタが0番地かどうかは処理系依存。
#include <stdio.h> #include <time.h> #include <stdlib.h> int main(){int i=0,n=9<<21;double a,b,c=0,r=RAND_MAX;srand(time(0));while(i<n){a =rand();b=rand();if(a*a+b*b+r*r/4<a*r+b*r)c++;i++;}return printf("%.5f",c/n*4);}
略 int main(){int i,n=9<<21;double a,b,c=0,r=RAND_MAX;srand(time(0));for(i=n;i--; c+=(a*a+b*b)/r+r/4<a+b)a=rand(),b=rand();return printf("%2.5f\n",c/n*4);}
NULLを使うのは推薦しない。ゼロで十分役目を果たす。 NULLという語を使うのは文書だけにして、 いいかげん#undef NULLしたまえ。
なんだ、廃れたかと思えばまだまだ猛者がいるんじゃねえか。 略 int main(){int i=9<<21,n=i;float a,b,c=0,r=RAND_MAX;srand(time(0));for(;i--;c+= (a*a+b*b)/r+r/4<a+b)a=rand(),b=rand();return printf("%2.5f",c/n*4);} まあNULL議論はやめようぜ。とりあえずのことスレ違いだ。
意味論ではNULL!=0
>>360 #include <stdio.h>
#include <time.h>
#include <stdlib.h>
int i=9<<21,n=i;float a,b,c,r=RAND_MAX;main(){srand(time(0));for(;i--;c+=(a*a+b
*b)/r+r/4<a+b)a=rand(),b=rand();return printf("%2.5f",c/n*4);}
mainの戻り型、省略したらintになるとおもったけどだめけ?
それと、大域変数は自動的に0に初期化されます。
このスレ的には文句なしに0で決まりだろ。
>>362 hoge.c:4: initializer element is not constant
ってエラーが出るんですが。gcc (GCC) 3.2 20020927 (prerelease)
どこまでのwarningだったら許されるの?一応4行だけどこれダメ? #include <stdio.h> #include <stdlib.h> time();float a,b,c,r=RAND_MAX;main(){int n=9<<21,i=n;srand(time(0));for(;i--;c+= (a*a+b*b)/r+r/4<a+b)a=rand(),b=rand();return printf("%.5f",c/n*4);} $ gcc -Wall hoge.c hoge.c:3: warning: type defaults to `int' in declaration of `time' hoge.c:3: warning: data definition has no type or storage class hoge.c:3: warning: return type defaults to `int' $ cl /W3 hoge.c hoge.c(4) : warning C4244: '=' : 'int' から 'float' に変換しました。データが失われているかもしれません。 hoge.c(4) : warning C4244: '=' : 'int' から 'float' に変換しました。データが失われているかもしれません。
>>365 すまんです。脊髄反射で変形したから。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int i,n=9<<21,a,b,r=RAND_MAX;float c;main(){for(srand(time(0));i++<n;c+=(a*a+b*
b)/r<r)a=rand(),b=rand();return printf("%f",c/n*4);}
これでVC++ではエラーなし。
b=rand(a=rand());ってすると警告出るけど一応おっけ。1Byte縮む。
gccは入れてないからわかんないけどたぶん大丈夫・・・。
>>367 む・・・a,bがintになってますよ。
$ cl hoge.c
$ ./hoge.exe
3.141047
$ ./hoge.exe
3.141385
$ gcc -Wall hoge.c
hoge.c:4: warning: return type defaults to `int'
$ ./a.exe
3.555556
$ ./a.exe
3.555556
$ ./a.exe
3.555556
int n=9<<21,i=nをmainの中に入れればいいのだけでは?
i,nは0で初期化する必要もないわけで寿司。
>>366 を参照(
>>362 さんのを改良したやつですよ)
うーむ。 今の流れはそれでいいとして、 誰か「これを7行で?」というネタを振ってくれ
既出大だけど、○×ゲーム。
>>370 うむ、既出なり。 part3 の 527, 529
パズルをとくのはどうよ。ナンプレとか
各種ソート(アルゴリズム)
メール感染型無害ウィルス
D言語だと二行にできました。 import random;int main(){uint i=0,n=9<<21;real a,b,c=0,r=i.max;for(;i<n;i++){a= rand(),b=rand();if(a*a+b*b+r*r/4<a*r+b*r)c++;}printf("%2.5Lf",c/n*4);return 0;} Cと異なり#includeで一行取らないぞ!これからはDの時代だ!w
D言語イイ(・∀・)! 名前は知っていても触ったことがないんだよね
ナンプレはやってみたらできたのではってみる。 あんまりテクニカルには縮めてないけど。 #include <stdio.h> int A,m[81],i=81,c;FILE*F;void S(int*s){int m[81],i=81,j=i;for(;j--;!m[j]?i=j:0 )m[j]=s[j];if(i<81)for(j=48;++j<58;A?m[i]=j,S(m),m[i]=0:0)for(A=1,c=9;c--;j==m[ c*9+i%9]?A=0:0,j==m[i/27*27+c/3*9+i/3%3*3+c%3]?A=0:0)j==m[i/9*9+c]?A=0:0;else for(j=81;j--;j%9?0:putchar(10))putchar(m[j]);}main(C,V)char**V;{for(C>1?F=fopen (V[1],"r"):0;F&&i&&(c=getc(F))+1;c-10?m[--i]=c>48&c<58?c:0:0);i?puts(C>1?F? "Strange Data":"IO Error":"No Argument"):S(m);return 0;} 使い方: コマンドラインから、ナンプレのデータのファイル名を引数にとる。 データファイルの形式は、 __5___84_ _1___2__9 7_3_8___2 ___6___9_ __7___4__ _3___5___ 4___6_9_5 5__4___1_ _28___7__ のような感じ。 改行文字は読み飛ばし。1-9の数字のみ認識して他の文字は空白とみなす。 存在する全ての解を吐き出すので、問題作った時に複数の解がないかチェックできる。
ご苦労。 7行でメール感染型ウイルスも簡単に作れるだろうし、何作るかなぁ?
年賀状作成ソフト。
>>378 ウィルスはいちおう建前上はだめってことで。
何とかメッセンジャーのような、メッセージのやり取りをするものは、どうか?
ウィルスは法律も改正されたりして所持も禁止されるんだっけ?
P2Pで無意味なやりとりをするプログラム
P2Pでファイル送りつけるプログラム
年賀状送受信ソフト。
>>379 >>384 年賀状へのこだわりにワロタ
>>380 いいかも。誰か1レスぐらいのを上げて皆で縮めていくというのはどうだろうか。
俺はその誰かさん待ち。
メッセンジャーね。言語はJavaかな、やっぱ。 P2Pじゃなくとも、コンピュータ間のメッセージやりとりなら出来そう。 久々に現役復帰して作ってみるかな。でも今日はもう寝る。
メッセンジャーです。 使用方法:起動して"相手のコンピュータ:message"を入力 例: localhost:test Message:test import java.io.*;import java.net.*;public class message{public static void main (String s[]){new Thread(){public void run(){try{for(;;){ServerSocket s=new ServerSocket(91);System.out.println("Message:"+new BufferedReader(new InputStreamReader(s.accept().getInputStream())).readLine());s.close();}}catch( Exception e){System.out.println("err");}}}.start();for(;;){try{String x=new BufferedReader(new InputStreamReader(System.in)).readLine();int p=x.indexOf(':' );OutputStreamWriter a=new OutputStreamWriter(new Socket(x.substring(0,p),91). getOutputStream());a.write(x.substring(p+1)+"\n");a.flush();a.close();}catch( NullPointerException e){}catch(Exception e){System.out.println("err");}}}} 実はJavaのプログラムはほぼ初めてです。9行なので、7行はすぐでしょう。
なんかクラス名、メソッド名にほとんど費やしてるな
7行に縮めてみました。使い方は変わっていません。 Java Messenger 使用方法:起動して"相手のコンピュータ:message"を入力 例: 127.0.0.1:メッセージ Message:メッセージ import java.io.*;import java.net.*;class m{public static void main(String[] a){ for(new Thread(){public void run(){try{for(ServerSocket s=new ServerSocket(91); ;System.out.print("message:"+w(s.accept().getInputStream())));}catch(Exception e){}}}.start();;)try{a=w(System.in).split(":",2);OutputStream o=new Socket(a[0] ,91).getOutputStream();o.write(a[1].getBytes());o.close();}catch(Exception e){e .printStackTrace();}}static String w(InputStream i)throws Exception{return new BufferedReader(new InputStreamReader(i)).readLine()+"\n";}} たまに起動しても反応しないことがありますが、そのときは再起動してください。
MIDIプレーヤ(Format0のみ)
#include <stdio.h>
#include <windows.h>
FILE*m;int d,r,c,p,u,o;g(){return feof(m)?0:getc(m);}f(s){while(s--)g();}z(){for
(c=~(r=0);c
>>7 ;)r=r<<7|(c=g())&127;}main(n,v)char**v;{HMIDIOUT h;midiOutOpen(&h,
-1,0,0,0);m=fopen(v[1],"rb");f(12);d=g()<<8|g();f(8);while(!feof(m)){z();Sleep(p
*r/d
>>10 );u=(c=g())
>>4 ;if(u-15){c=u<8?u=o
>>4 ,o|c<<8:(o=c)|g()<<8;u<12|u>13?c+=g(
)<<16:0;midiOutShortMsg(h,c);}else c-255?z(),f(r),1:g()-81?z(),f(r):(g(),p=g()<<
16|g()<<8|g());}}
・Sys.Exclusiveは送出しません
・BCCでコンパイル確認
・8行……もう少し短くなるかも
おまけ。
FILE*m;char msg[][20]={"NoteOff","NoteOn","AfterTouch","CtrlChange","ProgChange"
,"ChPress","PitchBend"};int d,r,c,p,u,o,l=0;g(){return feof(m)?0:getc(m);}z(){
for(c=~(r=0);c
>>7 ;)r=r<<7|(c=g())&127;}f(s){while(s--)g();}main(n,v)char**v;{
HMIDIOUT h;midiOutOpen(&h,-1,0,0,0);m=fopen(v[1],"rb");f(12);d=g()<<8|g();f(8);
while(!feof(m)){z();l+=r;Sleep(p*r/d
>>10 );u=(c=g())
>>4 ;if(u-15){c=u<8?u=o
>>4 ,o|c
<<8:(o=c)|g()<<8;u<12|u>13?c+=g()<<16:0;printf("%4d.%d %6X %2d [%s]\n",l/d/4,
l%(d*4)/d+1,c,o&15,msg[u-8]);midiOutShortMsg(h,c);}else c-255?z(),f(r),1:g()-81?
z(),f(r):(g(),p=g()<<16|g()<<8|g());}}
一応7行達成。
なんどもすんません。
#include <stdio.h>
#include <windows.h>
FILE*m;int d,r,c,p,u,o,e=1;g(){return feof(m)?e=0:getc(m);}z(){for(c=~(r=0);c
>>7 ;)r=r<<7|(c=g())&127;}f(s){while(s--)g();}main(n,v)char**v;{HMIDIOUT h;m=fopen(v
[1],"rb");f(12);d=g()<<8|g();f(8);for(midiOutOpen(&h,-1,0,0,0);e;)z(),Sleep(p*r/
d
>>10 ),u=(c=g())
>>4 ,u-15?c=u<8?u=o
>>4 ,o|c<<8:(o=c)|g()<<8,u<12|u&2?c+=g()<<16:0,
midiOutShortMsg(h,c):c-255?z(),f(r):g()-81?z(),f(r):(g(),p=g()<<16|g()<<8|g());}
>390 g()<<8|g()の類を回避しての7行化を希望
>>392 gccでリンクできなかったので、実際に動くかどうか検証はしていないけど、
うまい具合に実装していて感心するところが多かった。このスレ初参加?
f、z、g関数の使い方は今後の参考になる。
みんなもちゃんといい作品には反応してやろうよ。392のレベルはかなり高いぞ。
神の集うスレ
>392を削ってコンパイル通しただけで何もチェックしてないけど。
評価順序が不定な場所の解釈が間違ってたらr<<8|cからr|c<<8*sに。
#include<stdio.h>
#include<windows.h>
FILE*m;int r,c,p,u,o,e=1;g(){return c=feof(m)?e=0:getc(m);}f(s){for(r=0;s--;r=s
<0?s*=c
>>7 ,r<<7|c&127:r<<8|c)g();return r;}main(d,v)char**v;{HMIDIOUT h;m=fopen
(v[1],"rb");f(12);d=f(2);f(8);for(midiOutOpen(&h,-1,0,0,0);e;u-15?u<8?u=o
>>4 :(o
=c,g()),r=c<<8|o,midiOutShortMsg(h,u-12U>1?r|g()<<16:r):c>254&&g()==81?g(),p=f(
3):f(f(-1)))Sleep(p*f(-1)/d
>>10 ),u=g()
>>4 ;return midiOutClose(h);}
398 :
デフォルトの名無しさん :03/09/21 17:30
age
>>389 どうよ?初めてのJavaなので評価キボンヌ
400 :
supermathmania ◆ViEu89Okng :03/09/22 17:24
2行目から私のΓ関数プログラム(試作版) #include<stdio.h> #include<math.h> #include<stdlib.h> main(int argc,char** argv){double x,y=0.,m=0.;long i;if(argc<2){exit(0);} x=atof(argv[1]);for(i=0;i<=1000000;i++){m+=(x+i)*log(1/(x+n)+1)-1);} y=sqrt(8*atan(1))*pow(x,x-.5)*exp(-x)*exp(m); printf("G(%f)=%f\n",x,y);return 0;}
401 :
supermathmania ◆ViEu89Okng :03/09/23 16:58
書き直し。2行目から私のΓ関数プログラム(試作版) #include<stdio.h> #include<math.h> #include<stdlib.h> main(int argc,char"" argv){double x,y=0.,m=0.;long i;if(argc<2){exit(0);} x=atof(argv[1]);for(i=0;i<=1000000;i++){m+=(x+i+.5)*log(1/(x+i)+1)-1;} y=sqrt(8*atan(1))*pow(x,x-.5)*exp(-x)*exp(m); printf("G(%f)=%f\n",x,y);return 0;}
402 :
supermathmania ◆ViEu89Okng :03/09/23 17:01
char"" → char**
4つの数字で10作る7行ってどうよ?
>>403 JavaScriptで普通に書いて30〜40行くらいのを見たことがある。
ダイブ前なので、URLは失念。有名どこだったのは確かだが・・・
7行楽勝でしょ。なんなら今から作ろうか?
>>406 わーいヽ( ´ー`)丿 楽しみにしてるよ
>>389 mainメソッドの引数、
String[] a
を
String[]a
にして-1Byte。
やったね(・∀・)!!
406が来ないので代わりに
>>403 @U=qw(+ - * /);for($o=-1;++$o<64;){push@u,[$U[$o&3],$U[$o
>>2 &3],$U[$o
>>4 &3]]}
$_='(v0x0v1)x1(v2x2v3),((v0x0v1)x1v2)x2v3,v0x0(v1x1(v2x2v3)),v0x0((v1x1v2)x'.
'2v3),(v0x0(v1x1v2))x2v3';s/(\w)(.)/\$$1\[$2]/g;sub c{my%c;map{return 1 if($c
{$_}++)}(split//,$_[0]);0}@e=split/,/;for($n=1234;$n<9999;){if(!$h{$k=join'',
sort @v=split//,$n}){for($o=-1;++$o<64;){@x=@{$u[$o]};foreach $e(@e){$_=eval
"\"$e\"";if(eval==10){$h{$k}=1;print "$n : $_\n";$o=64;last}}}}while(++$n=~0
||$n<9999&&c$n){}}
暇な人はuse strict;my(@U,@u,$o,@e,$n,%h,$k,@v,@x,$e);を突っ込んだり
0や数字の重複を許すようにしてみて遊んでくだちい。
>>410 ちなみに重複を許す場合は 9999 : ((9*9)+9)/9 に注意。
同じく406がこないのでCで書いた切符問題。 #include <stdio.h> int i,j=10000,k;double n[4];char*s="+-*/",c[4][14];void f(double*l,char c[][14] ,int n){int b,j;double x,y,m[4];char*p,d[4][14];--n||*l>10.001|*l<9.999||puts(* c);for(b=n;b--;){x=l[b],y=l[b+1];for(i=n;i--;sprintf(d[i],"%s",c[i+(i>b)]))m[i] =l[i+(i>b)];sprintf(d[b],"(%s %s)",c[b],c[b+1]);for(j=4;j--;f(m,d,n)){m[b]=j?j- 1?j-2?y*y<.0001?999:x/y:x*y:x-y:x+y;for(p=c[b];*p;p++);d[b][p-c[b]+1]=s[j];}}} main(){for(;j--;f(n,c,4))for(k=j,i=4;i--;k/=10)*c[i]=(n[i]=k%10)+48;return 0;} 9999→0000までの全ての解を吐き出します。
>>410 @U=qw(+ - * /);@u=map[@U[$_&3,$_
>>2 &3,$_
>>4 &3]],0..63;$_='(v0x0v1)x1(v2x2v3),'.
'((v0x0v1)x1v2)x2v3,v0x0(v1x1(v2x2v3)),v0x0((v1x1v2)x2v3),(v0x0(v1x1v2))x2v3';
s/(\w)(.)/\$$1\[$2]/g;@e=split/,/;for$n(1234..9998){if(!$h{$k=join'',sort@v=
split//,$n}){O:for(0..63){@x=@{$u[$_]};for$e(@e){$_=eval"\"$e\"";if(eval==10){
$h{$k}=1;print"$n : $_\n";last O}}}}1while++$n=~0||$n<9999&&do{my%c;grep$c{$_}
++,$n=~/./g}}
>>413 ちょっと413は出力が違うみたいですがそれを参考に
sub c{my%c;map{return 1 if($c{$_}++)}$n=~/./g;0}@e=grep s/(\w)/'$x['.(-1+ord($
1)&7).']'/eg,qw((DAE)B(FCG) ((DAE)BF)CG DA(EB(FCG)) DA((EBF)CG) (DA(EBF))CG);@
U=qw(+ - * /);@u=map[@U[$_&3,$_
>>2 &3,$_
>>4 &3]],0..63;for$n(1234..9998){if(!$h{
$k=join'',sort@v=split//,$n}){for$o(@u){@x=(@$o,@v);for$e(@e){$_=eval"\"$e\"";
if(eval==10){$h{$k}=1;print"$n:$_\n";goto O}}}O:}while(++$n=~0||$n<9999&&c){}}
perl だと、つい顔文字を探してしまいますね。
>>410-414 GJ (+ - * /)
['.(-1
↑406
# options:
# -d : 同じ数字を使わない
# -o : 1組の数字につき1つの答を出力 (出現順序を無視)
# -z : 0を含めない
${"$_"}=1for join('',@ARGV)=~/\w/g;@U=qw(+ - * /);@u=map[@U[$_&3,$_
>>2 &3,$_
>>4 &
3]],0..63;for(19..9999){my%c;next if$h{join'',sort@v=($n=sprintf'%04d',$_)=~
/./g}++&&$o||$z&&$n=~/0/||$d&&(grep$c{$_}++,@v);O:for(@u){@x=(@$_,@v);for(map
eval"\"$_\"",grep s/(\d)/\$x[$1]/g,qw/(304)1(526) ((304)15)26 30(41(526))
30((415)26) (30(415))26/){if(10==eval){print"$n:$_\n";last O}}}}
漏れがある気がするので直して下さい。
417 :
デフォルトの名無しさん :03/09/29 19:21
<body onKeyDown=K=event.keyCode><script>B="■";M=[H=529];N=23;K=0;Z=504; T=[-1,-N,+1,+N];function S(){if(Z==504){for(R=0;R<H;R++) M[R]=(R<N||R>506||! (R%N)||R%N==22)?B:"<font color=white>_</font>";for(R=0;R<100;R++){I=48+ Math.floor(R/10)*(N*2)+((R%10)*2);M[I]=M[I+T[Math.floor(Math.random()*4)]]=B; }M[Z]="G";Z=24;}Z=((K>36 && K<41)&&(M[Z+T[K-37]]!=B))?Z+T[K-37]:Z;K=0;G=""; for(R=0;R<H;R++){G+=(R==Z)?"●":M[R];G+=(R%N==22)?"<BR>":"";} document.body.innerHTML=G;setTimeout(S,99);}S();</script></body>
迷路です 移動は、←↑↓→ Gがゴールです。。。
迷路生成のアルゴは棒倒し法ですか?
G+=(R==Z)?"●":M[R]; G+=(R%N==22)?"<BR>":""; を G+=(R-Z)?M[R]:"●"; G+=(R%N-22)?"":"<br>"; にしても問題ないかな?
>419 棒倒し法の手抜きです。 すでに壁がある場合の処理が入ってないので。。。
422 :
デフォルトの名無しさん :03/09/29 19:58
Cで書いてください。
動かすキャラに色を付けてみ見るテスト。 追加: E="<a style=color:#"; 修正: "●" → E+"0f0>●</a>" 修正: "<font color=white>_</font>" → E+"fff>_</a>"
自作自演良くない。いい作品なら放っておいても見る人は見てくれるよ。 俺は今から見る。
見た。なるほどね。JavaScirptを使った7行プログラムのいい参考になった。
迷路、棒倒し法正式版に修正しました。 <body onKeyDown=K=event.keyCode><script>B="■";M=[H=529];N=23;T=[-1,-N,+1,+N]; K=0;Z=504;function S(){if(Z==504){for(R=0;R<H;R++)M[R]=(R<N||R>506||!(R%N)||R% N==22)?B:"<font color=white>_</font>";for(R=0;R<100;R++){I=48+Math.floor(R/10 )*N*2+R%10*2;U=Math.random();J=(R<10)?Math.floor(U*4):(Math.floor(U*3)+2)%4;M[ I]=M[I+T[(M[I+T[J]]==B)?J+2:J]]=B;}M[Z]="G";Z=24;}Z=((K>36 && K<41)&&(M[Z+T[K -37]]!=B))?Z+T[K-37]:Z;K=0;G="";for(R=0;R<H;R++){G+=(R-Z)?M[R]:"●";G+=(R%N-22 )?"":"<BR>";}document.body.innerHTML=G;setTimeout(S,99);}S();</script></body>
>>427 その連投といい、ageといい、自作自演といい、嫌がらせ?
>>427 なんかうざい人がいるからsageとけ。
>>427 <body onKeyDown=K=event.keyCode><script>B="■";M=[H=529];N=23;T=[-1,-N,+1,+N];K
=0;Z=504;setInterval(function S(){if(Z==504){for(R=0;R<H;R++)M[R]=(R<N||R>506||
!(R%N)||R%N==22)?B:" ";for(R=0;R<100;R++){I=48+Math.floor(R/10)*N*2+R%10*2;U=
Math.random();J=(R<10)?Math.floor(U*4):(Math.floor(U*3)+2)%4;M[I]=M[I+T[(M[I+T[
J]]==B)?J+2:J]]=B}M[Z]="G";Z=24}Z=((K>36 && K<41)&&(M[Z+T[K-37]]!=B))?Z+T[K-37
]:Z;K=0;G="";for(R=0;R<H;R++){G+=(R-Z)?M[R]:"●";G+=(R%N-22)?"":"\n"}document.
body.innerHTML="<pre>"+G},99)</script>
めんどくさいので縮めただけ
組みなおせば6行いけんるんじゃない?
419-420とか俺なんだけどさ、 理由もなく自演とか言うのやめろよ。 まぁどうせ皆ここをかちゅとかのお気に入りリストに入れて巡回しているから ageなくてもレスがついたのわかるんだけどなー
# options:
# -c : 1組の数字に対し1つの計算式のみ出力
# -d : 同じ数字を使わない
# -o : 1組の数字に対し1つの出現順序のみ出力
# -z : 0を含めない
${"$_"}=1for map/\w/g,@ARGV;for('0019'..'9999'){my%c;$n=$_;next if$h{"@{[sort@v
=/./g]}"}++&&$o||$z&&/0/||$d&&(grep$c{$_}++,@v);O:for(map[@{[qw(+ - * /)]}[$_&3
,$_
>>2 &3,$_
>>4 &3]],0..63){@x=(@$_,@v);eval==10&&do{print"$n:$_\n";$c&&last O}
for grep s/(\d)/$x[$1]/g,qw/(304)1(526) ((304)15)26 30(41(526)) 30((415)26)
(30(415))26/}}
これで全パターン出るかな。
おまいらなら、新しい圧縮・復元アルゴリズム作れそうだな…。 そんなこともないか…。
>>434 以前ム板で作られた通称「2ch圧縮」なら、7行になると思われるでし。
125 名前: 名無しさん? 投稿日: 02/05/01 15:36 ID:???
「……1…>1……
>>1 ……
>>1 !
>>1 !
>>1 !!
気に入らない……なぜ魔女の邪魔をする!なぜ私の自由にさせない!?
もう少しで完全なる2ch圧縮の世界が完成するというのに……
邪魔はゆるさんぞ……
>>1 の存在など、2ch圧縮のアルゴリズムに溶け込んでしまうがいい!!
激しい痛みとともに思考が分断され、スレも過去ログも極限にまでうすめられるのだ。
レスもできず、ネタも考えられず、思いすらない!そんな世界に、
>>1 を送ってやろう!
>>1 にできることは何も……いや、
>>1 にできることは、唯一で永遠の存在である私を崇めること!!」
これのこと?
438 :
デフォルトの名無しさん :03/10/03 22:25
age
>>436 それって元ネタはアルティミシアのコピペじゃん?
N88BASICで7行プログラミングするとどのくらいのものができる?
N88なら1行255文字になったり・・・しない? どーでもいいけど。
>>441 モニタの関係で、80*7キャラ限定だろうね。
まぁ、それなりのものは出来るかと。
もれ、N-BASICを使って5行住所録とか書いてたし。
N88ならば、美しさから言えば80*25行の方が(w
>>444 N88じゃないが、MSX/FANのファンダムの1画面プログラムはすばらしかった。
同1行プログラムが、このスレの発想に非常に近い。
1行か・・・昔はよく作ったもんだ プロポシェは結構採用してくれた
447 :
デフォルトの名無しさん :03/10/10 02:05
保守
高橋はるみはいづこへ…
>>446 プログラムポシェットなつかしい!
見てるだけで楽しい雑誌だったよ
前にFlashからJpeg摘出するPerlスクリプトありませんでしたっけ? どこ行った?
>>451 サンクス。
Janeでム板のログをずっと検索しても出ない訳だ・・・。
int main() { std::cout << "H"; std::cout << "e"; std::cout << "l"; std::cout << "l"; std::cout << "o"; return 0; }
こういう七行の作品のまとめサイトってないの? あったらいろいろ便利だと思うんだけど。
>>454 そんなページ作ったら、即行でつぶしにかかりますが。
<?なんで?>
#人の作品を勝手にウェブページにするのは(略
>454へ「なんで」じゃないのかね。 何が便利なんだかわからん。
>>459 おまえのくそスレ見なくてもすむんだぞ?
十分便利ジャン。
>>461 460は体現してくれたんだよ。
間違いじゃない。
自分の作品としてじゃなくて、このスレをまとめたことと誰の作品かを 書いておけばそんなに問題じゃないと思うけど。 2chに書いたコードなんてpublic domainだろ。
作品と呼べるものなんて数点しかないじゃん。 オセロ、テトリス、砂嵐などはよく見かけるし。 そんなことより、7行LISPまだ? おれは無理ポ
つーか、
>>2-5 くらいに前スレの「作品」の番号を振っておくだけでいいじゃん
スレの終わりにまとめ貼ってくれる人がいるわけだが こういうのあったなーとか振り返れていい。
LISP7行はつらい 漏れがpart3に張ったScheme風のやつからガベコレをはずしても7行いかない。 他は削りたくないなー
作った人の名前さえしっかり書いておいてくれればいいと思うけどね でも人気投票とかそういうくだらないことをしかねないから、 俺はまとめスレは反対。最後に一覧を貼るだけで十分だと思う。
今更こんな凄いスレにたどり着いた漏れとしてはどんな凄いのがあったのか タイトルだけでもまとめてくれると嬉しいんだが え?過去スレ嫁? 全くです
いいだしっぺの法則というのがありまして……
472 :
デフォルトの名無しさん :03/10/22 01:29
おお、まだ続いていたか、このスレ。
>>473 単にまとめサイト貼っただけだよ
結構前からある
∧||∧
( ⌒ ヽ
>>474 教えてくれて有賀と。
∪ 。ノ
∪∪
printfってどこだったかな
まとめサイトというより、自分の7line作品集みたいだったが
>>478 オセロの作者はないの?
解説ページは作者の了承を得ずにソースを載せているのかな?
>>480 ほかのソースだって、コピペされまくりじゃん。
∧||∧
( ⌒ ヽ
>>278 盗作じゃん
∪ 。ノ
∪∪
>>1-483 すべての7行プログラムはウリジナルニダ
盗作の謝罪と賠償を(ry
おまいら、7line.comとかドメインとって、 今までのスレのログと、ソース管理すれば? と他力本願な意見
Needless
つか今まで何個くらいあったのさ? たいした数ないんだったら次からテンプレにしちまえ。 この板32行までだから、1レスに4個くらいいけるぞ。
名作だけに絞ればいいかもな。
>>4 で十分だね。
よかった、漏れが作ってる奴は未出のようだ。
たいしたもんじゃないけど。
一応トリップつけときます。まぁどっかにコピられてもどっちが初出なんてわかったもんじゃないけど。 ナンバーマスターマインド コンピューターがランダムに決定する4桁の数字を当てる。 プレイヤーが4桁の数字を入力すると、 正解と、位置も数字も一致するものはhit、数字は合っているが位置が違うのがblowとして教えてくれる。 例えば正解が1234で、8231と入力するとhit=2,blow=1である。 正解は必ず4桁とも違う数字であり、回答するときも同じ数字は使えない。 includeは勘弁して下さい…。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−− #include <stdio.h> #include <stdlib.h> #include <time.h> void main(){char a[5],u[99];int h,b,i,j,w,c=0,f;a[4]=0;srand(time(0));while(1){ for(i=0;i<4;i++){f=1;while(f){f=0;a[i]='0'+rand()%10;for(j=i-1;j>=0;j--)if(a[j] ==a[i])f=1;}}f=1;while(f){h=0;b=0;w=0;printf("4桁入力:");u[3]=0;scanf("%s",u); if(!u[3])w=1;for(i=1;i<4;i++)for(j=i-1;j>=0;j--)if(u[j]==u[i])w=1;if(w)continue; c++;for(i=0;i<4;i++){if(u[i]==a[i]){h++;}else{for(j=0;j<4;j++){if(u[i]==a[j]){ b++;break;}}}}if(h==4){printf("%d手で正解 もう1回?(y/n):",c);scanf("%s",u);f=0; }else{printf("hit=%d,blow=%d\n",h,b);}}if(u[0]!='y')break;}return;} −−−−−−−−−−−−−−−−−−−−−−−−−−−−− blowのスペル合ってるんだろうか。
>492 blowのスペルについては知らんが、とりあえず一行縮め。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){char a[11],u[99],h,b,i,j,c;srand(time(0));for(;;){c=0;for(i=0;i<10;i ++)a[i]=i+48;for(i=9;i>0;--i){j=rand()%i;h=a[i];a[i]=a[j];a[j]=h;}for(;;){u[3]= 0;printf("4桁入力:");scanf("%s",u);i=*u;j=u[1];h=u[2];b=u[3];if(b&&i-j&&i-h&&i -b&&j-h&&j-b&&h-b){c++;for(h=b=i=0;i<4;i++)if(u[i]==a[i])h++;else for(j=0;j<4;j ++)b+=u[i]-a[j]?0:1;if(h==4){printf("%d手で正解 もう1回?(y/n):",c);scanf("%s",u );break;}printf("hit=%d,blow=%d\n",h,b);}}if(*u!='y')break;}return 0;} include含めて7行にしたいとこなんだがなぁ。
これってヒットアンドブローって名前じゃなかったっけ?
なんとか8行。大きな変更はtimeとgets。あとは小手先。
>>493 氏の改造だけどgcc -Wallで警告出ちゃいますよ。
#include <stdio.h>
#include <stdlib.h>
time_t time(time_t*);int main(){char a[11],u[99],h,b,i,j,c;srand(time(0));for(;;
){for(c=i=0;i<10;i++)a[i]=48+i;for(i=9;i>0;--i){j=rand()%i;h=a[i];a[i]=a[j];a[j]
=h;}for(;;){u[3]=0;printf("4桁入力:");gets(u);i=*u;j=u[1];h=u[2];b=u[3];if(b&&i
-j&&i-h&&i-b&&j-h&&j-b&&h-b){c++;for(h=b=i=0;i<4;i++)if(u[i]-a[i])for(j=0;j<4;j
++)b+=(u[i]==a[j]);else h++;if(h&4){printf("%d手で正解 もう1回?(y/n):",c);gets(u
);break;}printf("hit=%d,blow=%d\n",h,b);}}if(*u!=59)break;}return 0;}
#include <stdio.h> #include <stdlib.h> time_t time(time_t*);char a[58],u[99]="y",h,b,i,j,w,c,f;main(){for(srand(time(0 ));*u=='y';){for(i=57;i--;)i/4?c=a[i]=0:!a[f=48+rand()%10]?a[a[i]=f]=1:i++;for( ;f;u[3]=h=b=0){printf("4桁入力:"),gets(u),w=u[3];for(i=4;--i;)for(j=i;j--;w*= u[j]!=u[i]);for(c++,i=4;w*i--;)u[i]-a[i]?b+=a[u[i]]:h++;h/4*w?printf("%d手で正\ 解 もう1回?(y/n):",c),gets(u),f=0:printf("hit=%d,blow=%d\n",h,b);}}return 0;} できました。けど、<time.h>を読み込まずにこの形にするのはセーフ?アウト? なんだか個人的にはいけないのじゃないかって気もしてるけど。。。 てことで、<time.h>入れて七行になるようにまだ頑張ります(´д`;)
すまそ。さっきは訂正前のはっつけちゃたです。。 #include <stdio.h> #include <stdlib.h> time_t time(time_t*);char a[58],u[99]="y",h,b,i,j,w,c,f;main(){for(srand(time(0 ));*u=='y';){for(i=57;i--;)i/4?c=a[i]=0:!a[f=48+rand()%10]?a[a[i]=f]=1:i++;for( ;f;u[3]=h=b=0){printf("4桁入力:"),gets(u),w=u[3];for(i=4;--i;)for(j=i;j--;w*= u[j]!=u[i]);for(i=4;w*i--;)u[i]-a[i]?b+=a[u[i]]:h++;w?c++,h/4?printf("%d手で正\ 解 もう1回?(y/n):",c),gets(u),f=0:printf("hit=%d,blow=%d\n",h,b):0;}}return 0;}
3n+1問題を解明するプログラム7行で作って。
:377 ◆HuPaSCAL16 うわ〜、Huカードで動作する16ビットPascalでつか。すげ〜。
>>495 前にその技がマインスイーパーで使われていたよね。あれはぎりぎり7行だったけど。
ところで、ランダムを自前で作ればいいんじゃないの?part1の砂嵐みたく。
短縮しようとおもいましたが、断念。。以下メインのみ。 for(i=4;--i;)h+=!(u[i]*=u[i]==(a[i]=c?a[i]:48+rand()%10)); for(i=16;--i;)b+=!i*(u[i/4]==a[i%4]); 乱数のシードにcかuを使うのはどうでしょ?
>>499 えぇとえぇと、そしたらincludeは全部なくせちゃうよね。ANSI Cではどうなんだろうとか。
VC++6.0とgcc2.95で動くコード:
void srand(unsigned);unsigned long time(unsigned long*);char*gets(char*),a[58],
u[99],h,b,i;int printf(const char*,...),rand(),c;main(w){for(srand(time(0));!h;
h=121-*gets(u)){for(i=57;i--;)i/4?c=a[i]=0:a[a[i]=48+rand()%10]++&&i++;for(;h<4
;w?++c,h/4||printf("hit=%d,blow=%d\n",h,b):0){u[3]=b=!printf("4桁入力:"),w=3[
gets(u)];for(h=4;--h;)for(i=h;i--;w*=u[i]-u[h]);for(i=4;i--;)u[i]-a[i]?b+=!!a[u
[i]]:h++;}printf("%d手で正解 もう1回?(y/n):",c);}return 0;}
てきとーに乱数ぽくしたやつ。timeをなくしたら初期値が辛い:
#include <stdio.h>
#include <time.h>
char a[58],u[99],h,b,i,c;double r;main(w){for(;!h;h=*gets(u)-121){for(i=57;i--;
i/4?c=a[i]=0:a[a[i]=48+(int)r]++&&i++)for(r=h?r:1./time(0),h=99;h--;)r*=4-.4*r;
for(;h<4;w?c++,h/4||printf("hit=%d,blow=%d\n",h,b):0){u[3]=b=!printf("4桁入力\
:"),w=gets(u)[3];for(h=4;--h;)for(i=h;i--;w*=u[i]-u[h]);for(i=4;i--;)u[i]-a[i]
?b+=!!a[u[i]]:h++;}printf("%d手で正解 もう1回?(y/n):",c);}return 0;}
>>500 キリ番おめ〜。
time_tはunsigned longとは限らないわけで。
MIDI → WAVE
(´・ω・`)全然だめぽ…。
#include <stdio.h>
int r,i,s,d,e,E,n,u[16],f=8000,h=500000;double sin(double),pow(double,double),w
,o,k[128];FILE*M,*W;int m(){return fgetc(M);}int x(){r=0;do{i=m();r=(r<<7)+(i&
127);}while(128&i);return r;}main(int c,char**v){M=fopen(v[1],"rb");W=fopen(v[2
],"wb");fseek(M,12,0);d=m();d=(d<<8)+m();fseek(M,22,0);fwrite("RIFF____WAVEfmt"
" \x10\0\0\0\x1\0\x1\0@\x1f\0\0@\x1f\0\0\x1\0\x8\0data____",1,44,W);for(;;){e=
0.000001*x()*h*f/d;while(e--){w=128;o=51.37/f*s;for(n=0;n<128;n++){o*=1.05946;k
[n]*=0.9996;w+=sin(o)*k[n]/2000;}fputc(w<0?0:(w<256?w:255),W);s++;}e=m();if(e<
128){n=e;e=E;}else if(e<240||e==255)n=m();E=e;u[9]=0;if(e
>>4 ==11&&n==7)u[e&15]=
m();else if(e
>>6 ==2||e
>>4 ==14)k[n]+=m()*u[e&15]*(e
>>4 ==9);if(e==255){if(n==47)
break;if(n==81){m();h=m();h=(h<<8)+m();h=(h<<8)+m();}else fseek(M,x(),1);}else
if(e
>>4 ==15){fseek(M,x(),1);}}fseek(W,40,0);fwrite(&s,4,1,W);s+=36;fseek(W,4,0)
;fwrite(&s,4,1,W);fclose(M);fclose(W);}
あ、pow 消してなかった。
もとのソースをどっかにアプしてくれないか
>>505 indentコマンド使おうぜ。まあ変数名とかは戻らんが…
>>505 編集中は改行が入ったりすることはあるが、
元のソースも何も、はじめからずっとこのまま。
対戦型マインスイーパ(MSN Messanger6から付いてるゲームの一つ)もどき 10行になってしまった。。。 #include <stdio.h> int f[22][22],i,j,k,l,m,n,o[2],p,x,y,time(int),rand(),srand(int);main(){srand(t\ ime(0));for(i=50;i--;)for(;!f[j=rand()%20+1][k=rand()%21+1]?f[j][k]=32,0:1;);for (i=21;--i;)for(j=21;--j;)for(k=-1;k<2;k++)for(l=-1;l<2;l++)f[j][i]+=~f[j][i]&32 &&f[j+l][i+k]&32;for(;p-50;m=!m){for(;p-50;o[m]++,p++){for(i=1;i<21;puts(""),i+\ +)for(j=1;j<21;j++)putchar(f[j][i]&16?32+f[j][i]:43);do{printf("%cP>",49+m);sca\ nf("%d %d",&x,&y);}while(f[x++][y++]&16);f[x][y]|=16;if(f[x][y]-48)break;}do{k=0 ;for(i=21;--i;)for(j=21;--j;)for(l=-1;l<2;l+=2){!(f[j-l][i]-16||f[j][i]&16)?f[j] [i]|=16,k=1:0;!(f[j][i-l]-16||f[j][i]&16)?f[j][i]|=16,k=1:0;}}while(k);}printf( "result:1P[%d]2P[%d",o[0],o[1]);}
>>509 前に出ていたマインスイーパはマップの広さを指定できたが、
それに比べればずいぶんぬるいな。
511 :
デフォルトの名無しさん :03/11/17 01:45
>>511-512 俺達は何かとんでもない勘違いを(ry
ぬるぽあげ → ぬるぽ-age → ぬるぽ時代 だったんだー
>>513 、ミ川川川彡 ,ィr彡'";;;;;;;;;;;;;;;
ミ 彡 ,.ィi彡',.=从i、;;;;;;;;;;;;
三 ギ そ 三 ,ィ/イ,r'" .i!li,il i、ミ',:;;;;
三. ャ れ 三 ,. -‐==- 、, /!li/'/ l'' l', ',ヾ,ヽ;
三 グ は 三 ,,__-=ニ三三ニヾヽl!/,_ ,_i 、,,.ィ'=-、_ヾヾ
三 で 三,. ‐ニ三=,==‐ ''' `‐゛j,ェツ''''ー=5r‐ォ、, ヽ
三. 言 ひ 三 .,,__/ . ,' ン′  ̄
三 っ ょ 三 / i l,
三. て っ 三 ノ ..::.:... ,_ i ! `´' J
三 る と 三 iェァメ`'7rェ、,ー' i }エ=、
三 の し 三 ノ "'  ̄ ! '';;;;;;;
三 か て 三. iヽ,_ン J l
三 !? 三 !し=、 ヽ i ,.
彡 ミ ! "'' `'′ ヽ、,,__,,..,_ィ,..r,',",
彡川川川ミ. l _, , | ` ー、≡=,ン _,,,
ヽ、 _,,,,,ィニ三"'" ,,.'ヘ rー‐ ''''''"
`, i'''ニ'" ,. -‐'" `/
ヽ ! i´ /
ノレ'ー'! / O
#include <stdio.h> #include <stdlib.h> #include <time.h> int S(a,b,c){int t=0,x;while(1){x=rand()%10;if (x==c){t+=x*100;goto p;}}p: while(1){x=rand()%10;if (x==b){t+=x*10;goto q;}}q:while(1){x=rand()%10; if(x==a){t+=x;goto r;}}r:return t;}int main(){int a,b,c,d;a=b=c=d=0; srand((unsigned)time(NULL));a=S(0,3,2);b=S(4,9,1);c=S(6,0,2);d=S(2,0,2); a>>=1;b>>=1;c>>=1;d>>=1;printf("%c%c%c%c\n", a,b,c,d);} いやー7文字に収められなかったわ
7文字じゃなくて七行だ・・。 狙ってボケようとして素でボケるのは俺っぽいなぁ。
/*****このスレは今から「7文字プログラミング」スレッドに名前が変わりました*****/
#includ …もうだめぽ。。。気を取り直して main(){ …もうだめぽ。。。じゃあ、これならどうだ main=19 最小のプログラムさえ書けないなんて…もうだめぽ。。。
REM ソースと実行結果が同じプログラム in N88BASIC 10 LINE
main{} で6文字・・・
朝早くからなに寝ぼけてるんだろ・・・ print''; C以外でも文字すら表現できない・・・_| ̄|○
>>519 10 LIST
と書きたかったのだろうか?
for(;;)
最小のXMLなら <a/> 4文字。プログラムじゃないけど。 javaScriptなら alert() 。文字すら表示不可とは。
こうなりゃ禁断の秘儀を。
--- seven.c ---
_SEVEN_
--------------
$ gcc seven.c -D_SEVEN_="int main(){return 0;}"
>>520 それ何?
>>524 BASICなら行番号は1桁で。
1 LIST
これで6文字。
1 LLIST
これでプリンター出力まで可能だ。
1 ? 1+1
で計算までも出来るじゃないか。
N88BASICなら、 ?"hello で挨拶まで出せる! そろそろこのネタをやめるか?(w
HSPとかなら msg "n"とかで出せない?
/*****このスレは今から「7行プログラミング」スレッドに名前が戻ります*****/
バッチファイルは? echo aa
535 :
デフォルトの名無しさん :03/11/27 17:02
>>531 一瞬で消える、ちなみに
mes "n"
>>535 君はくだらないレスをageで書くんだな
スレッド式掲示板なんてどうですか?
nkf ・・・は、なんか5行でできちゃいそうだな
>>538 あ、そうか。WebProgの方か。
失礼しました。
>>539 jis2sjis なら2行になってたはず。part3あたりかな。
jis<->euc は容易だから、全体で7行にできるだろう。
>>540 スレッドじゃない掲示板なら、ここにあった。
別にここではいけないということもないかと。
ちょっち違う版 #include <stdio.h> int i,p,v,c,n,z,a[10];long time(long *);void srand(unsigned);void main(void){ for(srand(time(NULL)),i=0;i<10;)a[i++]=-1;for(a[z=p=rand()%9+1]=0,i=1;i<=3;)if (a[p=rand()%10]<0){a[p]=i++;z=z*10+p;}for(c=0;c<10;){printf("[%2d] >> ",++c); scanf("%d",&n);for(v=0,i=4;i;n/=10)v+=(a[p=n%10]==--i)?10:(a[p]>=0);if(v==40) break;printf("%14c## %2dH %2dB\n",' ',v/10,v%10);}printf("\n <<%d>>\n",z);}
7行なのに1行掲示板CGI for Perl とりあえず、日付つき、名前と本文両方を入れないとはじく 程度の機能は有ります。 (毎回名前を入れないといけないので面倒で重いけど 4行目の $t[4]/$t[3] を $t[2]:$t[1] に置換すれば簡易チャットにも) #!/usr/bin/perl $l='log.dat';@t=localtime();$t[4]++;use CGI;$q=new CGI;$d=$q->param('n'); $e=$q->param('h');($d&&$e)and &g;&p;exit;sub g{&i;open F,">$l";flock(F,2);print F "$t[4]/$t[3]:$d<BR>$e<HR>\n",@b;close F;}sub p{&i;print"Content-Type:text/h" ,"tml\n\n一行掲示板<FORM METHOD=POST ACTION=\"lb.cgi\" NAME=1>名前<INPUT TYPE=" ,"TEXT SIZE=20 NAME=n><BR>本文<INPUT TYPE=TEXT SIZE=60 NAME=h><BR><INPUT TYPE=" ,"SUBMIT VALUE=\"送信\"></FORM><HR>",@b;}sub i{open F,"$l";@b=<F>;close F;} //ありきたりだから既出かもしれない。
ファイル名は lb.cgi で。
こちらで発表してもいいけど、よほどのものを作らない限りスルーされるぞ
こちらで発表してもスレ違いではないが、 webprogがスレッド式掲示板で盛り上がっているから そちらに投稿したほうがよさげではないかと。
このスレも人がいなくなったな…。
暇ならCで7行ブロック崩し作って〜〜〜
>>550 7行じゃ無理だった |´・ω・)
#include <stdio.h>
#include <conio.h>
#define c printf("\x1b[2J")
#define l(x,y) printf("\x1b[y;xH")
void main(){int m[10][3],x=5,i,j,q=1,w=4,o=1,p=1;for(i=0;i<10;i++){for(j=0;
j<3;j++){m[i][j]=1;}}for(;;){int g=getch();if(g==77)x++;if(g==75)x--;c;for(i=0
;i<10;i++){for(j=0;j<3;j++){if(m[i][j]==1){l(i,j);printf("+");}}}l(x,10);prin\
tf("_");q=q+o;w=w+p;if(q>9){o=-1;}if(q<1){o=1;}if(w>9){if(x!=q){exit(0);}p=-1;}
if(w<1){p=1;}if(w<3&&m[q][w]==1){p=1;o=abs(o);m[q][w]=0;}l(q,w);printf(".");}}
NT系の人は
#define c printf("\x1b[2J")
#define l(x,y) printf("\x1b[y;xH")
を
#include <windows.h>
void l(short x,short y) {COORD c={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); }
void c() {system("cls");}
に変えて、2行目を
j<3;j++){m[i][j]=1;}}for(;;){int g=getch();if(g==77)x++;if(g==75)x--;c();for(i=0
にして下さい…。もうだめぽ
常連さん圧縮キボンヌ
ランダムにしてなかった…このままじゃ固定だ…ヽ(;´Д`)ノ スレ汚しごめんなさい |´・ω・) #include <stdio.h> #include <conio.h> #include <windows.h> #include <stdlib.h> #include <time.h> void l(int x,int y){COORD c={x,y};SetConsoleCursorPosition(GetStdHandle(STD_O\ UTPUT_HANDLE),c);}void c(){system("cls");}void main(){srand(time(0));int m[10] [3],x=5,i,j,q=1,w=4,o=1,p=1;for(i=0;i<10;i++){for(j=0;j<3;j++){m[i][j]=1;}}for (;;){int g=getch();if(g==77)x++;if(g==75)x--;c();for(i=0;i<10;i++){for(j=0;j<3 ;j++){if(m[i][j]==1){l(i,j);printf("+");}}}l(x,10);printf("_");q=q+o;w=w+p;if (q>9){o=-1;}if(q<1){o=1;}if(w>9){if(x!=q){exit(0);}p=-1;}if(w<1){p=1;}if(w<3&\ &m[q][w]==1){p=1;g=rand()%2;if(g<1){o=abs(o);}m[q][w]=0;}l(q,w);printf(".");}}
Haskellで全ての素数。 let e(a:x)=a:e[y|y<-x,y`rem`a/=0]in e[2..]
>>553 Cと比べてあんまり短くないがそれでいいのかHaskell。
main(i,z){for(;z=i++;z||printf("%d,",i))while(i%z--);}
>>553 は篩ですな。
計算だけじゃなくて表示もすると、
main=(putStr.show)let e(a:x)=a:e[y|y<-x,y`rem`a/=0]in e[2..]
ちょっと縮めて(改悪)
main=(putStr.show)[x|x<-[2..],all(/=0).rem x)[2..x-1]]
>>554 と同じ長さか…
括弧が足らなかった。 正しくは main=(putStr.show)[x|x<-[2..],all((/=0).rem x)[2..x-1]] 打つ出し脳
>>554 そんな超非効率なアルゴリズムと比べてもらっては困る。
こっちはちゃんとしたエラトステネスの篩いだぞ。
>>555 元のでもhugsでそのまま入力すれば表示されるけど、
コンパイルしたいなら、
main=print$e[2..]where e(a:x)=a:e[y|y<-x,y`rem`a/=0]
のほうが短い。
>>552 #include <conio.h>
#include <windows.h>
void c(){system("cls");}void r(int c){putchar(c);}void l(int x,int y){COORD c={
x,y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);}int main(){
char m[30],*n,x=5,i,q=1,w=4,o=1,p=1,g,z=' ';memset(m,'+',30);for(;;){do{g=getch
();}while(g&128);g==77?x++:g==75?x--:0;c();for(i=0;i<30;i++){r(m[i]);i%10-9?0:r
('\n');}l(x,10);r('_');q+=o;w+=p;q>8?o=-1:q<1?o=1:0;if(w>9){x-q?exit(0):0;p=-1;
rand()%2<1?--w:0;}w<1?p=1:0;n=m+q+w*10;w<3&&*n-z?p=1,*n=z:0;l(q,w);r('.');}}
stdio.h やら srand やら色々忘れ去ってやっと8行…
ヘッダ省略なしで7行 #include <stdio.h> #include <stdlib.h> #include <conio.h> int r(c){putchar(c);}int main(){int m[30]={0},*n,x=5,q=1,w=4,o=1,p=1,g;for(;;){ for(;g&128;g=getch());x+=g-77?g-75?0:x?-1:0:1;q+=o;w+=p;o=q>8?-1:q?o:1;w>9?p=-1 ,w-=1,x-q?exit(0):0:0;p=w?p:1;n=m+q+w*10;w<3&&*n-11?p=1,*n=11:0;system("cls"); for(g=0;g<129;g++){g>99||g%10?0:r(10);r(m+g-n?90+x-g?g<30?43-m[g]:32:95:46);}}}
メモリ、ソース量無制限のBrainFuck(Haskell8行)。 機械から遠い言語だから適してない感じ。 import Control.Monad.State;import Char;p=put;l=liftIO;x='[';y=']';z=[0,0..]; k=do{(a@(b,c:d),m@(e,f:g))<-get;case c of{'+'->p(a,(e,(f+1):g));'-'->p(a,(e,(f- 1):g));'>'->p(a,h m);'<'->p(a,j m);'.'->(l.putChar.chr)f;','->l getChar>>= \c-> p((b,c:d),m);'['|f==0-> p(i x h(h a),m);']'|f/=0->p(i y j(j a),m);_->return()}; unless(null d)(n>>k)};n=modify(\(p,o)->(h p,o));o '['=y;o ']'=x; h(l,r:x)=(r:l,x);j(l:x,r)=(x,l:r);i r f=j where{j p@(_,d:_)|d==o r=p; j p@(_,s:_)|s==r=(j.f.j.f)p;j p=j$ f p}; main=getContents>>= \s->runStateT k(([],filter(not.isSpace)s),(z,z))
% cat HexDump.pm package HexDump;my$d;sub w{$_[0]=~/\S/}open 0 or die "ET'$0'\n";($d=join('', <0>))=~ s/.*^\s*use\s+HexDump\s*;\n//sm;local$SIG{__WARN__}=\&w;if($d=~ /^48657844756d70(.*)/){eval pack('H*',$1)}else{open A,">$0" or die "EE'$0'\n"; print A "use HexDump;\n",'48657844756d70',unpack('H*',$d),"\n"}exit;1; % cat h.pl use HexDump; print "Hello, World!\n"; % perl h.pl % cat h.pl use HexDump; 48657844756d707072696e74202248656c6c6f2c20576f726c64215c6e223b0a0a % perl h.pl Hello, World! % モジュール部分はまだ文字を詰め込める余裕があるのでもう少し遊べますな。 やる気無いけど。
package HexDump;$m='48 65 78 44 75 6d 70';open(0)||die$!;undef$/;($h,$e,$_)=<0> =~/^(.*?use\s+HexDump\s*;)(\n$m)?(.+)/s;$e?do{s/\s//g;$_=pack"H*",$_;eval}:open (0,">$0")?do{$_=join" ",$m,map{unpack"H2",$_}/./gs;s/(\w\w ){8}/$& /g; s/(.{50}) /$1\n/g;print 0"$h\n$_"}:die$!;exit
#include <stdio.h> #define P(x) printf(x) void d(int*s){int i,j,k;for(i=0;i<4;i++){for(j=0;j<3;j++){if((*s)==0) P(" ┃ ");else{for(k=0;k<(4-*s);k++)P(" ");for(k=0;k<(*s)*2-1;k++) P("■");for(k=0;k<(5-*s);k++)P(" ");}s++;}P("\n");}}void main(){int x[3]= {0,4,4},y[5][3]={{1,0,0},{2,0,0},{3,0,0},{4,0,0},{9,9,9}},a,b;while(y[0][2]!=1) {int f=-1,h=-1;d(&y[0][0]);while(f<1 || f >3)scanf("%d",&f);while(h<1 || h >3) scanf("%d",&h);a=x[f-1];b=x[h-1];if(y[a][f-1]<y[b][h-1]){y[b-1][h-1]=y[a][f-1]; y[a][f-1]=0;x[f-1]++;x[h-1]--;}else continue;}d(&y[0][0]);} 誰かエロい人、7行にしてけろ。
extern "C"{scanf(char*,...);printf(char*,...);}void d(int*s){int i,j,k;for(i=4; i--;){for(j=3;j--;){if((*s)==0)printf(" ┃ ");else{for(k=(4-*s);k-- ;)printf(" ");for(k=(*s)*2-1;k--;)printf("■");for(k=(5-*s);k--;)printf(" "); }s++;}printf("\n");}}void main(){int x[3]={0,4,4},y[15]={1,0,0,2,0,0,3,0,0,4,0, 0,9,9,9},a,b;while(y[2]!=1) {int f=-1,h=-1;d(y);while(f<1||f>3)scanf("%d",&f); while(h<1||h>3)scanf("%d",&h);f--;h--;a=x[f];b=x[h];if(y[a*3+f]<y[b*3+h]){y[b*3 -3+h]=y[a*3+f];y[a*3+f]=0;x[f]++;x[h]--;}}d(y);}
#include 書いてもいけました #include <stdio.h> int*s,x[3]={0,4,4},y[15]={1,0,0,2,0,0,3,0,0,4,0,0,9,9,9},a,b,i,j,k,f,h;void d() {s=y;for(i=4;i--;){for(j=3;j--;){if((*s)==0)printf(" ┃ ");else{ for(k=(4-*s);k--;)printf(" ");for(k=(*s)*2-1;k--;)printf("■");for(k=(5-*s);k --;)printf(" ");}s++;}printf("\n");}}void main(){while(y[2]!=1){d();f=h=-1; while(f<1||f>3)scanf("%d",&f);while(h<1||h>3)scanf("%d",&h);f--;h--;a=x[f];b=x[ h];if(y[a*3+f]<y[b*3+h]){y[b*3-3+h]=y[a*3+f];y[a*3+f]=0;x[f]++;x[h]--;}}d();}
<tt><script>m=[],x=y=2,a=Math;for(i=0;i<31;i++)for(j=0,m[i]=[];j<31;j++)m[i][j]= (!i||!j||i==30||j==30)?0:1;m[x][y]=0;X=[],Y=[];i=0;do{if(!(c=m[x][y-2]+m[x+2][ y]+m[x][y+2]+m[x-2][y])){x=X[--i];y=Y[i]}X[i]=x;Y[i]=y;b=a.floor(a.random()*4); if(b==0&&m[x][y-2])m[x][--y]=m[x][--y]=0,i++;if(b==1&&m[x+2][y])m[++x][y]=m[++x] [y]=0,i++;if(b==2&&m[x][y+2])m[x][++y]=m[x][++y]=0,i++;if(b==3&&m[x-2][y])m[--x] [y]=m[--x][y]=0,i++;}while(i||m[28][2]);for(i=0;i<31;i++)for(j=0;j<31;j++) document.write((j?"":"<br>")+(m[j][i]?"■":" "));</script> 迷路
ブロック崩しコンパイルできないぞ?
>>568 どのブロック崩し?それに、あなたの環境は?
あとCPPでコンパイルしてみたりした?
ノシ 構いませんよ 413,416,432は私じゃないので念の為
パート2の途中から読んでないんだけど、 6行オセロに匹敵する名作が出ているなら教えて。
>>568 extern"C"{putchar(int);getch();exit(int);system(char*);}void r(int c){putchar(c
);}int main(){int m[30]={0},*n,x=5,q=1,w=4,o=1,p=1,g;for(;;){for(;g&128;g=getch
());x+=g-77?g-75?0:x?-1:0:1;q+=o;w+=p;o=q>8?-1:q?o:1;w>9?p=-1,w-=1,x-q?exit(0):
0:0;p=w?p:1;n=m+q+w*10;w<3&&*n-11?p=1,*n=11:0;system("cls");for(g=0;g<129;g++){
g>99||g%10?0:r(10);r(m+g-n?90+x-g?g<30?43-m[g]:32:95:46);}}}
>>573 bash-2.05b$ g++ -mno-cygwin block.cc
block.cc:1: error: ISO C++ forbids declaration of `putchar' with no type
block.cc:1: error: ISO C++ forbids declaration of `getch' with no type
block.cc:1: error: ISO C++ forbids declaration of `exit' with no type
block.cc:1: error: ISO C++ forbids declaration of `system' with no type
block.cc: In function `int main()':
block.cc:5: error: `r(int)(10)' has type `void' and is not a throw-expression
(´・ω・`)ショボーン
>>574 cでコンパイルすればよし…
つーかろくなもんじゃないよ。system("cls")とか最悪。
>575 環境依存なくできれば最高だけど ゲームの性質からして無理なんじゃないかな。
>>576 まぁ575は無視するにしても、
環境依存するプログラムである瞬間に評価は下がってしまうよね。
たとえば574みたいに、せっかくコンパイルしてくれても
c++では動かない、Windowsでは動かない、みたいになっちゃうしね。
俺はincludeが無い瞬間にコンパイルしないけどね。
extern"C"{putchar(int);getch();exit(int);system(char*);} って環境依存?
>578 何を聞いてるのかわからないが "C"はまともな実装なら必ず使える
>>579 まぁ、"C"が使えなかったら、"C"++ じゃないからね…
582 :
デフォルトの名無しさん :04/02/13 23:14
ブロック崩しっぽいもの。 cygwin + g++ で動いた。 g++ -Wall -O3 hogehoge.cc -lcurses でコンパイル。 でも12行。 #include <curses.h> // argument1 means a seed of rand() #include <cstdlib> // h: move to left, l: move to right int a,i,u,e,o,c,m,k,q=1,w=1,N=80,X=40,Y=40;WINDOW*s;struct T{int x,y,f;void K() {mvwprintw(s,y,x,"%c",f?'#':' ');}T(){x=rand()%(X-1);x=x?x:1;y=rand()%Y/4;y=y?y :1;f=1;}};int main(int M,char**v){e=X-2;m=X/2;k=Y/2;o=a=X-9;u=Y-4;srand(atoi(v[ 1]));initscr();noecho();cbreak();s=newwin(Y,X,0,0);box(s,'|','-');T g[N];while( k<=u&&(c=wgetch(s))!='Q'){wrefresh(s);wtimeout(s,100);mvwaddch(s,k,m,' ');m+=q, k+=w;if(m<2||m>e)q*=-1,m=m<2?2:e;if(k<2||m>=o&&m<o+8&&k>u-1)w*=-1,k=k<2?1:u-1; for(;i<N;){T&F=g[i++];if(F.f&&(k-1==F.y||k+1==F.y)&&m==F.x)w*=-1,F.f=0;}mvwadd\ ch(s,k,m,'O');mvwprintw(s,u,o,"%8s"," ");if(c=='h'&&--o<2)o=1;if(c=='l'&&++o>a) o=a;mvwaddstr(s,u,o,"========");for(;i>0;g[--i].K());wmove(s,0,0);}delwin(s);e\ ndwin();return 0;}
実行するときは bash-2.05$ ./a.exe 4 みたいに引数に数字を指定して。 実行しても何も表示されなかったら ウィンドウのサイズを大きくして。
>>582 winじゃダメなのかな。cursesが無いと出てまう。
>>584 cygwin入れててもcurses関係のライブラリを
入れてなかったら文句言われます。
>>588 ありがとう。うまく機動できるかな。PHP、SDLとできなかったくちだし。
590 :
デフォルトの名無しさん :04/02/17 02:53
なんか名作出た?
ローマ字→ひらがな。スレ汚しごめん。(ん≡nn) %B=(a,"あ",i,"い",u,"う",e,"え",o,"お",ba,"ば",bi,"び",bu,"ぶ",be,"べ",bo,"ぼ", da,"だ",di,"ぢ",du,"づ",de,"で","do","ど",ga,"が",gi,"ぎ",gu,"ぐ","ge","げ",go, "ご",ha,"は",hi,"ひ",hu,"ふ",he,"へ",ho,"ほ",ka,"か",ki,"き",ku,"く",ke,"け",ko, "こ",la,"ぁ",li,"ぃ",lu,"ぅ","le","ぇ",lo,"ぉ",ma,"ま",mi,"み",mu,"む",me,"め", mo,"も",na,"な",ni,"に",nu,"ぬ","ne","ね","no","の",pa,"ぱ",pi,"ぴ",pu,"ぷ",pe, "ぺ",po,"ぽ",ra,"ら",ri,"り",ru,"る",re,"れ",ro,"ろ",sa,"さ",si,"し",su,"す",se, "せ",so,"そ",ta,"た",ti,"ち",tu,"つ",te,"て",to,"と",wa,"わ",wo,"を",ya,"や",yu, "ゆ",yo,"よ",za,"ざ",zi,"じ",zu,"ず",ze,"ぜ",zo,"ぞ",nn,"ん",lya,"ゃ",lyu,"ゅ", lyo,"ょ","\n"=>"\n"); open(fh,"aiu.dat");for(1..40){ $in="";&A;if(!$B{$in}){&A;if(!$B{$in}){&A;if(!$B{ $in}){print $in;}}}print $B{$in};}close(fh);sub A{read(fh,$temp,1);$in.=$temp;}
>>591 過去ログ調べてないから既出かもしれないが面白そうだ
$m='aあiいuうeえoおbaばbiびbuぶbeべboぼdaだdiぢduづdeでdoどgaがgiぎguぐgeげgo'
.'ごhaはhiひhuふheへhoほkaかkiきkuくkeけkoこlaぁliぃluぅleぇloぉmaまmiみmuむm'
.'eめmoもnaなniにnuぬneねnoのpaぱpiぴpuぷpeぺpoぽraらriりruるreれroろsaさsiし'
.'suすseせsoそtaたtiちtuつteてtoとwaわwoをyaやyuゆyoよzaざziじzuずzeぜzoぞnn'
.'んlyaゃlyuゅlyoょ'%M=split/(\W+)/,$m;open(FH,"aiu.dat");
while(&F){if((join'',@B)=~/^([bcdghjklmnrstwx]?[yh]?[aiueon])/i&&$M{$1}){
print$M{$1};splice(@B,0,length($1))}else{$_=shift(@B);$_='ん'if($_ eq'n');
print}}sub F{$_=2-$#B;$_?(read(FH,$_,$_),push(@B,split//,$_),$_ ne''):1}
もう寝るから誰かがやるToDo:促音対応とかテーブルの充実・圧縮・7行化
あ、nが大文字だと駄目だこれ(´・ω・`)
つーかそれ以前に(ry
C言語でかな変換 っ,rya,voなど未対応の、1文字||2文字→1文字まで。 何も考えてないので、機能アップと短くするのはおまかせで。 #include <stdio.h> int c,d,i,j,f,g;char*s="aiueokstnhmyrwgzdbpl",*h="あいうえおかきくけこさしすせ" "そたちつてとなにぬねのはひふへほまみむめもやいゆえよらりるれろわゐ ゑをがぎ" "ぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉ";void p(int i,int j){ putchar(h[i*10+j*2]);putchar(h[i*10+j*2+1]);}void P(int c){if(c=='n')printf( "ん");else putchar(c);}int main(){c=getchar();d=-1;for(;~c;){f=0;for(i=20;!f*i --;)if(s[i]==c){f=1;}if(f){if(g){if(i>3){g=1;P(d);}else{p(j-3,i+1);c=-1;g=0;}} else{if(i>3){g=1;if(d>=0)P(d);}else{if(d>=0)P(d);p(0,i+1);c=-1;g=0;}}}else{if(d >=0)P(d);g=0;}d=c;c=getchar();j=i;}return 0;}
違うアプローチで。た行が難しい・・・。 pack使ってる2行をまとめれば5行だと思う。けどもうマンドクサ(;´Д`)誰かやって。 %V=(a,0,i,1,u,2,e,3,o,4);%C=(n,[C8,1],r,[E7,1],k,[A9,2],g,[AA,2],z,[B4,2],h,[CD, 3],b,[CE,3],p,[CF,3],w,[ED,3/4],y=>[E2,1],m=>[DC,1],s=>[B3,2]);$v='aiueo';while( <>){s/n([^$v])/ん$1/g;s/[xl]tu/っ/g;s/([td])([$v])/qw(た ち つ て と だ ぢ づ で ど)[($1eq"d")*5+$V{$2}]/eg;s/([xl])?([^$v])([$v])/pack(C,130).pack(C,hex($C{$2}[ 0])+$C{$2}[1]*$V{$3}-(!!$1))/eg;s/([xl])?([$v])/pack(C,130).pack(C,160+$V{$2}*2- (!!$1))/eg;print;}
C言語版13行 orz #include <stdio.h> /* Cdemodekitayo,ve-xtuhaxtuha kyawoxyaxa ltaltu */ int c,d,e,i,j,k,f,g;char*s="aiueolxwytksnhmrgzdbpv",*h="あいうえおぁぃぅぇぉぁ" "ぃぅぇぉわゐうゑをやいゆえよたちつてとかきくけこさしすせそなにぬねのはひふへ" "ほまみむめもらりるれろがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゃぃ" "ゅぇょっヴヴ";void P(int c){if(c=='n')printf("ん");else if(c>=0)putchar(c);} void p(int i,int j){for(i=i*10+j*2,j=2;j--;)putchar(h[i++]);}int main(){for(c= getchar();;){for(i=22;i--;)if(f=s[i]==c)break;if(f){f=0;if(g==7&&i==2){p(18,0); }else if(g==4&&k==21){p(18,1);p(17,i);}else if(i<5){if(g==7){P(e);p(5,i);}else if(g==5){p(1,i);}else if(g==3&&j==21){p(18,1);p(1,i);}else{if(g==4||g==6){if(g ==4)p(k-4,1);p(17,i);}else{p(g?j-4:0,i);}}}else if((g==5||g==3)&&i==8)f=g+1; else if(g==5&&i==9)f=7;else{if(g==4||g>5)P(e);if(g)P(d);if(i<7)f=5;else if(i<9) f=1;else f=3;}}else{if(g==4||g==6)P(e);if(g)P(d);P(c);}g=f;if(c<0)break;e=d;d=c ;c=getchar();k=j;j=i;}return 0;}
#include <stdio.h> /* Cdemodekitayo,ve-xtuhaxtuha kyawoxyaxa ltaltu */
int c,d,e,i,j,k,f,g;int p(int i,int j){for(i=i*10+j*2,j=2;j--;)putchar("あいう"
"えおぁぃぅぇぉわゐうゑをやいゆえよたちつてとかきくけこさしすせそなにぬねのは"
"ひふへほまみむめもらりるれろがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺ"
"ぽゃぃゅぇょっヴん"[i++]);return 0;}void P(int c){c=='n'?p(17,2):c>=0?putchar(
c):0;}int main(){for(c=getchar();;){f=0;for(i=22;!f&&i--;)f="aiueolxwytksnhmrg"
"zdbpv"[i]==c;f=f?g==7&&i==2?p(17,0):g==4&&k==21?p(17,1),p(16,i):i<5?g==7?P(e),
p(4,i):g==5?p(1,i):g==3&&j==21?p(17,1),p(1,i):g==4||g==6?g==4?p(k-5,1):0,p(16,i
):p(g?j-5:0,i):(g==5||g==3)&&i==8?g+1:g!=5||i!=9?P(g==4||g>5?e:-1),P(g?d:-1),i<
7?5:i<9?1:3:7:(P(g==4||g==6?e:-1),P(g?d:-1),P(c),0);g=f;if(c<0)break;e=d;d=c;c=
getchar();k=j;j=i;}return 0;}
>>598 縮めた
$v=aiueo;%V=(a,0,i,1,u,2,e,3,o,4,n,41);%C=(d,[BF,2],t,[BE,2],a,[A0,2],n,[C8,1],r ,[E7,1],k,[A9,2],g,[AA,2],z,[B4,2],h,[CD,3],b,[CE,3],p,[CF,3],w,[ED,3/4],y=>[E2, 1],m=>[DC,1],s=>[B3,2]);while(<>){s/j([^i])/zy$1/g;s/f([^u])/hux$1/g; s/([knhmrgbpsctz])(?:y|h)([auo])/$1ixy$2/g;s/([^n])n([^n$v])/$1nn$2/g; s/([^n$v])\1/xtu$1/g;tr/lfcj/xhtz/;s/(s|t)h/$1/g;s/(nn|[^$v]*[$v])/($p=$1)=~s !^(x)?([$v])!$1a$2!;$p=~m!(x)?(.)?(.)!;pack(S,(hex($C{$2}[0])+$C{$2}[1]*$V{$3}- (!!$1)-($p=~m![td][ai]!))*256+130);/eg;print;} ぐぅ。。。わけわかめ(;´Д`) できる(と思う)もの ・「n」の処理(anko→「あんこ」annko→「あんこ」annnnko→「あんんこ」) ・促音(atta→あった) ・拗音(kya→きゃ,[knhmrgbps]) ・変な奴(sha,cha,cya,ja,fa)は中途半端に対応してるかも annna→あんな juujituyasai fakkuyu できないもの ・tsuはできない
11行。テーブルで依存少ないって事で (;´Д`) @T=split/(\W+)/,'Yじxふxう_あいうえおkかきくけこcかちくせこgがぎぐげごsさし'. 'すせそzざじずぜぞjじじfふtたちつてとdだぢづでどnなにぬねのhはひふへほbばび'. 'ぶべぼpぱぴぷぺぽmまみむめもyやいゆえよrらりるれろwわゐうゑをxぁぃぅぇぉYゃ' .'ぃゅぇょTたちってと';my@B;%T=@T[6..99];$T{'l'}=$T{'x'};$s=join'',keys%T;$b= '[aiueo]';while(&F){$_=&S;if(&B=~/[xl]t $b/){$_='T';&S}if(&B=~/[cs]h i|ts u/) {&S}$o='j'eq$_?0:'f'eq$_?2:4,($_,$p)=@T[$o..9],$o==4&&S(),print$p if(&B=~ /j[aueo]|f$b|wh $b/);if(&B!~/nh/&&B()=~/^([$s])?([yh] )?($b)/){if($2&&'x'ne$1 ){$k=$1;$n=&B=~/th/?3:1,@B=(qw(x y),$_=pop@B)}else{$n=-1+index$b,$3;$1&&S();$ k=$2?(&S,'Y'):$1?$1:'_'}$_=substr($T{$k},$n*2,2)}else{$_='n'eq$_?($B[0]eq'n' &&S(),'ん'):'っ'if(&B=~/^([$s])\1|^n/s);}print}sub F{$_=2-$#B;$_?(read(STDIN, $_,$_),push(@B,split//,lc$_),''ne&B):1}sub B{"$_@B"}sub S{shift@B} jiyuuminshu syakai fifa fyo = じゆうみんしゅ しゃかい ふぃふぁ anko annko annnko annnnko an = あんこ あんこ あんんこ あんんこ あん nyaxan jyuzu chikyuu totyuu thuu = にゃぁん じゅず ちきゅう とちゅう てゅう omotya ocha whizudamu xaxtulaltu = おもちゃ おちゃ うぃずだむ ぁっぁっ juujitu jyuusu fakkuyu = じゅうじつ じゅうす ふぁっくゆ bagu: xha fyo = ばぐ: ゃ ょ
文字コードをうまく使えたら "あいう…"なんてスペースが削れるんだがな・・・
597とは別の方法ってことかな。EUC-JPでも動くような
7行XMLパーサ、などと難題をふっかけてみる。
textfile.orgで7行wiki紹介されててビクーリ
へた字変換にチャレンジ
>>606 sub sox{($d,$s,$e)=@_;$t=1;@d=split//,$d;O:for($C=$E=$A=$V='',@A=();($_=shift
@d)ne'';){$n=0;if($t&1){/</?$n=$d[0]eq'/'?((shift@d),4):1:$C.=$_}/>/?$t=4:$E
.=$_ if($t&16);if($t&128){$t=8 if(!/\s/)}if($t&14){if(/>|\//){($t&4?$e:$s)->(
$C,$E,@A);(/\//&&$t&2&&''ne$E)?$t=4:($t=1,goto O)}}if($t&2){/\s/?$n=2:$E.=$_}
if($t&8){/=/?$n=2:$A.=$_}$n=1,($_=~/["']/)?$q=$_:($V.=$_,$q='\s')if($t&32);
/$q/?(@A=(@A,$A,$V),$n=1,$A=$V=''):($V.=$_)if($t&64);$t<<=$n}}
# デモ
$start = sub { my($cont,$elem,@attr)=@_;
$cont=~tr/\n//d;print"$idt:$cont\n"if($cont ne'');
print"$idt<$elem>\n";
while($#attr>=0){printf("$idt %s: %s\n",shift@attr,shift@attr)}
$idt.=' ';
};
$end = sub { my($cont,$elem)=@_;
$cont=~tr/\n//d;print"$idt:$cont\n"if($cont ne'');
$idt=substr($idt, 4);
print"$idt</$elem>\n";
};
sox(<<'END_XML', $start, $end);
<html><head><title>7行XMLパーサ</title></head>
<body style="background=#FFF;color=#000">
<p>暇に任せて<em>SOXパーサ</em>(sox関数が6行)です (<a
href='
http://pc2.2ch.net/test/read.cgi/tech/1051703369/l50 '
title="七行プログラミング part4">投稿先</a>)</p><hr/>
<p>実体参照使用不可。大ざっぱにWell-formedな<acronym>XML</acronym>を
対象にしていますが、validateは無理。=の前後のスペースに弱いです。</p>
<p>疲れた (;´Д`)</p>
</body></html>
END_XML
デモの$idt.=' ';はスペース4つで
>>608 へた字ってなに?フォント名?
それとも、所謂クサチュー語(最近では"ギャル語")のこと?
>>609 縮め。
sub sox{($d,$s,$e)=@_;$t=1;@d=split//,$d;O:for(($C,$E,$A,$V,@A)=();($_=shift@d)
ne'';){$n=0;/</?$n=$d[0]eq'/'?(shift@d,4):1:$C.=$_ if$t&1;/>/?$t=4:$E.=$_ if$t&
16;/\s/ or$t=8if$t&128;($t&4?$e:$s)->($C,$E,@A),(m|/|&&$t&2&&''ne$E)?$t=4:($t=1
,goto O)if$t&14&&/>|\//;/\s/?$n=2:$E.=$_ if$t&2;/=/?$n=2:$A.=$_ if$t&8;$n=1,
/["']/?$q=$_:($V.=$_,$q='\s')if$t&32;/$q/?(@A=(@A,$A,$V),$n=1,$A=$V=''):($V.=$_
)if$t&64;$t<<=$n}}
別アプローチ。
use strict;sub P{my($t,@t)=pop;while($t=~m!<([^\s>]+)([^>]+)?>(.*?)</\1>|([^<]+
)!gsx){my($E,$A,$C,$c,%A)=($1,$2,$3,$4);($A{$1}=$2)=~s/^(["'])(.*)\1\z/$2/while
$A=~/(\S+?)=("[^"]*"|'[^']*'|\S+)/gs;push@t,""ne$E?{e=>$E,a=>\%A,c=>P($C)}:$c}\
@t}sub S{my($t,$i)=@_;for(@{$t}){if(ref){no strict"vars";local($E,*A,$C)=@{$_}{
e=>a=>'c'};print"$i$E>\n",map"$i $_=$A{$_}\n",sort keys%A;S($C,$i." ")}else{s/
(?<=\n)./$i$&/gx;s/\s+\z//;print"$i$_\n"}}}
S P <<'XML';
...
XML
うーん。
あーん。
ギャル語の変換なんて到底無理だ。 ギャル字ならなんとかなるんじゃないか? というわけでギャル字辞書キボン
新入りでもうだめぽ。っていうか疲れた。スレ汚しごめん #include <stdio.h> char j[]="あいうえおー。、なまらぁかがさざはばぱただゃやかわじふ",e[]= "aiueo-.,nmrlkgszhbptd ycwjf",i,f=0,c,d=0;void p(int x,int y){if(y==21&&x==1) return;putchar(j[y*2]);if(y>=11)y<16?x*=2:y<19?x*=3:y<21&&x<2?x*=2:y<21?x*=2, x++:y<22&&x==3?x=6,y=11:y<23?0:y<24&&(x==1||x==3)?x*=2,y=14:y<24?x*=2:y==24&&x ==4?x=3:0;putchar(j[y*2+1]+x-f);}int main(){while(i=getchar()){c=0;while(e[c] !=i&&e[c]!=0)c++;if(c==27){if(d==8)puts("ん"),d=0;continue;}if(d==0)c>=8?d=c: putchar(j[c*2])+putchar(j[c*2+1]);else if(c>=8)d==8?fputs("ん",stdout),c-d?d=c :d=0:c==d?fputs("っ",stdout):d==10?f=1,d=c:c==16&&d==23?p(1,19),d=21:c==22?p(1 ,d),d=21:0;else{d==25?p(1,15),d=21:0;if(d==26){p(2,16);d=11;if(c==2){d=f=0; continue;}}p(c,d);d=f=0;}}return 0;}
↑とりあえず一通りの変換できます(、。ーもね)が、 jyaとか3文字系は一部わけわからん出力になりますw
オンドゥル語変換プログラムを7行でキボン。>ALL そんなこと→ドンドコドーン、悪人→ルンゲン 等、特殊なものも変換できる (または、新単語をカスタマイズできる) ような奴がベストです。
規則性あるのか?
・膨大な辞書ファイルを作って置き換え ・ローマ字に分解して母音を改竄し、片仮名に再変換 とか考えられるが、どちらにしても7行に収めるのは つらいと思われ。
ギャル字ってのは、秀マクロのクサチュー語変換マクロを 使っていろいろしないと どんな文字かも忘れますた
>>613 気づいてたみたいだけど609はSOXじゃなくてSAXだった∧||∧
#include <windows.h> int j,l,u;UCHAR*p,*r,*s;char*t="ラィイゥルェエォオカaキaクaケaコacザ\0cザ\0シaスaセaソaタacディ\0cチ"\ "゙\0ッツaテcディ\0cドゥ\0cド\0ナルヌネノハcャー\0cパ\0ヒabフabヘabオabマミムメモャヤュユョヨラリルレロワワイエヲン",o[9\ 99],q[999];int main(c,v)char**v;{HWND w=CreateWindow("STATIC",0,0,0,0,1,1,0,0,0,0 );HIMC i=ImmGetContext(w);HKL k=GetKeyboardLayout(0);ImmGetConversionList(k,i,v[1 ],(CANDIDATELIST*)o,999,2);p=(UCHAR*)(&o[0]+*((CANDIDATELIST*)o)->dwOffset);ImmR\ eleaseContext(w,i);for(c=0,s=q;c<strlen(p);c+=2){if((u=p[c]*256+p[c+1])>33439&&u< 33522){for(l=0,r=t;l<u-33440;l++)r+=(*r-99)?1:strlen(r)+1;*s=(*r-97)?*r-98?*r:(*( s+1)=223,*(r-2)):(*(s+1)=222,*(r-1));s+=(*r-97)?*r-98?*r-99?1:(strcpy(s,r+1),str\ len(r)-1):2:2;}else{memcpy(s,p+c,2);s+=2;}}puts(q);return 0;} 簡単なオンドゥル語変換プログラム 10行だし激しくOS依存だけど∧||∧ たまに変な変換をしてくれます
%wor=("はいる","1","かえる","1","はしる",1,"しる","1","いる","1", "きる","1","ける","1","へる","1","ちる","1","てる","1","しゃべる","1", "まいる","1","あせる","1","かじる","1","まじる","1","なじる","1", "よじる","1","あじる","1","しくじる",1,"ねぎる","1","かぎる",1, "ちぎる","1","くぎる",1,"とちる","1","ねる",1); open(f,"in")@t=<f>;@l=();$cau=0;foreach $b(@t){$b=~ s/\n//; if($b eq "くる" || $b =~ /する$/ || $b =~ /ずる$/){ if($b eq "くる"){$b = "こ こ き くる くれ (こい|こよ) こ";} elsif($b =~ /する$/){$b =~ s/する$//; $b = "$bし $bさ $bし $bする $bすれ $b(しろ|せよ) $bし";} elsif($b =~ /ずる$/){$b =~ s/ずる$//; $b = "$bじ $bじ $bじ $bずる $bずれ $bずよ $bじ";}}elsif($b !~ /る$/){ if($b =~ /う$/){$b =~ s/う//;$b ="$bわ $bわ $bい $bう $bえ $bえ $bお";} elsif($b=~ /く$/){$b=~ s/く//;$b="$bか $bか $bき $bく $bけ $bけ $bこ";} elsif($b=~ /す$/){$b=~ s/す//;$b="$bさ $bさ $bし $bす $bせ $bせ $bそ";} elsif($b=~ /つ$/){$b=~ s/つ//;$b="$bた $bた $bち $bつ $bて $bて $bと";} elsif($b=~ /ぬ$/){$b=~ s/ぬ//;$b="$bな $bな $bに $bぬ $bね $bね $bの";} elsif($b=~ /ふ$/){$b=~ s/ふ//;$b="$bは $bは $bひ $bふ $bへ $bへ $bほ";} elsif($b=~ /む$/){$b=~ s/む//;$b="$bま $bま $bみ $bむ $bめ $bめ $bも";} elsif($b=~ /ぐ$/){$b=~ s/ぐ//;$b="$bが $bが $bぎ $bぐ $bげ $bげ $bご";} elsif($b=~ /ず$/){$b=~ s/ず//;$b="$bざ $bざ $bじ $bず $bぜ $bぜ $bぞ";} elsif($b=~ /づ$/){$b=~ s/づ//;$b="$bだ $bだ $bぢ $bづ $bで $bで $bど";} elsif($b=~ /ぶ$/){$b=~ s/ば//;$b="$bば $bば $bび $bぶ $bべ $bべ $bぼ";} }elsif($b !~ /(い|き|し|ち|に|ひ|み|り|え|け|せ|て|ね|へ|め|れ)る$/){ $b =~ s/る$//;$b = "$bら $bら $bり $bる $bれ $bれ $bろ"; }elsif(!$wor{$b}){$b =~ s/る$//;$b="$b $b $b $bる $bれ ($bよ|$bろ) $b"; }else{$b =~ s/る$//;$b="$bら $bら $bり $bる $bれ $bれ $bろ"; }$l[$cau] = $b."\n";$cau++;}open(f,">out");print f @l;
#include "hspext.as" emath 10:pos 252,186 :mes "@":pos 190,60 :mes "◎ ◎" repeat 1024: emcos xt,cnt-128/2: emsin yt,cnt-128/2: emsin xb,cnt+32 emsin xm,cnt/2: pset xt/20+206,yt/20+50: pset -xt/20+306,yt/20+50 emcos xo,cnt/7-10: pset xb/50+176,cnt/4+95: pset -xb/50+336,cnt/4+95 emsin yo,cnt/7-10: pset xo/9+332,yo/18+240: pset -xo/9+180,yo/18+240 pset xm/120+246,cnt/13+275: pset -xm/120+266,cnt/13+275: loop: stop
#include "hspext.as" emath 10:pos 253,186:mes"6":pos 190,60:mes"@":repeat 1024:rnd r,20 s=r*r/12+1:c=cnt:emcos t,c-128+(s*61):emsin u,c-128+(s*61):emsin a,c+32 emsin m,c/2-s:emsin y,c+s/7-(s/2):emcos x,c+s/7-(s/2) pset t/20+206+s,u/20+50-s:pset m/120+249-s,c/13+279-s+(c*s/1000) pset a/50+176+s,c/4+95:pset x/9+330+(s*2),y/18+240+(s) loop:repeat 100:pos 359-cnt,0:gcopy 0,cnt+156,0,1,479:loop:stop
#include "hspext.as" repeat 7:rnd x,640:rnd y,480:c=255:cn=0:xx=0:yy=0 rnd h,256:rnd l,40:repeat l+40:rnd kn,6:rnd hh,20 hx=hh-10:emcos xp,hx:emsin yp,hx:repeat kn:cn=cn+1:h=h+hx emcos xh,h:emsin yh,h:xx=xx+xh:yy=yy+yh:if cn<33:c=255-(cn*8) color c,c,c:pset xx/256+x,yy/256+y loop:loop:loop:stop
#!/usr/bin/perl while(<DATA>){tr/A-Za-z0-9+\///cd;tr/A-Za-z0-9+\// -_/; $a.=unpack(u,pack(c,32+0.75*length).$_);}eval$a; __END__ JF89J0lJSElnY2dLS04rRVJOOHBJSUdEU0ZOUWtNQ0N3WUxFZ3VhQ3RRbz0nO3RyL0EtWmEtejAt OStcLy8vY2Q7dHIvQS1aYS16MC05K1wvLyAtXy87cHJpbnQgdW5wYWNrKHUscGFjayhjLDMyKzAu NzUqbGVuZ3RoKS4kXyk7
将棋。力不足でまだ3倍近くあるが不要なエラーチェックなどはまだまだ縮まる。
ポインタの使い方が不得意なんで配列どっさり∧||∧
使い方は数字4文字をFrom Toで座標的にみれ。ただし先手が上(ぇ
p(駒番号)Toの4文字で駒を鬱。
駒番号は歩1〜飛車7までだ。
表示の日本語はポリシーなんで削りませんでした。
#include <stdio.h>
char *k=" \0歩\0香\0桂\0金\0銀\0角\0飛\0王\0",d[81]={2,3,4,5,8,5,4,3,2,0,7},h\
[64],b[9],t,i,j,u,m,v,s,*p;bool C(){m=d[i];u=d[j];if(j>81||i>81||j==i||u==0||(\
m&&m
>>5 ==u
>>5 )||(u&32)!=t)return false;m=j-i;s=t/16-1;m*=s;s=u%32;if((s==1&&m=\
=9)||(s==3&&(m==19||m==17))||(s==4&&((7<m&&m<11)||m==-8||m==-10))||((s&8||21<s)
&((7<m&&m<11)||m==1||(-7<m&&m<-11)||m==-1)))goto l;if(s==5||(16<s&&s<22)){if((\
7<m&&m<11)||m==1||m==-1||m==-9)goto l;}else{v=j;do{if(s%16==6)v+=(b[2]>*b?1:-1
)+(b[3]>b[1]?9:-9);if(s%16==7)v+=(m%9)?(j>i?-1:1):(j>i?-9:9);if(s==2&&m&&m%9==0
)v+=(t?-9:9);}while(v!=i&&!d[v]);if(v==i)goto l;}return false;l:for(m=t;m<t+20;
m++)if(h[m]==0){h[m]=d[i]%16;break;}d[j]=0;d[i]=u;if(s<8&&((t==0&&j>53&&i<54)||
(t==32&&i<27&&j>26))){m=0;puts("成りますか?(y/n)");while(m!=121&&m!=110)scanf(
"%c",&m);if(m==121)d[i]+=16;}return true;}
上の続き
void main(){d[16]=6;for(i=18;i<27;)d\
[i++]=1;for(i=0;i<28;i++)d[80-i]=d[i]+(d[i]?32:0);for(;;){p=d;for(i=0;i<81;){u\
=*p++;j=u%16;m=(u&16)
>>4 ;u>>=5;if(!j)u = 2;printf("|%c%s%c",m?43:32,k+j*3,u>1?
32:(!u?94:95));if(i++%9==8)puts("|\n");}puts("先手:");for(i=0;i<64;){if(h[i])
printf("%s",k+h[i]*3);if(i++==30)puts("\n後手:");}printf("\n%s入力\n",t?"後手"
:"先手");scanf("%4s",b);for(i=0;i<4;)b[i++]-=49;b[2]=8-b[2];i=b[2]+b[3]*9;if(*b
==63){j=b[1];if(i>81||d[i])continue;if(j==1)for(u=i%9;u<80;)if(d[u+=9]==j+t)co\
ntinue;for(u=0;u<32;u++)if(h[t+u]==j){h[t+u]=0;d[i]=j+t;t=32-t;}}else{j=8-*b+b\
[1]*9;if(C())t=32-t;}for(i=0;i<64;)if(h[i++]==8)return;}}
角動かんし 金変な動きするし直します。
>>634-635 bool, true, false → int, 1, 0
(A&&B)||(C&&D) → A&&B||C&&D
(A式)?(B式):(C式) → A式?B式:C式
括弧はかなり減らせそう
1 後置演算子
2 前置演算子
3 キャスト
4 * / %
5 + -
6 << >>
7 < <= > >=
8 = !=
9 &
10 ^
11 |
12 &&
13 ||
14 ? :
15 = 代入演算子
16 ,
#include <stdio.h>
char *k=" \0歩\0香\0桂\0銀\0金\0角\0飛\0王\0",d[81]={2,3,4,5,8,5,4,3,2,0,7},h\
[64],b[9],t,i,j,u,m,v,s,*p;int C(){m=d[i];u=d[j];if(j>81||i>81||j==i||u==0||m&&
m
>>5 ==u
>>5 ||(u&32)==t)return 0;m=j-i;m*=-t/16+1;s=u%32;if(s==1&&m==9||s==3&&(m
==19||m==17)||s==4&&(7<m&&m<11||m==-8||m==-10)||(s&8||21<s)&&(7<m&&m<11||m==1||
-7<m&&m<-11||m==-1))goto l;if(s==5||16<s&&s<22){if(7<m&&m<11||m==1||m==-1||m==
-9)goto l;}else{v=j;do{if(s%16==6&&(m%8==0||m%10==0))v+=(b[2]>*b?1:-1)+(b[3]>b\
[1]?9:-9);if(s%16==7)v+=m%9?j>i?-1:1:j>i?-9:9;if(s==2&&m&&m%9==0)v+=t?9:-9;}wh\
ile(v!=i&&!d[v]);if(v==i)goto l;}return 0;l:for(m=32-t;m<64-t;m++)if(h[m]==0){
h[m]=d[i]%16;break;}d[j]=0;d[i]=u;if(s<8&&(t&&j>53&&i<54||!t&&i<27&&j>26)){put\
s("成る?y/n");for(m=0;m!='y'&&m!='n';scanf("%c",&m));if(m=='y')d[i]+=16;}retu\
rn 1;}void main(){d[16]=6;for(i=18;i<27;)d[i++]=1;for(i=0;i<28;i++)d[80-i]=d[i]
+(d[i]?32:0);for(;;){p=d;for(i=0;i<81;){u=*p++;j=u%16;m=(u&16)
>>4 ;u>>=5;if(!j)
u=2;printf("|%c%s%c",m?43:32,k+j*3,u>1?32:(!u?94:95));if(i++%9==8)puts("|\n");}
printf("先手:");for(i=63;i;){if(h[i])printf("%s",k+h[i]*3);if(i--==30)printf(
"\n後手:");}printf("\n%s手入力\n",t?"後":"先");scanf("%4s",b);for(i=0;i<4;)b[
i++]-=49;b[2]=8-b[2];i=b[2]+b[3]*9;if(*b==63){j=b[1]+1;if(i>81||d[i])continue;
if(j==1)for(u=i%9;u<81;)if(d[u+=9]==j+t)continue;for(u=32-t;u<64-t;u++)if(h[u]
==j){h[u]=0;d[i]=j+t;t=32-t;}}else{*b=8-*b;j=*b+b[1]*9;if(C())t=32-t;}for(i=0;
i<64;)if(h[i++]&8)return;}}
へたれだからこれ以上括弧へらせない。バグ修復済み
15行目のfor(i=63;i;)じゃなくてfor(i=63;i+1;)
お、すごいね。 起動後は下の手番で、右下の香車を1マス前に動かすなら 「 1918 」って入力するんだね。 後手(下)の駒は _ 先手の駒は ^ がついて 成ると左に+が付くと。 すごいなこれ。
#include <stdio.h>
char *k=" \0歩\0香\0桂\0銀\0金\0角\0飛\0王",d[81]={2,3,4,5,8,5,4,3,2,0,7},h[64]
,b[9],a=32,c=16,t,i,j,u,m,v,s,*p;int C(){m=d[i];u=d[j];if(j>81||i>81||j==i||u==0
||m&&m
>>5 ==u
>>5 ||(u&a)==t)return 0;m=j-i;m*=-t/c+1;s=u%a;if(s<2&&m==9||s==3&&(m
==19||m==17)||s==4&&(7<m&&m<11||m==-8||m==-10)||(s&8||21<s)&&(7<m&&m<11||m==1||
-7<m&&m<-11||m==-1))goto l;if(s==5||c<s&&s<22)if(7<m&&m<11||m==1||m==-1||m==-9)
goto l;else{v=j;do{if(s%c==6&&(m%8==0||m%10==0))v+=(b[2]>*b?1:-1)+(b[3]>b[1]?9:
-9);if(s%c==7)v+=m%9?j>i?-1:1:j>i?-9:9;if(s==2&&m&&m%9==0)v+=t?9:-9;}while(v!=i
&&!d[v]);if(v==i)goto l;}return 0;l:for(m=a-t;m<64-t;m++)if(!h[m]){h[m]=d[i]%c;
break;}d[j]=0;d[i]=u;if(s<8&&(t&&j>53&&i<54||!t&&i<27&&j>26)){puts("成る?y/n")
;for(m=0;m!='y'&&m!='n';scanf("%c",&m));if(m=='y')d[i]+=c;}return 1;}void main()
{d[c]=6;for(i=18;i<27;)d[i++]=1;for(i=0;i<28;i++)d[80-i]=d[i]+(d[i]?a:0);for(;;)
{p=d;for(i=0;i<81;){u=*p++;j=u%c;m=(u&c)
>>4 ;u>>=5;if(!j)u=2;printf("|%c%s%c",m?
43:a,k+j*3,u>1?a:!u?94:95);if(i++%9==8)puts("|\n");}printf("先手:");for(i=63;i
+1;){if(h[i])printf("%s",k+h[i]*3);if(i--==a)printf("\n後手:");}printf("\n%s手\
入力\n",t?"後":"先");for(i=0;i<64;)if(h[i++]&8){printf("%s手の勝利",i<a?"後":
"先");return;}scanf("%4s",b);for(i=0;i<4;)b[i++]-=49;b[2]=8-b[2];i=b[2]+b[3]*9;
if(*b==63){j=b[1]+1;if(i>81||d[i])continue;if(j==1)for(u=i%9;u<81;)if(d[u+=9]==
j+t)continue;for(u=a-t;u<64-t;u++)if(h[u]==j){h[u]=0;t=a-t;d[i]=j+t;}}else{*b=
8-*b;j=*b+b[1]*9;if(C())t=a-t;}}}
バグ修正ばかりで7行見えてくる気配がない。
これで最後かな?
if(j==1)for(u=i%9;u<81;)if(d[u+=9]==j+t)continue; ↑って何を意図してるの?
continueは一番内側のブロックから抜ける、だったっけ? 一番内側のfor,while,do-while文から抜ける、だったっけ?
>>642 二歩のチェックです。
ルールあんまりわかんないんですが
if(j==1)
歩をうつとき
for(u=i%9;u<81;)
同じ列を探して
if(d[u+=9]==j+t)continue;
自分の歩があったらコンテニュー
ということです。
>>642 チェックになってないですね。
そういう意図だったんですねすいません。
#include <stdio.h>
char *k=" \0歩\0香\0桂\0銀\0金\0角\0飛\0王",d[81]={2,3,4,5,8,5,4,3,2,0,7},h[64 \
],b[9],a=32,c=16,t,i,j,u,m,v,w,s,*p;int C(){m=*(p=d+i);u=d[j];if(j==i||m&&m<<5==
u<<5||(u&a)==t)return 0;m=j-i;m*=-t/c+1;s=u%a;v=7<m&m<11;w=m==1|m==-1;if(s<2&m==
9|s==3&(m==19|m==17)|s==4&(v|m==-8|m==-10)|(s&8|21<s)&(v|w|-7<m&m<-11)|(s==5|c<s
&s<22)&(v|w|m==-9))goto l;v=j;do v+=s%c==6&(m%8==0|m%10==0)?(b[2]>*b?1:-1)+(b[3]
>b[1]?9:-9):s%c==7?m%9?j>i?-1:1:j>i?-9:9:m&&s==2&m%9==0?t?9:-9:1;while(v!=i&!d[ \
v]);if(v==i)goto l;return 0;l:for(m=a-t;m<64-t;m++)if(!h[m]){h[m]=*p%c;break;}d
[j]=0;*p=u;if(s<8&(t&&j>53&i<54||!t&&i<27&j>26)){puts("成る?y/n");for(m=0;m!=' \
y'&m!='n';scanf("%c",&m));if(m=='y')*p+=c;}return 1;}void main(){d[c]=6;for(i=18
;i<27;)d[i++]=1;for(i=0;i<28;)d[80-i++]=d[i]+(d[i]?a:0);for(;;){p=d;for(i=0;i<81
;){u=*p++;j=u%c;m=(u&c)
>>4 ;u>>=5;if(!j)u=2;printf("|%c%s%c",m?43:a,k+j*3,u>1?a:!
u?94:95);if(i++%9==8)puts("|\n");}puts("先手");for(i=63;i+1;){if(h[i])printf("% \
s",k+h[i]*3);if(i--==a)puts("\n後手");}printf("\n%s手入力\n",t?"後":"先");for(i=
0;i<64;)if(h[i++]&8){printf("%s手の勝利",i<a?"後":"先");return;}l:scanf("%4s",b)
;for(i=0;i<4;)b[i++]-=49;b[2]=8-b[2];i=b[2]+b[3]*9;if(*b==63){j=b[1]+1;if(i>81||
d[i])goto l;if(j==1)for(u=i%9;u<81;)if(d[u+=9]==1+t)goto l;for(u=a-t;u<64-t;u++)
if(h[u]==j){h[u]=0;t=a-t;d[i]=j+t;}}else{*b=8-*b;j=*b+b[1]*9;t=C()?a-t:t;}}}
18行。うぉぉちぢまらねぇ!
>>646 小手先だけど…
> if(v==i)goto l;return 0;
って
> if(v!=i)return 0;
でいいよね? これで7字かな。
確かにスレタイの7行は達成してないけど、
それでも18行でここまで出来てると正直凄いと思う。
あとはがんがって縮めるだけだけど…半分以下か。
小手先のごまかしやってないでアルゴリズムレベルでの革新が必要な予感。
>>646 実は途中で先手が下になるべきだということに気づいてしまったので
帳尻あわせるために非常に汚いアルゴリズムになってしまったんです。
なので新たに誰か(俺みたいな部活プログラマじゃない人)が
1から作ったほうがいい気がするのです。
もいっこ小手先の技 - " \0歩\0香\0桂\0銀\0金\0角\0飛\0王" + " 歩香桂銀金角飛王" - printf("|%c%s%c",m?43:a,k+j*3,u>1?a:!u?94:95); + printf("|%c%.*s%c",m?43:a,2,k+j*2,u>1?a:!u?94:95); - printf("%s",k+h[i]*3); + printf("%.*s",2,k+h[i]*2); 7字くらい? 微妙か… 漢字使うならワイド文字使うべきなのかもだけどねぇ…縮むかどうかは微妙か。
650 :
デフォルトの名無しさん :04/03/06 00:57
- printf("%s",k+h[i]*3); ? printf("%.*s",2,k+h[i]*2); + printf("%.2s",k+h[i]*2); これでもいいみたい さらに4byte節約
HSPでインベーダーもどき(敵は一種類、UFO、敵の攻撃、トーチカ、敵ピクピクなし) 七行ではこれ以上盛り込めない・・・。 *a:screen ,256:dim i,10,5:b=400:w=0:r=10:e=b:f=0:g=16:*h:p+5:if 50-t<p:f+r:p=0 repeat 5:c=cnt:j=c*16+g:repeat 10:d=cnt:l=d*20+f:if i.d.c=0{pos l,j+w:mes"鼎" gosub n:}loop:loop:stick k,5:if(5>k)&(k>0){o=k*4-10/4*5:q+o:}if(k=16)&(m=0){ m=1:u=q+2:}pos q,b:mes"凸":if m=1{gosub v:}wait 3:cls:mes s:goto h:*v:e-16 pos u,e:mes"|":if e=0{m=0:e=b:}return:*n:x=u-l:y=j+w-e:if(x*x<257)&(y*y<257){ i.d.c=1:m=0:e=b:t+1:s+10:}if(l=0)&(r<0){r=10:w+16:}if(l=240)&(r>0):r=-10:w+16 if j+w=b{cls:goto z:}if t=50{t=0:goto a:}return:*z:mes s:pos q,b:mes"※":stop
>646-650 あとこんな感じか - if(!j)u=2; + u=j?u:2; - if(m=='y') + if(m-'n') なかなか1から書こうって奴はいないと思うよ。 一応突っ込んどくと所々1,2文字オーバーだがなw
春休みの宿題終わったら一から組みなおして、 7行に近づけようとおもいます。 ま、暇つぶしですが。
よく分からないが最近盛り上がってるな。 プログラミングは全然分からんが期待、ガムバレ。
画像陰毛加工(HSP) ソースと同じディレクトリにjpg画像を1.jpgという名前でコピーしておいて起動 #include "hspext.as" picload"1.jpg":gfini winx,winy:repeat winy/10:c=cnt*10:repeat winx/10:d=cnt*10 pget d,c:if rval+gval+bval<150{gosub *a}:loop:loop:stop:*a:x=d:y=c:n=0:e=0:f=0 g=0:i=0:j=0:z=256:rnd h,z:rnd l,10:repeat l+10:rnd k,6:rnd m,20:if cnt=(l+9){ k=10:n=1}:o=m-10:repeat k:h+o:emcos p,h:emsin q,h:e+p:f+q:if n=1{gosub s} color g,i,j:pset e/z+x,f/z+y:loop:loop:return:stop:*s:pget e/z+x,f/z+y g+(rval-g/10):i+(gval-i/10):j+(bval-j/10):return
元々のバグもいくつか残ったままだが>646を16行化 七行は遠いなぁ…… #include<stdio.h> char*k=" 歩香桂銀金角飛王",d[81]={2,3,4,5,8,5,4,3,2,0,7},h[64],b[9],a=32,c=16, t,i,j,u,m,v,w,s,*p,z,e;main(){d[c]=6;for(i=18;i<27;)d[i++]=1;for(;~--i;)d[80-i] =d[i]?d[i]+a:0;for(;;){for(z=i=0;i<81;++i%9||puts("|\n"))u=d[i],j=u%c,printf("\ |%c%.2s%c"," +"[u/c&1],k+j*2,"^_ "[j?u/a:2]);puts("先手");for(i=64;~--i;z|=h[i] &8,a-i||puts("\n後手"))h[i]&&printf("%.2s",k+h[i]*2);printf("\n%s手入力\n",t?"\ 後":"先");if(z)return!printf("%s手の勝利",i<a?"後":"先");l:scanf("%4s",b);for(i =0;i<4;)b[i++]-=49;e=8-b[2];i=e+b[3]*9;if(*b-63){*b=8-*b;j=*b+b[1]*9;m=*(p=d+i) ;u=d[j];z=!u|(u&a)==t||m&&u/a==m/a;if(!z){m=t?i-j:j-i;s=u%a;v=7<m&m<11;w=m*m==1 ;if(!(s<2&m==9|s==3&(m==19|m==17)|s==4&(v|m==-8|m==-10)|(s&8|21<s)&(v|w|-7<m&m< -11)|(s==5|c<s&s<22)&(v|w|m==-9))){v=j;do v+=s%c==6&!(m%8&&m%10)?((e>*b)+(b[3]> b[1])*9-5)*2:s%c==7?z=m%9?1:9,j>i?-z:z:m&&s==2&m%9==0?t?9:-9:1;while((z=v-i)&&! d[v]);}if(!z){for(m=a-t;d[j]=m<64-t&&h[m]||(h[m]=*p%c,0);m++);*p=u;if(s<8?t?53< i&j<54:i<27&j>26:0){for(m=puts("成る?y/n");m-'y'&&m-'n';scanf("%c",&m));*p|=m- 'n'?c:0;}}}t=z?t:a-t;}else{j=b[1]+1;for(u=i%9;u<81&&~t+d[u+=9];);if(i>81||d[i] ||j==1&&u<81)goto l;for(u=a-t;u<64-t&&h[u]-j;u++);h[u]=0;t=a-t;d[i]=j+t;}}}
小手先ですが何文字か縮めて見ますた。 #include<stdio.h> char*k=" 歩香桂銀金角飛王",d[81]={2,3,4,5,8,5,4,3,2,0,7},h[64],b[9],a=32,c=16, t,i,j,u,m,v,w,s,*p,z,e;main(){d[c]=6;for(i=18;i<27;)d[i++]=1;for(;~--i;)d[80-i] =d[i]?d[i]+a:0;for(;;){for(z=i=0;i<81;++i%9||puts("|\n"))u=d[i],j=u%c,printf("\ |%c%.2s%c"," +"[u/c&1],k+j*2,"^_"[j?u/a:2]);puts("先手");for(i=64;~--i;z|=h[i]& 8,a-i||puts("\n後手"))h[i]&&printf("%.2s",k+h[i]*2);printf("\n%s手入力\n",t?"\後 ":"先");if(z)return!printf("%s手の勝利",i<a?"後":"先");l:scanf("%4s",b);for(i=0 ;i<4;)b[i++]-=49;e=8-b[2];i=e+b[3]*9;if(*b-63){*b=8-*b;j=*b+b[1]*9;m=*(p=d+i);u =d[j];z=!u|(u&a)==t||m&&u/a-m/a;if(!z){m=t?i-j:j-i;s=u%a;v=7<m&m<11;w=m*m-1;if( !(s<2&m-9|s-3&(m-19|m-17)|s-4&(v|m+8|m+10)|(s&8|21<s)&(v|w|-7<m&m<-11)|(s-5|c<s &s<22)&(v|w|m+9))){v=j;do v+=s%c-6&!(m%8&&m%10)?((e>*b)+(b[3]>b[1])*9-5)*2:s%c- 7?z=m%9?1:9,j>i?-z:z:m&&s-2&m%9-0?t?9:-9:1;while((z=v-i)&&!d[v]);}if(!z){for(m= a-t;d[j]=m<64-t&&h[m]||(h[m]=*p%c,0);m++);*p=u;if(s<8?t?53<i&j<54:i<27&j>26:0){ for(m=puts("成る?y/n");m-'y'&&m-'n';scanf("%c",&m));*p|=m-'n'?c:0;}}}t=z?t:a-t ;}else{j=b[1]+1;for(u=i%9;u<81&&~t+d[u+=9];);if(i>81||d[i]||j-1&&u<81)goto l;fo r(u=a-t;u<64-t&&h[u]-j;u++);h[u]=0;t=a-t;d[i]=j+t;}}}
Thanks to
>>656 王が動かないバグ、
後手が正しく成れないバグ
は修正しましたがほかにありますでしょうか?
あと、私の知識では
h[i]&&printf("%.2s",k+h[i]*2);
の前半6byteの意図がわかりません。教えていただけませんでしょうか?
#include<stdio.h>
char*k=" 歩香桂銀金角飛王",d[81]={2,3,4,5,8,5,4,3,2,0,7},h[64],b[9],a=32,c=16,
t,i,j,u,m,v,w,s,*p,z,e;main(){d[c]=6;for(i=18;i<27;)d[i++]=1;for(;~--i;)d[80-i]
=d[i]?d[i]+a:0;for(;;){for(z=i=0;i<81;++i%9||puts("|\n"))u=d[i],j=u%c,printf("\
|%c%.2s%c"," +"[u/c&1],k+j*2,"^_ "[j?u/a:2]);puts("先手");for(i=64;~--i;z|=h[i]
&8,a-i||puts("\n後手"))h[i]&&printf("%.2s",k+h[i]*2);printf("\n%s手入力\n",t?"\
後":"先");if(z)return!printf("%s手の勝利",i<a?"後":"先");l:scanf("%4s",b);for(i
=0;i<4;)b[i++]-=49;e=8-b[2];i=e+b[3]*9;if(*b-63){*b=8-*b;j=*b+b[1]*9;m=*(p=d+i)
;u=d[j];z=!u|(u&a)==t||m&&u/a==m/a;if(!z){m=t?i-j:j-i;s=u%a;v=7<m&m<11;w=v|m*m
==1;if(!(s<2&m==9|s==3&(m==19|m==17)|s==4&(v|m==-8|m==-10)|(s&8||21<s)&(w|-7<m&
m<-11)|(s==5|c<s&s<22)&(w|m==-9))){v=j;do v+=s%c==6&!(m%8&&m%10)?((e>*b)+(b[3]>
b[1])*9-5)*2:s%c==7?z=m%9?1:9,j>i?-z:z:m&&s==2&m%9==0?t?9:-9:1;while((z=v-i)&&!
d[v]);}if(!z){for(m=a-t;d[j]=m<64-t&&h[m]||(h[m]=*p%c,0);m++);*p=u;if(s<8?t?j<
53&i>54:i<27&j>26:0){for(m=puts("成る?y/n");m-'y'&&m-'n';scanf("%c",&m));*p|=m
-'n'?c:0;}}}t=z?t:a-t;}else{j=b[1]+1;for(u=i%9;u<81&&~t+d[u+=9];);if(d[i]||i>81
|j==1&u<81)goto l;for(u=a-t;u<64-t&&h[u]-j;u++);h[u]=0;t=a-t;d[i]=j+t;}}}
>>657 もいっちょ小手先で。
6行目ラスト2文字減。
- for(i=0;i<4;)b[i++]-=49;
+ for(i=4;i--;)b[i]-=49;
>>658 A&&Bは、Aが0のときにだけBが評価される。
Aが0でないなら、BによらずA&&Bが1になるからね。
つまり、h[i]が0でないときにだけ、printfしなさいってこと。
printfの返り値とかは捨てられてます。
誤爆+連続書き込みすまそ(´・ω・`) A&&Bは、Aが1のときにだけBが評価される。 Aが1でないなら、BによらずA&&Bが0になるから。 A||Bは、Aが0のときにだけBが評価される。 Aが0でないなら、BによらずA&&Bが1になるから。
>>660 レスありがとうございます。
そこら辺に見える||も同じような使いかたしてるんだとわかりました。
で、将棋自体が15行程度が限界にできているように思えてきました。
チェスのほうが簡単そうな気もしてきました。(細かいルールが・・・
>>658 自己レス
なに変なとこいじってバグ生み出してんだよ。
13-14行目
× s<8?t?j<53&i>54
○ s<8?t?j<54&i>53
>>658 後手が1354と打つと歩が変な動きをするぞい。
動けるかどうかの判定に番兵つかってみた。
おかげで17行になっちゃった。
>>656 すまそ。
#include<stdio.h>
char*k=" 歩香桂銀金角飛王",d[82]={2,3,4,5,8,5,4,3,2,0,7},h[64],b[9],f=81,a=32,
c=16,t,i,j,u,m,n,v,w,s,*p,z,e;main(){d[c]=6;d[f]=1;for(i=18;i<27;)d[i++]=1;for(
;~--i;)d[80-i]=d[i]?d[i]+a:0;for(;;){for(z=i=0;i<f;++i%9||puts("|\n"))u=d[i],j=
u%c,printf("|%c%.2s%c"," +"[u/c&1],k+j*2,"^_ "[j?u/a:2]);puts("先手");for(i=64;
~--i;z|=h[i]&8,a-i||puts("\n後手"))h[i]&&printf("%.2s",k+h[i]*2);printf("\n%s\
手入力\n",t?"後":"先");if(z)return!printf("%s手の勝利",i<a?"後":"先");l:scanf(
"%4s",b);for(i=4;i--;)b[i]-=49;e=8-b[2];i=e+b[3]*9;if(*b-63){*b=8-*b;j=*b+b[1]*
9;m=*(p=d+i);u=d[j];z=!u|(u&a)==t||m&&u/a==m/a;if(!z){m=t?i-j:j-i;s=u%a;v=7<m&m
<11;w=v|m*m==1;n=s<2&m==9|s==3&(m==19|m==17)|s==4&(v|m==-8|m==-10)|(s&8||21<s)&
(w|-7<m&m<-11)|(s==5|c<s&s<22)&(w|m==-9);if(!n){v=j;do v+=s%c==6&!(m%8&&m%10)?(
(e>*b)+(b[3]>b[1])*9-5)*2:s%c==7?z=m%9?1:9,j>i?-z:z:m&&s==2&m%9==0?t?9:-9:f-v;
while((z=v-i)&&!d[v]);}if(!z|n){for(m=a-t;d[j]=m<64-t&&h[m]||(h[m]=*p%c,0);m++)
;*p=u;if(s<8?t?j<54&i>53:i<27&j>26:0){for(puts("成る?y/n");n-'y'&&n-'n';scanf(
"%c",&n));*p|=n-'n'?c:0;}}}t=z?t:a-t;}else{j=b[1]+1;for(u=i%9;u<f&&~t+d[u+=9];)
;if(d[i]||i>f|j==1&u<f)goto l;for(u=a-t;u<64-t&&h[u]-j;u++);h[u]=0;t=a-t;d[i]=j
+t;}}}
無い持ち駒が打てるようになっていたのを修正。 また伸びた・・・欝だ。 #include<stdio.h> char*k=" 歩香桂銀金角飛王",d[82]={2,3,4,5,8,5,4,3,2,0,7},h[64],b[9],f=81,a=32, c=16,t,i,j,u,m,n,v,w,s,*p,z,e;main(){d[c]=6;d[f]=1;for(i=18;i<27;)d[i++]=1;for( ;~--i;)d[80-i]=d[i]?d[i]+a:0;for(;;){for(z=i=0;i<f;++i%9||puts("|\n"))u=d[i],j= u%c,printf("|%c%.2s%c"," +"[u/c&1],k+j*2,"^_ "[j?u/a:2]);puts("先手");for(i=64; ~--i;z|=h[i]&8,a-i||puts("\n後手"))h[i]&&printf("%.2s",k+h[i]*2);printf("\n%s\ 手入力\n",t?"後":"先");if(z)return!printf("%s手の勝利",i<a?"後":"先");l:scanf( "%4s",b);for(i=4;i--;)b[i]-=49;e=8-b[2];i=e+b[3]*9;if(*b-63){*b=8-*b;j=*b+b[1]* 9;m=*(p=d+i);u=d[j];z=!u|(u&a)==t||m&&u/a==m/a;if(!z){m=t?i-j:j-i;s=u%a;v=7<m&m <11;w=v|m*m==1;n=s<2&m==9|s==3&(m==19|m==17)|s==4&(v|m==-8|m==-10)|(s&8||21<s)& (w|-7<m&m<-11)|(s==5|c<s&s<22)&(w|m==-9);if(!n){v=j;do v+=s%c==6&!(m%8&&m%10)?( (e>*b)+(b[3]>b[1])*9-5)*2:s%c==7?z=m%9?1:9,j>i?-z:z:m&&s==2&m%9==0?t?9:-9:f-v; while((z=v-i)&&!d[v]);}if(!z|n){for(m=a-t;d[j]=m<64-t&&h[m]||(h[m]=*p%c,0);m++) ;*p=u;if(s<8?t?j<54&i>53:i<27&j>26:0){for(puts("成る?y/n");n-'y'&&n-'n';scanf( "%c",&n));*p|=n-'n'?c:0;}}}t=z?t:a-t;}else{j=b[1]+1;for(u=i%9;u<f&&~t+d[u+=9];) ;if(d[i]||i>f|j==1&u<f)goto l;for(u=a-t;u<64-t&&h[u]!=j;u++);h[u]==j||(h[u]=0,t =a-t,d[i]=j+t);}}}
HSP 画像の重要と思われる部分にマーキングするプログラム ソースと同じディレクトリに1.jpgという名前でファイルを置き実行。 結果は画面と1.bmpというファイルとして出力される。 #include "hspext.as" picload"1.jpg":gfini winx,winy:h=winx/10:j=winy/10:dim i,h,j:dim k,h:dim m,j repeat j:c=cnt:repeat h:d=cnt:pget d*10,c*10:if rval*2+gval/2-bval>100{i.d.c=1 k.d+1:m.c+1}if j-1=c{k.d=k.d*k.d:f+k.d:hx+d*k.d}loop:if h-1=d{m.c=m.c*m.c:g+m.c hy+c*m.c}loop:b=hx/f:e=hy/g:*om:s=s+1:a=s+e:if (j-1)<a{yd=s*10:goto *en} if i.b.a=0{yd=s*10:goto *en}goto *om:*en:repeat 256:emcos x,cnt:emsin y,cnt pset b*10+(x/5),e*10+yd+(y/5):loop:bmpsave "1.bmp":stop
dとiの初期化を d[81]="23458543207" i=27 盤面の初期化を for(d[c]=6;i--;d[80-i]=e?e+a:0)e=d[i]^=i>10?i>17:48; (↑にもあるが~--iはi--で良い) >667にも適用可
テーブルゲームつながりで、チェッカー(ドラフツ)で参戦しようかなー
#include <stdio.h> char m[49],c[5],i,o,p,q,r,a,b,d,e,f;void main(){for(i=2;i<5;m[i]=m[i+7]=m[i+35]= m[i+42]=1,i++);for(i=14;i<35;m[i]=1,i++);m[24]=0;for(f=31;f;f--){for(i=0;i<49;p\ rintf(m[i]?"●":" "),i++,!(i%7)&&i?puts(""):0);while(1){scanf("%4s",c);o=c[0]- 48;p=c[1]-48;q=c[2]-48;r=c[3]-48;a=o-q;b=p-r;a*=a;b*=b;if(((!a&&b==4)||(a==4&&!b )||(a==4&&b==4))&m[d=(o+q)/2+7*(p+r)/2]&!m[e=q+r*7])break;}puts("");m[o+p*7]=m[d ]=0;m[e]=1;}} ソリティア 左上が0,0で入力はx1y1x2y2
>>667 駒が右逝ったら一段下の左から出てくる。
HSP :ぐるぐる銅鑼 buffer 3,999,180:pos 9,0:a="∵∴":b="|"+a:c=a+a:d="___/":f="∵ |":g=a+"(・)" e="|":i=e+c+a:j="∵ )":k="\":o=255:mes" ____":mes" /"+c+k:l=" \|" mes" /"+a+c+k:mes"/"+g+g+" |":mes b+"∵/ ○\∵|":mes b+" /三 | 三| |":m=" | " mes b+m+"_|_ | |":mes" \∵ | === |/":mes l+d:pos 310,0:gcopy 3,9,0,150,54 pos 310,54:mes"/"+c+a+j:mes i+j:mes i+f:mes i+f:mes" \"+c+a+m:mes" \_"+d pos 159,0:gcopy 3,9,,150,54:gcopy 3,309,,150,180:pos 242,55:gcopy 3,51,55,47,96 repeat 450:pos cnt+445,0:gcopy 3,460-cnt,0,1,180:loop:screen:repeat:r=cnt\6:s+9 t=s\200:repeat 4:pos cnt*200-160+t,150:gcopy 3,r*150,0,160,180:loop:wait 9:loop
八行だった・・・ ○|__/"
○_ / ヾ バンバンバンバン! つ_| ̄|_ ↑ ↑ 人 たたき台
BCCでつ。 ファイルtを読み込んでタイピングホイテョイ。 #include <windows.h> void*c[10];RECT r={0,0,360,70};char y[999],*t=y;WINAPI f(HWND h,int m,int w,int l){switch(m){case 15:{PAINTSTRUCT p;BeginPaint(h,&p);HDC d=p.hdc;FillRect(d,&r, (HBRUSH)6);TextOut(d,5,5,t,40);SetBkColor(d,255);TextOut(d,5,5,t,1);EndPaint(h, &p);break;}case 258:t+=w==*t;InvalidateRect(h,0,0);break;case 2:PostQuitMessage (0);}return DefWindowProc(h,m,w,l);}main(){HFILE a=_lopen("t",0);_lread(a,t,999 );_lclose(a);c[1]=f;c[4]=GetModuleHandle(0);c[9]="typ";RegisterClass((WNDCLASS* )&c);CreateWindow("typ","",4299<<16,0,0,360,70,0,0,(HMODULE)c[4],0);MSG m;for(; GetMessage(&m,0,0,0);TranslateMessage(&m),DispatchMessage(&m));} 怪しいコード... include無視なら7行なのだけど、まだところどころ短く出来そうな。
8行だった。もうだm
#include含め7行になった。 #include <windows.h> char y[999],*t=y;main(){MSG m;PAINTSTRUCT p;HWND h;HDC d;int u,w=_lopen("t",0); _lread(w,t,999);_lclose(w);CreateWindow(WC_DIALOG,"ty",4299<<16,0,0,360,70,0,0, GetModuleHandle(0),0);for(;GetMessage(&m,0,0,0);TranslateMessage(&m),w=m.wParam ,(u=m.message)==15?BeginPaint(h=m.hwnd,&p),TextOut(d=p.hdc,5,5,t,40),SetBkColor (d,41215),TextOut(d,5,5,t,1),EndPaint(h,&p):u==258?t+=w==*t,InvalidateRect(h,0, 0):u==273&&w==2?PostQuitMessage(0),0:DefWindowProc(h,u,w,m.lParam));return(0);} 危険ぽ。
Mac版(と言うほど見た目似てないかも) ioはfcntl.hが必要になるからOSのAPI使用... #include <Carbon.h> char y[999],*t=y;WindowRef w;EventRecord m;short r;long u;Rect b={45,9,99,500} ,B={0,0,99,999};main(){HOpenDF(0,0,"\pt",1,&r);SetPortWindowPort(w=NewWindow(0 ,&b,"\pt",1,0,0,1,0));u=999,FSRead(r,&u,t);TextSize(36);for(;WaitNextEvent(-1, &m,99,0);(u=m.what)==6?BeginUpdate(w),TextMode(4),MoveTo(5,30),DrawText(t,0,1) ,TextMode(0),DrawText(t,1,39),EndUpdate(w),0:u==1?FSClose(r),ExitToShell(),0:u ==3?t+=(m.message&255)==*t,InvalWindowRect(w,&B),EraseRect(&B),0:0);return 0;}
↑ 1.5秒操作しないと終了してた_| ̄|○ こっちで。 #include <Carbon.h> char y[999],*t=y;WindowRef w;EventRecord m;short r;long u;Rect b={45,9,99,500} ,B={0,0,99,999};main(){HOpenDF(0,0,"\pt",1,&r);SetPortWindowPort(w=NewWindow(0 ,&b,"\pt",1,0,0,1,0));u=999,FSRead(r,&u,t);TextSize(36);for(;;GetNextEvent(-1, &m),(u=m.what)==6?BeginUpdate(w),TextMode(4),MoveTo(5,30),DrawText(t,0,1) ,TextMode(0),DrawText(t,1,39),EndUpdate(w),0:u==1?ExitToShell(),FSClose(r),0:u ==3?t+=(m.message&255)==*t,InvalWindowRect(w,&B),EraseRect(&B),0:0);return 0;}
683 :
デフォルトの名無しさん :04/04/06 19:33
ブロック崩し(既出?)言語はHSP。 a=640:b=480:c=320:d=210:o=255:p=50:randomize:rnd e,5:e-2+(e=2):f=3:buffer 2,a,b m=72:n=21:dim j,9,6:do:boxf i\8*m+33,i/8*n+1,i\8*m+103,i/8*n+20:i++:until i>39 gsel:color o,o,o:do:c+e:d+f:k=mousex:l=mousey:gsel:redraw 0:pos 0,0 gcopy 2,0,0,a,b:color:pos c,d:mes "○":boxf k-p,450,k+p,470:redraw 1:gsel 2 color o,o,o:if c<0|(c>629){e=-e}:if d<0|(d=438&(k-p<c)&(k+p>c)){f=-f}:if d>b{ goto *z}:g=c-32/m:h=d/n:if d\n=18|(c-32\m=69)&(h<5){if j.g.h=0{j.g.h=1:f=-f boxf g*m+33,h*n+1,g*m+103,h*n+20}}:wait 1:until 0:*z:dialog "GameOver" ソースが初心者丸出しとか言う奴はヽ(`Д´)ノ窓から投げ捨てたる! ついでに(・ω・)ノ[おまけ] a=640:b=480:c=320:d=210:m=72:n=21:o=255:p=50:randomize:rnd e,5:e-2+(e=2):f=3 dim j,54:objsize m,n:do:pos i\8*m+33,i/8*n+1:button "",x:i++:until i>39:*x:c+e d+f:k=mousex:l=mousey:redraw 0:color o,o,o:boxf:color:pos c,d:mes "○" boxf k-p,450,k+p,470:redraw 1:g=d/n*8+(c-32/m):if d>b:goto *z if c<0|(c>629){e=-e}:if d<0|(d=438&(k-p<c)&(k+p>c)){f=-f} if d\n=18|(c-32\m=69)&(d/n<5){if j.g=0{f=-f:clrobj g,g:j.g=1}}:wait 1:goto x *z:gsel:cls:font "",o:mes "Game\n Over":stop
HSP、シューティングの基礎の基礎みたいな。 レベル低すぎですねゴマンナサイ勉強し直して来ますOTL w=320:h=240:b=255:x=150:y=220:i=14:m=5:screen,w,h:randomize:*a:redraw 2:color,, boxf ,,w,h:color b,b,b:pos 0,0:mes s:pos x,y:mes"凸":stick k,5:if k&(x>0):x- if k=4&(w-i>x){x+}if k=16&(t=0){t+:u=x+3:v=y-i}if t{pos u,v:mes"|":v-:if-i>v:t- }for c,,m:if e.c=0{e.c+:rnd f.c,w-i:rnd g.c,100:g.c=-g.c}else{pos f.c,g.c mes"敵":g.c+:if g.c>h{e.c-}if f.c+i>x&(x+i>f.c)&(g.c+i>y)&(y+i>g.c):end if u+3<(f.c+i)&(u+5>f.c)&(g.c+i>v)&(v+i>g.c)&t{e.c-:t-:s+10}}next:redraw await 9:goto a
定め 期末 上昇気流 げっぷ多すぎ
687 :
デフォルトの名無しさん :04/04/27 16:07
agw
保守
ネタきぼんぬ
ネタきぼんぬ
コンパイラはで・
七行シムシティもどきとかどうよ?
スロットマシンはちょっと感動したよ
シムシティやってみる。
俺SFC版シムシティやってくる。
7行しむしちぃ?ライフゲームみたいな感じかな。
7行キビシィ
>>696 の言うようにライフゲームになっちゃいます。
シムシチィじゃない!!
顧客「優秀なるSE様、そこをなんとか」
699 :
(1/2) :04/05/04 02:08
ネタきぼんということで考えました。外出ならごめん。 以下の要求仕様を満たすものをおながいします。 -------------------------------------------------------------------------------- [要求] ソースファイルを入力として、ファイル情報、クラス情報、メソッド情報、メンバ情報を出力する。 [入力] テキストファイル(C/C++/javaソースファイル) [出力] テキストファイル。各情報種別につき1ファイルを出力する。 ※フォーマットは後述 [出力情報] ファイル情報:ファイル名、パッケージ名、行数、インクルードファイル・インポートクラス、グローバル変数 外部参照変数・関数 クラス情報:クラス属性、クラス名、基底クラス名、継承属性、実装クラス、スロー例外 メソッド情報:メソッド属性、メソッドの型、メソッド名、メソッド引数、スロー例外 メンバ情報(メソッド以外のメンバ):メンバ属性、メンバの型、メンバ名称
700 :
(2/2) :04/05/04 02:10
[出力ファイルフォーマット] ・ファイル情報 ファイル名:任意 形式:各情報を1行に1つづつ出力。最初の行がファイル名であればその他の順番は問わない ただし複数ある情報(インクルードファイルなど)はバラバラの行に存在せずに、 同じ範囲内(n行目〜n+m行目)にあること ・クラス情報 ファイル名:任意 形式:1クラス1行で”,”(カンマ)区切りで情報を出力する 存在しない情報には空文字(””)を設定する ・メソッド情報 ファイル名:任意 形式:1メソッド1行で”,”(カンマ)区切りで情報を出力する 存在しない情報には空文字(””)を設定する ・メンバ情報 ファイル名:任意 形式:1メンバ1行で”,”(カンマ)区切りで情報を出力する 存在しない情報には空文字(””)を設定する -------------------------------------------------------------------------------- 以上です。7行ですべては難しいと思うので、ファイル情報のみのもの、クラス情報のみのもの メソッド情報のみのもの、メンバ情報のみのものを出力するものでいいと思います。 ※何がやりたいかというと、クラス図とかを手動で書くときにこれらが単独情報として存在してたら 便利だなと思いました。
('A`)<… Doxygenでも使っとけ
>>701 そんなこといったらこのスレ自体の存在意義が無くなるだろ。
Doxygenのソースって7行だっけ?
>>ALL またーり汁
保守
MSNメッセンジャーに"bejeweled"ってゲームがあるけど、あれって7行じゃ無理? めっちゃ好きだけど、1人じゃ出来ないんだよね。 ゲーム自体は1人でも十分楽しいと思うのだが…。
トランプゲーム類希望。 判定がどれくらいになるかというところ。
一人ポーカーなら可能な気がしてきた
失礼 普通のゲームとしてのbejeweledね、7行じゃないよ。 ちなみに上記のサイトのは1人プレイ用。
>>707 ゲームオーバーの判定は出来てないけど・・・・
入力は数字3つ
1つ目:x座標
2つ目:y座標
3つ目:動かす方向(0〜3)
extern "C"{srand(int);rand();putchar(int);scanf(void*,...);};main(){int i,j,x,y,
z,m,o[]={-10,1,10,-1},d[100],q[100],a[]={1,10};for(i=100;i--;)d[i]=i/10&&i/10-9
&&i%10&&i%10-9?rand()%6:6;while(1){for(i=0;i<100;++i%10==0?putchar(10):1)putchar
("@*&$#% "[d[i]]);scanf("%d%d%d",&x,&y,&m);z=y*10+x;y=z+o[m];d[y]-6?d[z]^=d[y]^=
d[z]^=d[y]:1;for(i=100;i--;)q[i]=0;for(i=0;i<100;i++){for(x=2;x--;){for(j=i+a[x]
;d[j]==d[i]&&d[j]!=6;j+=a[x]);if((j-i)/a[x]>=3)for(j-=a[x];j>=i;j-=a[x])q[j]=1;}
}j=0;for(i=100;i--;)q[i]?j=1,d[i]=rand()%6:1;!j?d[z]^=d[y]^=d[z]^=d[y]:1;}}
保守age
>>599-600 オメガナゲ
Fantasy on Multiple Entry tunes
- Overture to server administrator
- Codename "BBQ"
- Number 29
激しく誤爆した・・スマソ お詫びになんか作ろうか・・
激しく誤爆した・・スマソ お詫びになんか作ろうか・・
html オ○ニーしている御主人を眺める猫の表情 <BODY onLoad="f()" ID=B><SCRIPT>p=0;n=Array("10 42400 .3|7|06033|1\1213ニニ´9", "8ノ5(、_, )、5\1|0 12 03|1|2 `ニニ´2.3|1|2200 .33|1\22311",1,9,0,24,24,0,9, "8/ 42433\7|0 60 .3|1|0 120.3:|1\00`ニニ´0.11"," ","<br>0 ","000","::::", "''''''","(●)","0,,ノ(、_, )ヽ、,,","1|5,2、5、3|1","2/\___/ヽ1","-一´\<p>" ,"8/22 33\1|0","3/1./`ー‐-‐‐9","0`-=ニ=- '0",".3:/1./`ー`", "10222.3|1|042423|7\613-=-''9");function f(){a=n[n[p++%7+2]];i=14;while(i-->0) a=a.split(i).join(n[i+10]);B.innerHTML=a+a+a;setTimeout("f()",99);}</SCRIPT>
>>718 まじか・・・・w
あ、情報別に分ければいいのか。
とりあえず言語仕様勉強してくる。
|∀・;)C++ワケワカンネ
|彡サッ
font "MS Gothic",12:mes " ":ginfo 7:w=prmx:h=prmy:x=winx-(w*4)/2:y=winy-h/2 sdim n,$F,4:dim j,$FF:j=h/2,h,h/2,0,h/4,0,h/4,0,0,0,0,winy,winy,winy:onclick @f *@:int d:randomize:rnd d,10000:str d,4:a=1 repeat 4:peek c,d,cnt:c-'0':n.cnt=""+c:if a{if c=0 {n.cnt=" "} else{a=0}}:loop repeat 11:redraw 0:color 255,255,255:boxf:color 0,0,0:c=cnt repeat 4:a=c-cnt:if a<0 {a+14} pos x+(w*cnt),y-j.a:mes n.cnt:wait 1:loop redraw 1:loop:stop HSPでFF風ダメージ表示をしてみる
font "MS Gothic",12:mes " ":ginfo 7:w=prmx:h=prmy:x=winx-(w*5)/2:y=winy-h/2 sdim n,$F,5:dim j,$FF:j=h/2,h,h/2,0,h/4,0,h/4:repeat int d:int i:gettime d,4:gettime i,5:str d,2:str i,2:d=d+":"+i repeat 12:redraw 0:color 255,255,255:boxf:color 0,0,0:c=cnt repeat 5:strmid n.cnt,d,cnt,1:a=c-cnt:a+=(a<0)*14:pos x+(w*cnt),y-j.a mes n.cnt:wait 1:loop:redraw 1:loop:wait 6000:loop 面白かったので改悪。根本的な部分は何も変わっていない…
724 :
デフォルトの名無しさん :04/07/09 00:17
あげとこ
Cのデバッガキボンヌ
726 :
デフォルトの名無しさん :04/07/26 21:27
ほしゅ
javascript
343文字なので一応7行以内(343<79x5<79x7)。
改行をとって全て繋げてからアドレスバーに貼り付け。
javascript:s='7769746828646f63756d656e742e666f726d735b305d297b46524f4d2e76616c75653d2766757369616e6173616e273b4d4553534147452e76616c75653d275c75333045445c75333045415
c75373533425c75353043465c75333034465c75333036305c75333035355c7533303434273b7375626d69742e636c69636b28293b7d';for(l=0,e="";l<s.length;l+=2)e+='%'+s.substr(l,2);eval(unescape(e));
↓ここら辺を開いてからお試しあれ。
http://pc5.2ch.net/test/read.cgi/tech/1051703369/l50
意欲は買うけどルールにはマッチしとらんなぁ。
ロリ画像ください
732 :
画像ビューア :04/10/14 12:04:29
import javax.swing.*;import java.awt.event.*;class I extends JFrame implements ActionListener{JLabel l=new JLabel();public void actionPerformed(ActionEvent e) {JFileChooser f=new JFileChooser();if(f.showOpenDialog(this)==0)l.setIcon(new ImageIcon(f.getSelectedFile().getPath()));};public static void main(String[] a) {new I();}I(){setDefaultCloseOperation(3);setSize(600,480);JToolBar t=new JToolBar();JButton b=new JButton("開");b.addActionListener(this);getContentPane ().add(t,"North");t.add(b);getContentPane().add(new JScrollPane(l));show();}}
733 :
ZG196182.ppp.dion.ne.jp :04/10/14 12:12:51
ロリ画像ください
//
>>732 縮め。メニューまわり自信無し。
import javax.swing.*;import java.awt.event.*;class I{public static void main(
String[]a){new JFrame(){JLabel l;{setContentPane(new JScrollPane(l=new JLabel(
)));setDefaultCloseOperation(3);JMenuBar t;setJMenuBar(t=new JMenuBar());t.add
(new JMenuItem(new AbstractAction("開"){public void actionPerformed(ActionEvent
e){JFileChooser f=new JFileChooser();if(f.showOpenDialog(l)==0)l.setIcon(new
ImageIcon(f.getSelectedFile().getPath()));}}));setSize(600,480);show();}};}}
735 :
システムプロパティービューア :04/10/15 02:10:47
import java.util.*;import javax.swing.*;class S{public static void main(String[ ] a){new JFrame(){{Properties p=System.getProperties();String[] k=(String[])p. keySet().toArray(new String[0]);int i,g=k.length;String[][] d=new String[g][2]; Arrays.sort(k);setDefaultCloseOperation(3);for(i=0;i<g;i++){d[i][0]=k[i];d[i][1 ]=p.getProperty(k[i]);}getContentPane().add(new JScrollPane(new JTable(d,new String[]{"key","value"})));pack();show();}};}}
>>735 縮め。超外道コード化注意。
import java.util.*;import javax.swing.*;class S{static{new JFrame(){Properties
p;{setDefaultCloseOperation(3);Object[]k=(p=System.getProperties()).keySet().
toArray();int g=k.length;Object[][]d=new String[g][2];for(Arrays.sort(k);g-->0
;d[g][1]=p.get(k[g]))d[g][0]=k[g];setContentPane(new JScrollPane(new JTable(d,
new String[]{"key","value"})));pack();show();}};}}
format c:
738 :
デフォルトの名無しさん :04/10/17 14:23:05
過去ログってもう読めないですか?
#include <iostream> inline int pow2(int i){return(1<<i);} int main(int argc, char** argv){ int m = argc-1, n = pow2(m), *r = new int[n]; for(int i=0; i<n; i++) { r[i]=0; for(int j=0; j<m; j++){ if(pow2(j)&i){r[i]|=pow2(m-j-1);} } std::cout<<"r_"<<i<<" = "<<r[i]<<std::endl; } delete[] r; return 0; }
7行でx86系のアセンブラ作って。 単純な条件判定やジャンプ命令と関数呼び出しぐらいできればいいかな。
命令テーブルだけで7行に収まらない希ガス
麻雀の手役判定プログラムはどないでしょ? 手牌はファイルから読み込みってことにしたらいけそうな気がする。
#include <stdio.h> #include <stdlib.h> typedef unsigned int U;int main(void){char *a;U n;register U x,l,i,t;fprintf( stderr,"n=?\n> ");fflush(stdout);scanf("%u",&n);if(n==2)return !printf("2\n"); if(n<2)return 0;l=(n-1)/2;a=malloc(8*l);if(!a)return fprintf(stderr,"a==NULL"), 1;printf("2\n",n);memset(a,0xFF,sizeof(char)*l);for(i=0,x=3;i<l;i++,x+=2){if(!a [i])continue;printf("%d\n",x);for(t=i+x;t<l;t+=x) a[t]=0;}free(a);return 0;} アリストテレスのふるい
>>744 アリストテレスのふるいって何だよ…
それからmemsetは<string.h>ね。
//コンパイル済みアプレットが
http://uzsibou.hp.infoseek.co.jp/e/に 。
//14行でしかも数年前の再掲です。ごめん。Java1.5.0(Linux)にて動作確認。
//E.javaとしてコンパイルしてください。
//<applet code="E.class" width="512" height="512"/>
import java.awt.*;import java.awt.event.*;import java.awt.image.*;class A
extends java.applet.Applet{int W=128,f=127,F=255,X,Y;byte[]t=new byte[W*W+W];
MemoryImageSource s;Image m;public void init(){s=new MemoryImageSource(W,W,new
IndexColorModel(8,F,t,0,false),t,0,W);s.setAnimated(true);addMouseListener(new
MouseAdapter(){public void mousePressed(MouseEvent e){X=e.getX()/4;Y=e.getY()/
4;c();}});m=createImage(s);repaint();}void c(){}public void paint(Graphics g){
g.drawImage(m,0,0,W*4,W*4,this);}public void update(Graphics g){paint(g);}}
public class E extends A{class P{double u=Math.random()*2-1,v=-2-Math.random()
*3,x,y;int s(){return(int)(x+=u)+(int)(y+=v+=.1)*W;}}P[]p;int i,j,z;{for(;i<f;
i+=3){t[i]=t[i+f]=t[i+254]+=i*2;t[i+126]=t[i+252]=t[i+253]+=F;}}void c(){for(j
=0;j<64;p[j++].y=Y)(p[j]=new P()).x=X;}public void start(){new Thread(){public
void run(){try{for(p=new P[64];;sleep(20)){for(i=j;i>0;)if((z=p[--i].s())>0&&z
<W*W+W)t[z]=(byte)f;for(;++i<W*W;)t[i]=(byte)((t[i-1]+t[i+1]+t[i+W])*F/766);s.
newPixels();}}catch(Exception e){}}}.start();}public void stop(){p=null;}}
#include <stdio.h> #include <stdlib.h> typedef double d;char buf[80],*p;d e();void s(){while(*p==' '||*p=='\t')p++;} d n(){d r=0;s();(*p=='(')?(p++,r=e(),p++,0):(r=strtod(p,&p),0);s();return r;} d t(){d r=n();while(*p=='*'||*p=='/')(*p++=='*')?(r*=n()):(r/=n());return r;} d e(){d r=t();while(*p=='+'||*p=='-')(*p++=='+')?(r+=t()):(r-=t());return r;} int main(){while(fgets(p=buf,sizeof buf,stdin))printf(" %g\n",e());return 0;}
>>748 書いているけどもっと短かくもできる
けどせっかく 7 行 77 文字にそろったからそのまま貼ってみる
#include <stdio.h> typedef double d;d strtod(const char*,char**);d fabs(d),sin(d),cos(d),tan(d); char buf[99],*p;d e();void s(){while(*p==' '||*p=='\t')p++;}d n(){d r,(*f)(d); s();f=*p=='s'?sin:*p=='c'?cos:*p=='t'?tan:0;while(f&&*p>'`'&&*p<'{')p++;s();*p =='('||*p=='|'?(p++,r=e(),r=*p++==')'?r:fabs(r)):(r=strtod(p,&p));if(f)r=f(r); s();return r;}d t(){d r=n();while(*p=='*'||*p=='/')*p++=='*'?(r*=n()):(r/=n()) ;return r;}d e(){d r=t(),R;while(*p=='+'||*p=='-')R=*p++-',',r-=R*t();return r ;}int main(){while(fgets(p=buf,sizeof buf,stdin))printf(" %g\n",e());return 0;} 絶対値と三角関数を入れた。 まさか収まらないとは思わなかった。 今は反省している。
つーか、fabs使う必要ないよorz
math.hのincludeが抜けてはいないだろうか…
>>752 d fabs(d),sin(d),cos(d),tan(d);
>>753 ホントだ見逃してマスタ…
吊ってきます orz
前スレのを改造して、標準入出力でorder-2の動的rangecoderにしてみた
exec E < src > dst
exec D < src > dst
unsigned U[256][256][259],*Y,C,L,W,N,K,Z,T,Q=258,P,X=256;f(w){for(;(W*=w)<=~L*X
/X||W<X*X&&(W=65535&-L);L*=w=X)Z?N=N*X+getchar():putchar(L
>>24 );}main(i,v)char*
*v;{for(Z=*v[C=1]-69;K<X;K++<4&&Z?W=T/X,f(1):0)for(T=X;T--;*Y=Y[1]=1)Q[Y=U[K][T
]]=2;for(W=T;C;Z*--C&&putchar(C-1)){Y=U[P][--C];P=C;i=Z?0:getchar()+2;W/=Y[Q]++
;for(K=C=0;T=Y[C],Z?W*(K+T)<=N-L:i--;C++)K+=T;f(T?L+=W*K,T:1);if(!T||!C){for(T=
K=X;T;)K-=!!Y[--T+2];W/=K;for(K=1;i=!Y[++K],Z?W*(T+i)<=N-L:K<C;L+=W*i);f(1);C=K
;}++Y[C];for(K=Y[Q]>Q?Y[Q]=2:Q;K<Q;)Y[Q]+=Y[K++]/=2;}for(;C++<4;f(1))W/=X;}
ネタ投下時は age ようぜ
もう一声削ったら片方だけreturn入った
unsigned*Y,U[256][256][259],C,L,W,N,K,Z,T,Q=258,P,X=256;f(w){for(;(W*=w)<=~L*X/
X||W<X*X&&(W=65535&-L);L*=w=X)Z?N=N*X+getchar():putchar(L
>>24 );}main(i,v)char**
v;{for(Z=*v[C=1]-69;K<X;K++<4&&Z?W=T/X,f(1):0)for(T=X;T--;*Y=Y[1]=1)Q[Y=U[K][T]
]=2;for(W=T;C;Z*--C&&putchar(C-1)){Y=U[P][--C];P=C;i=Z?0:getchar()+2;W/=Y[Q]++;
for(K=C=0;T=Y[C],Z?W*(K+T)<=N-L:i--;C++)K+=T;f(T?L+=W*K,T:1);if(!T||!C){for(T=K
=Q;T;)K-=!!Y[--T];W/=K;for(K=1;i=!Y[++K],Z?W*i<=N-L:K<C;L+=W*i);f(1);C=K;}++Y[C
];for(K=Y[Q]>Q?Y[Q]=2:Q;K<Q;)Y[Q]+=Y[K++]/=2;}for(;C++<4;f(1))W/=X;return 0;}
#!/usr/local/bin/perl for(my $i=0; $i<=$ARGV[0]; $i++){push(@a,$i);} for(my $i=2; $i<=$ARGV[0]; $i++){ unless($a[$i]){next;} print("$i\n"); for(my $j=2*$i; $j<=$ARGV[0]; $j+=$i){$a[$j]=0;} }
759 :
748 (ループやめて 5 行…) :04/11/20 17:10:45
typedef char c;typedef double d;c* gets(c*);int printf(c*,...);d strtod(c*,c**) ;c b[80],*p;d e();s(){while(*p==32||*p==9)p++;}d n(){d r=0;s();(*p==40)?(p++,r= e(),p++,0):(r=strtod(p,&p));s();return r;}d t(){d r=n();while(*p==42||*p==47)(* p++==42)?(r*=n()):(r/=n());return r;}d e(){d r=t();while(*p==43||*p==45)(*p++== 43)?(r+=t()):(r-=t());return r;}main(){gets(p=b);printf("%g\n",e());return 0;}
#include "Defines.h" int main() {App* papp=new App; if(!papp) return -1; papp->run(); delete papp; return 0;} #include "Defines.h"で無限の可能性
非標準ヘッダーは反則だろー
10桁トリップを7行で…無理ポ?
ちときつそう…crypt部分を7行かぁ
764 :
デフォルトの名無しさん :04/11/22 09:06:36
そこでcrypt標準装備言語ですよ print'Trip Key: #';$_=<STDIN>;chomp;$k=$_; ~s/"/"/g;~s/</</g;~s/>/>/g;$t=$_;~y/ !#--/\xA0\xA1\xA3-\xAD/; $c=substr($_,0,1).substr($t,1,2).substr($_,3);$_=substr($t.'H.',1); ~y/:-@[-` --\x7F-\xFF/A-Ga-f./;$t=substr(crypt($c,$_),-10); print"#$k -> $t\n";
違和感があると思ったら実体参照が変換されてた。 print'Trip Key: #';$_=<STDIN>;chomp;$k=$_; ~s/"/"/g;~s/</</g;~s/>/>/g;$t=$_;~y/ !#--/\xA0\xA1\xA3-\xAD/; $c=substr($_,0,1).substr($t,1,2).substr($_,3);$_=substr($t.'H.',1); ~y/:-@[-` --\x7F-\xFF/A-Ga-f./;$t=substr(crypt($c,$_),-10); print"#$k -> $t\n";
767 :
デフォルトの名無しさん :04/11/23 22:26:53
7行でかけよ
( ゚д゚)
>699のお題、ファイル情報 C言語のみで、しかもかなり適当。 無理矢理80字にしたから、そのままじゃ動かないし。 漏れじゃこれが限界でした。ファイルオープンしなければ7行いけそうかな。 #!/usr/bin/perl use strict;my(@I,@F,$i,$t,$c,@V);open(IN,$ARGV[0]);eval{flock(IN,1)};my@data=<IN >;close(IN);foreach(@data){s/\r\n/\n/;next if($_=~/^\s*\n$/);next if($_=~m|^//|) ;$c=1 if($_=~m|/\*|);next if($c);s|//.*||;$c=0 if($_=~m|\*/|);$t=1 if($_=~/^\{$/ );$t=0 if($_=~/^\}$/);push(@I, $1) if(($_=~/^\#.+?<(.+?)>/) && !$t);push(@F,$1)i f(($_=~/^(.+?)\(/) && !$t);push(@V,$1) if(($_=~/^([^\#\(\)\{\}]+)$/)&&!$t);$i++; }my @o=($ARGV[0],$i,@I,@F,@V);open(O,">".$ARGV[0]."\.dat");eval{flock(O, 2);};pr int O join("\n",@o),"\n";close(O);exit;
ロジック変えずに #!/usr/bin/perl $f=$ARGV[0];open I,$f;for(<I>){s/\r//;next if /^\s*$/;next if m|^//|;$c=1 if m|/\*|;next if $c;s|//.*||;$c=0 if m|\*/|;$t=1 if /^\{$/;$t=0 if /^\}$/;push @I, $1 if /^\#.+?<(.+?)>/&&!$t;push @F,$1 if /^(.+?)\(/&&!$t;push @V,$1 if /^([^\#\(\)\{\}]+)$/&&!$t;$i++}$,="\n";open O,">$f.dat";print O $f,$i,@I,@F,@V
コメントの扱いがまずいっぽ。でもGJ。 flock無しでfix&縮め。 #!/usr/bin/perl use strict;my($p,@I,@F,$i,$t,$c,@V);open H,($p=$ARGV[0]);for(<H>){s/\r//;next if m#^\s*\n$|^//#;s#/\*.*?\*/##g;(s|^.*\*/||)?$c=0:next if$c;$c=1,next if s |/\*.*||;s|//.*||;(/^\{$/)?$t=1:(/^\}$/)?$t=0:1;if(!$t){push(@I,$1)if /^#.+?<(.+?)>/;push(@F,$1)if /^(.+?)\(/;push(@V,$1)if /^([^#(){}\n]+)$/}$i++} open H,">$p.dat";print H join("\n",$p,$i,@I,@F,@V),"\n";close H;
#!/usr/bin/perl -l open H,$p=pop;for(<H>){m#^\s*\n$|^//#&&next;s#/\*.*?\*/##g;$c&&(s|^.*\*/||?$c=0 :next);s|/\*.*||and$c=1,next;s|//.*||;$t=/^\{$/?1:/^\}$/?0:$t;$i++;$t&&next; /^#.+?<(.+?)>/&&push@I,$1;/^(.+?)\(/&&push@F,$1;/^([^#(){}\n]+)$/&&push@V,$1} open H,">$p.dat";print H join"\n",$p,$i,@I,@F,@V
perlマンセー
何やってるか全然わからん 凄いな
7行でネットワークプログラミング
昔書いたな。3行ポートスキャナー。 懐かしい…。 漏れはこのスレ好きだぜ。
#include<stdio.h> unsigned long a,d,e,f,i,o;FILE*p;x(){o=sin(f*i*.0001424757f)*32752;}y(){o=32752 *(i/(22050/f)%2?1:-1);}z(){o=rand()*65504-32752;}w(h){fwrite(&o,h,1,p);}main(c, v)char**v;{a=atoi(v[1]);f=atoi(v[2]);d=atoi(v[3]);p=fopen("o.wav","wb");fputs( "RIFF",p);e=o=88*d+(d+4)/5+36;w(4);fputs("WAVEfmt ",p);o=16;w(4);o=65537;w(4);o =44100;w(4);o*=2;w(4);o=2;w(2);o=16;w(2);fputs("data",p);e=o=e-36;w(4);for(i=0; i<e/2;++i){a-2?a-1?a?0:x():y():z();w(2);}fclose(p);return 0;} トーンジェネレータ。出力はo.wav (PCM 16bit 44100Hz)。 ./out osc freq duration (oscは0=Sine 1=Square 2=WhiteNoise、freqは周波数[Hz]、durationは長さ[ms])
ところで昔からの疑問なんだけど、どうして幅79文字なの? 調べたけど分からなかった。
79文字+改行1文字で80文字だから、の様です。
何で80文字?
ネットワーク 80文字 でぐぐればわかるんじゃない?
旧式のCUIが横幅80桁だったんだよ。
旧式というかビデオカードの都合
キャラクターベースのターミナルの標準が80*24だった頃の 昔からの名残ですから、残念!!
80×25じゃない?
#include<stdio.h> unsigned long d,e,f,i,o,l=32752;FILE*p;u(){o=((i*f)%44100)*1.46645f;}x(){o=sin( f*i*.0001424757f)*l;}y(){o=l*(i/(22050/f)%2?1:-1);}z(){o=rand()*l*2-l;}w(h){fw\ rite(&o,h,1,p);}main(c,v)char**v;{c=atoi(v[1]);f=atoi(v[2]);d=atoi(v[3]);p=fop\ en("o.wav","wb");fputs("RIFF",p);e=o=88*d+(d+4)/5+36;w(4);fputs("WAVEfmt ",p);o =16;w(4);o=65537;w(4);o=44100;w(4);o*=2;w(4);o=1048578;w(4);fputs("data",p);e=o =e-36;w(4);for(i=0;i<e/2;++i){c-3?c-2?c-1?c?0:x():y():z():u();w(2);}fclose(p);} トーンジェネレータにSawを追加。 osc 3=Saw
んー、でも30行BIOSを使えばもっと出せるもん。
いや、そういう問題じゃないでしょ… とにかく80×24が一般的だってこと
じゃあなんで7行なの?24行でいいじゃん。
699のネタが現実味をおびてくるかもしれないな。 やってみれ。
>>794 part1 の
>>1 > 海外のプログラマーが、たったの七行足らずで
> DVDのプロテクトを解除するプログラムを作成!
> 我々も負けてはいられません!
>
> ルール:七行なら言語は問いません。では、どうぞ!
798 :
デフォルトの名無しさん :04/12/06 02:31:18
IBM のパンチカードが一行 80 文字だったからじゃない。 80 文字の由来は紙の大きさにより。 そして 25 行は、ディスプレイも 80 文字に合わせた結果、 ディスプレイの縦横比から自然と 25 行になったと思っていた。 パンチカードに VT100 が合わせたんじゃなかった?
縦横比で行くと30行にならん?
行間の余白があるんじゃないのかね
パンチカード・・・昔の人は大変ですね
パンチカード自体が 80x25 じゃない?
804 :
デフォルトの名無しさん :04/12/08 17:33:40
805 :
デフォルトの名無しさん :04/12/08 17:51:34
int main (void) { return 0; }
806 :
デフォルトの名無しさん :04/12/08 19:25:24
Dim thought$,hand$ Input thought$ : If thought$="自殺" Then Goto *homecenter *continuelife Goto *continuelife *homecenter hand$="七輪"+"練炭" : Goto *yominokuni End
久々に、覗きに来ました。 相変わらず皆さん良い仕事されますね。 感心しまくりデス。
809 :
デフォルトの名無しさん :04/12/10 07:21:53
'1111111111111111111111111111111111111111111111111111111111111111111111111111'. '2222222222222222222222222222222222222222222222222222222222222222222222222222'. '3333333333333333333333333333333333333333333333333333333333333333333333333333'. '4444444444444444444444444444444444444444444444444444444444444444444444444444'. '5555555555555555555555555555555555555555555555555555555555555555555555555555'. '6666666666666666666666666666666666666666666666666666666666666666666666666666'. '7777777777777777777777777777777777777777777777777777777777777777777777777777'.
810 :
デフォルトの名無しさん :04/12/10 07:46:06
. . . . . . .
811 :
デフォルトの名無しさん :04/12/10 17:22:52
810 の説明 これは38の全角空白文字アトムを単位節として7節からなるPrologの述語です。これが ?- ・・・ ' ', ・・・ のように質問の中で使われると repeat(N) :- N > 0. repeat(N) :- N > 0,M is N-1,repeat(M). が定義されていたとして、 ?- ・・・ repeat(7), ・・・ と同じ意味になります。
日本語で説明おながいします
意味になるから何?
>>750 を参考に刺激を受けて作ってみたよ.
math.h の関数をいくつか入れてみた.
sin は s, cos は c, tan は t, atan は a,
log は l, exp は e, fabs は f, sqrt は r (s は sin で使ってるので)
typedef char c;typedef double d;int printf(c*,...),a;c *gets(c*),b[81],*p;d log
(d),exp(d),sin(d),cos(d),tan(d),atan(d),fabs(d),sqrt(d),strtod(c*,c**),e();main
(){for(;gets(p=b);printf(" %g\n",e()));return 0;}s(){for(;*p==9||*p==32;p++);}d
n(){d r,(*f)(d);s();a=*p-96;f=a-18?a-6?a-1?a-20?a-3?a-19?a-5?a-12?0:log:exp:sin
:cos:tan:atan:fabs:sqrt;for(;*p&64;p++);s();r=*p-40?strtod(p,&p):(p++,r=e(),p++
,r);return s(),f?f(r):r;}d t(){d v=n();while(*p==42||*p==47)*p++-47?(v*=n()):(v
/=n());return v;}d e(){d u=t();for(;*p==43||*p==45;u+=(44-*p++)*t());return u;}
1 + 2 * (3-2/2) // 優先順位
5
r6 // カッコがなくても使える
2.44949
r2*r(3) // あっても使える
2.44949
f(s(t(-1))) // 関数
0.99991
1E4*c(60*180/3.1416) // E も使える (X*180/3.1416 は角度 X を角速度に変換)
5000
誤差は bc -l レベルなので勘弁して
ホントは pow も実装したかったけど,
このアルゴリズムではちょっと無理です.
BFインタプリタとか
外出
817 :
デフォルトの名無しさん :04/12/11 10:20:05
<a href=813 target=_blank>
>>813 </a>
<a href=810 target=_blank>810</a>は将棋の煙詰めをイメージしたもので
プログラムの姿の面白さ求めたものです。
「意味」という言葉は適切でなかったですね。
「同じ機能として使えます」くらいでしょうか。機能的な観点からは、
38の空白文字でも1文字のaでも"LABEL"が違うだけで差はないので、
見易いようにa一文字で表現することにして、定義が
a.
a.
a.
a.
a.
a.
a.
だとすると、
?- a,write(b),fail.
bbbbbbb
no
?- repeat(7),write(b),fail.
bbbbbbb
no
?- 同じ結果が得られます。Prologのデータベースはこのような
使い方もできますよ、ということです。
pow の代わりに PI (円周率) を実装しようと思ったんだけど, もう 3.1416 くらいでいいかな 3.141593 くらいじゃ, まだ誤差が出るし, それ以上だと幅がキツい 理系の人ってどれくらいの値を使うんだ?
「およそ3」(ウソ)。 テイラー展開しまくった式使ったらいけそうだけど > π
atan(1)*4…ってdouble精度じゃ3.141593か
学校で習う3.14でいいんじゃない?
4日レスがなかったのにキミたちは…
じゃあ 3.14 で考えて,
できるだけ細かくしていくことにするよ
>>814 の時点で結構キツいし
3.141593 までいけば御の字かな
意見ありがと
import java.awt.*;import javax.swing.*;class a extends JWindow{int w,h;String d ="Hello World";Font f=new Font("MS ゴシック",0,24);Image i;Color c=new Color (0,0,255,128);FontMetrics m=getFontMetrics(f);public static void main(String s[ ]){a w=new a();}a(){w=m.stringWidth(d);h=m.getHeight();try{Robot b=new Robot(); Rectangle r=new Rectangle(0,0,w,h);i=b.createScreenCapture(r);}catch(Exception e){}setSize(w,h);setVisible(true);}public void paint(Graphics g){g.setFont(f); g.setColor(c);g.drawImage(i,0,0,w,h,this);g.drawString(d,0,m.getAscent());}} 学校で暇な時間に作ったものを7行にまとめて見た。 実行すると画面の左上にHello Worldと表示されます。 いろいろ削ったせいで終了できなくなったのでCtrl + Cで終わらせてください。
824 :
デフォルトの名無しさん :04/12/16 19:54:33
ちなみにプログラムはこんな感じらしいです。
# tinyp2p.py 1.0 (documentation at
http://freedom-to-tinker.com/tinyp2p.html )
import sys, os, SimpleXMLRPCServer, xmlrpclib, re, hmac # (C) 2004, E.W. Felten
ar,pw,res = (sys.argv,lambda u:hmac.new(sys.argv[1],u).hexdigest(),re.search)
pxy,xs = (xmlrpclib.ServerProxy,SimpleXMLRPCServer.SimpleXMLRPCServer)
def ls(p=""):return filter(lambda n:(p=="")or res(p,n),os.listdir(os.getcwd()))
if ar[2]!="client": # license:
http://creativecommons.org/licenses/by-nc-sa/2.0 myU,prs,srv = ("
http:// "+ar[3]+":"+ar[4], ar[5:],lambda x:x.serve_forever())
def pr(x=[]): return ([(y in prs) or prs.append(y) for y in x] or 1) and prs
def c(n): return ((lambda f: (f.read(), f.close()))(file(n)))[0]
f=lambda p,n,a:(p==pw(myU))and(((n==0)and pr(a))or((n==1)and [ls(a)])or c(a))
def aug(u): return ((u==myU) and pr()) or pr(pxy(u).f(pw(u),0,pr([myU])))
pr() and [aug(s) for s in aug(pr()[0])]
(lambda sv:sv.register_function(f,"f") or srv(sv))(xs((ar[3],int(ar[4]))))
for url in pxy(ar[3]).f(pw(ar[3]),0,[]):
for fn in filter(lambda n:not n in ls(), (pxy(url).f(pw(url),1,ar[4]))[0]):
(lambda fi:fi.write(pxy(url).f(pw(url),2,fn)) or fi.close())(file(fn,"wc"))
>826 改行位置を調節すれば数文字オーバーする程度か このスレをリファラで飛ばせば反応してくれそうだw
perlが一番見た目キモイコードになるな、なんと言うか・・・ インデントつけてもごちゃごちゃするもんなperlって。大好きだけど
ぺrぇrはしね
懐かしいスレだ・・・。
>>824 携帯からだから何行めかわからないけど
main(String a[])
を
main(String[]a)
で
1by(・∀・)te!
//3.141592653 #include <stdio.h> typedef double d;d p(d x,d y,d X,d Y,int D){d w=X-x,h=Y-y;if(!D)return w*h/2; else if(X*X+Y*Y<1)return w*h;else if(x*x+y*y>1)return 0;else{w/=2;h/=2;D--; return p(x,y,x+w,y+h,D)+p(x+w,y,X,y+h,D)+p(x,y+h,x+w,Y,D)+p(x+w,y+h,X,Y,D);}} main(){printf("%.9f",p(0,0,1,1,24)*4);}
>>832 これでいいんじゃない
#include <stdio.h>
int a=10000,b,c=8400,d,e,f[8401],g;main(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c
-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}
834 :
デフォルトの名無しさん :05/02/07 10:45:56
age
>>833 これでいいんじゃない
//3.1415926535897931159979634685441851615905760000000000000000000000000000
//GCC
#include <stdio.h>
double PI();
int main(){printf("%10.70f\n",PI());}
double PI(){asm(" fldpi");
asm("fstpl-8(%ebp)");
asm("fldl-8(%ebp)");
asm("leave"); asm("ret");}
>>832-833 ,
>>835 part2の800番くらいのレスに、一応任意桁の精度で求めるやつがあるよ。
なにもいじらずに実行したら5000桁。part2の中でトリッキーの1で検索すれば出ると思う。
そんな古いログはない
これだな #include <stdio.h> #define s ( 5000 /*←希望する桁数*/ /4+2) int main(){int i,n,c,t,j,l,a[]={4,9},r[s][4]={0,0,8,12},k=10000;for(n=0;n<s*15 ;n++)for(i=0;i<2;i++){for(c=t=j=0;j<s;r[j++][i]+=((n&1)*-2+1)*l/(2*n+1))t=(l=k *t+r[j][i+2])%a[i],c=(l=k*c+(r[j][i+2]=l/a[i]))%(2*n+1);for(t=0,j--;j+1;r[j--] [i]%=k)t=(r[j][i]+=k+t)/k-1;}for(i=s-(t=1);i+1;*r[i--]%=k)t=(*r[i]=k+*r[i]+r[i ][1]+t)/k-1;printf("%d.",**r);for(i=1;i<s-1;printf("%04d",*r[i++]));return 0;}
結構探したのにweb上になかった。。。すまん。 ハードディスク漁ってみたら見つけたので転載。 827 名前:トリッキーの1 投稿日:02/09/20 15:54 円周率です。意外と七行は簡単でした。オイラーの公式使ってますので収束遅いです。 #include <stdio.h> #define s ( 5000 /*←希望する桁数*/ /4+2) int main(){int i,n,c,t,j,l,a[]={4,9},r[s][4]={0,0,8,12},k=10000;for(n=0;n<s*15 ;n++)for(i=0;i<2;i++){for(c=t=j=0;j<s;r[j++][i]+=((n&1)*-2+1)*l/(2*n+1))t=(l=k *t+r[j][i+2])%a[i],c=(l=k*c+(r[j][i+2]=l/a[i]))%(2*n+1);for(t=0,j--;j+1;r[j--] [i]%=k)t=(r[j][i]+=k+t)/k-1;}for(i=s-(t=1);i+1;*r[i--]%=k)t=(*r[i]=k+*r[i]+r[i ][1]+t)/k-1;printf("%d.",**r);for(i=1;i<s-1;printf("%04d",*r[i++]));return 0;}
>839 お前は頑張った。
842 :
デフォルトの名無しさん :05/02/16 20:40:40
−−−−−−−−−−−−−さいk(ry
843 :
デフォルトの名無しさん :05/02/16 20:57:19
−−−−−−−−−−−−−さいか(ry
無駄にデカイ&あんまりチェックしてない脳味噌Fuckインタプリタ sub bfc{(my$s=reverse shift)=~s/\s//sg;my($p,$I,$O,@l,@m,$c,$l)=(sub{},@_); while($s=~/\G((\+)|(-)|(>)|(<)|(,)|(\.)|(\[)|(\])|.)(\1*)/sg){my$t=1+length$10 ;if($8){($t<=@l)||die;for(1..$t){my$q=$p;$r=$l[-1];$l[-1]=$p=sub{$m[$c]?&$q: &$r;};pop@l;}}elsif($9){for(1..$t){my$q=$p;my$r=\$l[@l];$$r=$p=sub{$m[$c]?&$$r :&$q;};}}else{my$q=$p;my$b=$2?sub{$m[$c]=$m[$c]+$t&255}:$3?sub{$m[$c]=$m[$c]- $t&255}:$4?sub{$c+=$t}:$5?sub{$c-=$t}:$6?sub{$m[$c]=<$I>}:$7?sub{print$O chr $m[$c]for 1..$t}:die;$p=sub{&$b;&$q};}}$p;}$/='';bfc($_=<>,STDIN,STDOUT)->(); 使用例: perl ***.pl ...
a[110],h=110,i,j,n,c,t,v[]={-12,-11,-10,-1,1,10,11,12},printf(char*,...),time() ,rand(),srand();f(p,k){a[p]=n;c++;for(;k<8;)j=v[k++]+p,0<=j&j<h&!a[j]?f(j,0):0; }main(){srand(time(0));for(i=c=n=t=0;i<h;i++)printf("%s","○\0●\0\n"+((i+1)%11 ?3*(1+(a[i]=!(rand()%4)-1)):(a[i]=-1,6)));for(i=0;i<h;c=0,i++)!a[i]?n++,f(i,0), t+=c,printf("%d.Island(%d)\n",n,c):0;printf("total:%d(%d)\n",n,t);return 0;} 某 C スレに出ていたゲーム
846 :
デフォルトの名無しさん :05/02/18 21:18:18
−−−−−−−−−−しの・さいか(ry
847 :
デフォルトの名無しさん :05/02/18 21:20:44
−−−−−−−−−−しの・さいか 6さい
848 :
デフォルトの名無しさん :05/02/19 16:35:50
ここにあるのってほとんど単に作った後改行削ってるだけなんじゃないの?
849 :
デフォルトの名無しさん :05/02/19 17:53:05
>>845 2: 型名が必要
2: 未定義のシンボル p
2: ) が必要
5: 宣言の構文エラー
>850 コンパイルオプション見直せ
<body onKeyDown=K=event.keyCode><script>K=0;T=[-1,-8,+1,+8];D=3;P=9;
C=new Array("<font color=white>_</font>","■","日","優","EX","IT");
M=[1,1,1,1,1,1,1,1,1,3,0,0,1,1,1,1,1,0,2,2,1,1,1,1,1,0,2,0,1,1,1,1,1,1,1,0,
1,1,1,1,1,1,1,0,0,0,4,5,1,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1];
function S(){if(D>0){Q=P+(Z=(K>36 && K<41)?T[K-37]:0);K=0;F=0;if(M[Q]==2){
if(M[Q+Z]==0){F=M[Q+Z]=2;}if(M[Q+Z]>3){F=1;D--;}}if(M[Q]==0 || F!=0){M[Q]=3;
M[P]=0;P=Q;}Z=0;G="";for(R=0;R<72;R++){G+=C[M[R]];G+=(R%8==7)?"<BR>":"";}
document.body.innerHTML=G;setTimeout(S,99);}else{location.href=
"
http://www2.ezbbs.net/24/techside/img/1108755226_1.jpeg ";}}S();</script>
</body>
-----------------------------------------
JAVA SCRIPT
注目あびる優名偽業者の倉庫番
優=偽業者(上下左右で操作)
日=ダンボール
EXIT=ダンボールをここに運べ
>852 おおー、すごい。ちゃんと遊べる(`・ω・´) …でも、クリアのご褒美がアレで(´・ω・`) (w
854 :
デフォルトの名無しさん :05/03/01 22:12:44
>>852 ガイドライン板から来ますた
この板すごいなあ。
俺もガ板からきますた
ガイドライン厨ども! お前らイイヨイイヨー
<body><script>L=1;function B(){if(L){T=10;L=0;M="バスには10人乗っていました"; C=A=3+F(8);}else{I=F(T);O=F(5);T=T-I+O;if(C>0)M="次のバス停で"+I+"人降り "+O+ "人乗りました";if(C==0)M="次へを押して下さい";if(C<0){if(prompt("問題:何回"+ "バス停にいったでしょう?","") == A)M="あたり";else M="はずれ";L=1;}C--;}M+= "<input type='button' value='次へ' onclick='B()'>";document.body.innerHTML=M; }function F(V){return(Math.floor(Math.random()*V));}B();</script></body> ----------------------------------- まぁ、簡単な数当てゲームです
誰か。 7行に収まってるコードを展開してインデントつけて見やすくする7行プログラムを。お願いします。
C/C++だけでいいかの
/*2000桁目あたりで間違える。*/ #include <stdio.h> #define s (4000+10) void main(){long a[s]={3},b[s]={0},i=1,j,k,l,m;for(m=k=1;m;i++){k+=8*i-8,l=i*(16 *i+8);for(j=0;j<s-1;)b[j]+=a[j],a[j++]*=k;for(m=j=0;j<s-1;)a[j+1]+=(a[j]%l)*10,m|=a[j],a [j++]/=l;}for(i=s-2;i;)b[i-1]+=b[i]/10,b[i--]%=10;for(i=1;i<s-10;)printf("%d",b[i++]);} 円周率を求めるプログラム 計算が違うのはご愛嬌
ロリ画像ください
ロリ画像ください
#include <math.h> unsigned d=22050,f,t=1,v=16383;char*a,b[999],*l="cdefgabr",o=0,*p,*q,r[]={-7,-5, -3,-2,0,2,4,-1};w(z){fwrite(&z,4,1,p);}main(c,x)char**x;{p=fopen("i","r");fgets( b,999,p);fclose(p);p=fopen("o","wb");for(a=b;*a;++a){(q=strchr(l,*a))?f=(o>0?440 <<o:440>>-o)*pow(2,(12.0+r[q-l]+(*a-43?0:1))/12.0-1),d=(atol(a+1)?88200/atol(a+1 ):d),w(q-l-7?t:3),w(f),w(d),w(v):*a-111?*a-118?*a-64?*a-60?a-62?0:o++:o--:(t=at\ oi(a+1)):(v=1.0*atoi(a+1)*32767.0/128.0):(o=atoi(a+1)-4);}fclose(p);} mml2o mmlを中間ファイルに変換。iを読み込みoに吐き出す。 unsigned*b,d[9][999][5],l[9],g,q;char*p,a[]="o8",i,j,k;w(m){fwrite(&q,m,1,p);}t( ){q+=sin(.0001424758573*b[1]*b[4])*b[3];}u(){q+=rand()*b[3]*2-b[3];}main(){for(i =9;i--;a[1]--)if(p=fopen(a,"rb")){for(j=0;fread(d[i][j],4,4,p);j++);fclose(p);}p =fopen("w","wb");fputs("RIFF",p);w(4);fputs("WAVEfmt ",p);q=16;w(4);q=65537;w(4) ;q=44100;w(4);q*=2;w(4);q=1048578;w(4);fputs("data",p);w(4);for(i=1,q=0;i;w(2), g++,q=0)for(i=0,j=9;j--;)if(k=(b=d[j][l[j]])[0]){i=1;k-2?k-1?0:t():u();b[2]-b[4] ?b[4]++:l[j]++;}fseek(p,4,0);q=36+g*2;w(4);fseek(p,40,0);q-=36;w(4);fclose(p);} o2wav 中間ファイルをriff wavに変換。o0〜o8(1〜9トラック)を読み込みwに吐き出す。 mml2wavを作ろうと思ったけど7行は無理だったので二つに分割。 MMLで使えるものはcdefgab(音階),r(休符),音の長さ(1〜),v(ボリューム,0~127),@(音色,1-正弦波,2-ノイズ),o(オクターブ指定,1〜8)です。
>>867 2つまとめて7行に挑戦してみるか・・・
>>867 #include <math.h>
unsigned d=22050,f,t=1,v=16383;char*a,b[999],*l="cdefgabr",o=0,*p,*q,r[]={-9,-7,
-5,-4,-2,0,2,0};w(z){fwrite(&z,4,1,p);}main(c,x)char**x;{p=fopen("i","r");fgets(
b,999,p);fclose(p);p=fopen("o","wb");for(a=b;*a;++a){(q=strchr(l,*a))?f=(o>0?440
<<o:440>>-o)*pow(2,(12.0+r[q-l]+(a[1]-43?0:(a++>0)))/12.0-1),d=(atol(a+1)?88200/
1.3/atol(a+1):d),w(q-l-7?t:3),w(f),w(d),w(v):*a-111?*a-118?*a-64?*a-60?*a-62?0:
++o:--o:(t=atoi(a+1)):(v=32767.0*atoi(a+1)/128.0):(o=atoi(a+1)-4);}fclose(p);}
unsigned*b,d[9][999][5],l[9],g,q;char*p,a[]="o8",i,j,k;w(m){fwrite(&q,m,1,p);}t(
){q+=sin(.0001424758573*b[1]*b[4])*b[3];}u(){q+=(rand()%b[3]*2)-b[3];}main(){for
(i=9;i--;a[1]--)if(p=fopen(a,"rb")){for(j=0;fread(d[i][j],4,4,p);j++);fclose(p);
}p=fopen("w","wb");fputs("RIFF",p);w(4);fputs("WAVEfmt ",p);q=16;w(4);q=65537;w(
4);q=44100;w(4);q*=2;w(4);q=1048578;w(4);fputs("data",p);w(4);for(i=1,q=0;i;w(2)
,g++,q=0)for(i=0,j=9;j--;)if(k=(b=d[j][l[j]])[0]){i=1;k-2?k-1?0:t():u();b[2]-b[4
]?b[4]++:l[j]++;}fseek(p,4,0);q=36+g*2;w(4);fseek(p,40,0);q-=36;w(4);fclose(p);}
おかしい部分を修正。
<body><script>M="";V=new Array(" ","○","●");P=[1,2,1,2,1,2,0,0];Q=6;W=4; function C(B){if(W && B!=7&& P[B]&& P[(N=B+1)]){P[Q]=P[B];P[Q+1]=P[N];P[B]= P[N]=0;Q=B;K=[-1,-1,-1];for(F=i=0;i<8;i++){if(K[P[i]]>-1 && i!=(K[P[i]]+1)) {F=1;break;}K[P[i]]=i;}M=(!F)?"成功:":(!--W)?"残念:":"残り"+W+"手";}S();} function S(){G="";for(i=0;i<8;i++){G+="<input type='button' name='btn'"+i +" value="+V[P[i]]+" onclick='C("+i+")'>";}document.body.innerHTML=G+M;} S();</script></body> ----------------------- おしどりぱずる 黒白黒白の順で並んでいる碁石があります。 並んだ2個の碁石を、そのままの順で空いている所へ移動させる事を繰り返し、 最終的に黒と白を分ける様に(黒黒黒白白白 or 白白白黒黒黒 )に並べる事が できればOK!! 操作ですが、クリックした石と右隣りの石が空いている所に移動します。 空白をクリックしても、右隣の石が空白でも移動しません。 一番右側の石をクリックしても何も起こりません。
#include<stdio.h> // indent.c int c,d;p(){putchar(c);return;}n(){putchar('\n');return;}t(){int i;n(); for(i=0;i<d;i++)putchar('\t');return;}main(){while((c=getchar())!=EOF){ if((c=='{')||(c=='}'))(c=='{')?(d++,p(),t()):(d--,t(),p(),n());else if( c==';')p(),t();else if(c!='\n')p();}} 過去ログ見れないので整形自分で作ってみました。 字数制限は問題ないけどいまいち汚い。
連番作成支援とか
このスレ初めて来たけどすげー。 Winで bmp -> HTML に変換するやつ作ってみた。 でも3行オーバー。orz #include <windows.h> /* Win2k & bcc 使い方 a.exe hoge.bmp > hoge.html */ main(int c,char**v){BITMAPINFOHEADER*H;HANDLE h=CreateFile(v[1],1<<31,0,0,3,1<< 7,0);long y,x,a,w,b,C,D,W=GetFileSize(h,0);BYTE*P,*B,*G=GlobalAlloc(1<<6,W); BITMAPINFO*I=G+14;ReadFile(h,G,W,&W,0);B=G+*(DWORD*)(G+10);H=&I->bmiHeader;w=W= H->biWidth;CloseHandle(h);b=H->biBitCount;w=b<9?w%(a=8/b)?w/a+1:w/a:W*(a=b/8);w =w%4?(w/4+1)*4:w;puts("<html><body>");for(y=H->biHeight-1;y>-1;y--){D=~C;for(x= 0;x<W;x++){P=b<9?(BYTE*)(I->bmiColors+(((1<<b)-1)&(B[x/a+y*w]>>(b*(a-1-x%a))))) :B+x*a+y*w;C=RGB(*P,P[1],P[2]);C-D?printf("%s<font style='color:#%06x'>",!x?"": "</font>",C):0;printf("#");D=C;}puts("</font><br>");}puts("</body></html>"); GlobalFree(G);return 0;}
>873 ありがとう。 楽しくなってきたんだが、やりすぎると普段から書くコードが汚くなる弊害が…。
>>875 むしろ逆かな
ここで行うことと逆のことをすると、ソースが読みやすくきれいになり、
さらに論理的に同一の部分を把握する能力もあがった
(ような気がする
と、7行で返答してみた
まあ一応、他人のソース読む習慣にはなるよね・・w
878 :
デフォルトの名無しさん :05/03/15 02:59:51
芥川賞受賞作品生成器。(Java) public class A{byte b;A a;void p(){System.out.write(b);if(a!=null)a.p();}void n (){if(++b==0)if(a!=null)a.n();else a=new A();}public static void main(String[]s ){A a=new A();for(;;){a.p();a.n();}}} いい題名が思いつかなかった。 全てのバイト列を吐くプログラムです。
お題マダァ-? (・∀・ )っ/凵⌒☆チンチン
萌
882 :
デフォルトの名無しさん :05/03/17 19:19:26
>>870 のパズルに影響されて「川渡りパズル」を作ってみました。
でも1行オーバー。俺の力では7行は無理ぽorz
<body><script>T=["豚飼","羊飼","猟師","豚","豚","羊","羊","狼",""];P=[1,1,1,1,1
,1,1,1,1];E=2;R=1;Q=0;M="";function H(M,N){return P[M]*P[N]<0}function F(N){if(
N==8){if(Q){R=R==1?-1:1;E=2;Q=0;for(i=0;i<8;i++)if(!P[i])P[i]=R;if((H(0,1)&!(H(
0,5)&H(0,6)&H(1,3)&H(1,4)))|(H(2,7)&!(H(7,0)&H(7,1)&H(7,3)&H(7,4)&H(7,5)&H(7,6)
)))M="NG"}}else if(P[N]==R&&E>0){if(N<3)Q++;P[N]=0;E--}else if(!P[N]){if(N<3)
Q--;P[N]=R;E++}P[8]=R;S()}function S(){T[8]=R==1?"<":">";G="";for(i=0;i<9;i++
)G+="<p align="+(P[i]<0?"left":P[i]?"right":"center")+" onClick='F("+i+")'>"+T[
i]+"</p>";document.body.innerHTML=G+M}S()</script><body>
IE6で動作確認
川の向こう岸へ渡ろうとしています。 ここにあるボートは2人乗り。 ボードを操作できるのは「羊飼」「豚飼」「猟師」の三人だけです。 羊飼は豚が大好物で、豚飼がいないところでは、豚を殺して食べてしまいます。 豚飼は羊が大好物で、羊飼がいないところでは、羊を殺して食べてしまいます。 狼は猟師がいないところでは、その場にいる他全員を食べてしまいます。 さて全員安全に向こう岸へ渡るには・・・ 名前の文字をクリックしてボートに乗る候補を選んでください。 もう一度クリックすると候補から外れます。 候補に選べるのは同時に最大二人まで。 最下行のボート(<または>)をクリックすると、対岸へ移動します。 ただし、ボートを操作できる人が乗っていないと移動できません。 失敗すると最下行にNGと表示されます。
>>882 ちょっと縮めた
<body><script>T=["豚飼","羊飼","猟師","豚","豚","羊","羊","狼",""];P=[1,1,1,1,1
,1,1,1,1];E=2;R=1;Q=0;M="";function H(M){return P[M
>>3 ]*P[M&7]<0}function F(N){
if(N==8){if(Q){R*=-1;E=2;Q=0;for(i=0;i<8;i++)if(!P[i])P[i]=R;if((H(1)&!(H(5)&H(
6)&H(11)&H(12)))|(H(23)&!(H(56)&H(58)&H(59)&H(60)&H(61)&H(62))))M="NG"}}else if
(P[N]==R&&E>0){if(N<3)Q++;P[N]=0;E--}else if(!P[N]){if(N<3)Q--;P[N]=R;E++}P[8]=
R;S()}function S(){T[8]=R==1?"<":">";G="";for(i=0;i<9;i++)G+="<p align="+(P[i
]<0?"left":P[i]?"right":"center")+" onClick='F("+i+")'>"+T[i]+"</p>";document.
body.innerHTML=G+M}S()</script><body>
3行目 if(Q){R*=-1;E=2;Q=0;for(i=0;i<8;i++) > if(Q){R=-R;E=2;for(i=Q=0;i<8;i++) 5行目 P[N]==R&&E>0 > P[N]==R&&E 6行目 T[8]=R==1? > T[8]=0<R?
おぉ、結構見落としがあるもんだなぁ。 関数H(M)は思いつかなかった。すごい!
言語仕様知らんので間違いかもしれんが if(!P[i])P[i]=R; → P[i]||(P[i]=R); if(N<3)Q++; → Q+=N<3; if(N<3)Q--; → Q-=N<3;
追加 P=[1,1,1,1,1,1,1,1,1];R=1; → P=[R=1,1, (略) ,1];
>>887 試してみた。trueは-1になるみたい。
他の環境でも保証されるかは調べてみないとわからないな。
あと、onClick の''は、消してもIE6で動作OKだった。
ずるいかもしれないけど、
ボートの向き表示をやめるとか、
表示文字をアルファベット1文字に簡略化すれば、7行できそうだね。
配列Tの ,"" と6行目の T[8]=0<R?"<":">"; を削除、 7行目 +T[i]+ を +(i-8?T[i]:0<R?"<":">")+ に。
alignの(左から記述する言語での)初期値はleftなので"left"は省略可。
省略しまくり。IE6、Firefoxで動作確認。
<body><script>P=[1,1,1,1,1,1,1,1,R=1];E=2;M="";Q=0;function H(M){return P[M
>>3 ]
*P[M&7]<0}function F(N){if(N==8){if(Q){R=-R;E=2;for(i=Q=0;i<8;i++)P[i]||(P[i]=R
);if((H(1)&!(H(5)&H(6)&H(11)&H(12)))|(!(H(56)&H(58)&H(59)&H(60)&H(61)&H(62))&H(
23)))M="<p>NG"}}else if(P[N]==R&&E){Q+=N<3;P[N]=0;E--}else if(!P[N]){Q-=N<3;P[N
]=R;E++}P[8]=R;S()}function S(){G="";for(i=0;i<9;i++)G+="<p align="+(P[i]<0?0:P
[i]?"right":"center")+" onClick=F("+i+")>"+(i-8?["豚飼","羊飼","猟師","豚","豚"
,"羊","羊","狼"][i]:0<R?"<":">");document.body.innerHTML=G+M}S()</script>
>>892 すごい!
</p></body>が無いとか、align=0とか強引なところはあるけど、
ちゃんと動くし7行になってる!
失敗判定にバグ発見?
H(56)&H(58)&・・・となってるけど、
H(56)&H(57)&・・・が正しいはず。
発生する状況に持っていくのが大変だけど。
それから、いまさらだけど、
>>882 での H(7,0) は
>>884 で H(56) になってるけど H(0,7) でも同じだから H(7) で1文字減らせるね。
>>893 H(M)いじって</body>追加。
<body><script>P=[1,1,1,1,1,1,1,1,R=1];E=2;M="";Q=0;function H(M){return P[M
>>3 ]
*P[M&7]<0&(M%3?1:H(M-1))}function F(N){if(N==8){if(Q){R=-R;E=2;for(i=Q=0;i<8;){
P[i]||(P[i]=R);i++}if((H(1)&!(H(6)&H(12)))|(!(H(57)&H(60)&H(61)&H(62))&H(23)))M
="<p>NG"}}else if(P[N]==R&&E){Q+=N<3;P[N]=0;E--}else if(!P[N]){Q-=N<3;E++;P[N]=
R}P[8]=R;S()}function S(){G="";for(i=0;i<9;i++)G+="<p onClick=F("+i+") align="+
(P[i]<0?0:P[i]?"right":"center")+">"+(i-8?["豚飼","羊飼","猟師","豚","豚","羊",
"羊","狼"][i]:0<R?"<":">");document.body.innerHTML=G+M}S()</script></body>
↑に追加で</p>もalignの強引も改善できた 4行目 "<p>NG" > "NG" 5〜7行目 G+="<p onClick=F("+i+") align="+ (P[i]<0?0:P[i]?"right":"center")+">"+(i-8?["豚飼","羊飼","猟師","豚","豚","羊", "羊","狼"][i]:0<R?"<":">"); G+="<p onClick=F("+i+") align='"+(P [i]<0?"":P[i]?"right":"center")+"'>"+["豚飼","羊飼","猟師","豚","豚","羊","羊", "狼",0<R?"<":">"][i]+"</p>";
>>894 >>895 もしかして昔からこのスレ見てる古参の方ですか?
とりあえず、川渡りパズルの最終結果をまとめてみました。
<body><script>P=[1,1,1,1,1,1,1,1,R=1];E=2;M="";Q=0;function H(M){return P[M
>>3 ]
*P[M&7]<0&(M%3?1:H(M-1))}function F(N){if(N==8){if(Q){R=-R;E=2;for(i=Q=0;i<8;){
P[i]||(P[i]=R);i++}if((H(1)&!(H(6)&H(12)))|(!(H(57)&H(60)&H(61)&H(62))&H(23)))M
="NG"}}else if(P[N]==R&&E){Q+=N<3;P[N]=0;E--}else if(!P[N]){Q-=N<3;E++;P[N]=R}P
[8]=R;S()}function S(){G="";for(i=0;i<9;i++)G+="<p onClick=F("+i+") align='"+(P
[i]<0?0:P[i]?"right":"center")+"'>"+["豚飼","羊飼","猟師","豚","豚","羊","羊",
"狼",0<R?"<":">"][i]+"</p>";document.body.innerHTML=G+M}S()</script></body>
配列の中で?演算子使えるとは知らなかった。
関数H(M)の再帰による2個同時判定は脱帽。
>>896 知ってたw
というか、実はそれを元にしてるんだけど、
こっちのほうが一般的で全年齢対象かとおもって。
このほかにも川渡りはいろいろバリエーションがあるみたいだね。
898 :
デフォルトの名無しさん :05/03/19 12:02:37
「NullPointerExceptionたたき」です。
「ぬるぽ」を「ガッ」してください。テンキーの1〜9に対応してます。
<body onKeyDown=K=event.keyCode-97><script>function Y(){if(B>9)R=" END";else{if
(K>=0&K<9){if(P[K]>0){P[K]=-4;S++}else B++;K=9}if(!F--){F=9-(T<80?++T
>>4 :5);P[N
=Math.floor(Math.random()*9)]||(P[N]=1)}G="<table>";for(i=0;i<9;i++){X=P[N=[6,7
,8,3,4,5,0,1,2][i]];Z=X<8?8-X:X-8;G+=(i%3?"":"<tr>")+"<td width=180>"+(N+1)+
"柱|"+(X<0?"ガッ":"・∀・)<ぬるぽ".substr(Z,8-Z))+"</td>"+((i-2)%3?"":
"</tr>");if(X)X++;B+=X>16;P[N]=X%17}}document.body.innerHTML=G+"</table>BAD:"+B
+" HIT:"+S+R;setTimeout(Y,80)}F=25;T=S=B=0;K=9;R="";P=[];Y()</script></body>
IE6で動作確認。
過去作品に比べると、それほど密度は無いし、面白みの少ないコードですが、
遊べる物を作ってみました。
setTimeoutもしくは、2行目のFに入れる値をいじると難易度を変更できます。
※2個のキーを連続で素早く入力した場合に、
最初のキー入力が無視されることがありますが、これは仕様ですw
貴様らが楽しそうにJavaScriptなんぞやるからうらやましくてかじってみたら収集つかなくなったじゃねーか! 嘘ですごめんなさい。一晩中4目並べ作ってました。上の方にあるMMLは半音が出せなくて挫折しました。
>>899 嘘つきは泥棒の始まりということで
通 報 し ま す た
作ったけどなんか7行とかJavaScriptとか当初の目的からそれて長大なCのコードになったから晒さない。てか晒せない;-)
晒せ。幾許か縮めんの手伝ったる。
JavaScriptで書いていていつの間にかCになってるなんて なかなか可愛い奴だな。
4目っつうかN目に拡張して最低限アホな手は打たないようだらだらコーディングしてたら160行にもなってしまいますた。うpはムリポ。 本職ではないとは言えいい加減なデータ構造と適当に作ったアルゴリズムをすっきりさせればもっと縮むはず…てか半分くらいにはなると思うw >903 JavaScriptちょろっと勉強しようとしてみたんですけど、JavaScript特有の小技なんて当然できないから結局Cで作っても変わらないという結論に。 んで当初の目的を見失ってだらだらと。です。 皆期待しすぎだよ〜
160行を7行に縮められたら神だよ。 天才プログラマー(某団体が認定するものではなく。)だよ。 世界に誇れるよ。 でも、160->7をするぐらいなら最初からつくるか・・・
普通のCで書いたやつを七行にするのは、できる可能性は低くはないと思うけどな。 縮めて160行ならむりぽだけど…。
「川渡りパズル」さらに縮みました。 関数F()とS()をまとめただけです。こんなとこを見落としてるなんて・・・。 完全に盲点でした。誰も気づかなかったのかな? 5行目 S()}function S(){ を削除。 7行目 S() > F(8) 関数F()の引数は省略しても、なぜか動いたけど、 安全のため一応、8を入れておきます。
始めから3目に限定して、明らかな負け手を防ぐとかの機能を削ればできるのかも。 そっちで挑戦するか…。
>>909 JavaSDKのサンプルになかったっけ?
TickTackToeだっけ?
あ!あれは○×ゲームだったorz
912 :
デフォルトの名無しさん :2005/03/23(水) 11:05:31
川渡りの答えがわかんねー! 誰か分かる人いますか? 解答をだれかお願いします! この程度の問題が分からないようじゃ プログラマ失格なのか!? 俺失格!?
正解見れば解き方がわかるから 総当たりで解を求めるプログラムを書けば桶
>>912 ヒント
1.猟師と狼が渡る → 猟師が戻る
2.猟師と豚が渡る → 猟師と狼が戻る
3.?と?が渡る → ?が戻る
4.?と?が渡る → ?が戻る
5.?と?が渡る → ?が戻る
6.?と?が渡る → ?が戻る
7.?と?が渡る → ?と?が戻る
8.猟師と羊が渡る → 猟師が戻る
9.猟師と狼が渡る → クリア!!
>>912 ヒント
1.猟師と狼が渡る → 猟師が戻る
2.猟師と羊が渡る → 猟師と狼が戻る
3.?と?が渡る → ?が戻る
4.?と?が渡る → ?が戻る
5.?と?が渡る → ?が戻る
6.?と?が渡る → ?が戻る
7.?と?が渡る → ?と?が戻る
8.猟師と豚が渡る → 猟師が戻る
9.猟師と狼が渡る → クリア!!
C++のソースファイルからコメントを取り除いて出力するのを7行で
釣り?
920 :
デフォルトの名無しさん :2005/03/28(月) 12:49:10
>>869 double pow(double,double);char*l="cdefgabr",a,b,c,o=0,*q,r[]={-9,-7,-5,-4,-2,0,2
,0};unsigned d=4,g=88200,f,e,v=4410,p;x(){for(e=0;isdigit(y());e=e*10+a-48);b=a;
return e;}y(){b?a=b,b=0:(a=getchar());return a;}main(){for(a=getchar();a>0;y()){
(q=strchr(l,a))?f=(o>0?440<<o:440>>-o)*pow(2,(12.0+r[q-l]+((c=getchar())-43?((b=
c)<0):1))/12-1),(printf("%d,%d,%d,%d\n",q-l-7?1:2,f,g/(x()?e:d),v)):a-111?a-118?
a-116?a-108?a-62?a-60?a-10?0:puts("0,0,0,0"),v=4410,d=4,g=v*20:--o:++o:(d=x()):(
g=10584000/x()):(v=32767*x()/128):(o=x()-4);}puts("0,0,0,0");}
unsigned*b,d[9][9999][5],l[9],g,q,v;char*p,i,j,k;w(m){fwrite(&q,m,1,p);}t(){q+=
sin(.00014247586*b[1]*b[4])*b[3]*(b[4]<99?1.0*b[4]/99:(v=b[2]-b[4])<200?1.0*v/2\
00:1);}main(){for(i=9;i--;j=0){do{b=d[i][j];scanf("%d,%d,%d,%d",b,b+1,b+2,b+3);}
while(*d[i][j++]);}p=fopen("w","wb");fputs("RIFF0000WAVEfmt ",p);q=16;w(4);q=65\
537;w(4);q=44100;w(4);q*=2;w(4);q=1048578;w(4);fputs("data",p);w(4);for(i=1,q=0;
i;w(2),g++,q=0)for(i=0,j=9;j--;)if(k=*(b=d[j][l[j]])){i=1;k-1?0:t();b[2]-b[4]?b[
4]++:l[j]++;}fseek(p,4,0);q=36+g*2;w(4);fseek(p,40,0);q-=36;w(4);fclose(p);}
mml2oの出入力を標準出入力、o2wavの入力を標準入力にした。
あと、ホワイトノイズを消したり、正弦波の発音を滑らかにしたり。
コンパイル確認はgcc 3.3.3 (cygwin special)。オプション-lm必須。
mml2oが識別可能なものは
cdefgab(音階),r(休符),音長(1〜),+(半音上げる)
>(1オクターブ上げる),<(1オクターブ下げる),o(オクターブ指定)
t(テンポ指定),l(既定の音長指定),v(音量指定,0〜127)
mml2oは1行を1トラックとします。
7行でp2pてできるかにゃ
6面サイコロを2個使った確立ゲーム。 出た目の合計が7,11なら勝ち。2,3,12ならば負け。 それ以外の数の場合、同じ数になるまで振り続ける。途中で7が出ると負け。 面白くもなんともないな○| ̄|_ #include<stdio.h>#include<stdlib.h>#include<time.h>int dice1,dice2,point,point2,mode;int shake(int mode){ srand(time(NULL));dice1 = rand() % 6 + 1;srand(time(NULL));dice2 = rand() % 6 + 1;if(mode == 0) {point = dice1 + dice2;return;}if(mode == 1){point2 = dice1 + dice2;return;}}int main(void){shake(0); switch(point){case 7:case 11:printf("Point:[%d]\n",point);printf("Win!\n");;return;case 2:case 3: case 12:printf("Point:[%d]\n",point);printf("Lost.\n");return;default:printf("Point:[%d]\n",point); printf("Shakking...");break;}while(1){shake(1);if(point2 == point){printf("\nPoint:[%d]\n",point2); printf("Win!\n");break;}if(point2 == 7){printf("\nPoint:[%d]\n",point2);printf("Lost.\n");break;}}}
>>923 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
char*o[]={"Win!","Lost.","Shaking..."},p,q;void t(r,i){printf("Point:[%d]\n%s\n"
,r,o[i]);}char s(){return rand()%6+rand()%6+2;}int main(){srand(time(0));if((p=s
())==7||p==11){t(p,0);return 0;}if(p==2||p==3||p==12){t(p,1);return 0;}t(p,2);f\
or(;;){if((q=s())==p){t(p,0);break;}if(q==7){t(q,1);break;}}return 1;}
圧縮してみた。
(gcc -Wall対策のやつを除いて)もっと縮められそうなんだが、どうも妙案が思いつかない。
<script type="text/javascript">var p,q; function o(m){document.getElementById("a").innerHTML+=m} function r(){return Math.floor(6*Math.random())}function s(){return r()+r()+2} function v(p){o("["+p+"]<br>")} function w(){o("You Win!<p>")}function l(){o("You Lost!<p>")} function u(p){v(q=s());(p-q?q-7?u:l:w)(q)}</script><div id=a><p></div> <button onclick="v(p=s()),(p-2||p-3||p-12?p-7||p-11?u:w:l)(p)">Shake</button>
926 :
925 :2005/03/31(木) 22:03:26
あう、なんか変だと思ったら、論理演算がはんたいだったw <script type="text/javascript">var p,q; function o(m){document.getElementById("a").innerHTML+=m} function r(){return Math.floor(6*Math.random())}function s(){return r()+r()+2} function v(p){o("["+p+"]<br>")} function w(){o("You Win!<p>")}function l(){o("You Lost!<p>")} function u(p){v(q=s());(p-q?q-7?u:l:w)(q)}</script><div id=a><p></div> <button onclick="v(p=s()),(p-2&&p-3&&p-12?p-7&&p-11?u:w:l)(p)">Shake</button>
<script type="text/javascript">var p,q,x,y,z,g=[,"Win","Lose"]; function o(m){document.getElementById("a").innerHTML+=m} function r(){return-Math.floor(-6*Math.random())} function s(){x=r();y=r();o(x+"+"+y+" ["+(z=x+y)+"]<br>");return z} function u(p,w){w?o("You "+g[w]+"!<p>"):u(q=s(),(p-q?q-7?0:2:1))} </script><div id=a><p></div> <button onclick="u(p=s(),p-2&&p-3&&p-12?p-7&&p-11?0:1:2)">Shake</button>
<script type="text/javascript"> var p,q,z,a=[,0,0],g=[,"Win","Lose"],F=Math.floor,R=Math.random; function o(m){document.getElementById("a").innerHTML+=m} function s(x,y){z=x=-F(-6*R()),z+=y=-F(-6*R()),o(x+"+"+y+" ["+z+"]<br>")} function u(p,w){w?++a[w]+o("You "+g[w]+"! ("+a[2]+"-"+a[1]+")<p>"): s()+u(q=z,p-q?q-7?0:2:1)}</script><div id=a><p></div> <button onclick="s()+u(p=z,p-2&&p-3&&p-12?p-7&&p-11?0:1:2)">Shake</button> 通算成績を表示 まだ文字数には余裕があるけど、これ以上ネタがふくらまないなあ。
<script type="text/javascript">var a=0,b=0,F=Math.floor,R=Math.random</script> <div id=a><p></div><button onclick="for(var w,p,y,z=0;!w;) document.getElementById('a').innerHTML+= (w=p?z-7?p-z?0:1:2:z-2&&z-3&&z-12?z-7&&z-11?0:1:2)? 'You '+(w-2?++a&&'Win':++b&&'Lost')+'! ('+b+'-'+a+')<p>': (p=z,y=-F(-6*R()),z=-F(-6*R()))+'+'+y+' ['+(z+=y)+']<br>'">Shake</button>
絶対もう誰かやってそうな気はするけど、じゃんけんマシン。 人間とコンピュータが対戦します。 コンピュータは最初弱いけど、途中から鬼のように強くなってきますw 正直、50点先取とか100点先取で勝てたらすごいと思う。 <div id=a><p></div><script type="text/javascript">var i,a=0,b=0,u=0;H=['グ','チ' ,'パ'],p=[];for(i=0;i<81;p[i++]=0);function o(m,i){document.getElementById('a'). innerHTML+=m}function t(h){k=p[u]>p[u+27]?p[u]>p[u+54]?2:1:p[u+27]>p[u+54]?0:1;p [u+=h*27]++;u=Math.floor(u/3);i=(3+h-k)%3,o(H[k]+' '+H[h]+'<br>'),i&&(((i-=2)?++ b:++a)+o((i?'<u>':'')+b+(i?'</u>-':'-<u>')+a+(i?'':'</u>')+'<p>'))}</script> <button onclick="t(0)">グ</button><button onclick="t(1)">チ</button> <button onclick="t(2)" >パ</button>
とりあえず
>>930 を短縮
<div id=a><p></div><script type="text/javascript">for(p=[i=a=b=u=0];i<81;p[i++]=
0)H=['グ ','チ ','パ '];function t(h){i=p[u]>p[u+1],i+=i?p[u]>p[u+2]:p[u+1]<p[u+
2];document.getElementById('a').innerHTML+=H[i]+H[h]+'<br>'+((i-=h)?(++i%3?b+
'-<u>'+ ++a+'</u>':'<u>'+ ++b+'</u>-'+a)+'<p>':'');++p[u+=h];u=u*3%27}</script>
<button onclick="t(0)">グ</button>
<button onclick="t(1)">チ</button>
<button onclick="t(2)">パ</button>
リーチをlizhiにして for(l = 1;l < MOKU;l++)if(S[l*(MOKU - 1)] == 0){M = l*(MOKU - 1);} を<=に修正。 #include<stdio.h> #define X 3 int S[X*X],P[X*X]; int row(int v){int p=0,h=X;while(--h>=0)p+=S[X*v+h];return p;} int col(int h){int p=0,v=X;while(--v>=0)p+=S[X*v+h];return p;} int dia(int u){int p=0,j=X,l,m;if(u)l=m=X-1;else l=0,m=X+1; while(--j>=0)p+=S[m*j+l];return p;} void checkwsub(int r){if(r==-X){show();puts("\nYou won!\n");exit(2);} if(r==X){show();puts("\nYou lose!\n");exit(2);}} void checkwin(){int v=0,r;for(;v<X;) checkwsub(row(v)),checkwsub(col(v)),checkwsub(dia(v++));} int lizsub(int i, int z){ if(row(i)==z)for(l=X;--l>=0;)if(!S[X*i+l])return X*i+l; if(col(i)==z)for(l=X;--l>=0;)if(!S[X*l+i])return X*l+i; if(dia(0)==z)for(l=X;--l>=0;)if(!S[X*l+l])return X*l+l; if(dia(1)==z)for(l=1;l<=X;l++)if(!S[X*l-l])return X*l-l;return -1;} int lizhi(int i){int l=lizsub(i,X-1);if(l==-1)l=lizsub(i,1-X); return l;} ロジック変えないと無理だろうと…
935 :
デフォルトの名無しさん :2005/05/04(水) 00:42:35
/** * x == 1 のとき足し算, * x == 2 のとき掛け算, * x == 3 のとき累乗計算をします. * ただし x, y, z は 0 より大きい整数です. 不適切な値の場合は -1 を返します. */ int superfunc(int x, int y, int z){ if(x < 1 || y < 1 || z < 1) return -1; if(x == 1) return y + z; if(z == 2) return superfunc(x-1, y, y); return superfunc(x-1, superfunc(x, y, z-1), y); }
javascript:(function(){var s=prompt("Input encoded string:")||"",b,l,n,v,c,r="",
i=0,d=document,e=d.createElement("script");while(n=s.charCodeAt(i++))v=(n&64)?
(n&31)+(n&32?25:-1):(n&16)?((n&12)==12)?0:(n&15)+52:(n&4)+62,l?(c=b<<8-l|v>>(l-=
2),r+=c?"%"+(c>15?"":0)+c.toString(16):""):l=6,b=v&(1<<l)-1;r&&(e.src=
"
http://nurucom-archives.hp.infoseek.co.jp/digital/ecl.js ",d.body.appendChild(e)
,function f(){typeof JCT8836=="string"?alert(UnescapeSJIS(r)):setTimeout(f,99)})
()})()
Base64デコーダブックマークレット。Shift_JISの文字列用。
Escape Codec Libraryを使用。
ttp://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html UnescapeSJISを適当に変えればEUC-JPやISO-2022-JP用にもなるはず。
このライブラリを使えば文字コードの自動判別も可能らしいが
さすがにそれだとブックマークレットに収まりきらなさそう。
トリッキーの1の名前を久々に見たな
939 :
デフォルトの名無しさん :2005/07/25(月) 18:20:04
C言語で画像(バイナリ)ファイルをいじれるなんてこの板で知ったよ。
#include<stdio.h>
FILE*R,*S;int i=0,h,s,Y,X,t,p[3];void I(void){i=0,t=0;while(i<4){fputc(fgetc(R)
,S);fseek(R,-1,1);t|=fgetc(R)<<(i++*8);}}main(int c,char*v[]){R=fopen(v[1],"rb"
);S=fopen(v[2],"wb");for(;i<54;fputc(fgetc(R),S),i++);fseek(R,22,0);fseek(S,18,
0);I();h=t;fseek(R,18,0);I();s=t;fseek(R,54,0);fseek(S,54,0);i=h%4;for(X=s;X>0;
X--){for(Y=h;Y>0;Y--){fseek(R,54+(Y-1)*(s*3+i)+(X-1)*3,0);for(c=0;c<3;c++)fputc
(fgetc(R),S);}t=0;while(t++<i)fputc(0,S);}fclose(R);fclose(S);return 0;}
画像を反時計周りに90度回転させるんですが、
できる画像とかできない画像とかいろいろあって変です
だれか改良をお願いします
使い方
>>39 P.S.処理遅いです。
>939 #include<stdio.h> FILE*R,*S;int i,h,s,Y,X,t;void O(n){for(i=0;i<4;)fputc(n>>i++*8,S);}I(e){for( fseek(R,e,i=t=0);i<4;)t|=fgetc(R)<<i++*8;return t;}main(c,v)char**v;{R=fopen(v[ 1],"rb");for(S=fopen(v[2],"wb");i<54;fputc(fgetc(R),S),i++);fseek(S,18,0);O(h=I (22));O(s=I(18));fseek(S,2,0);O(54+(h*3+h%4)*s);fseek(R,54,0);fseek(S,54,0);for (X=0;X<s;X++){for(Y=h;Y--;)for(fseek(R,54+Y*(s*3+s%4)+X*3,c=0);c++<3;)fputc( fgetc(R),S);for(t=h&3;t--;)fputc(0,S);}fclose(R);fclose(S);return 0;}
941 :
939 :2005/07/26(火) 19:14:57
>940完璧じゃないですか。ありがとうございます。 この分だと時計回りもできそうですね。 本当は時計回りを作ったつもりなんですがなぜか反時計周りになってしまったorz そこで質問なんですが BMPは左下から右上に向かうように保存されてますよね ┌─┬─┬─┐ │7 │8 │9 │ ├─┼─┼─┤ │4 │5 │6 │ ├─┼─┼─┤ │1 │2 │3 │ └─┴─┴─┘ 下の順で保存すれば時計回りじゃないんですか? ┌─┬─┬─┐ │9 │6 │3 │ ├─┼─┼─┤ │8 │5 │2 │ ├─┼─┼─┤ │7 │4 │1 │ └─┴─┴─┘ 実際は反時計回りなんですけど・・・ 俺のプログラムがおかしかったんでしょうか? 説明変ですいません。回答おねがいします。
>>941 940じゃないけど、その図は俺には反時計回りに見える。
きっと942と943の頭がおかしいのでしょう
>940改 exec src.bmp dst.bmp [opt] [opt]無いと反時計回り、あれば時計回りに回転 #include<stdio.h> FILE*R,*S;int i,s,X=54,Y,f;void D(){putc(getc(R),S);}void O(n){for(i=5;--i;n>>= 8)putc(n,S);}I(e){for(fseek(R,e,i=s=0);i<4;s|=getc(R)<<i++*8);return s;}main(c, v)char**v;{f=c>3;R=fopen(v[1],"rb");for(S=fopen(v[2],"wb");X--;D());fseek(S,18, 0);O(c=I(22));O(I(18));for(fseek(S,54,0);++X<s;fwrite(&i,1,c&3,S))for(Y=c;Y--;D (),D(),D())fseek(R,54+(f?c+~Y:Y)*(s*3+s%4)+(f?s+~X:X)*3,0);s=ftell(S);fseek(S,2 ,0);O(s);fclose(R);fclose(S);return 0;}
>944改 exec opt src.bmp dst.bmp opt: L....左(反時計方向)回転 R....右(時計方向)回転 X....左右反転 Y....上下反転 #include<stdio.h> FILE*R,*S;int i,s,X,Y,f,x,y,z;void O(n){for(;i--;z||(n>>=8))putc(z?getc(R):n,S) ;}I(e){for(fseek(R,e,i=s=0);i<4;s|=getc(R)<<i++*8);return s;}main(c,v)char**v;{ Y=*v[z=1]-82;R=fopen(v[2],"rb");S=fopen(v[3],"wb");O(i=54);fseek(S,18,z=0);f=Y- 7?Y-6?!Y:2:3;O(c=I(Y=f<2?22:18));O(I(Y^4));for(fseek(S,54,0);i=4,X++<s;i=c&3,O( 0))for(Y=c;z=Y--;O(i=3))x=X-1,y=f&1?x=s-X,c+~Y:Y,fseek(R,54+(f<2?y*(s*3+s%4)+x* 3:x*(c*3+c%4)+y*3),0);s=ftell(S);fseek(S,2,0);O(s);fclose(R);return fclose(S);}
行数リダクション早すぎw
>945の引数をチェックし、処理時には入出力ファイル名を表示するようにした #include<stdio.h> FILE*R,*S;int i,s,t,X,Y,f,x,y;I(e){if(i<0)for(fseek(R,e,t=0);++i<3+!s;e=t|=getc (R)<<i*8);for(;i--;e>>=8)putc(f?e:getc(R),S);return t;}main(c,v)char**v;{if(S=c >3&&(R=fopen(v[2],"rb"))?fopen(v[3],"wb"):0){puts(v[2]);puts(v[3]);fseek(S,18,I (i=54));c=*v[f=1]-82;c=c-6U>1?!c:c;f=I(Y=22^c&4);s=X=I(Y^4);for(fseek(S,0,2);X --;i=f&3,I(0))for(Y=f;t=Y--;I(54+x*(t*3+t%4)+y*3))x=s+~X,t=y=c&1?x=X,f-t:Y,t=c< 2?y=x,x=t,s:f;s=ftell(S);i=4;fseek(S,2,0);I(s);fclose(S);}return!R||fclose(R);}
BMP縮小 exec src.bmp dst.bmp #include<stdio.h> FILE*R,*S;int i,X,Y,f,x,y;I(e){for(i=e=fseek(R,e,0);i<1+3*!Y;e|=getc(R)<<i++*8) ;return e;}void O(n){for(;i--;n>>=8)putc(f?n:getc(R),S);}V(u){return I(54+(y*2+ u/2)*(X*3+X%4)+u%2*3+x*2-x%3);}main(c,v)char**v;{if(S=c>2&&(R=fopen(v[1],"rb")) ?fopen(v[2],"wb"):0){O(i=54);fseek(S,f=18,0);O((X=I(f))/2);O((Y=I(22))/2);for( fseek(S,0,2);y<Y/2;i=x/3&3,O(x=!++y))for(;x<X/2*3;x++)O((V(0)+V(1)+V(2)+V(3)+2) /4);i=4;c=ftell(S);fseek(S,2,0);O(c);fclose(S);}return!R||fclose(R);}
>>864-865 Domain Information: [ドメイン情報]
a. [ドメイン名] PCCOL-TDC.CO.JP
e. [そしきめい]
f. [組織名] 株式会社 トヤマデータセンター
g. [Organization] TOYAMA DATA CENTER CO.
k. [組織種別] 株式会社
l. [Organization Type] Company
m. [登録担当者] HS342JP
n. [技術連絡担当者] HS342JP
p. [ネームサーバ] ns-kg021.ocn.ad.jp
p. [ネームサーバ] ns.pccol-tdc.co.jp
[状態] Connected (2005/10/31)
[登録年月日] 1996/10/23
[接続年月日] 1996/11/19
[最終更新] 2004/11/01 01:07:58 (JST)
$x = 63; for (my $i = 0; $i < $x; $i++) { $a[$i]= "0"; } for (my $i = 0; $i < $x; $i++) { $c[$i]= "0"; } $a[32] = 1; $a[33] = 2; for (my $j = 0; $j < 100; $j++) { for (my $k = 0; $k < $x+2; $k++) { $c[$j][$k] = $a[$k-1]+$a[$k+1]; } for (my $i = 0; $i < $x; $i++) { $u = $c[$j][$i]; $u =~ s/0/ /g; print "$u"; } for (my $k = 0; $k < $x; $k++) { $a[$k] = ($c[$j][$k-1]+$c[$j][$k+1]) % 3; } print "\n";}
951 :
デフォルトの名無しさん :2005/11/17(木) 02:20:17
// 六行FFT #include <complex> #include <valarray> using namespace std;typedef complex<double>c;typedef valarray<c>a;a f(a&s){int n=s.size(),h=n/2;if(n>1){a x(0.,h),y(0.,h);for(int k=0;k<h;++k){x[k]=s[k]+s[k+h ];y[k]=(s[k]-s[k+h])*exp(c(0,-2*M_PI*k/n));}a d(0.,n);d[slice(0,h,2)]=f(x);d[ slice(1,h,2)]=f(y);return d;}else return s;}
T_OOWW3=XXWXPY50PPZ5jQP_-ys,A1Ea5y852cP4Z4PP-pV40P-BOu com2txt/Nide5UqPWX,wP500-MQP4UP-wx4XP5rjP5Z2P-jC,JP= 5O4,APRX5BZP-pJPPQX42P-r=PRX55aP59DHHP-99,UP-lt,mP-uq= P5_VHP-4A40PTZ,TPP_RX__np4PmDkMH3QHnr44sREs46dl4XoXc.X l4CO4L566TpJyAPCsigPnl_5rkbZ4OPEu9Nl5Sxuu5jptHBraOCmvB Jp8WGPClErjL8BjmEjz44Dsr2tapxowl_5rkhCi553Yop4AAa6Np5N dclNNv6cC5wLhcmnNp98443PYsRDDPZjxNerkb50tQsORsRFq5sO48 j9hgo7s46fe4E1PCa6KvKgN59i.4boJb5J4OBQtBkQ4sREsMucia.A FkXoHkHkPL573T6LfkCcBTUIt4zkkBCO4kHoHkONjb88stkQ4Aa5MH UiYCa7rUsO5xmi3mC9MHPXNAq6z44FK8k7.4edkrhCABONdS9.nYZn x0FVkL8Bjov4BmE3MHWHeG.0tR2taC.xGG9mE4hqOAHqOBHqOCKi.4 k.4R8tamDFzX4KMH3.4SLtas444.4444Ep444Al4444UDUMTCt4KRu EStXmKRP84P1MVe244P4444P44PC55pHGKPC44444cLbNvKhP4KPIs RFx4DsMHW1i3cLrHRPGZPAPQP44S4DA4J62otLGB4C.448ABpDEC44 BAph4DA44444P4444H42D4D444A44444B444DAp24A42H4B44444BA pX44.2E4A444A4GA44P444PApX4D42K4F4P4448AuP4D444D4234By tYWat4444x.2D4A44444B44444.2N4B444F4GH4CFD42F4JpPApX4z rYMZVyi3WUmHDuATtt4HB4mKRt.RFUl3F8.Uv7r3FPaHBtmKR4.4Fh 4ZAHPP4AhGqA44Fh4ApGhApDG4444Z.ChA.444O8eBAA44O8e4AA44 LsLiA4GB.BzD444BA444IpPAph4uA44444PAqX4qa4GA.BlD42F4It ASVUs2vEgYTIo0DD41WMe2cLrKfQl3444.4AE0FetTGIoXvUs2pAkY WInYVpsLbyd3FpG5p4GHP4:
7行じゃないしCOM2TXTですよね
いちおうメッセージボックスが出る、はず。 comから32bit exeを展開するだけで大変なので誰か7行(532byte)に削ってくれ
955 :
デフォルトの名無しさん :2006/01/26(木) 13:24:50
>>954 (´・ω・`)むりぽ
1025byte
T_OOWW3=XXWXPY50PPZ5jQP_-ys,A1Ea5y852cP4Z4PP-pV40P-BOu
com2txt/Nide5UqPWX,wP500-MQP4UP-wx4XP5rjP5Z2P-jC,JP=
5O4,APRX5BZP-pJPPQX42P-r=PRX55aP59DHHP-99,UP-lt,mP-uq=
P5_VHP-4A40PTZ,TPP_RX__np4PmDkMH3QHnr44sREs46dl4XoXc.X
l4CO4L566TpJyAPCsigPnl_5rkbZ4OPEu9Nl5Sxuu5jptHBraOCmvB
Jp8WGPClErjL8BjmEjz44Dsr2tapxowl_5rkhCi553Yop4AAa6Np5N
dclNNv6cC5wLhcmnNp98443PYsRDDPZjxNerkb50tQsORsRFq5sO48
j9hgo7s46fe4E1PCa6KvKgN59i.4boJb5J4OBQtBkQ4sREsMucia.A
FkXoHkHkPL573T6LfkCcBTUIt4zkkBJrKrCO4dONjb88stkQ4Aa5MH
UiYCa7rUsO5xmi3mC9MHPXNAq6z44FK8k7.4edkrhCABONdS9.nYZn
x0FVkL8Bjov4BmE3MHWHeG.0tR2taC.xGG9mE4hqOAHqOBHqOCKi.4
k.4R8tamDFzX4KMH3.4SLtas444.4444Ep444Al4444UDUMTCt4KRu
EStXmKRSU441MV.AMZVyi3WUmHDuATtt4HB4mKRt.RFUl3F8.Uv7r3
FPaHBtmKR4.4ItASVUs2vEgYTIo0DD44DlG4y4G4wUsYWHsLbyd3Fp
4.4AE0FetTGIoXvUs2pAkYWInYVpsLbyd3Fp4Z.Ah4pA44F.P4D44Z
.ChCP2CZ.ChApS5IS.4P4C5IXp4P44iApMPQP44S4DAApw.448ABpD
GCfXGAA4G4r4GAD444A4G4pH444PGApPGBB4G4pHGA.HGEq4GCA444
CpGTs.G4x.GJA4G4pHG4pHGCb444F4GTDPPApi4ApNLApL8D42JVP2
CN42WRp2GJP_5A9p:
>>955 うちのノートン大先生が激怒する・・・
セクション以外のところに読みにいくとウイルス扱いされてるみたい。
圧縮するのはやっぱり0x00決めうちのほうが小さくなるのか。
PEヘッダ圧縮できねーヽ(`Д´)ノウワァァン
バイナリなら可能なんだけどねえ
七行では無いし、見ても面白くないし
定期上げ
960 :
955 :2006/03/01(水) 17:42:07
(´・ω・`)XPじゃないと多分むりぽ 七行に収まったけど、見ても面白くないです。 :?7%00%DDPYA44P,5@P_4?P],}P^5'2PZ-%qPR545PZ5E]1F}5uAP5,ZP]5w9'PU/5zjPRQu :Nide/com2txt/X-uw'P'5+~PZ5g(P]-vjPRU-*`P5H9P-E)PZ-KaP5V2P]5hTP5BSPRUVES :?[X5;:PZ5WN'PR',~P/5`QP5Z P-UrPEUQ]EENNNNNN:~ :~._&^:Af-`l/m==3#e^@f--PjaeE!`!Jm=v[[<.r6eL?X!Bm]!I[%.&6&&I![6Pdd#,!m!^ :H7f-Mivl!Icj^6f--@@A[arm?"?]$sjX_1C.[_JC8[A^>Df-Pi@_!;f$-@^7Af-c;;@<`%. :!7!=v=<=p@"cac&!w.+-!7!+.N&O&PM+Q'X7M<9MM;!!6Ql!&W!$!Mc!P!O`,N7MY&M!MC" :O"Ow,M!Nv!Q(&FP)M/tQ=+MV"Q/&wM!M!wQ&,QNWV!;iCHHBRDC8G<J7Qs2IHCH=32Qu*
961 :
デフォルトの名無しさん :2006/03/01(水) 21:00:58
>>960 うちの2000では通らなかったので勝手に修正してみるテスト
user32->user32.dll
ローダのテンポラリ領域をクリアするようにしてみた
:?7%00%DDPYA44P,5@P_4?P],}P^5'2PZ-%qPR545PZ5E]1F}5uAP5,ZP]5w9'PU/5zjPRQu
:Nide/com2txt/X-uw'P'5+~PZ5g(P]-vjPRU-*`P5H9P-E)PZ-KaP5V2P]5hTP5BSPRUVES
:?[X5;:PZ5WN'PR',~P/5`QP5Z P-UrPEUQ]EENNNNNN:~
:~._&^:?f-3b<Q6lmZPi_,E!sZ3#e^@f)-HB=H=PjQ:4L!PBq"1LB!Q(!Jm=v[[<.r6eL?X!
:Bm]!I[%.&6&&I![6Pdd#,!m!^K7f-5hsIk^f6f-@.@AQ6"rm??$]$sXO_1C[E_JC[cA^>f3
:-Pi_%!;f-)@^7f%-cL!c;@<`_%!7!w==<=Hp"ca@c!w.B+!7!B+N&Oj&M+QQ'7M<09M;!E!
:Ql!3&!$!pM!P!SO,N7QM&M!JM"O"ZO,M!wN!Q(K&P)MY/Q=+lM"Q/Z&M!Mw!Q&,kQLQ-QV!
:;CMHHBD[C8GJt7QLQaHIHC)H321ACFFQZLQI*
志村〜8行8行
_| ̄|○ :?7%00%DDPYA44P,5@P_4?P],}P^5'2PZ-%qPR545PZ5E]1F}5uAP5,ZP]5w9'PU/5zjPRQu :Nide/com2txt/X-uw'P'5+~PZ5g(P]-vjPRU-*`P5H9P-E)PZ-KaP5V2P]5hTP5BSPRUVES :?[X5;:PZ5WN'PR',~P/5`QP5Z P-UrPEUQ]EENNNNNN:~ :~._&^:Af-`l"m3e^-@f-=J=PjaHE!`!MmPu=2v[<.)r6L?SO"]!"I%.&I!E[Pdd\"!^7 :Af-Mvjl!Ik9^6f-D@@Aa"rm??$]$sXO_1C[E_JC[cA^>f3-Pi_%!;f-)@^7f(-c;@k<`%!G :7!==s<=p"%caMwJ.+!7gN&O&PM+Q'X7M<9MM;!!6Ql!&W!$!Mc!P!O`,N7MY&M!MC"O"Ow, :M!Nv!Q(&FP)M/tQ=+MV"Q/&wM!M!wQ&,QNWV!;iCHHBRDC8G<J7Qs2IHCH:321C(FFQt*
:?7%00%DDPYA44P,5@P_4?P],}P^5'2PZ-%qPR545PZ5E]1F}5uAP5,ZP]5w9'PU/5zjPRQu :Nide/com2txt/X-uw'P'5+~PZ5g(P]-vjPRU-*`P5H9P-E)PZ-KaP5V2P]5hTP5BSPRUVES :?[X5;:PZ5WN'PR',~P/5`QP5Z P-UrPEUQ]EENNNNNN:~ :~._&^:Af-`l"m3e^-@f-=J=PjaHE!`!MmPu=2v[<.)r6L?SO"]!"I%.&I!E[Pdd\"!^7 :Af-Mvjl!Ik9^6f-D@@Aa"rm??$]$sXO_1C[E_JC[cA^>f3-Pi_%!;f-)@^7f(-c;@k<`%!G :7!==s<=p"%caMwJ.+!7gN&O&PM+Q'X7M<9MM;!!6Ql!&W!$!Mc!P!O`,N7MY&M!MC"O"Ow, 4行目のが化けてるよ
(´・ω・)
JavaScript でライン描画 もっといろいろさせたかったけどあまり縮まなかったので、サンプル2点だけ IE6だと見えるが、Mozillaだと見えないみたい <body><script>function Y(x,y,w,z){c=(C=x-w)*C>(C=y-z)*C;for(a=s=c?x>w?(e=x,t=z, u=y,w):(e=w,t=y,u=z,x):y>z?(e=y,t=w,u=x,z):(e=z,t=x,u=w,y);b=(u-t)*(a-s)/(e-s)+ t,a<=e;a+=2)document.write("<dd style='background:red;position:absolute;top:"+( c?b:a)+";left:"+(c?a:b)+";overflow:hidden;width:2;height=2'>")}G=P=Q=r=99,R=66, S=33,A=Math.PI/20;F=P+r;for(i=41;i--;Y(F,G,F=P+j*Math.cos(i*A),G=Q+j*Math.sin(i *A)))j=[r,S,R,S][i%4];F=G=P=Q=220;for(i=1;i<41;i++)Y(F,G,F=P+(j=[0,S,R,S][k=i%4 ])*Math.cos((k+=i)*A),G=Q+j*Math.sin(k*A));</script>
>>968 ジャバスクってこんなことできんのね・・って見てたらブラウザ固まった…orz
新手のブラクラですな・・
>>968 4行目、「height=2」を「height:2」に変えたらFirefox 1.5でも見れた。
( ^ω^)何か押すと終るお フケタタイ カ サョo3レS]サ」J3レセ -ク$$Pクヘハ3チP_WWWWWWWWWWWクYJ3テPUSVRRWクm Pクーフ3ナPUSp !VRRWクm Pクワフ3ナPクョホ3ナPUSVRRWク!!PクンンPPクゥゥPPPクブPRRク /PRRUSVRRWクA}3チPクS13チPp !クO)Pク6a3チ3ツPクo」3ツPクタa3チ3ツPUSUSVWーA3チエRPクa<3チ3ツPーA3チエ^PUSVRRーハ3チエ Pp !WWWWWWWTZエノ3チヘ!エw5フpヘ!ヘ フ
>>973 何でこんな事ができるのかさっぱりわからん
>>968 <body><script>function Y(x,y,w,z){c=(C=x-w)*C>(C=y-(t=u=e=z))*C;for(a=s=c?x>w?(
e=x,u=y,w):(e=w,t=y,x):y>z?(e=y,t=w,u=x,z):(t=x,u=w,y);b=(u-t)*(a-s)/(e-s)+t,a
<=e;a+=2)document.write("<p style='background:red;position:absolute;top:"+(c?b:
a)+";left:"+(c?a:b)+";overflow:hidden;width:2;height:2'>")}G=P=Q=r=99,R=66,S=33
,A=(M=Math).PI/20;F=P+r;for(i=41;i--;Y(F,G,F=P+j*M.cos(i*A),G=Q+j*M.sin(i*A)))j
=[r,S,R,S][i%4];F=G=P=Q=220;for(i=42;i--;)Y(F,G,F=P+(j=[0,S,R,S][k=i%4])*M.cos(
(k+=i)*A),G=Q+j*M.sin(k*A));</script>
2行目が1文字少ない
>>973 すげー。ハンドアセンブル?
>>976 4行をテキストエディタとかにコピーして、拡張子をcomとして保存して実行。
テキストだけどバイナリとして実行できるデータの並びになってる。
すげー
おお、実行ファイルがテキストってことに感動した
>>978 ただ単に作った実行形式ファイルの拡張子を.txtにしてコピペしただけじゃね?
>>982 お前頭いいな!
ついでに次スレも立てといてくれ!
>>986 COM2TXTはヘッダ部分が"T_OOWW"になるし、
7行に収まらないことが多いよ
それ以外の奴はハンドアセンブルで書いてると思うよ
さっきからCOMCOMうるせー! exeでもいいじゃんか
>>987 ":?7%00%DDPY"の系統のやつもCOM2TXT
>>973 だけが別系統っす。
COM2TXTのやつは、スタックに積んだデータが自己解凍ルーチンになっていて
テキスト変換した実行可能バイナリが展開されるんだけど、
>>973 のは、そのままでスタックにAAを積んでいって、画面表示するバイナリになってる。
インデックス作らないとなのね・・・
('A`)
BMPモザイクフィルタ >6 箱入り娘 >10 倉庫番 >34-35,37,852 BMPグレースケール化 >38-43,45-56,58-60,62,63-76,78-80,197,198,200,201 順列の出力 >61 telnet >85-87 bmpgen >88,89 コードブレイカー >90 MMLプレイヤー >93-100,105,109,118,119,124 おみくじ >101,(ry,>129,132-136,138,146 MD5 >116,121,123,131,176,180 /*動作説明汁*/ >122 (マウスカーソルランダム・高速移動?) RPN風電卓 >137,141 一人麻雀 >145,186 XORフィルタ >169-171,(ry,>178 MD5,SHA1 >183,187-191,194-196 表計算 >204-207,209-212 1スレ372のオセロ >230- 素数 >269-276,294 最長連鎖探索 >288 NQueen >289 変数機能付きRPN電卓 >306-310,312 GCD >334-342 π >344,347-349,351-(ry,>832-(ry,>861 ナンプレ >377 メッセンジャ >387-389 MIDIプレーヤ >390-394,396 Γ関数 >400-402 4コの数字で10 >403,410-416,432 迷路 >417-421,423,424,427,430,566 hit&blow >492-496,499-502,542
sage >515 掲示板 >543 ブロック崩し >551,552,558,559,573,582-589,683,684 素数 >553-557,744,758,759 Brainfuck >560,844 HexDump.pm >561,562 /*何?*/ >564-565 ローマ字かな変換 >591-601,603-605,619 XMLパーサ >609,610,613,626 オンドゥル語 >627 /*動作説明汁*/ >630-632 (>633) インベーダもどき >651 画像加工 >655,668 ソリティア >672 タイピング >678-682 bejeweled >712 AA >719 FF風ダメージ表示 >722-723 画像ビュアー >732,734 プロパティビュア >735,736 爆発 (再掲) >746 電卓 >748-751,814 RangeCoder >755,757 2ch trip >765,766 Cソース情報 >769-772 トーンジェネ >781,790 /*何?*/ >845 数当て >858
おしどりパズル >870 C indent >871 文字テーブル >878 川渡りパズル >882-897,908,912-917 ぬるぽ叩き >898 確率ゲーム >923-929 じゃんけん >930,932 Base64デコーダ >937 BMP回転 >939-948 BMP縮小 >948 シェルピンスキー? >950 FFT >951 メッセージボックス >960-966 線描画 >968-972,977 ブーン >973-975,978,989 ちょっち長いよ MID2WAV >503 対戦マインスイーパ >509 動詞変換 >628,629 将棋 >634-650,(ry,>667,669,673 MML2OBJ+OBJ2WAV >867-869,920 BMP2HTML >874 ○×ゲーム >933-934
乙ww凄いな
うめ
↓ラスト
1000 ズサ━━━━⊂(゚Д゚⊂⌒`つ≡≡≡━━━━!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。