1 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 09:02:39 ] 7行×79文字なら言語は問いません。 過去作品は、もしかしたら>>2-20 あたりに。 前スレ pc8.2ch.net/test/read.cgi/tech/1051703369/ part 3 pc2.2ch.net/tech/kako/1033/10331/1033143528.html part 2 pc3.2ch.net/tech/kako/1018/10188/1018840143.html part 1 pc.2ch.net/tech/kako/984/984182993.html
237 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 10:43:21 ] >>236 石は……?
238 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 11:34:14 ] 適当なバイナリ作って逆汗
239 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 16:33:39 ] >>236 アセンブラのソースコードでも読めば。
240 名前:デフォルトの名無しさん [2007/01/22(月) 21:26:35 ] >>234 A+B Problemからわからんorz
241 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 19:04:29 ] >>240 問題のヒントに答えが書いてありますがな
242 名前:240 [2007/01/23(火) 19:43:36 ] >>241 さすがに答えはわかるwそうじゃなくて、どうやって短く書いてんのかがさっぱりわからんってこと。
243 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 19:52:47 ] >>242 参考程度に昔自分が書いてたコード main(n){gets(&n);putchar(n%85+5);} これはAとBの合計が10未満で、 入力の1Byte目がA,2byte目が空白,3byte目がB,4byte目が改行|EOFのときだけ動く。 今はテストケースが改善されて10以上もあるから通らないけどな。
244 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:14:12 ] C#でブロックソート書いてみた。 using System;using System.Collections.Generic;namespace BWT{public static class BlockSort{public static int Sort(ref byte[]data){int l=data.Length,i=1,j ;byte[][]t=new byte[l][];t[0]=data;for(;i<l;i++){t[i]=new byte[l];for(j=1;j<l; j++){t[i][j]=t[i-1][j-1];}t[i][0]=t[i-1][l-1];}Array.Sort<byte[]>(t,new Comp() );i=Array.IndexOf<byte[]>(t,data);for(j=0;j<l;j++){data[j]=t[j][l-1];}return i ;}}class Comp:IComparer<byte[]>{public int Compare(byte[]x,byte[]y){int r=0,l= x.Length,i=0;for(;i<l;i++){r=(int)(x[i]-y[i]);if(r!=0)i+=l;}return r;}}} ジャグ配列のソートを自前で実装するのは行数的に厳しいです orz 修行が足りません。
245 名前:244 mailto:sage [2007/01/24(水) 19:41:10 ] 同じくソート解除 using System;using System.Collections.Generic;namespace DBWT{struct DE{public DE(int i,byte d){Ind=i;Data = d;}public int Ind;public byte Data;}public static class DeBlockSort{public static void Restoration(int ind,ref byte[]data ){int i,l=data.Length;DE[] de=new DE[l];for(i=0;i<l;i++){de[i]=new DE(i,data[i ]);}Array.Sort<DE>(de,new Comp());for(i=0;i<l;i++){data[i]=de[ind].Data;ind= de[ind].Ind;}}}class Comp:IComparer<DE>{public int Compare(DE x,DE y){if(x .Data != y.Data){return(int)(x.Data-y.Data);}else{return x.Ind-y.Ind;}}}} やっぱりまだまだです orz
246 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 20:24:34 ] perl -e "for(;;){print eval<STDIN>}" インタラクティブパールできたよー
247 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 20:31:50 ] 引数何も無しでおkだから、さ
248 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:10:17 ] perl -pe '$_=eval$_' これで十分だろと
249 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:12:09 ] それは長すぎ。 perl -pe "$_=eval($_)" で十分。
250 名前:249 mailto:sage [2007/01/24(水) 21:13:27 ] 被った上に()の分負けてるー orz
251 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 02:49:12 ] perl -pe 'eval$_' でいいんじゃない?
252 名前:デフォルトの名無しさん [2007/01/25(木) 11:45:00 ] これって標準入力を評価して標準出力に出力するってこと? 具体的にどういう使い方があるの?
253 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 13:43:07 ] irb のように使う?
254 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 23:44:26 ] 電卓がわりとかじゃね?
255 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 00:44:33 ] あなたの実家に腐ったイカを送りましたよ
256 名前:デフォルトの名無しさん [2007/01/26(金) 19:59:39 ] ある変数が マイナスだったら-1、プラスだったら1 に変換するCの式 if( a<0 ){ a=-1; }else if( a>0 ){ a=1; }else{ a=0; } を、なんか格好よく書くには どんな本を読んで勉強するべきでしょうか?
257 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 20:12:38 ] >>256 (a>0)-(a<0) (a>=0)-(a<=0) (a>>31 )|((unsigned)-x>>31 ) (算術シフト前提)
258 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 20:19:16 ] まず中1の数学の教科書だと思う。 a = a ? -1 * ( a / a ) : a;
259 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 20:22:10 ] あ、ちがった。ゴメン。 a = a > 0 ? 1 : ( a < 0 ? -1 : 0 ); とか。
260 名前:256 mailto:sage [2007/01/26(金) 21:08:24 ] >>258 ヒントありがとう a = (a>0)-(a<0); までがんばれたっぽい。
261 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 00:10:37 ] >>260 >>257 の一番上
262 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 01:55:23 ] もうすこし短くならない?
263 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 01:56:35 ] そういう関数があったと思ったが・・・
264 名前:デフォルトの名無しさん [2007/01/27(土) 01:58:51 ] これ以上はむりじゃね?
265 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 06:43:02 ] >>179 の心得に従ってみた a=a>0?1:-!!a
266 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 10:13:35 ] >>183 に従え
267 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 14:25:48 ] >>265 スパシーバ
268 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 16:11:59 ] >>265 :-!! 監禁されてガムテープで口縛られてるみたいだぞ
269 名前:デフォルトの名無しさん [2007/01/27(土) 16:43:12 ] a=a>0||-!!a; ↑ってどう?
270 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:35:56 ] a=5のときどうなる?
271 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 17:44:36 ] >>269 正しく動かない。 main(){ int a = -5; a=a>0||-!!a; assert(a==-1); return 0; }
272 名前:デフォルトの名無しさん [2007/01/27(土) 17:54:52 ] あ、そっか0か1にしかなんねーじゃん
273 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:04:00 ] まだそんなこと言ってるの? アホが1匹まじってますよ〜
274 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:09:37 ] 短い順 a=a>0?1:-!!a; //13 a=(a>0)-(a<0); //14 a=a>=0+(a>0)-1; //15 a=(a>=0)-(a<=0); //16 a=a>0?1:a<0?-1:0; //17
275 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:11:14 ] >>274 3つ目はカッコないとだめだろ a=(a>=0)+(a>0)-1; //17
276 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:13:46 ] a>0が真のとき値は必ず-1になるんですか?
277 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 18:16:09 ] 間違えた 1desu
278 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 21:01:51 ] 環境によるんじゃないかなぁ、実のところ。
279 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 23:27:29 ] 今までの作品見てて思ったんだが、音物ってまだでてないね。 やっぱりヘッダだけでもかなり文字数食うのかな。
280 名前:デフォルトの名無しさん [2007/01/27(土) 23:37:20 ] >>279 1行食うからな… でもwindows.hだけでbeep音は鳴らせるよな?
281 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 00:09:18 ] 10 BEEP
282 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 00:25:02 ] >>279 昔のMSXとかBASIC見たいにMML鳴らせればねえ
283 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 00:58:37 ] 10 PLAY ALLOC 0: PLAY "CDEFG"
284 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:23:05 ] cygwinとかbsd系でdsp使える環境 #include <sys/ioctl.h> #include <fcntl.h> int main(void){int rfd,dfd;char buf[1024];rfd=open("/dev/random",O_RDONLY);dfd= open("/dev/dsp",O_WRONLY);while(1){read(rfd,buf,1024);write(dfd,buf,1024);}} 音なるよ
285 名前:デフォルトの名無しさん [2007/01/28(日) 02:42:59 ] それで4行なら7行で方形波生成+メロディ位いけるんじゃないか?
286 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:48:27 ] >>284 read, write未定義って言われる・・・
287 名前:デフォルトの名無しさん [2007/01/28(日) 02:50:37 ] cygwinいれんのマンドクセ 会社行ったらやってみよ
288 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:51:01 ] #include <unistd.h> か、 すげーーーーー音なった!!
289 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:52:09 ] ちなみに、cygwinです。
290 名前:デフォルトの名無しさん [2007/01/28(日) 02:54:11 ] ちなみにどんな音がなるんだ?
291 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:56:16 ] いや、ノイズだよ。 ザーって。
292 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:56:56 ] /dev/random辺りから察して砂嵐だろう
293 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:57:52 ] ボリュームに気をつけたほうがいい。いつもので行ったら死にそうになった。
294 名前:デフォルトの名無しさん [2007/01/28(日) 02:58:00 ] なんだ ランダムだからどんなんかな〜と思ったけど、一音そんなに短いのか
295 名前:284 mailto:sage [2007/01/28(日) 02:58:13 ] >>288 thx >>290 /dev/randomから読み取ってdspに直書きしてるだけだから>>291 です 単一の音色のソフトシンセくらいなら作れる可能性があるね7行で
296 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 02:59:21 ] /dev/dspってすげーな。 > cat /cygdrive/c/WINDOWS/Media/tada.wav > /dev/dsp 普通にwav鳴らせるんだ・・・
297 名前:デフォルトの名無しさん [2007/01/28(日) 03:00:55 ] こんな時間に人が沸いてきた方が驚きなんだけど。仕事中か?
298 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 03:00:59 ] ああ、>>ちなみにcygwinのコマンドラインで cat /dev/random > /dev/dsp などとしても音なるよ 同じことです
299 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 03:03:29 ] >>296 んだんだ cygwinのdspさんはwaveファイルも使えるんだ あとioctl()とか使ってサンプリングレートとかチャンネル数とか変えれるから、 ちょっと気張ればネット越しに音鳴らすサウンドサーバが出来る mixingも自力で頑張ればウハウハ コード自体はfreebsdでも動くから、bsd機をpxebootで起動させればHDDいらずで(ry
300 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 03:36:23 ] #include <windows.h> int d[]={659,195,2,739,184,2,783,164,4,739,220,2,659,220,2,622,246,4,659,220,2, 739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,184,2,523,184,2,493,195,4 ,440,220,2,391,220,2,361,246,4,391,220,2,440,220,2,493,195,2,440,195,2,391,246, 2,361,246,2,329,164,2,329,184,2,659,195,2,739,184,2,783,164,4,739,220,2,659,220 ,2,622,246,4,659,220,2,739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,1\ 84,2,523,184,2,493,195,4,440,220,2,391,220,2,369,293,6,391,293,2,391,195,8};vo\ id b(int x,int y, int z){if(y){for(int i=0;i<z/50;++i){Beep(x,25);Beep(y,25);}} else{Beep(x,z);}Sleep(0);}int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){fo\ r(int i=0;i<sizeof(d);i+=3)b(d[i],d[i+1],d[i+2]*100);return 0;} ノートが周波数そのままなので、七行超えてしまた。Beep()で音が鳴るPCでどうぞ。 Bio_100%の蟹味噌のインスパイアです。
301 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 03:53:05 ] >>300 すげー、ピコピコなってるよ・・・ かに味噌なつかしす( ´ー`)
302 名前:300 mailto:sage [2007/01/28(日) 04:30:09 ] #include <windows.h> int d[]={659,195,2,739,184,2,783,164,4,739,220,2,659,220,2,622,246,4,659,220,2, 739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,184,2,523,184,2,493,195,4 ,440,220,2,391,220,2,361,246,4,391,220,2,440,220,2,493,195,2,440,195,2,391,246, 2,361,246,2,329,164,2,329,184,2,659,195,2,739,184,2,783,164,4,739,220,2,659,220 ,2,622,246,4,659,220,2,739,220,2,493,195,4,554,184,2,622,184,2,659,164,4,587,1\ 84,2,523,184,2,493,195,4,440,220,2,391,220,2,369,293,6,391,293,2,391,195,8};vo\ id b(int x,int y, int z){for(int i=0;i<z/50;++i){Beep(x,25);Beep(y,25);}}int W\ INAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){for(int i=0;i<sizeof(d)/sizeof(in\ t);i+=3)b(d[i],d[i+1],d[i+2]*100);return 0;} 酷いバグを直して19バイト削減。曲データ抜きなら4行だから、まぁアリってことにしてくださいm(__)m
303 名前:300 mailto:sage [2007/01/28(日) 04:53:31 ] あ、横が80文字になってるし。WinMainのintは省略できるし、b()なんて 関数化する必要ないし。漏れアホス、回線切って首吊ってきます
304 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:21:18 ] >>300 の真似をしてみました。 VC8以外でコンパイルできるかは不明なり。 #include <windows.h> char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643" "134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46" "894449991335566116611; 113344 4445454;;;9998886664441111111",c[]="888888822" "2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422" "4224224224444";int x[99],i,j=32;main(){float s=110;while(j<99)x[j++]=s*=1.05\ 95;for(j=0;a[i];++i,j=0)while(j++<c[i]-48)Beep(x[a[i]],30),Beep(x[b[i]],30);}
305 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:31:50 ] げ、スペースが一箇所詰まってしまた。 #include <windows.h> char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643" "134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46" "894449991335566116611; 113344 4445454;;;9998886664441111111",c[]="888888822" "2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422" "4224224224444";int x[99],i,j=32;main(){float s=110;while(j<99)x[j++]=s*=1.05\ 95;for(j=0;a[i];++i,j=0)while(j++<c[i]-48)Beep(x[a[i]],30),Beep(x[b[i]],30);} これでちゃんと鳴る……といいな。
306 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:39:48 ] >>296 ワロス 知らんかった
307 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 09:57:20 ] >>305 鳴ったよー。gcc cygwin で確認
308 名前:279 mailto:sage [2007/01/28(日) 10:24:12 ] 言った本人が何もしないのもあれなので作ってみたが、 レベル高すぎて投下する気なくす…orz
309 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 10:38:30 ] >>305 すげーww なんかめちゃくちゃなつかしい
310 名前:デフォルトの名無しさん [2007/01/28(日) 11:42:10 ] >>305 bcc5.5だと 1.05\ 95; の部分がエラーになったんだけど、直したら聞けました。つーかすげーこれww
311 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:04:42 ] #include <unistd.h> #include <fcntl.h> char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643" "134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46" "894449991335566116611; 113344 4445454;;;9998886664441111111",c[]="888888822" "2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422" "4224224224444";int x[99],d,i,j=32,k=8000,l=8;m(a,b,s){char r[4096];s*=2;a=k/a ;b=k/b;for(j=s;j--;)r[j]=(!(j%a)+!(j%b))*32;write(d,r,s);}main(){float s=1\ 10;while(j<99) x[j++]=s*=1.0595;d=open("/dev/dsp",2);for(i=0;a[i];m(x[a\[i]],\ x[b[i]],30*c[i]-48),++i);} >>305 がんばったけど、7行に出来ない(orz とりあえず音はなるけど、和音とかしらんので鳴るだけでいいと思ってる (´・ω・` ス
312 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:12:40 ] >>311 #include <unistd.h> #include <fcntl.h> char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643" "134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46" "894449991335566116611; 113344 4445454;;;9998886664441111111",c[]="888888822" "2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422" "4224224224444";int x[99],d,i,j=32,k=8000,l=8;m(a,b,s){char r[4096];s*=2;a=k/a ;b=k/b;for(j=s;j--;)r[j]=(!(j%a)+!(j%b))*32;write(d,r,s);}main(){float s=110; while(j<99) x[j++]=s*=1.0595;d=open("/dev/dsp",2);for(i=0;a[i];m(x[a[i]],x[b[\ i]],30*c[i]-48),++i);} こうだな
313 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:18:47 ] #include <unistd.h> #include <fcntl.h> char a[]="949=>9>>=;9848;>>=969444949=>9>>=;98468946899===;98989;<= ;;;;98643" "134445454545656767878989:9:;<=>",b[]="94942929999;4;468222246894942929999;46" "894449991335566116611; 113344 4445454;;;9998886664441111111",c[]="888888822" "2288444444448448888888222288888422844@4444444444448844444444844@@@@422422422" "4224224224444";int x[99],d,i,j=32,k=8000,l=8;m(a,b,s){char r[4096];for(j=s;j\ --;)r[j]=(!(j%a)+!(j%b))*32;write(d,r,s);}main(){float s=110;while(j<99) x[j+\ +]=k/(s*=1.0595);d=open("/dev/dsp",2);for(i=0;a[i];m(x[a[i]],x[b[i]],60*c[i]- 96),++i);} >>312 もうちょっと 後はデータをファイルに持たせるとか…か
314 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:21:34 ] >>311-313 dsp1.cpp:7: error: expected constructor, destructor, or type conversion before '(' token dsp1.cpp:7: error: expected `,' or `;' before '(' token dsp1.cpp: In function `int main()': dsp1.cpp:7: warning: converting to `int' from `float' dsp1.cpp:10: error: `m' undeclared (first use this function) dsp1.cpp:10: error: (Each undeclared identifier is reported only once for each function it appears in.) dsp1.cpp:10:11: warning: no newline at end of file って、出る('A`)
315 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:25:41 ] m(a,b,s){ 多分、この書き方なんですけど、これってCでいいんですか?
316 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 12:31:09 ] >>284 に戻るけど… using System;using System.IO;class Program{static void Main(string[]args){try{ int i=int.Parse(args[1]);byte[]h=new byte[]{82,73,70,70,36,0,(byte)i,0,87,65, 86,69,102,109,116,32,16,0,0,0,1,0,1,0,68,172,0,0,68,172,0,0,1,0,8,0,100,97,116 ,97,0,0,(byte)i,0};using(FileStream f=new FileStream(args[0],FileMode.Create)) {f.Write(h,0,44);h=new byte[i*65536];Random r=new Random(DateTime.Now.Second); r.NextBytes(h);f.Write(h,0,i*65536);}}catch{Console.Write("Error");}}} 使い方: hoge.exe savepath length 長さは(0〜255)*65536Bでつ。
317 名前:デフォルトの名無しさん [2007/01/28(日) 12:56:06 ] >>302 require"base64";require'zlib';require"Win32API";$o=Win32API.new("kernel32","B\ eep",%w(i i),'v');def b(x,y,z)(0...z/50).map{$o.call x,25;$o.call y,25}end;b= "eJybzHSYgYnhMdMOIMnPvISBBci+A2RPBpN5TN+AIhA2RPwt42GgiBZYfR6Y\nnMwE0uUNZnODSY\ iaHYwg9e1gMpMRZA6EDREHqQGxD4PVfIOqYWLwZFwCJiEm\n08NthYyqjGxAtiojSOQwAwcDAE8gP\ SA=\n";d=Zlib::Inflate.inflate(Base64.decode64(b)).unpack("S*");(0...d.size/3 ).map{|i|i*=3;b d[i],d[i+1],d[i+2]*100} ワーイ。rubyで、6行できたよー。
318 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:14:40 ] >>314 C++じゃなくてCで >>315 暗黙に int とみなされる
319 名前:デフォルトの名無しさん [2007/01/28(日) 13:38:54 ] >>318 なったよw
320 名前:デフォルトの名無しさん [2007/01/28(日) 13:41:13 ] >>313 データをファイルに持たせるのはルール違反
321 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 13:54:52 ] beep ついてねーよヽ(`Д´)ノウワァァン ということで cygwin 専用 beep エミュ。 音程が合わない時は BASE_FREQを適当に調整してください。 #include <windows.h> #include <stdio.h> #define BASE_FREQ8000 WINAPI BOOL Beep(DWORD freq, DWORD time){int t,tf,dt;static FILE *fp=0;if(!fp) fp=fopen("/dev/dsp","wb");if(!freq||freq>BASE_FREQ/2)tf=0x7fffffff;else tf= BASE_FREQ/2/freq;for(t=0;t<time*BASE_FREQ/1000;t++){dt=((t/tf))%2?127:0;fwrite (&dt,1,1,fp);}fflush(fp);return TRUE;}
322 名前:321 mailto:sage [2007/01/28(日) 14:31:09 ] 無駄が多すぎた。 #include <windows.h> #include <stdio.h> FILE *p;WINAPI BOOL Beep(DWORD f, DWORD m){int B=4000,t=0,g,d;p=p?p:fopen("/de" "v/dsp","wb");g=!f||f>B?(1<<31)-1:B/f;for(;t<m*B/500;t++){d=t/g%2?127:0;fwrite( &d,1,1,p);}fflush(p);return TRUE;}
323 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:23:05 ] Cの&& ||ってショートサーキット評価だっけ?
324 名前:デフォルトの名無しさん [2007/01/28(日) 16:26:07 ] そうだぜ
325 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 16:32:51 ] thx もう少し縮められそうだ
326 名前:305 mailto:sage [2007/01/28(日) 16:54:21 ] おー、なんか皆がんばっとる!('ω`*) 徹夜して作った甲斐がありました!
327 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:24:11 ] 標準入力からMMLを読んでビープで再生する A-G: 音符; R: 休符 (数値を後置して長さ, ドットを後置して付点) Tn: Tempo; Ln: Length On: Octave (n=0-7); >: Octave+; <: Octave- #include <stdio.h> #include <windows.h> int r,c,d,n,j,a,o=4,l=4,t=120,f[84],g[]={0,2,3,5,7,8,10};w(a){ungetc(a,stdin); }y(){return getchar();}float s=27.5;q(int*p){for(r=0;'0'<=(d=y())&&d<='9';)r=r *10+d-'0';w(d);r?*p=r:0;}main(){for(;j<84;j++,s*=1.0595)f[j]=s;while((c=y())!= EOF)c+=c<'a'||'z'<c?0:'A'-'a','A'<=c&&c<'H'||c=='R'?c-'R'?a=g[c-'A']+12*o,(d=y ())=='+'||d=='#'?a+=a!=83:d=='-'?a-=!!a:w(d):0,n=l,q(&n),j=120000*((d=y())-'.' ?w(d),2:3)/t/n,c-'R'?Beep(f[a],j):Sleep(j):c=='L'?q(&l):c=='O'?q(&o),o=o>7?7:o :c=='T'?q(&t):c=='>'?o+=o!=7:c=='<'?o-=!!o:0;}//9行47桁 俺の力ではこれ以上短くできない…orz
328 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:35:05 ] あら。一行78文字になってた #include <stdio.h> #include <windows.h> int r,c,d,n,j,a,o=4,l=4,t=120,f[84],g[]={0,2,3,5,7,8,10};w(a){ungetc(a,stdin);} y(){return getchar();}float s=27.5;q(int*p){for(r=0;'0'<=(d=y())&&d<='9';)r=r*\ 10+d-'0';w(d);r?*p=r:0;}main(){for(;j<84;j++,s*=1.0595)f[j]=s;while((c=y())!=E\ OF)c+=c<'a'||'z'<c?0:'A'-'a','A'<=c&&c<'H'||c=='R'?c-'R'?a=g[c-'A']+12*o,(d=y() )=='+'||d=='#'?a+=a!=83:d=='-'?a-=!!a:w(d):0,n=l,q(&n),j=120000*((d=y())-'.'?w( d),2:3)/t/n,c-'R'?Beep(f[a],j):Sleep(j):c=='L'?q(&l):c=='O'?q(&o),o=o>7?7:o:c== 'T'?q(&t):c=='>'?o+=o!=7:c=='<'?o-=!!o:0;}
329 名前:デフォルトの名無しさん [2007/01/28(日) 17:56:04 ] ソース解読するための 整形ツールって無いですか?
330 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:56:22 ] 時代が20年くらい巻き戻ったな、このスレ
331 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 17:56:33 ] GNU Indentは?
332 名前:デフォルトの名無しさん [2007/01/28(日) 18:31:01 ] >>331 いけました。サンクス
333 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:03:16 ] >>329 過去スレに7行のもあった希ガス
334 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 22:42:27 ] 'A' とかは数字の即値で書いたほうが短そう
335 名前:デフォルトの名無しさん [2007/01/28(日) 22:48:24 ] >>284 BSD系って君が言ったから OSXは、/dev/dspねぇ。。
336 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 22:50:04 ] >>334 上でも出てるがそりゃ邪道だ
337 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 23:04:34 ] >>335 多分あるよ。 FreeBSD5のカーネル付近から/dev/以下は自動的に作られるから。 ls -l /dev/dsp ってやってみて それでもnot foundならkldload snd_driverでカーネルにサウンドドライバロードさせてみて で、 ls -l /dev/dsp