■ このスレッドは過去ログ倉庫に格納されています
七行プログラミング part4
- 1 :デフォルトの名無しさん:03/04/30 20:49
- 7行×79文字なら言語は問いません。
過去作品は、もしかしたら>>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
- 2 :デフォルトの名無しさん:03/04/30 20:59
- 惰性で2ゲッツ
- 3 :デフォルトの名無しさん:03/04/30 21:10
- 議論は入れないで、ソースで語ろうね!
- 4 :デフォルトの名無しさん:03/04/30 21:56
- 作品集
http://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
- 5 :デフォルトの名無しさん:03/04/30 23:28
- ========== 終 了 ==========
- 6 :デフォルトの名無しさん:03/05/01 20:42
- サイズ・形式限定の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);}
- 7 :デフォルトの名無しさん:03/05/01 21:29
- ========== 終了 ==========
- 8 :デフォルトの名無しさん:03/05/02 04:46
-
- 9 :動画直リン:03/05/02 05:13
- http://homepage.mac.com/hitomi18/
- 10 :箱入り娘:03/05/03 03:12
- ピース(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行プログラム
- 15 :デフォルトの名無しさん:03/05/08 00:46
- 10 PRINT "はぁ〜...":GO TO 10
- 16 :デフォルトの名無しさん:03/05/08 01:05
- >>12
他のスレ見ても気になってたんだけど、printf で出す
メッセージって最後に \n が無くても出るの?
普通 stdout はバッファリングするので出ない気がするんだけど
- 17 :デフォルトの名無しさん:03/05/08 01:12
- C++ の endl は改行+フラッシュという仕様だけど、
printf には何かそういう仕様はあったっけ?
- 18 :デフォルトの名無しさん:03/05/08 01:27
- ShellがRawでなくCookedだと改行入るまで表示されないかと.
- 19 :デフォルトの名無しさん:03/05/08 01:42
- >>16
man stty
- 20 :デフォルトの名無しさん:03/05/08 02:30
- >>12
ところで、この while や for を if 代わりに使うコードって、
何かの本にでも書いてるの?
別のスレでも見たんだけど。
もしそうなら、その本破り捨てて
トイレットペーパーにでもした方がいいね!
- 21 :デフォルトの名無しさん:03/05/08 21:18
- >>20
whileをifの代わりに使っていませんが。
- 22 :デフォルトの名無しさん:03/05/08 21:26
- while(a<1001){
…
a=1001;
}
実質 if(a<1001)
- 23 :デフォルトの名無しさん:03/05/09 16:16
- >>22
sokoka.
- 24 :デフォルトの名無しさん:03/05/09 21:39
- age
- 25 :デフォルトの名無しさん:03/05/10 11:37
- >>16
行バッファリングだからscanfによってバッファはフラッシュされる。
JIS X 3010の7.9.3参照。(C99だと章番号が違うかもしれないが)
Cマガの連載に詳しい解説が載ってたんだが単行本化してくれない…
- 26 :デフォルトの名無しさん:03/05/11 22:49
- 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!*/
- 27 :デフォルトの名無しさん:03/05/11 23:38
- >>26
転載いやソ ... せめてコンパイルが通るくらいの修正をしてから ...
- 28 :デフォルトの名無しさん:03/05/12 02:16
- まだあったのか…。
もうそろそろいらないよ、このスレ。
- 29 :デフォルトの名無しさん:03/05/12 21:02
- / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
|>>28 君さぁ スルーすりゃいいのに |
Λ_Λ | わざわざいらないとかクソレスしてるから |
( ´∀`)< 厨房って言われちゃうんだよ |
( ΛΛ つ >―――――――――――――――――――‐<
( ゚Д゚) < おまえのことを必要としてる奴なんて |
/つつ | いないんだからさっさと回線切って首吊れ |
\____________________/
- 30 :デフォルトの名無しさん:03/05/13 01:12
- このAA久々にみたな
- 31 :28:03/05/13 11:00
- やった〜!ようやく厨房になれた!
- 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
- 34 :犬:03/05/18 05:07
- 以前の書き込みにあった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
- 35 :犬:03/05/18 05:13
- 念のために追記しておきます。
上のコマンドラインのまま実行するにはスクリプトの
ファイル名をs.txtとして保存して下さい。
- 36 :デフォルトの名無しさん:03/05/18 10:01
- >>20
じゃ、やけにfor文を使う参考書は?
実際、あるよ。
- 37 :犬:03/05/18 19:30
- すみません。
まだ、書き忘れていたことがありました。
スクリプトを読めば解かることなんですが
移動はviと同じhjklです.
- 38 :ばけ:03/05/18 21:25
- 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時間
- 39 :ばけ:03/05/18 21:31
- ↑の使い方。
コマンドから、実行ファイル名 元のBMP名 保存するBMP名
もし、保存するBMPを書かなかったら、エラーです。
(けど、だれも使わないか)一応書いたけど。
- 40 :デフォルトの名無しさん:03/05/18 22:36
- >>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
よく、がんばった。
けど、何が気になった?
なんで変えたの?
- 42 :デフォルトの名無しさん:03/05/18 23:15
- >>41
diffを取ってみたら?
と発言しかけたが無意味だったな
- 43 :デフォルトの名無しさん:03/05/19 00:00
- >>41
動機?
マカーだからエンディアンが気になった
>>42
そういやbdiffなんてあったな
- 44 :デフォルトの名無しさん:03/05/19 21:37
- >>36
if の代わりに for 使うの?
それはトイレットペーパー並の価値、
いや、それ以下だね!
- 45 :デフォルトの名無しさん:03/05/19 23:28
- >>41
色々変わってるけど,一番大きな違いは輝度値の計算だね.
ぱっと見た感じ,今までのではまともに動かなかったはず…….
明らかに色の重みがおかしかったから.
24bitBMPをグレースケールにして,24bitBMPで保存するのは無駄すぎ.
8bitにてテーブルカラーで保存されー.
(自分でやれ?時間があれば……)
- 46 :デフォルトの名無しさん:03/05/20 15:01
- #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のドットデータを変換するのに使う関数を改造したから。
いい、アドバイスありがとう。けど、無理だ。
- 48 :デフォルトの名無しさん:03/05/20 16:31
- #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重ループが削れるから……(ぶつぶつ
- 49 :48:03/05/20 16:39
- >>48
?〜:0;ではなく,?0:〜;でした...
- 50 :47:03/05/20 16:47
- >>48
すげー。今、「どんだけやっても、
paintとプレビューで表示してくれん。」
とか、思って来てみたら、できてる人がいる。
そのソース見て勉強させてもらうよ。今から。
- 51 :47:03/05/20 16:59
- >>48
情報:
さっき、ソース解体して調べたら、実は
fclose()前のfputc(0,S);がいらないことが判明。
消しても大丈夫。ただのゴミだから。
- 52 :47:03/05/20 17:44
- //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に入ったら、もう一回載せる。輝度は修正しました
- 53 :デフォルトの名無しさん:03/05/20 18:57
- >>52
fgetc,fputs はすべて getc,putc にしてもよいと思うが。
fclose もその場でプログラム終了するからいらないね。
while もすべて for にしる。
main(int c,char**v) を main(c,v)char**v; にしる。
0x00 を 0 にしる。
i>=4 を i>3 にしる。
- 54 :47:03/05/20 19:07
- ↑のやつは(<<52)LoadImageで読み込めない
BITMAPを作っちゃいます。
すいません。これ、おかしかったです。
使わないで。
- 55 :デフォルトの名無しさん:03/05/20 19:10
- >>54
ループを
for(X=s*h;X--;putc((T+B+G)/3,S))B=getc(R),G=getc(R),T=getc(R);
に変更すれば大丈夫でない?
- 56 :47:03/05/20 19:11
- >>53
ごめん。まさか、書き込みが来るとおもわなかった(↑とか書いたし。
けど、まずは、LoadImageで読み込める、
フォーマットどおりのBitmap作るようにするよ。
- 57 :bloom:03/05/20 19:11
- http://homepage.mac.com/ayaya16/
- 58 :デフォルトの名無しさん:03/05/20 19:11
- ちゃんと変換されていると思うけど、どうよ?
#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);}
- 59 :デフォルトの名無しさん:03/05/20 19:13
- >>58
最後の fseek(R,i,1); って、うちではなくても大丈夫そうだった。
そしたら7行だね...はやぁ
- 60 :デフォルトの名無しさん:03/05/20 19:26
- bmp ってリトルエンディアン固定なんでしたっけ?
- 61 :デフォルトの名無しさん:03/05/20 19:32
- 順列を辞書順に出力(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);}}
- 62 :デフォルトの名無しさん:03/05/20 19:45
- >>47
RGB平均≠輝度ってのは覚えておくといいかも。詳しくはYUVとか検索。
で、今更だが>>40の輝度、GとBの係数が逆だったのに気づいた。
77,151,28が正解なんだが5,9,2 >>4でも結果に大した違いがなかった罠。
>>60
固定だと思う。RIFFでも見たことないし
8bitだと7行でエンディアン依存無しは無理か・・・
- 63 :47:03/05/20 19:50
- >>59
fseekは必要です。
横のデータは4の倍数バイトに決まってるので、
その修正用です。横のサイズが4の倍数以外の
BMPだと狂うはずです。
あと、#includeは七行に入らないの?
- 64 :47:03/05/20 20:40
- //みんなの力借りてなんとかできました。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);}}
//協力有難うございます。
- 65 :デフォルトの名無しさん:03/05/20 21:01
- >>59
fseek(R,i,1);はlong境界にあわせるために必要.
横サイズが4の倍数でないファイル読ませると破綻します.
私はfseek使わずに読み込むことで進めさせましたが.
- 66 :65:03/05/20 21:02
- >>63
あぁ,かぶり負け
- 67 :デフォルトの名無しさん:03/05/20 21:54
- さて、じゃあエンディアン依存なしバージョンに朝鮮だな。
- 68 :58:03/05/20 22:01
- >>63 >>65
ほんとだ。ペイントだと見られるけど、すしえさんではだめだった。
お詫びに >>67 のお題に挑戦させてください。
- 69 :デフォルトの名無しさん:03/05/20 22:04
- 基本は>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);}}
- 70 :デフォルトの名無しさん:03/05/20 22:05
- >>64
おれっちのところだと、横が4の倍数でないとずれまくるのだが何か変?
画像は 187x298x24
- 71 :47:03/05/20 23:04
- >>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に収まってません。なんかアイデアありませんか?
- 72 :デフォルトの名無しさん:03/05/20 23:23
- >>71
今まで fopen やめて stdin/stdout を使うようにしてたけど
そうすれば十分収まったりしない?
漏れ的にも引数にファイル名とるよりfilterのような動作のほうが
何かと便利だったりすることのほうが多い。
- 73 :58:03/05/20 23:51
- できました。今、調整中です。ちょっとお待ちを。
- 74 :デフォルトの名無しさん:03/05/20 23:53
- >>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);}}
適当にやってみただけでテストしてない罠
- 75 :58:03/05/20 23:57
- 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);}}
- 76 :デフォルトの名無しさん:03/05/21 00:54
- #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++コンパイラを通そうとすると私にはこれが限界です.
なんか昼間からずっとやってる気がする……
- 77 :デフォルトの名無しさん:03/05/21 00:57
- きみらのやってる事はスキルアップに直接繋がると思うよ。
短く書く方法参考になった。
- 78 :デフォルトの名無しさん:03/05/21 01:28
- >>76
C++使うんだったら、fstream 使ったほうが便利でよろしいかと。
- 79 :デフォルトの名無しさん:03/05/21 01:56
- #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省略の辺りはとても残念です.
- 80 :デフォルトの名無しさん:03/05/21 02:03
- >>78
引数の型の省略がなんかずるい気がしてイヤだったんで,なんとか付けたままで出来ないかと頑張ってたんですよ.
短くしていく過程でデフォルト引数使ってしまったんで,C++と宣ってるだけでして.
結局私も妥協してしまったわけですが……
連続すいませぬ.
- 81 :デフォルトの名無しさん:03/05/21 22:22
- >>79-80
gcc(g++) と Sun Workshop CC では、
関数 O, I の返値でエラーが出てコンパイルできないです。
何とかがんばってみてください。
- 82 :デフォルトの名無しさん:03/05/22 01:12
- age
- 83 :デフォルトの名無しさん:03/05/22 14:38
- ねた切れ?
- 84 :デフォルトの名無しさん:03/05/22 15:11
- >>83
ここに挙がってるネタでやってないものならいくつもあるが
- 85 :83:03/05/22 15:36
- 即興で作ってみた
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ヽ(`Д´)ノ もがしゃっ!");}}}
- 86 :デフォルトでない名無しさん:03/05/22 19:33
- #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 [ホスト名] [ポート]
- 87 :デフォルトでない名無しさん:03/05/22 23:37
- 動作がおかしかったのでちょっと修正
#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();}
- 88 :デフォルトの名無しさん:03/05/23 01:02
- 昔の作品で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;}}
- 89 :88:03/05/23 01:14
- しもた。
m[321] としておいてくらさい。そして n[320] いりまへん。
- 90 :デフォルトの名無しさん:03/05/23 21:06
- 〇神転生よりコードブレイカー
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ヽ(`Д´)ノ もがしゃっ!");}}}
- 91 :デフォルトの名無しさん:03/05/23 22:21
- >>85 >>90
>ヽ(`Д´)ノ もがしゃっ!
わろた
- 92 :デフォルトの名無しさん:03/05/23 23:21
- まあなんだ、ソース投稿する時は上げろ
- 93 :デフォルトでない名無しさん:03/05/23 23:23
- 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 休符です。音階と同じ扱いを受けます
- 96 :デフォルトでない名無しさん:03/05/24 13:45
- 少しばかりソース圧縮。
#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;}
- 97 :デフォルトの名無しさん:03/05/24 22:01
- >>96
M(x){midiOutShortMsg(h,x)}を作る。
oはグローバルなのでo=0の初期化は不要。
大文字のCD FGAで半音に対応できない? たぶんe[]が要らなくなるから
その分でさらにテンポかなにか対応できれば。。
こんなのつくってみた。1行にまとめて引数にどうぞ。
@45c32d32e32g32o5c32d32e32g32o6c32d32e32g32o7c32d32e32g32o8c32o7g32e32d32c32o6g32e32d32c32o5g32e32d32c32o4g32e32d32
o3a32b32o4c32e32a32b32o5c32e32a32b32o6c32e32a32b32o7c32e32a32e32c32o6b32a32e32c32o5b32a32e32c32o4b32a32e32c32o3b32
o3f32g32a32o4c32f32g32a32o5c32f32g32a32o6c32f32g32a32o7c32f32c32o6a32g32f32c32o5a32g32f32c32o4a32g32f32c32o3a32g32
o3g32a32b32o4d32g32a32b32o5d32g32a32b32o6d32g32a32b32o7d32g32d32o6b32a32g32d32o5b32a32g32d32o4b32a32g32d32o3b32a32
こんな感じだったっけ?
- 98 :デフォルトの名無しさん:03/05/24 23:05
- >96
〜(e[d-a]+〜
を
〜("024579;"[d-a]-48+〜
とすればe[]の定義不要で11文字減る
- 99 :デフォルトでない名無しさん:03/05/25 00:36
- 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 :デフォルトの名無しさん:03/05/25 03:25
- アイタタタ
- 103 :101:03/05/25 03:27
- >>102
スマソ、おれにできるのはこれ位だ
もっと勉強してきまつ
- 104 :デフォルトの名無しさん:03/05/25 03:30
- ガンバッテネ
- 105 :デフォルトの名無しさん:03/05/25 04:06
- >>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);}
- 106 :デフォルトの名無しさん:03/05/25 04:13
- >>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
- 107 :デフォルトの名無しさん:03/05/25 04:36
- >>101
意味もなく2行。
Sub main(): Dim a(): Randomize: a = Array("大吉", "中吉", "小吉", "末吉", _
"吉", "凶", "大凶"): MsgBox "運勢は" & a(Int(Rnd * 7)): End: End Sub
- 108 :デフォルトの名無しさん:03/05/25 05:52
- いや、難しすぎるんだって。
- 109 :デフォルトの名無しさん:03/05/25 05:58
- >>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) とする。
- 110 :デフォルトの名無しさん:03/05/25 10:31
- <script language="javascript">
m = new Array("大吉", "中吉", "小吉", "末吉", "吉", "凶", "大凶");
alert("運勢は"+m[Math.ceil(Math.random()*7-1)]);
</script>
JavaScript実質2行。もっと短くできる?
- 111 :デフォルトの名無しさん:03/05/25 10:32
- >>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
とか。
- 112 :デフォルトの名無しさん:03/05/25 11:01
- >>110
<script language="javascript">
m="大吉,中吉,小吉,末吉,吉,凶,大凶".split(",");
alert("運勢は"+m[Math.ceil(Math.random()*m.length)]);
</script>
お行儀悪いけど、文字数だけ短縮。
*7-1とか、バグの元は排除。
- 113 :デフォルトの名無しさん:03/05/25 11:15
- >>111
Array()に直に書けるのか。一つ勉強になった
- 114 :デフォルトの名無しさん:03/05/25 12:10
- >>111
一文字減らしてみた
Sub Main(): Randomize: MsgBox "運勢は" & Array("大吉", "中吉", "小吉", "末吉", _
"吉", "凶", "大凶")(Rnd * 7 \ 1): End: End Sub
- 115 :デフォルトの名無しさん:03/05/25 12:21
- >>111
スペースを全角→半角
int() → \ 1
+1 → 文字列の最初に半角スペース
で4文字減
Sub Main(): Randomize: MsgBox "運勢は" & Mid$(" 大吉中吉小吉末吉吉 凶 大凶", _
(Rnd * 7 \ 1) * 2, 2): End: End Sub
意味ないのでsage
- 116 :デフォルトの名無しさん:03/05/25 13:45
- すれ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));}
- 117 :::03/05/25 13:51
-
探し物はこちら
http://sagatoku.fc2web.com/
新商品・安売・キャンペーン・流行商品・ネット商品等10万点以上
ジャンル別・50音別で楽々探し物
- 118 :デフォルトでない名無しさん:03/05/25 13:57
- 修正ソース拝借→指摘修正→ボリューム追加(エクスプレッションかもしれない)
#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)の間違いです...
- 120 :デフォルトの名無しさん:03/05/25 15:37
- public class Aho {
public static void main(String args[]) {
System.out.println("おまえら、全員市ね");
Thread.sleep(1000000);
System.out.println("だから、市ねって");
}
}
- 121 :デフォルトの名無しさん:03/05/25 15:54
- >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)
- 122 :デフォルトの名無しさん:03/05/25 16:31
- 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 の宣言消し
- 124 :デフォルトの名無しさん:03/05/25 20:18
- >>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
- ここのスレはすっげーな。
七行でここまでいろいろ表現できるとは。
- 126 :デフォルトの名無しさん:03/05/26 00:40
- >>115
VB知らないんだけど、「吉」「凶」は纏められないんですかね?
小凶や末凶も増えるし・・
- 127 :デフォルトの名無しさん:03/05/26 01:43
- >>126
余計に長くなっちった。
- 128 :デフォルトの名無しさん:03/05/26 01:45
- >>125
さて、レスしたからには挑戦しなければなりませんが。
- 129 :デフォルトの名無しさん:03/05/26 02:44
- >>115
微妙に変だから直しました
あとEndは無しでもいけそう
$も不必要かと
Sub Main(): Randomize: MsgBox "運勢は" & Mid("大吉中吉小吉末吉吉 凶 大凶", ( _
Rnd * 6 \ 1) * 2 + 1, 2): End Sub
- 130 :デフォルトの名無しさん:03/05/26 19:25
- 末吉吉 の部分がどうしても気になる・・・のに、触ると余計に長くなってしまったりするジレンマ。
- 131 :デフォルトの名無しさん:03/05/26 20:27
- 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
- 133 :デフォルトの名無しさん:03/05/26 22:59
- >>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
"中凶", "小凶", "末凶" ってなんだ ?
- 134 :デフォルトでない名無しさん:03/05/26 23:55
- >>133
>>126
- 135 :デフォルトの名無しさん:03/05/27 01:14
- 普通のおみくじに小凶があるか とマジレス
- 136 :デフォルトの名無しさん:03/05/27 01:50
- 順番って 大吉 中吉 吉 小吉 だよね?
- 137 :デフォルトの名無しさん:03/05/27 15:35
- 逆ポーランド表記ちっくな計算機
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 - "*" 見たいな感じで
- 138 :133:03/05/27 21:59
- >>136
> 順番って 大吉 中吉 吉 小吉 だよね?
http://suimei.org/kaitei.html によると、
大吉→中吉→小吉→吉→半吉→末吉→末小吉→凶→小凶→半凶→末凶→大凶 らしい。
らしい。
"中凶" はなかったが、"小凶", "末凶" はあるみたいだ。
すまんかった。→ >>132 (藁
- 139 :デフォルトの名無しさん:03/05/27 23:52
- age
- 140 :山崎渉:03/05/28 12:33
- ∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
- 141 :デフォルトの名無しさん:03/05/28 20:10
- >>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());}}
- 142 :デフォルトの名無しさん:03/05/29 00:53
- >>24bitRGB->8bitMonochrome
明度ってR,G,B各要素で最大のものと教わったのですが,何故そのような色に重み付けをした変換でそれっぽくなるのでしょう?
- 143 :デフォルトの名無しさん:03/05/29 02:45
- >>142
人間の感覚
- 144 :_:03/05/29 03:01
- http://homepage.mac.com/hiroyuki43/hankaku10.html
- 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で確認)
- 146 :デフォルトの名無しさん:03/05/29 21:39
- >>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のは対応してないやも
- 152 :デフォルトの名無しさん:03/05/31 22:57
- 1番目と3番目のみ正しい。
- 153 :デフォルトの名無しさん:03/05/31 23:01
- >>152
__cdecl
- 154 :デフォルトの名無しさん:03/05/31 23:03
- >>149はコンパイルエローになる
- 155 :デフォルトの名無しさん:03/05/31 23:29
- >>154
アラーメッセージは聞こえますか?
- 156 :デフォルトの名無しさん:03/06/01 04:39
- >>153
そんな処理系バリバリ依存のキーワード持ち出すんだったら
void main()
でも別にかまわないだろ
- 157 :デフォルトの名無しさん:03/06/01 05:35
- ナにゆーてんの?
- 158 :デフォルトの名無しさん:03/06/01 05:40
- 誰か return 0; がないのに突っ込もうよ。
- 159 :デフォルトの名無しさん:03/06/01 06:00
- >>157
2番目と4番目が仕様上は正しくないと言ってるんでしょ
このスレ的には短くなるなら多少の処理系依存はアリだったはずだが
- 160 :デフォルトの名無しさん:03/06/01 06:14
- 処裏刑威尊上等
- 161 :デフォルトの名無しさん:03/06/01 06:26
- 両方intでも問題無い。
明示castのペナルティあるけど
- 162 :デフォルトの名無しさん:03/06/01 13:06
- >>158
最近そこには、突っ込めなくなった。
- 163 :デフォルトの名無しさん:03/06/01 13:28
- 保守
- 164 :デフォルトの名無しさん:03/06/01 13:46
- >>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"を変えただけ
- 172 :デフォルトの名無しさん:03/06/01 18:44
- >>164
C++ なら cstdio で int main で std::printf, std::scanf じゃん。
- 173 :デフォルトの名無しさん:03/06/02 00:23
- >>169-171
全部まとめて7行に入るよね?
- 174 :デフォルトの名無しさん:03/06/02 02:13
- XOP演算って何ですか?
ぐぐっても出てきませんでした。
- 175 :デフォルトの名無しさん:03/06/02 03:13
- XOR なら知ってるが。
というか、なぜこのスレで?
- 176 :デフォルトの名無しさん:03/06/02 21:52
- 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]));}
- 177 :デフォルトの名無しさん:03/06/03 01:39
- >>175
>>169,170
- 178 :デフォルトの名無しさん:03/06/03 19:42
- >>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
ヤ、ヤバいコードだ…
- 180 :デフォルトの名無しさん:03/06/05 20:24
- >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
- 182 :デフォルトの名無しさん:03/06/12 04:35
- 短くするためには処理系依存もかまわないという考えが醜いな。昔はよかった
- 183 :デフォルトの名無しさん:03/06/13 21:35
- 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行で作れないなんて・・・
みなさんすごいですね。
- 185 :デフォルトの名無しさん:03/06/14 15:06
- >>183
すごいな… MD5にSHA1とは
- 186 :デフォルトの名無しさん:03/06/15 15:51
- >>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行いけそう。
- 187 :デフォルトの名無しさん:03/06/16 21:01
- >>183
Mac OS 9.2.2でSHA1は動作確認できました。
ただMD5の方は動かず。
プロトタイプのせいかと思い厳密に書き換えても変わりませんでした。
実行結果:
"" = 3973fc7d22cf0064330b8e9bada4e926
"a" = c1baf895b258ff07288aecb035ece53e
"abc" = c24dad17ee73db1464a5c8bd367f9ac0
"message digest" = 0d3cdbfdb20c7624283e63cd816dc8a6
コンパイラはMrC 5.0d3c1
- 188 :デフォルトの名無しさん:03/06/18 21:03
- >>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]
- 189 :デフォルトの名無しさん:03/06/19 01:44
- thx。テーブルに置き換えたら正しく動作しました。
その後置き換え部分のみ比較してみたら一致したので
おやと思い置き換えた部分をいろいろいじった結果
fabs(sin(j+1.))*(~0U+1.)をunsignedにキャストすることでも動作。
どうやら原因は全ての数がdoubleにキャストされてから加算され
unsignedへ戻す時にオーバーフローしてy==UINT_MAXになる為のようでした。
お騒がせしました。
- 190 :デフォルトの名無しさん:03/06/19 23:32
- オーバーフロー対策した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));}
- 191 :189:03/06/20 02:04
- >>190
それでも7行に収めてしまうとは。感服しますた。
- 192 :デフォルトの名無しさん:03/06/23 22:39
- age
- 193 :nana:03/06/24 18:22
- このスレ最高!!!
- 194 :デフォルトの名無しさん:03/06/24 23:04
- /*>>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("");}
- 195 :194:03/06/24 23:12
- >>194で>>190は
>…がエディアンに依存するのでは
と書いてますけど、>>190のソースの半分位は理解出来なかったので
勘違いかもしれません。
と言う訳で、私の勘違いで気分を悪くされたら、ごめんなさいm(_ _)m
- 196 :デフォルトの名無しさん:03/06/25 01:36
- s/エディアン/エンディアン/g
- 197 :デフォルトの名無しさん:03/06/26 07:30
- /* >>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;}
- 198 :197:03/06/26 23:23
- /* 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
- 200 :デフォルトの名無しさん:03/06/30 06:19
- /* 使い道は無いと思いますが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);}
- 201 :デフォルトの名無しさん:03/07/02 02:00
- /* 何度も何度もスマソ
グレースケールは多分(バグが無ければ)これで最後です
基本的には>>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);}
- 202 :デフォルトの名無しさん:03/07/05 16:57
- 今の質をみていると、やはり糞スレだな。
パート1の初期のメンバーは熱かったな。
- 203 :デフォルトの名無しさん:03/07/07 01:01
- >>202
初期よりも、むしろ100以降だろ?
・・・と、主観が入りまくるので、この手の話は、や め な い か ?
今日見つけた7行プログラム?
http://game3.2ch.net/test/read.cgi/mmominor/1057397294/244
- 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行です。
- 205 :デフォルトでない名無しさん:03/07/09 02:47
- #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++]); とかの方がよくね?
- 207 :デフォルトの名無しさん:03/07/09 03:49
- #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;}
- 208 :デフォルトの名無しさん:03/07/09 08:08
- ( ⌒) ∩_ _
/,. ノ i .,,E)
./ /" / /"
./ / _、_ / ノ'
_n / / ,_ノ` )/ / グッジョブ!! おまいら最高!
( l ( _、_ / _、_
\ \ヽ( <_,` ) |( ,_ノ` ) n
ヽ___ ̄ ̄ )  ̄ \ ( E)
/ / フ /ヽ ヽ_//
- 209 :デフォルトの名無しさん:03/07/09 13:24
- グローバル変数の初期値が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桁に落としてみると字数が減るかも。
学校に行くのでアイディアだけですみません。
- 210 :デフォルトの名無しさん:03/07/09 14:45
- >>209
> グローバル変数の初期値が0であるというのは
仕様。
- 211 :デフォルトの名無しさん:03/07/10 01:30
- x,y のループを x,y に分けないでひとつのforにしたら、短くなる。
- 212 :デフォルトの名無しさん:03/07/11 21:20
- そだね。xyに分けるのは人間の都合だよね
- 213 :デフォルトの名無しさん:03/07/11 22:50
- SHA1 と MD5 のコードはどういう風に使うんでしょうか。入力が分からない・・ヽ(´Д`;)ノ
- 214 :デフォルトの名無しさん:03/07/12 04:32
- >>213
コンソールから実行
※ SHA1→実行ファイル FILE→対象ファイル
SHA1 < FILE
バイナリファイルで正しい値が出ない時は
#include <stdio.h>
をソースの頭に加えて、矛盾する宣言等を手直しし、
main()の頭に
stdin=freopen("対象ファイル","rb",stdin);
を加えて何も指定せずに実行すれば正しい値がでるはず
- 215 :山崎 渉:03/07/15 10:02
-
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
- 216 :213:03/07/16 13:52
- >>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();}}
- 218 :デフォルトの名無しさん:03/07/17 07:42
- 最近mainのreturn 0;とかincludeとかしっかり書いている人がいるね
書いてないのを作品と認めない俺としてはかなり評価しています。がんばれ!
- 219 :デフォルトの名無しさん:03/07/17 23:52
- オセロとテトリスのソースきぼんぬ。
自分でも作ってみたいので、参考にさせてください。
- 220 :デフォルトの名無しさん:03/07/17 23:58
- >>219
オセロは過去に出た。ハズ。
- 221 :デフォルトの名無しさん:03/07/17 23:59
- >>219
七行スレ嫁
つーか、絶対、知ってて言ってるだろ?
つーか、この後に、もっと短くしたソース晒して
自慢したいだけだろ?
- 222 :デフォルトの名無しさん:03/07/18 00:04
- >>220
過去スレ調べたけど、既に消えてました。
マジです。
お願いします。
>>221
そんなことないです
- 223 :デフォルトの名無しさん:03/07/18 00:08
- >>222
おまいの目は節穴だ
- 224 :デフォルトの名無しさん:03/07/18 00:14
- おまえら死ねよ
- 225 :デフォルトの名無しさん:03/07/18 01:31
- 誰かさぁ、今まで出た七行プログラムのコード、コンパイルしてどっかに置いといてよ。
インタープリター系はそのままで。
頼むって。いや、マジで。
- 226 :c_sugar:03/07/18 01:54
- >>225
俺、そのうちやるかもしれない。
- 227 :デフォルトの名無しさん:03/07/18 01:57
- >>225
レスごとに、001.c 002.cpp 003.pl … の様にし、
ソース以外のレスを全てコメントで括ってやって
即コンパイル or 実行 出来るようにするなら分かるけど、
コンパイルした後のファイルなんて環境違ったら、意味無いし…
つーか、そう言うのは言い出しっぺがやるもんだ
- 228 :デフォルトの名無しさん:03/07/18 03:12
- #include <stdio.h>
#include <conio.h>
int main(){
puts("\n|゚∀゚)プッ\a")
getch();
reurn 0;
}
- 229 :デフォルトの名無しさん:03/07/18 11:17
- >>222
っていうか、オセロなんて7行で可能なの?
- 230 :デフォルトの名無しさん:03/07/18 12:08
- #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
- >>230
コンパイル通らないよ
- 232 :デフォルトの名無しさん:03/07/18 13:46
- >>231
環境は何?あと、エラーメッセージとか。
- 233 :デフォルトの名無しさん:03/07/18 14:10
- ああ、オセロ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,
にすればうまくいくのではないかな?
- 234 :デフォルトの名無しさん:03/07/18 14:18
- >>219
オセロもテトリスもあった。
テトリスはJavaScriptだったが。
>>225
7行コードだから良いわけで
- 235 :デフォルトの名無しさん:03/07/18 15:05
- ひさびさにオセロを見た
今インデントを展開して読んでみているのだが、凄まじいな
- 236 :231:03/07/18 16:51
- WinXPでBCCです。
エラーは「左辺値が必要」です。
- 237 :デフォルトの名無しさん:03/07/18 16:53
- スケベはこっちで
http://homepage3.nifty.com/coco-nut/
フェチはこっち
http://homepage3.nifty.com/coco-nut/fe/ero.html
- 238 :デフォルトの名無しさん:03/07/18 18:07
- >>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;
と直すとか。
- 239 :デフォルトの名無しさん:03/07/18 19:43
- デバッガで追いかけても理解できない俺は屑ですか?
- 240 :デフォルトの名無しさん:03/07/18 22:04
- 理解したいならソースに改行/タブを入れて見やすくしてから
見やすいように書き換えていくのがいい
- 241 :デフォルトの名無しさん:03/07/18 22:04
- ・・・文が変だな
- 242 :デフォルトの名無しさん:03/07/19 03:08
- >>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);
が、どっちみち、まともに動かない気がするが…?
- 243 :デフォルトの名無しさん:03/07/19 11:58
- >>242
まともにうごいているように見えるけど?
- 244 :デフォルトの名無しさん:03/07/19 15:05
- こうすればコンパイル問題ないよ
昔ずいぶん頑張って解読してこのソースコードは大体読めるようになったので、まず下のソースで間違いないと思う。
#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;
それにしても美しいソースコードです。
- 245 :デフォルトの名無しさん:03/07/20 03:03
- >>244
だから、
a=1+b=c; /* c を ( 1+b ) に代入出来ない */
と同じで、左辺値が必要なんだって言ってるの、OK?
p%9?k(),v:m[p]=9; /* 9 を ( p%9?k(),v:m[p] ) に代入する事は出来ない */
ちゃんと、優先順位を考えませう ( ?: の方が = より優先される )
- 246 :245:03/07/20 03:46
- ついでだから、もう少し。
変数と単項*演算子、[]演算子、->演算子は常に左辺値を生じさせる
また、.演算子も通常、左辺値を生じさせが、その他演算子は左辺値を生じさせない
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;
}
- 247 :デフォルトの名無しさん:03/07/20 06:29
- C FAQの3.16にも同じようなことが書いてありますね。
http://www.catnet.ne.jp/kouno/c_faq/c3.html#16
ところで、?:演算子で左辺値を生じさせるって、
C++でもダメでしたっけ?
- 248 :デフォルトの名無しさん:03/07/20 07:37
- このオセロってやっぱり人間V.S.人間?
- 249 :デフォルトの名無しさん:03/07/20 07:43
- >>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++ で結果が変わります
- 250 :248:03/07/20 08:15
- すげぇー、CPUとの対戦かよ。
感動した!
- 251 :デフォルトの名無しさん:03/07/20 12:56
- じゃ、そこのコードは
(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は度肝を抜く作品の目白押しなので、一度ゆっくりと読んでみ。
- 252 :デフォルトの名無しさん:03/07/20 23:27
- >>251
実行してないから分からんが、そのコードは
p%9||(m[p]=9);k();
と等価になるけど、
p%9?k(),v:m[p]=9;
とは、k()の実行条件が明らかに異なるけど、大丈夫なの?
つーか、本当に、1度、ソースを解読したの?
- 253 :デフォルトの名無しさん:03/07/21 00:27
- >>252
理解できないなら、実行してしか判断できないのに、
実行せずに文句言ってはいかんな。
- 254 :デフォルトの名無しさん:03/07/21 00:40
- >>253
理解するも何も、そんなコード、
元のソースが無い限り、読む気にならんて
- 255 :デフォルトの名無しさん:03/07/21 00:49
- >>254は低学歴
- 256 :デフォルトの名無しさん:03/07/21 00:57
- >>254
理解できないなら四の五の言わずに実行しろよ(w
- 257 :デフォルトの名無しさん:03/07/21 01:04
- >つーか、本当に、1度、ソースを解読したの?
自分が読めないからって(w
いや俺も読めないけど(w
- 258 :デフォルトの名無しさん:03/07/21 01:13
- >>254
indentでも通したらいいんでないのか
いや漏れも読んでないけど
- 259 :245==252==254:03/07/21 01:24
- なんつーかな、(おそらく、244==251の)次の発言
>それにしても美しいソースコードです。
が、自我自賛にしか聞こえないから、
ソースを読む気にもならんし、実行する気にもなれんのよ…
まぁ、それでも、>>244の演算子の問題が無ければ、
素直にコンパイル&実行してた思うし、>>252の発言もしてないよ
つーか、問題無く本当に動くの?
- 260 :デフォルトの名無しさん:03/07/21 02:06
- 理解できないことを棚に上げて、
妙竹林な理屈をたてて実行しないことが正当化のように装い
それだけならまだしも、実行もしていないソースコードを批判するなんて
なんというか陰鬱な性格だな。
言い訳と嫉妬の人生を>>259かいま見た。
- 261 :259:03/07/21 02:26
- >>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つのコードは等価
つーか、演算子の優先順位も知らねーで、
解読しただの、美しいコードだの、アホじゃねーのか?
だいたい、オセロのソースくれって言ったの、お前じゃねーのか?
このスレにでるまえに、他のスレでやってたのも、お前じゃねーのか?
ただ単に、自我自賛したいだけの、自作自演じゃねーのか?
オナニーなら、オナニーらしく、勝手に独りでやってくれよ
- 262 :デフォルトの名無しさん:03/07/21 02:35
- | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| 強い電波を感知しました .|
|____________|
/ /
/
_ ビビビビビ
/||__|∧ /
。.|.(O´∀`) /
|≡( )) ))つ
`ー| | |
(__)_)
- 263 :259:03/07/21 02:43
- 他のスレに出たヤツ
http://pc2.2ch.net/test/read.cgi/tech/1058283913/40-44
で、
http://pc2.2ch.net/test/read.cgi/tech/1058283913/49
で、コンパイル出来ないと言われたが、
この後の経過を見ずに、誰からも誉めてもらえなかったので
>>219から自賛自演を始めたと予測
つーか、もう寝る
- 264 :デフォルトの名無しさん:03/07/21 03:08
- >>263
オセロを作った人は、もうこのスレを見ていないと思う。
というより、part1-2 あたりの人は、ほとんどきていないだろう。
激しく攻撃されていたからね。
- 265 :248:03/07/21 11:01
- >>251
> パート1は度肝を抜く作品の目白押しなので、一度ゆっくりと読んでみ。
了解っす。こんな凄いのがゴロゴロあるのか。
それらを作った神達はどこへ行ったんだろう?まだこのスレにいるのかな?
- 266 :デフォルトの名無しさん:03/07/21 12:57
- もうこの板から消えた可能性もあるんだよ
- 267 :デフォルトの名無しさん:03/07/22 02:19
- >>265
>>4を見ればいいんじゃないかと
- 268 :山崎 渉:03/08/02 02:29
- (^^)
- 269 : ◆XKS67XicGk :03/08/03 14:40
- 素数を求めるプログラムを書いたら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
- 270 :デフォルトの名無しさん:03/08/03 15:28
- >>269
part2 の 802-810 を見るとよいよ。
- 271 :デフォルトの名無しさん:03/08/03 17:15
- 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秒くらいかな?
もっと短く、もっと速くできそうだけど短すぎるんで七行プログラミングにはどうかと・・・
- 272 :デフォルトの名無しさん:03/08/03 17:19
- >>271
part2 の 802-810 を見るとよいよ。
- 273 :デフォルトの名無しさん:03/08/03 17:27
- >>272
もちろん、見ました
でも、短くするためとはいえ非効率かと
- 274 :デフォルトの名無しさん:03/08/04 02:01
- 素数ねぇ。ハァ。
- 275 :デフォルトの名無しさん:03/08/04 07:33
- 7行で何かすることが目的だから別に役に立たなくてもOK。
だよね。
- 276 :デフォルトの名無しさん:03/08/04 08:39
- >>275
簡単に7行以下になる題材だと…
まぁ、本人にとってはいろんな意味で勉強になるだろうが。
- 277 :デフォルトの名無しさん:03/08/04 23:11
- JOJOオタには必要なものだぞ
こころが安まる…
- 278 :デフォルトの名無しさん:03/08/05 13:30
- 某スレで見たんだけど
> 7行テトリスがぱくられていました
> http://www.tamagawa.ac.jp/GAKUBU/KOUGAKU/InfCEng/festa2002/
> http://www.tamagawa.ac.jp/GAKUBU/KOUGAKU/InfCEng/festa2002/sakuhin.html
- 279 :デフォルトの名無しさん:03/08/05 14:00
- >>278
見てきたよ
うは、完全にコピペじゃん。
彼が、S◆Q14CxNhI 氏ならいいんだけどね
- 280 :デフォルトの名無しさん:03/08/05 14:35
- その他の「佳作」なんかも低レベルだし、なにそこ
- 281 :デフォルトの名無しさん:03/08/05 17:19
- >>278-289
> うは、完全にコピペじゃん。
> 彼が、S◆Q14CxNhI 氏ならいいんだけどね
Sタンは
http://www.isl.cs.gunma-u.ac.jp/~shingo/make/7line/7line.html
G馬大の人なので別人だぁね。
- 282 :デフォルトの名無しさん:03/08/05 18:41
- そっちのスレにも書いてあったけど
優秀な作品作る人はもう来なくなるだろうね
- 283 :デフォルトの名無しさん:03/08/05 21:22
- 久々に活発になってきましたね
うれしいです。
7行でできることって限界がありますよね。
Windowsプログラムってしばらく出てませんよね。
- 284 :デフォルトの名無しさん:03/08/05 21:23
- おいおいおいおい、どこが活発なんだよ。
それとsageてね
- 285 :283:03/08/05 21:29
- >>284
すいませんでしたこれからはsageます。
- 286 :デフォルトの名無しさん:03/08/05 22:39
- >>278 みたいなやつが
俺は大学出だからな!
高卒死ね!
とか言ったりするんだろうな・・・
- 287 :デフォルトの名無しさん:03/08/05 23:18
- 誰かその大学に伝えるべきだとは思うんだけどなぁ。
- 288 :デフォルトの名無しさん:03/08/06 00:53
- ちょっと前のことになるんだけど、
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では警告も出ません。
実行速度については触れないで下さい(汗
- 289 :デフォルトでない名無しさん:03/08/06 01:10
- 久しぶりに投稿
パズル 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で座標指定。
・・・って六行になってしまった(;´Д`)
- 290 :デフォルトの名無しさん:03/08/06 01:35
- Nクィーン?8クィーンの亜種か?
- 291 :デフォルトの名無しさん:03/08/06 02:13
- 普通、8-QueenつったらN-Queenを兼ねるわけだが。
- 292 :デフォルトの名無しさん:03/08/06 08:25
- >>291
逆じゃね?N-Queenつったら8-Queenをかねる。
- 293 :デフォルトの名無しさん:03/08/06 13:11
- N-Queen ⊃ 8-Queen
- 294 :デフォルトの名無しさん:03/08/08 17:49
- 素数 (Ruby)
p (a=(2..100).to_a).each{|i|a.reject!{|j|j%i==0&&j>i}}
54バイト
perlならもっと短くできるかna.
- 295 :デフォルトの名無しさん:03/08/12 03:34
- 7行テトリス更新です
- 296 :山崎 渉:03/08/15 15:59
- (⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
- 297 :デフォルトの名無しさん:03/08/20 22:02
- からあげ
101 KB
■ このスレッドは過去ログ倉庫に格納されています
★スマホ版★
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)