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
21 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 20:42:28 ] >>18 □歩□□玉□□□□ □歩□□□□□□□ □歩□□□□□□□ □歩□□□□□□□ □歩□□□□□□□ □歩□□□□□□□ □歩□□□□□□□ □角□□□□□飛□ 香桂銀金王金銀桂香
22 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 23:35:04 ] >>21 二歩でアウトーッ!
23 名前:デフォルトの名無しさん mailto:sage [2006/03/29(水) 23:44:22 ] 二つではないのでセーフ
24 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 02:22:01 ] お前頭いいな
25 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 02:50:24 ] ではどうやって2つ目の歩を置いたんだね。
26 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 02:59:55 ] お前頭いいな
27 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 03:03:44 ] 初期配置
28 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 03:04:43 ] 二歩と聞くと、豊川六段(前原代表)がNHK杯でにふった時の 千葉女流のあーってさけぶやつを思い出すw。
29 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 11:37:20 ] 二歩の判定に==使うコードが悪いな 俺なら>=使う
30 名前:デフォルトの名無しさん mailto:sage [2006/03/30(木) 11:55:00 ] >=を使ったらルールが変わってるよ。
31 名前:デフォルトの名無しさん [2006/03/31(金) 22:27:06 ] 7分以内に答えられたらIPA認定 oshiete1.goo.ne.jp/kotaeru.php3?q=2063991 #include <iostream.h> main(){ char *(*pp)[3]; printf("%lu", sizeof(char*)); printf(" pp%lu", pp); printf(", ++pp%lu", ++pp); }
32 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 22:30:32 ] 匕行プログラミング
33 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 23:41:25 ] pointer to array of pointer to charかね sizeof(char* )== 4 sizeof(char*[3])== 12 だから12増えるのが正解だろ。
34 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 00:18:13 ] >>33 ありがとうございました。やっと分かりました。 あとで、20ポイントつけておきますね。
35 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:41:12 ] や、俺gooに登録してへんから('ω`)
36 名前:デフォルトの名無しさん [2006/03/32(土) 23:59:38 ] 最も偏差値の高いスレはここですね?
37 名前:せっ☆マ ◆wwwwWwWWWw mailto:トリップくれた職人さん、ありがとう! [2006/04/05(水) 15:15:35 ] とうとうVIPから来てしまいました
38 名前:デフォルトの名無しさん mailto:sage [2006/04/05(水) 22:39:45 ] 安南将棋って知らないの?
39 名前:デフォルトの名無しさん [2006/04/08(土) 19:25:54 ] 過去スレみれねえ まとめサイト欲しい
40 名前:デフォルトの名無しさん mailto:sage [2006/04/08(土) 19:32:57 ] >>39 ttp://cm.xrea.cc/
41 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 00:07:50 ] >>40 じつに素晴らしい
42 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 00:19:28 ] #include <windows.h> double sin();char b[99];long*h,w[]={65537,8000,8000,524289,20},d[]={b,99,0,0,0, 1,0,0};WINAPI f(t,u,x,y,z){waveOutReset(h);waveOutWrite(h,d,32);}main(c,v)char **v;{if(c>1){for(c=99;c--;b[c]=sin(c*0.7854)*64);if((c=atoi(v[1]))>0){waveOutO\ pen(&h,-1,w,0,0,0);waveOutPrepareHeader(h,d,32);for(c=timeSetEvent(60000/c,1,f, timeBeginPeriod(1),1);!kbhit();Sleep(1));timeKillEvent(c);waveOutReset(h);wave\ OutUnprepareHeader(h,d,32);waveOutClose(h);}}} Win32用簡易メトロノーム。コマンドライン引数でBPMを指定。何かキーを押せば終了します。 マルチメディアタイマーを利用しているのでwinmm.libとのリンクが必要。
43 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 23:47:28 ] #include <stdio.h> int a[81];s(n){int i=80,c[10];if(a[n])s(n+1);else if(n>80)for(;~i;i--)printf("\ %d%c",a[i],i%9?0:10);else{for(i=9;i;)c[i--]=0;for(i=8;i--;)c[a[n/9*9+i]]=c[a[n% 9+i*9]]=c[a[n/27*27+n%9/3*3+i%3+i/3*9]]=1;for(i=1;i<=9;i++)c[i]||(a[n]=i,s(n+1) ,a[n]=0);}}main(i){i=80;for(;~i;)scanf("%d",&a[i--]);s(0);} 数独を解くプログラムのつもり。あと2行あるからなんかしたいけど何をしようか思いつかん。 標準入力として↓みたいなファイルを食わせると答えを出す。 0 0 6 0 0 0 0 0 1 0 7 0 0 6 0 0 5 0 8 0 0 1 0 3 2 0 0 0 0 5 0 4 0 8 0 0 0 4 0 7 0 2 0 9 0 0 0 8 0 1 0 7 0 0 0 0 1 2 0 5 0 0 3 0 6 0 0 7 0 0 8 0 2 0 0 0 0 0 4 0 0 ぶっちゃけ七行やったこと殆どないんで無駄が多そう。 ちなみにあほ再帰なんで表出が減るとあほみたいに遅くなります。 将来は数々の人々みたいに立派な七行erになりたい。
44 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 11:38:48 ] >>43 4 0 0 0 0 0 8 0 2 0 0 0 0 1 8 0 0 9 2 0 0 3 0 5 0 0 0 0 5 0 0 6 0 2 0 0 0 0 0 7 0 4 0 9 0 0 7 0 0 2 0 0 3 6 0 0 0 9 0 0 7 0 0 8 0 6 0 7 0 0 0 0 0 0 5 0 0 0 6 0 4 の問題で誤答が出ました。
45 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 18:15:37 ] >>40 GJ!
46 名前:デフォルトの名無しさん mailto:sage [2006/04/11(火) 19:11:53 ] >>44 単純なミスだった。あほだなあ自分。他にもバグめっさあるかも。 #include <stdio.h> int a[81];s(n){int i=80,c[10];if(a[n])s(n+1);else if(n>80)for(;~i;i--)printf("\ %d%c",a[i],i%9?0:10);else{for(i=9;i;)c[i--]=0;for(i=9;i--;)c[a[n/9*9+i]]=c[a[n% 9+i*9]]=c[a[n/27*27+n%9/3*3+i%3+i/3*9]]=1;for(i=1;i<=9;i++)c[i]||(a[n]=i,s(n+1) ,a[n]=0);}}main(i){i=80;for(;~i;)scanf("%d",&a[i--]);s(0);}
47 名前:デフォルトの名無しさん mailto:sage [2006/04/11(火) 22:23:27 ] >>43 入力が正規な問題かどうかを判定するルーチンいれられません? 現状だと1を81個でも(そのまんまになるが)解答として出力されるので。
48 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 16:36:52 ] >>46 解答をリダイレクトすると 0x00 が出力されてるので printf("%d%c",a[i],i%9?32:10); の方がいいかも。 複数解答があるときは行をあけて欲しいなぁとか。 すでに7行以下だと最適化するのもむなしいなー。
49 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 23:15:08 ] #include <stdio.h> int a[81],c[10],j,k;o(){for(j=80;~j;j--)for(k=80;k>j;k--)if((j/9==k/9||j%9==k%9 ||(j/27==k/27&&j%9/3==k%9/3))&&a[j]==a[k]&&a[j])return 0;return 1;}s(n){int i= 80;if(a[n])s(n+1);else if(n>80){for(;~i;i--)printf("%d%c",a[i],i%9?32:10);puts( "\n");}else{for(i=1;i<=9;i++)(a[n]=i,o()?s(n+1):0,a[n]=0);}}main(i){i=80;for(;~ i;)scanf("%d",&a[i--]);o()?s(0):puts("問題おかしい");} あちこち無駄っぽい。むう。 どのみちもう7行きってて微妙だからなんか別のものを組もうかなぁ。
50 名前:デフォルトの名無しさん mailto:sage [2006/04/14(金) 10:39:22 ] 逆に問題を生成してみるとか。 あ、生成と解答をまとめると結構ハードル高くなるかな?
51 名前:デフォルトの名無しさん mailto:sage [2006/04/15(土) 02:15:07 ] 初代スレ読んできたけどレベル高いなぁ。トリッキーの1と60がすさまじい。 初代スレのWindows関連は面白かったから、ああいうのでなんかお題プリーズ。
52 名前:デフォルトの名無しさん [2006/05/07(日) 16:27:06 ] 保守&新しい息吹待ちage
53 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 00:45:47 ] Java script アイコンエディタ おそらくIE6専用(Mozilla 1.7は不可) 大きい■をクリックで、下のボックスに入力した色が塗られる(各色0-255)。 左上のアイコンをクリックすると、別ウィンドウで ppm 形式のデータを表示するので、 表示>ソース>メモ帳などが開いたら名前をつけて保存>何とか.ppm 大きさの変更は、1行目のA=16を適当にいじる 機能も不十分だが、最大の問題点は8行だということ。誰か頼む。 <body><script>Z=[A=16];B=document.all;s=S="<br>";function Y(D){(D?self:open()). document.writeln(S)}function X(p){for(c="#",i=0;i<3;S="P3\n"+A+" "+A+"\n255")c +=(0+(Z[p*3+i]=B.tags("input")(i++).value-0).toString(16)).slice(-2);B(P=7+p*2+ p/A|0).style.color=B(++P).style.background=c;for(i=0;i<A*A*3;S+=Z[i++]+" ")i%(3 *A)?0:S+="\n"}for(i=0;i<A*A;i%A?0:S+=s,S+="<b style=color:#AAA onClick=X("+i+ ")>■</b><p style=background:#AAA;position:absolute;top:"+(i/A|0)*2+";left:"+( i++%A)*2+";overflow:hidden;width:2;height:2 onClick=Y()></p>")for(j=3;j--;)Z[i* 3+j]=176;Y(S+=s)</script>R<input>G<input>B<input>
54 名前:デフォルトの名無しさん mailto:sage [2006/05/10(水) 04:01:31 ] >>53 の改良 少しインターフェースが違っているが7行化+Firefoxでも動くように。 多分Operaでも動くと思う。 <div style="width:256px"><script>A=16;function X(p){for(c=[],i=0;i<3;i++)c[i]=Z [3*p+i]=+D.T("input")[i].value;D.T("b")[p].style.background="rgb("+c.join(",")+ ")";}Z=[];D=document;for(i=0;i<A*A;D.write("<b style='background:#aaa;float:l"+ "eft;overflow:hidden;width:16px;height:16px;' onclick='X("+i+")'></b>"),i++)for (j=3;j--;)Z[i*3+j]=176;D.T=D.getElementsByTagName;</script></div>R<input>G <input>B<input><button onclick="s='P3\n'+A+' '+A+'\n255';for(i=0;i<A*A*3;s+=Z[ i++]+' ')i%(3*A)?0:s+='\n';with(self.open().document){writeln(s);close()}">出力
55 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 00:06:33 ] 昔、お遊びでここにBASIC書いてみた者(何本か前の448)ですが、久々にここに 来てあれ書いてた頃が懐かしくなったですよ。 ・・いまだに7行は達成できないんだけどorz #それどころか、会社入ってから書かされるプログラムは肥大化して行くばかり
56 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 01:45:24 ] 複数人での開発には、ワンライナーや7行みたいな 詰め込みコードは向かないし、他の人がコード見る場合があれば迷惑だよ だから、行数が増えるのは別に悪い事じゃない。 #短く分かり易く書けるのに、無意味に長く難しく書くのも迷惑ダガナー
57 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 22:54:48 ] でも7行書きは楽しいよ? 大学の課題提出とか無意味に七行化しちゃうよ
58 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 23:46:08 ] 迷惑かどうかを考えるスレじゃないしね。
59 名前:デフォルトの名無しさん mailto:sage [2006/05/12(金) 00:15:40 ] >>56 は>>55 最終行へのレスだろう。
60 名前:デフォルトの名無しさん mailto:sage [2006/05/16(火) 15:46:12 ] ttp://kihira.jp/index.php?Joke%20Programs これ、トリッキーの1本人?それとも壮大なパクリ?
61 名前:デフォルトの名無しさん mailto:sage [2006/05/16(火) 17:55:35 ] >>60 2chって文字が・・・ 多分パクリ
62 名前:デフォルトの名無しさん mailto:sage [2006/05/16(火) 18:30:46 ] >>61 Part1の32で > (関東など一部の地域での)テレビの2ちゃんねるシミュレータ、 > すなわち砂嵐シミュレータを作ってみました。ざーっていうあれです。音は鳴らないけど。 とあるから、パクリの証拠ではないんじゃない?
63 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 00:54:35 ] パクリなら他の人の作品もパクるだろうから、 トリッキーの1さんっぽい気はする。 経歴みても頭良さそうだし。
64 名前:デフォルトの名無しさん mailto:sage [2006/05/17(水) 03:16:25 ] どうせ外人がパクったんだろ、と思ったら、日本ドメインじゃねーかw 確かに、1さんかもしれんな
65 名前:デフォルトの名無しさん mailto:sage [2006/05/18(木) 23:24:04 ] >>7 イミフWWWウハWWWWオkWWWW ウェウェWWWWWWW
66 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 17:49:30 ] >>65 コピーしてテキストエディタに貼付けて拡張子.comで保存 但し2chビューア等には、ご丁寧にも 半角スペースみたいな記号を コピー時に&表記に変換したりする機能があったりするので 出来れば普通のブラウザからコピーを推奨
67 名前:デフォルトの名無しさん [2006/05/19(金) 18:56:48 ] >>66 >>7 の2行目と5行目のことじゃね?
68 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 21:30:54 ] >67 空白行?
69 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 22:14:04 ] つーかcomファイルなんて実行できねえよ
70 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 22:39:38 ] >>68 二行目 > フフフフフフフフフフフフケタタイ カ サョo3レS]サ」J3レセ -ク$$Pクヘハ3チP_SXイミフWWWウハWWWWオkWWWWイ オタP[% 五行目 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ーA3チエ^PUSVRRーハ3チエ PウェウェWWWWWWW3ター"ムネヘミT]ク&&2タムネ3ノア。3メ3ロSSヘミ^_ク@QムタPPヌ゚% ~~~~~~~~~~~~~~~~~
71 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 23:24:49 ] >>70 作者乙
72 名前:デフォルトの名無しさん mailto:sage [2006/05/19(金) 23:55:08 ] >>69 死ね
73 名前:デフォルトの名無しさん [2006/05/23(火) 08:28:49 ] comファイルはバイナリそのもので、 プログラムングとは言えないんじゃね?
74 名前:デフォルトの名無しさん mailto:sage [2006/05/23(火) 08:41:54 ] 貴様ヘッドアセンブルを否定したな!
75 名前:デフォルトの名無しさん [2006/05/23(火) 10:20:29 ] この類のは散々既出かもしれませんが、PHPで1行掲示板を書いてみました。 連投対策(同IPから60秒間連投を制限)も一応施してあります。なんかまだまだ 短くできそうな悪寒がします。 <?$ip=$_SERVER['REMOTE_ADDR'];$d=time();$n=htmlspecialchars($_POST['n']); $m=htmlspecialchars($_POST['m']);$p="log.txt";if($n&&$m){$l=@file($p); $s=explode("<>",$l[0]);if(($ip!=$s[0])||($d-$s[3]>60)){$fp=fopen($p,"w+");fputs ($fp,$ip."<>".$n."<>".$m."<>".$d."<>\n");for($i=0;$i<20;$i++)fputs($fp,$l[$i]); fclose($fp);}}?><form method=POST><input name=n>:<input name=m><input type= submit><?$l=@file($p);foreach($l as $arr){$s=explode("<>",$arr);print("<hr>[". $s[1]."] ".$s[2]." (".date("Y/m/d h:i:s", $s[3]).")");}?>
76 名前:デフォルトの名無しさん mailto:sage [2006/05/23(火) 18:25:51 ] 確かにプログラムングとは言えないな
77 名前:デフォルトの名無しさん mailto:sage [2006/05/23(火) 18:31:57 ] >>75 PHPは関数名が長いね… 縮め、改行入力阻止、0のみ入力許可 <?$f=array('n','m');foreach($f as&$v){$v=strtr(htmlspecialchars($_POST[$v]), "\n",' ');}$p='log.txt';if($f[0]!=''&&$f[1]!=''){$l=@file($p);$s=explode('<>', $l[0]);if(($ip=$_SERVER['REMOTE_ADDR'])!=$s[0]||($d=time())-$s[3]>60){$l[20]='' ;file_put_contents($p,"$ip<>$f[0]<>$f[1]<>$d<>\n".implode('',$l));}}?><form method=POST><input name=n>:<input name=m><input type=submit><?$l=@file($p); foreach($l as$arr){$s=explode('<>',$arr);echo"<hr>[$s[1]] $s[2] (".date( 'Y/m/d h:i:s',$s[3]).')';}?>
78 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 14:59:10 ] 保守
79 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 21:50:29 ] ホッシュ
80 名前:デフォルトの名無しさん mailto:sage [2006/08/10(木) 02:37:10 ] シェルピンスキーのギャスケット #include <stdio.h> main() { int x, y; for (y = 0; y < 32; y++){ for (x = 0; x < 32; x++) printf(x & y? "..": "■"); printf("\n"); } }
81 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 15:58:18 ] JavaScript 弾避け。マウスカーソルを四角にぶつけないように動かす 互換性のないように作ってあるので、IE専用 <body id=B onMouseMove=y=event.y;x=event.x><script>h=B.clientHeight-20;a=[b=[q= [D=document]]];for(U=x=99;x--;C=F=q[x]=P=y=0)D.write("<b style=background:red;" +"width=16;height=16;position:absolute;top:-20></b>");function T(){for(i=C;i--* !F;J=D.all(5+i).style,l=q[i]/U,m=J.left=a[i]*(c=1-l)+a[d=i+U]*l,n=J.top=b[i]*c+ b[d]*l,F=m-15<x&x<m+16&n-15<y&y<n+16)if(!q[s=i]--)for(j=2;j--;s+=R%3+1)R=Math. random(q[i]=U)*w*h|0,a[c=j?i:i+U]=s%2?s%4>1?0:w:R%w,b[c]=s%2?R%h:s%4?h:0;P++-C* 9||C-U&&C++;if(F)alert(P);else setTimeout(T,U-C)}T(w=B.clientWidth-20)</script>
82 名前:デフォルトの名無しさん mailto:sage [2006/08/19(土) 16:15:30 ] GJ! だんだん多く速くなるあたり職人芸だな
83 名前:デフォルトの名無しさん [2006/08/28(月) 21:02:17 ] 保守age
84 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 15:58:31 ] 保守
85 名前:デフォルトの名無しさん [2006/10/09(月) 16:07:24 ] hosyu
86 名前:デフォルトの名無しさん [2006/10/10(火) 20:06:29 ] 俺には無理だったお題 perlでモジュールを使わずに7行でRSSリーダー(RSS to html)を作れ LWP::Simpleも使わずに7行はやっぱり無理か??
87 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 20:13:20 ] RSSリーダーの定義による
88 名前:86 [2006/10/10(火) 20:24:20 ] 定義はRSSをgetして、htmlに変換するってもの LWP::Simpleと、XML::RSSで作れたんだがモジュール無しは俺にはむりぽ
89 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 23:22:55 ] Socketも使えんがな
90 名前:デフォルトの名無しさん mailto:sage [2006/10/10(火) 23:32:32 ] curlで取得
91 名前:デフォルトの名無しさん [2006/10/10(火) 23:33:19 ] 一先ずLWP::Simpleだけで作れないかやってみるお
92 名前:デフォルトの名無しさん mailto:sage [2006/10/11(水) 00:28:14 ] XSLT使えば2〜3行で書けるんじゃない?あほらしくてやる気しないけど
93 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 14:02:19 ] じゃあ俺も無理だったお題。 Cで7行正規表現。どうやっても7行は無理だったw 腕に覚えのある奴がいたら、是非挑戦してみてくれ。
94 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 14:07:44 ] >>93 正規表現って何をサポートすればいいんだ?
95 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 22:49:52 ] #include "regexp.h"
96 名前:デフォルトの名無しさん mailto:sage [2006/10/12(木) 22:53:17 ] #include <boost/regex.h>
97 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 02:02:18 ] catコマンドってC言語で7行で作れる? どこまでの機能を詰め込めるかの問題になりそうだけど。
98 名前:97 mailto:sage [2006/10/14(土) 02:04:30 ] 作れる?ってのはおかしいか。 作るだけなら余裕だろうし。 どれだけ機能を削ったり詰め込めるかって感じ。
99 名前:トリッキーの1 mailto:sage [2006/10/14(土) 05:40:11 ] お久しぶりです。part1でお世話になったトリッキーの1です。 >>60-64 で晒されていますが、そのサイトは私のサイトです。 正規表現が面白そうだったので久々に作ってみましたが、9行になりました。 縮めるテクニックなどを完全に忘れてしまっていますが、頑張れば7行は可能そうです。 仕事の合間に7行目指して頑張ってみようと思います。 使える記号は()*|のみです。とりあえずこれだけあれば他のも表現できると思います。 文脈自由文法は、 R ::= T | T "|" R T ::= ε | FT F ::= P | P* P ::= char | "(" R ")" となっています。gcc2.91でのみコンパイル確認しました。 使い方は、"a.exe regexp"とすれば、標準入力から読んだ内容をregexpで走査します。 見つかればmatchと表示して終了します #include <stdio.h> int n[999][99],z=2,i;char*s,c[999][99],v[9999];h(f,t,k){for(i=0;c[f][i]!=0;i++) ;c[f][i]=k;n[f][i]=t;}p(int o,int f,int t,char*l){int x;if(l){for(x=0;(f=c[o][x ])!=0;x++)if((f==1||*l==f)&&(n[o][x]==1||p(n[o][x],0,0,(f==1)?l:l+1)))return 1; }else{(o==0)?p(1,f,t,0),(*s=='|')?s++,p(0,f,t,0):0:(o==1)?(*s==')'||*s=='|'||*s ==0)?h(f,t,1):(x=z++,p(2,f,x,0),p(1,x,t,0)):(o==2)?(x=z++,c[x][0]=1,n[x][0]=t,p (3,f,x,0),(*s=='*')?h(f,t,1),s++,n[x][0]=f:0):(*s)?(*s=='(')?(s++,p(0,f,t,0),++ s,0):h(f,t,*s++):0;}}main(int x, char**o){s=o[1];p(0,0,1,0);while(gets(v)){s=v; while(*s){if(p(0,0,0,s++))return printf("match");}}}
100 名前:トリッキーの1 mailto:sage [2006/10/14(土) 05:47:13 ] 多分大体のコンパイラで動くバージョンはこちらです。連投失礼しました。 #include <stdio.h> int n[999][99],z=2,i;char*s,c[999][99],v[9999];p(int o,int f,int t,char*l){int x;if(l){for(x=0;(f=c[o][x])!=0;x++)if((f==1||*l==f)&&(n[o][x]==1||p(n[o][x],0, 0,(f==1)?l:l+1)))return 1;}else{(o==0)?p(1,f,t,0),(*s=='|')?s++,p(0,f,t,0):0:( o==1)?(*s==')'||*s=='|'||*s==0)?c[f][c[f][98]]=1,n[f][c[f][98]++]=t:(x=z++,p(2 ,f,x,0),p(1,x,t,0)):(o==2)?(x=z++,c[x][0]=1,n[x][0]=t,p(3,f,x,0),(*s=='*')?c[f ][c[f][98]]=1,n[f][c[f][98]++]=t,s++,n[x][0]=f:0):(*s)?(*s=='(')?(s++,p(0,f,t, 0),s++,0):(c[f][c[f][98]]=*s++,n[f][c[f][98]++]=t):0;}return 0;}main(int x,char **o){s=o[1];p(0,0,1,0);while(gets(v)){s=v;while(*s){if(p(0,0,0,s++))return printf("match");}}return 0;}
101 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 10:22:42 ] キタ━━(━(━(-( ( (゚∀゚) ) )-)━)━) ━━ !!!!!
102 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 11:17:28 ] 凄すぎます。
103 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 14:51:06 ] 天 才 現 る
104 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 14:53:22 ] 何て恐ろしい子!
105 名前:デフォルトの名無しさん mailto:sage [2006/10/14(土) 15:15:59 ] BNFの自前パース+NFA検索ってところかな? 10行でもありえないくらい凄いよ…本当に7行なんて出来るんだろうか
106 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 01:37:57 ] よく読んでないんだけどa==bを使ってるところをうまくa-bにするとかで数文字減れないかな
107 名前:トリッキーの1 mailto:sage [2006/10/15(日) 02:06:53 ] >>105 おお、その通りです。あのコードからよくわかりましたね! DFAにすべきなんでしょうが、動けばいいやってことでNFAにしました。 でも現状では最初に適当に作りすぎたためにどんなに頑張っても9行なので、 行数を減らすことを前提に少し構造を変えないといけないかも… 等価なBNFで状態数の小さいものを書くことが出来ればなんとかなるのかな? >>106 ヒントありがとうございます。 まだ小細工は全然していないのですが、数文字が重要になってきたら試してみます。 7行達成したらお披露目にきますね ノシ
108 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 12:12:36 ] int x;if(l){for(x=0; ↓ int x=0;if(l){for(; こういう積み重ねが大事なんだろうな。 人間ってすごいな。
109 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 13:28:33 ] for(int x=0; はC言語では駄目なんだっけ C++で出来るようになったのか
110 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 14:07:28 ] >>109 C99なら可。
111 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 19:01:41 ] (o==0)?(A):(B) → (o)?(B):(A) とかあるけど……まぁそれでも7行には入りそうにないな。 もっと根本的な対策がいる。
112 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:50:15 ] '|' とかの即値を数字で書くと一字減る
113 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 06:58:49 ] >>112 それは限りなく最後の手段。ASCII文字配列でないコンピュータで動かなくなる。
114 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 07:58:30 ] いつの時代のコンピューだよw
115 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 15:10:16 ] いや、それは気にすべきだろ。
116 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 15:48:13 ] こういう基本的なことは重要
117 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 17:02:54 ] それよりもコンピューという略し方のほうが異常だと僕は思うね。
118 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 00:14:52 ] >>117 ついに「ぴゅー太」と呼ぶ時代が来たようだな。 時代が追いついてきたな。
119 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 00:20:38 ] マイコンと呼ぶ日も近そうだ。ベーマガスペシャル復刊とかね
120 名前:デフォルトの名無しさん mailto:sage [2006/10/17(火) 01:03:25 ] 1chipMSX買っちゃったしね。
121 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 23:58:59 ] BCELを使った Java難読化プログラムです. 現在,9行.あと少し.キャストがうぜぇ.groovy なら問題なくできるだろう. import org.apache.bcel.classfile.*;class O{public static void main(String[]s) throws Exception{new O(new ClassParser(s[0]).parse());}int n=0;void u(Constant c){ConstantUtf8 u=(ConstantUtf8)c;if(u.getBytes().charAt(0)!='<')u.setBytes(""+ ++n);}O(JavaClass j)throws Exception{ConstantPool p=j.getConstantPool(); Constant[]c=p.getConstantPool();for(int i=0;i<c.length;i++){if(c[i]!=null){int t=c[i].getTag();if(t>8&&t<12){ConstantCP q=(ConstantCP)c[i];if(j.getClassName() .equals(q.getClass(p)))u(c[((ConstantNameAndType)c[q.getNameAndTypeIndex()]). getNameIndex()]);}}}u(c[((ConstantClass)c[j.getClassNameIndex()]).getNameIndex( )]);j.dump(n+".class");}} BCELじゃなく,ASMとか,javassist を使ったほうがいいのかな? java -cp .:bcel.jar O <target classfile>