七行プログラミング part4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG過去作品は、もしかしたら>>2-20あたりに。
■前スレ
http://pc2.2ch.net/test/read.cgi/tech/1033143528/
part 2
http://pc3.2ch.net/tech/kako/1018/10188/1018840143.html
part 1
http://pc.2ch.net/tech/kako/984/984182993.html
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1033143528/5-15
http://pc2.2ch.net/test/read.cgi/tech/1033143528/25
Pt.2スレの作品一覧
http://pc3.2ch.net/test/read.cgi/tech/1018840143/900-906n
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG>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);}
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009動画直リン
NGNG0010箱入り娘
NGNG見辛いし遊び辛いので誰か改良してくらはい
#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);}
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGmain()
{
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);
}
0013デフォルトの名無しさん
NGNG#include<stdio.h>
main(){long a;scanf("%ld",&a);a<1001&&((a=(a-1)/2+1),printf("%ld",a*a*(a>0)));}
0014デフォルトの名無しさん
NGNGdo
msgbox "ふ〜ん、それで?"
loop
end sub
これをVBで実行せよ。最強の5行プログラム
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG他のスレ見ても気になってたんだけど、printf で出す
メッセージって最後に \n が無くても出るの?
普通 stdout はバッファリングするので出ない気がするんだけど
0017デフォルトの名無しさん
NGNGprintf には何かそういう仕様はあったっけ?
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGman stty
0020デフォルトの名無しさん
NGNGところで、この while や for を if 代わりに使うコードって、
何かの本にでも書いてるの?
別のスレでも見たんだけど。
もしそうなら、その本破り捨てて
トイレットペーパーにでもした方がいいね!
0021デフォルトの名無しさん
NGNGwhileをifの代わりに使っていませんが。
0022デフォルトの名無しさん
NGNG…
a=1001;
}
実質 if(a<1001)
0023デフォルトの名無しさん
NGNGsokoka.
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG行バッファリングだからscanfによってバッファはフラッシュされる。
JIS X 3010の7.9.3参照。(C99だと章番号が違うかもしれないが)
Cマガの連載に詳しい解説が載ってたんだが単行本化してくれない…
0026デフォルトの名無しさん
NGNGvec 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!*/
0027デフォルトの名無しさん
NGNG転載いやソ ... せめてコンパイルが通るくらいの修正をしてから ...
0028デフォルトの名無しさん
NGNGもうそろそろいらないよ、このスレ。
0029デフォルトの名無しさん
NGNG|>>28 君さぁ スルーすりゃいいのに |
Λ_Λ | わざわざいらないとかクソレスしてるから |
( ´∀`)< 厨房って言われちゃうんだよ |
( ΛΛ つ >―――――――――――――――――――‐<
( ゚Д゚) < おまえのことを必要としてる奴なんて |
/つつ | いないんだからさっさと回線切って首吊れ |
\____________________/
0030デフォルトの名無しさん
NGNG003128
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGアクセス数の多い掲示板等に貼り付けるだけでかなり稼げます。
下のURLをコピペして(※直リン禁止なのでクリックでは入れません)GO!
そして、左のメニューに「リンクスタッフ詳細」があるのでクリック。
メールアドレスと、好きなパスワード入れるだけで登録完了。もちろん無料。
しかも今なら、登録したら自動的に1000円貰えます♪
フリーメールでも大丈夫です。
メルレよりずっと楽だし、ちゃんと報酬を貰えます。
ttp://accessplus.jp/staff/in.cgi?id=11258
0034犬
NGNGrubyで倉庫番を書いてみました。
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
0035犬
NGNG上のコマンドラインのまま実行するにはスクリプトの
ファイル名をs.txtとして保存して下さい。
0036デフォルトの名無しさん
NGNGじゃ、やけにfor文を使う参考書は?
実際、あるよ。
0037犬
NGNGまだ、書き忘れていたことがありました。
スクリプトを読めば解かることなんですが
移動はviと同じhjklです.
0038ばけ
NGNG#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時間
0039ばけ
NGNGコマンドから、実行ファイル名 元のBMP名 保存するBMP名
もし、保存するBMPを書かなかったら、エラーです。
(けど、だれも使わないか)一応書いたけど。
0040デフォルトの名無しさん
NGNG#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;}
0041ソース変更された人
NGNGよく、がんばった。
けど、何が気になった?
なんで変えたの?
0042デフォルトの名無しさん
NGNGdiffを取ってみたら?
と発言しかけたが無意味だったな
0043デフォルトの名無しさん
NGNG動機?
マカーだからエンディアンが気になった
>>42
そういやbdiffなんてあったな
0044デフォルトの名無しさん
NGNGif の代わりに for 使うの?
それはトイレットペーパー並の価値、
いや、それ以下だね!
0045デフォルトの名無しさん
NGNG色々変わってるけど,一番大きな違いは輝度値の計算だね.
ぱっと見た感じ,今までのではまともに動かなかったはず…….
明らかに色の重みがおかしかったから.
24bitBMPをグレースケールにして,24bitBMPで保存するのは無駄すぎ.
8bitにてテーブルカラーで保存されー.
(自分でやれ?時間があれば……)
0046デフォルトの名無しさん
NGNGFILE*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インデックスカラーへの布石.
思ったより縮んでないけど,まだまだ行けるはず!
0047デフォルトの名無しさん
NGNG輝度値の計算のことはありがとう。気づかなかった。
そんで、8bitでの保存は、とても
1行+6行*79文字では表せそうにないことがわかったので、
断念した。やけに、コードが増えてしまう・・・
そんで、24bit→24bitグレースケールになっていた理由は、
Game上で24bitのドットデータを変換するのに使う関数を改造したから。
いい、アドバイスありがとう。けど、無理だ。
0048デフォルトの名無しさん
NGNGFILE*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重ループが削れるから……(ぶつぶつ
005047
NGNGすげー。今、「どんだけやっても、
paintとプレビューで表示してくれん。」
とか、思って来てみたら、できてる人がいる。
そのソース見て勉強させてもらうよ。今から。
005147
NGNG情報:
さっき、ソース解体して調べたら、実は
fclose()前のfputc(0,S);がいらないことが判明。
消しても大丈夫。ただのゴミだから。
005247
NGNG//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に入ったら、もう一回載せる。輝度は修正しました
0053デフォルトの名無しさん
NGNGfgetc,fputs はすべて getc,putc にしてもよいと思うが。
fclose もその場でプログラム終了するからいらないね。
while もすべて for にしる。
main(int c,char**v) を main(c,v)char**v; にしる。
0x00 を 0 にしる。
i>=4 を i>3 にしる。
005447
NGNGBITMAPを作っちゃいます。
すいません。これ、おかしかったです。
使わないで。
0055デフォルトの名無しさん
NGNGループを
for(X=s*h;X--;putc((T+B+G)/3,S))B=getc(R),G=getc(R),T=getc(R);
に変更すれば大丈夫でない?
005647
NGNGごめん。まさか、書き込みが来るとおもわなかった(↑とか書いたし。
けど、まずは、LoadImageで読み込める、
フォーマットどおりのBitmap作るようにするよ。
0057bloom
NGNG0058デフォルトの名無しさん
NGNG#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);}
0059デフォルトの名無しさん
NGNG最後の fseek(R,i,1); って、うちではなくても大丈夫そうだった。
そしたら7行だね...はやぁ
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGpublic 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);}}
0062デフォルトの名無しさん
NGNGRGB平均≠輝度ってのは覚えておくといいかも。詳しくはYUVとか検索。
で、今更だが>>40の輝度、GとBの係数が逆だったのに気づいた。
77,151,28が正解なんだが5,9,2 >>4でも結果に大した違いがなかった罠。
>>60
固定だと思う。RIFFでも見たことないし
8bitだと7行でエンディアン依存無しは無理か・・・
006347
NGNGfseekは必要です。
横のデータは4の倍数バイトに決まってるので、
その修正用です。横のサイズが4の倍数以外の
BMPだと狂うはずです。
あと、#includeは七行に入らないの?
006447
NGNG//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);}}
//協力有難うございます。
0065デフォルトの名無しさん
NGNGfseek(R,i,1);はlong境界にあわせるために必要.
横サイズが4の倍数でないファイル読ませると破綻します.
私はfseek使わずに読み込むことで進めさせましたが.
0067デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG#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);}}
0070デフォルトの名無しさん
NGNGおれっちのところだと、横が4の倍数でないとずれまくるのだが何か変?
画像は 187x298x24
007147
NGNGすいません。奇数でのテストを欠いてました。今度は大丈夫です。
他、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に収まってません。なんかアイデアありませんか?
0072デフォルトの名無しさん
NGNG今まで fopen やめて stdin/stdout を使うようにしてたけど
そうすれば十分収まったりしない?
漏れ的にも引数にファイル名とるよりfilterのような動作のほうが
何かと便利だったりすることのほうが多い。
007358
NGNG0074デフォルトの名無しさん
NGNG#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);}}
適当にやってみただけでテストしてない罠
007558
NGNG#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);}}
0076デフォルトの名無しさん
NGNGFILE*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++コンパイラを通そうとすると私にはこれが限界です.
なんか昼間からずっとやってる気がする……
0077デフォルトの名無しさん
NGNG短く書く方法参考になった。
0078デフォルトの名無しさん
NGNGC++使うんだったら、fstream 使ったほうが便利でよろしいかと。
0079デフォルトの名無しさん
NGNGFILE*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省略の辺りはとても残念です.
0080デフォルトの名無しさん
NGNG引数の型の省略がなんかずるい気がしてイヤだったんで,なんとか付けたままで出来ないかと頑張ってたんですよ.
短くしていく過程でデフォルト引数使ってしまったんで,C++と宣ってるだけでして.
結局私も妥協してしまったわけですが……
連続すいませぬ.
0081デフォルトの名無しさん
NGNGgcc(g++) と Sun Workshop CC では、
関数 O, I の返値でエラーが出てコンパイルできないです。
何とかがんばってみてください。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGここに挙がってるネタでやってないものならいくつもあるが
008583
NGNGTelnetClientモドキ
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ヽ(`Д´)ノ もがしゃっ!");}}}
0086デフォルトでない名無しさん
NGNGchar 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 [ホスト名] [ポート]
0087デフォルトでない名無しさん
NGNG#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();}
0088デフォルトの名無しさん
NGNG#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;}}
008988
NGNGm[321] としておいてくらさい。そして n[320] いりまへん。
0090デフォルトの名無しさん
NGNGimport 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ヽ(`Д´)ノ もがしゃっ!");}}}
0091デフォルトの名無しさん
NGNG>ヽ(`Д´)ノ もがしゃっ!
わろた
0092デフォルトの名無しさん
NGNG0093デフォルトでない名無しさん
NGNGビルドする前にライブラリに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。
0094デフォルトでない名無しさん
NGNG#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;}
@[音色番号] 音色を変更します。
0095デフォルトでない名無しさん
NGNG#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 休符です。音階と同じ扱いを受けます
0096デフォルトでない名無しさん
NGNG#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;}
0097デフォルトの名無しさん
NGNGM(x){midiOutShortMsg(h,x)}を作る。
oはグローバルなのでo=0の初期化は不要。
大文字のCD FGAで半音に対応できない? たぶんe[]が要らなくなるから
その分でさらにテンポかなにか対応できれば。。
こんなのつくってみた。1行にまとめて引数にどうぞ。
@45c32d32e32g32o5c32d32e32g32o6c32d32e32g32o7c32d32e32g32o8c32o7g32e32d32c32o6g32e32d32c32o5g32e32d32c32o4g32e32d32
o3a32b32o4c32e32a32b32o5c32e32a32b32o6c32e32a32b32o7c32e32a32e32c32o6b32a32e32c32o5b32a32e32c32o4b32a32e32c32o3b32
o3f32g32a32o4c32f32g32a32o5c32f32g32a32o6c32f32g32a32o7c32f32c32o6a32g32f32c32o5a32g32f32c32o4a32g32f32c32o3a32g32
o3g32a32b32o4d32g32a32b32o5d32g32a32b32o6d32g32a32b32o7d32g32d32o6b32a32g32d32o5b32a32g32d32o4b32a32g32d32o3b32a32
こんな感じだったっけ?
0098デフォルトの名無しさん
NGNG〜(e[d-a]+〜
を
〜("024579;"[d-a]-48+〜
とすればe[]の定義不要で11文字減る
0099デフォルトでない名無しさん
NGNGそして半音に対応してみました。
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;}
+ シャープです。音階の後に付けると半音上がります
-フラットです。音階の後に付けると半音下がります
(例の禁則は設けていません(;´д`)
0100デフォルトでない名無しさん
NGNG#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;}
0101おみくじVB6
NGNGPrivate 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行ですた
■ このスレッドは過去ログ倉庫に格納されています