七行プログラミング part5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/03/16(木) 09:02:39過去作品は、もしかしたら>>2-20あたりに。
前スレ
http://pc8.2ch.net/test/read.cgi/tech/1051703369/
part 3
http://pc2.2ch.net/tech/kako/1033/10331/1033143528.html
part 2
http://pc3.2ch.net/tech/kako/1018/10188/1018840143.html
part 1
http://pc.2ch.net/tech/kako/984/984182993.html
0002デフォルトの名無しさん
2006/03/16(木) 09:39:320003デフォルトの名無しさん
2006/03/16(木) 13:11:36http://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
0004デフォルトの名無しさん
2006/03/17(金) 02:23:31インデックスでも貼るか
0005http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:49:20もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0006デフォルトの名無しさん
2006/03/19(日) 17:43:27http://pc8.2ch.net/test/read.cgi/tech/1051703369/993-995n
0007955
2006/03/21(火) 02:34:36本当はこれがやりたかった。全画面注意
ただ単に作ったファイルを.txtにしてコピペしただけ
3ロウタムテ2ロムテクタタ0GMウ@0G"0G,0G-0G?0GB0GO0GV0G[3タq(自己改変とINT10hの練習)3タq
フフフフフフフフフフフフケタタイ カ サョo3レS]サ」J3レセ -ク$$Pクヘハ3チP_SXイミフWWWウハWWWWオkWWWWイ オタP[%
クYJ3テPUSVRRWクm Pクーフ3ナPUSVRRWクm Pクワフ3ナPクョホ3ナPUSVRRWク!!PクンンPPクゥゥPPPクブPRR%
ク /PRRUSVRRWクA}3チPクS13チPクO)Pク6a3チ3ツPクo」3ツPクタa3チ3ツPUSUSVWーA3チエRPクa<3チ3ツP%
ーA3チエ^PUSVRRーハ3チエ PウェウェWWWWWWW3ター"ムネヘミT]ク&&2タムネ3ノア。3メ3ロSSヘミ^_ク@QムタPPヌ゚%
3ター。HムタムタPPPYャ]ミリ\ェW]3ロキ<ミマ;ンu.3タPPHヘミ_^Iuヘ3ノアPQ^ア。Iムチムチクタヒ5タタヘ!ムネsノヘ フ
0008デフォルトの名無しさん
2006/03/21(火) 02:43:01お見事
0009デフォルトの名無しさん
2006/03/21(火) 03:04:55今回もXPのみ?・・・Orz
0010デフォルトの名無しさん
2006/03/21(火) 05:34:48前スレ973も>>7も、うちの2000で動く。
そもそもDOS命令なんで、OS関係ないと思われ。
前スレ960のMessageBoxは環境依存だと思うけど、
(DLL名の省略の関係?)
改変した前スレ966は2000では動きました。
>>7
すげー。INT10hはこういう使い方ができるのかー。
インデックスの方も乙。
0011デフォルトの名無しさん
2006/03/21(火) 15:56:26すげえええええええええwwwwwwww
こんなのってどうやって付くんの?
テキストに仕方はどうやるんだろ。
アセンブラ作って変換するんだろか・・・
0012デフォルトの名無しさん
2006/03/21(火) 16:56:57行頭・行末にスペースが入ってないことを確認して
CR+LF改行で保存したら98SE@VPCでも動きますた。
はスペースでいいみたい。
0013デフォルトの名無しさん
2006/03/21(火) 20:20:12一つだけの時は、それで OK だけど、二つ以上つづく時は
にしないと、(HTML の仕様で) 一つにまとめら
れちゃうよ。
0014デフォルトの名無しさん
2006/03/21(火) 22:47:21いやつまりnon-breaking spaceは$A0だから、さ
0015デフォルトの名無しさん
2006/03/22(水) 07:41:42スクリプトのコードなら何の処理か想像つくのが多いだろうが
そのうち簡易ウィルスやOSクラッシャうpる香具師がいつか出そうな悪寒
今浮かんだ対策は
バイナリうp師は必ず頭に「実行は自己責任で」付けるとかその辺
当然っちゃ当然だがバイナリは読めない香具師多そうで怖い
0016デフォルトの名無しさん
2006/03/22(水) 15:32:07どんなのプログラムなのか必ずデバッガ上でトレースしてから実行してるが、
いきなり実行する香具師は喰らうだろうな。某流出もそういう仕組みだし。
OS吹き飛ばしたり、HDD全消去くらいなら簡単だろうが、
今の流れの形式で、ウイルスともなるとかなりレベル高そうだな。
けど、グロ画像と同じで、気づいた香具師が警告入れるだろうし、
その上で踏むのなら、自己責任しょ。
テキストに貼り付けて拡張子comに変えた時点で、その行為が意味することくらいわかってなきゃな。
どんな動作するか書いてない、2chに貼られたバイナリをいきなり実行する香具師って・・・
0017デフォルトの名無しさん
2006/03/26(日) 00:20:49>>7を試したらこんなの出たけどこれでいいの?
0018113
2006/03/26(日) 01:31:550019デフォルトの名無しさん
2006/03/26(日) 10:21:390020デフォルトの名無しさん
2006/03/29(水) 18:40:10#include <iostream>
int main()
0021デフォルトの名無しさん
2006/03/29(水) 20:42:28□歩□□玉□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□歩□□□□□□□
□角□□□□□飛□
香桂銀金王金銀桂香
0022デフォルトの名無しさん
2006/03/29(水) 23:35:04二歩でアウトーッ!
0023デフォルトの名無しさん
2006/03/29(水) 23:44:220024デフォルトの名無しさん
2006/03/30(木) 02:22:010025デフォルトの名無しさん
2006/03/30(木) 02:50:240026デフォルトの名無しさん
2006/03/30(木) 02:59:550027デフォルトの名無しさん
2006/03/30(木) 03:03:440028デフォルトの名無しさん
2006/03/30(木) 03:04:43千葉女流のあーってさけぶやつを思い出すw。
0029デフォルトの名無しさん
2006/03/30(木) 11:37:20俺なら>=使う
0030デフォルトの名無しさん
2006/03/30(木) 11:55:000031デフォルトの名無しさん
2006/03/31(金) 22:27:06http://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);
}
0032デフォルトの名無しさん
2006/03/31(金) 22:30:320033デフォルトの名無しさん
2006/03/31(金) 23:41:25sizeof(char* )== 4
sizeof(char*[3])== 12
だから12増えるのが正解だろ。
0034デフォルトの名無しさん
2006/03/32(土) 00:18:13ありがとうございました。やっと分かりました。
あとで、20ポイントつけておきますね。
0035デフォルトの名無しさん
2006/03/32(土) 01:41:120036デフォルトの名無しさん
2006/03/32(土) 23:59:380037せっ☆マ ◆wwwwWwWWWw
2006/04/05(水) 15:15:350038デフォルトの名無しさん
2006/04/05(水) 22:39:450039デフォルトの名無しさん
2006/04/08(土) 19:25:54まとめサイト欲しい
0040デフォルトの名無しさん
2006/04/08(土) 19:32:57ttp://cm.xrea.cc/
0041デフォルトの名無しさん
2006/04/09(日) 00:07:50じつに素晴らしい
0042デフォルトの名無しさん
2006/04/09(日) 00:19:28double 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とのリンクが必要。
0043デフォルトの名無しさん
2006/04/09(日) 23:47:28int 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になりたい。
0044デフォルトの名無しさん
2006/04/10(月) 11:38:484 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
の問題で誤答が出ました。
0045デフォルトの名無しさん
2006/04/10(月) 18:15:37GJ!
0046デフォルトの名無しさん
2006/04/11(火) 19:11:53#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);}
0047デフォルトの名無しさん
2006/04/11(火) 22:23:27入力が正規な問題かどうかを判定するルーチンいれられません?
現状だと1を81個でも(そのまんまになるが)解答として出力されるので。
0048デフォルトの名無しさん
2006/04/12(水) 16:36:52解答をリダイレクトすると 0x00 が出力されてるので
printf("%d%c",a[i],i%9?32:10);
の方がいいかも。
複数解答があるときは行をあけて欲しいなぁとか。
すでに7行以下だと最適化するのもむなしいなー。
0049デフォルトの名無しさん
2006/04/13(木) 23:15:08int 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行きってて微妙だからなんか別のものを組もうかなぁ。
0050デフォルトの名無しさん
2006/04/14(金) 10:39:22あ、生成と解答をまとめると結構ハードル高くなるかな?
0051デフォルトの名無しさん
2006/04/15(土) 02:15:07初代スレのWindows関連は面白かったから、ああいうのでなんかお題プリーズ。
0052デフォルトの名無しさん
2006/05/07(日) 16:27:060053デフォルトの名無しさん
2006/05/10(水) 00:45:47大きい■をクリックで、下のボックスに入力した色が塗られる(各色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>
0054デフォルトの名無しさん
2006/05/10(水) 04:01:31少しインターフェースが違っているが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()}">出力
0055デフォルトの名無しさん
2006/05/11(木) 00:06:33来てあれ書いてた頃が懐かしくなったですよ。
・・いまだに7行は達成できないんだけどorz
#それどころか、会社入ってから書かされるプログラムは肥大化して行くばかり
0056デフォルトの名無しさん
2006/05/11(木) 01:45:24詰め込みコードは向かないし、他の人がコード見る場合があれば迷惑だよ
だから、行数が増えるのは別に悪い事じゃない。
#短く分かり易く書けるのに、無意味に長く難しく書くのも迷惑ダガナー
0057デフォルトの名無しさん
2006/05/11(木) 22:54:48大学の課題提出とか無意味に七行化しちゃうよ
0058デフォルトの名無しさん
2006/05/11(木) 23:46:080059デフォルトの名無しさん
2006/05/12(金) 00:15:400060デフォルトの名無しさん
2006/05/16(火) 15:46:12これ、トリッキーの1本人?それとも壮大なパクリ?
0061デフォルトの名無しさん
2006/05/16(火) 17:55:352chって文字が・・・
多分パクリ
0062デフォルトの名無しさん
2006/05/16(火) 18:30:46Part1の32で
> (関東など一部の地域での)テレビの2ちゃんねるシミュレータ、
> すなわち砂嵐シミュレータを作ってみました。ざーっていうあれです。音は鳴らないけど。
とあるから、パクリの証拠ではないんじゃない?
0063デフォルトの名無しさん
2006/05/17(水) 00:54:35トリッキーの1さんっぽい気はする。
経歴みても頭良さそうだし。
0064デフォルトの名無しさん
2006/05/17(水) 03:16:25確かに、1さんかもしれんな
0065デフォルトの名無しさん
2006/05/18(木) 23:24:04イミフWWWウハWWWWオkWWWW
ウェウェWWWWWWW
0066デフォルトの名無しさん
2006/05/19(金) 17:49:30コピーしてテキストエディタに貼付けて拡張子.comで保存
但し2chビューア等には、ご丁寧にも
半角スペースみたいな記号を
コピー時に&表記に変換したりする機能があったりするので
出来れば普通のブラウザからコピーを推奨
0068デフォルトの名無しさん
2006/05/19(金) 21:30:54空白行?
0069デフォルトの名無しさん
2006/05/19(金) 22:14:040070デフォルトの名無しさん
2006/05/19(金) 22:39:38二行目
> フフフフフフフフフフフフケタタイ カ サョo3レS]サ」J3レセ -ク$$Pクヘハ3チP_SXイミフWWWウハWWWWオkWWWWイ オタP[%
五行目 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ーA3チエ^PUSVRRーハ3チエ PウェウェWWWWWWW3ター"ムネヘミT]ク&&2タムネ3ノア。3メ3ロSSヘミ^_ク@QムタPPヌ゚%
~~~~~~~~~~~~~~~~~
0071デフォルトの名無しさん
2006/05/19(金) 23:24:49作者乙
0072デフォルトの名無しさん
2006/05/19(金) 23:55:08死ね
0073デフォルトの名無しさん
2006/05/23(火) 08:28:49プログラムングとは言えないんじゃね?
0074デフォルトの名無しさん
2006/05/23(火) 08:41:540075デフォルトの名無しさん
2006/05/23(火) 10:20:29連投対策(同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]).")");}?>
0076デフォルトの名無しさん
2006/05/23(火) 18:25:510077デフォルトの名無しさん
2006/05/23(火) 18:31:57PHPは関数名が長いね…
縮め、改行入力阻止、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]).')';}?>
0078デフォルトの名無しさん
2006/06/29(木) 14:59:100079デフォルトの名無しさん
2006/07/18(火) 21:50:290080デフォルトの名無しさん
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"); }
}
0081デフォルトの名無しさん
2006/08/19(土) 15:58:18互換性のないように作ってあるので、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>
0082デフォルトの名無しさん
2006/08/19(土) 16:15:30だんだん多く速くなるあたり職人芸だな
0083デフォルトの名無しさん
2006/08/28(月) 21:02:170084デフォルトの名無しさん
2006/09/29(金) 15:58:310085デフォルトの名無しさん
2006/10/09(月) 16:07:240086デフォルトの名無しさん
2006/10/10(火) 20:06:29perlでモジュールを使わずに7行でRSSリーダー(RSS to html)を作れ
LWP::Simpleも使わずに7行はやっぱり無理か??
0087デフォルトの名無しさん
2006/10/10(火) 20:13:20008886
2006/10/10(火) 20:24:20LWP::Simpleと、XML::RSSで作れたんだがモジュール無しは俺にはむりぽ
0089デフォルトの名無しさん
2006/10/10(火) 23:22:550090デフォルトの名無しさん
2006/10/10(火) 23:32:320091デフォルトの名無しさん
2006/10/10(火) 23:33:190092デフォルトの名無しさん
2006/10/11(水) 00:28:140093デフォルトの名無しさん
2006/10/12(木) 14:02:19Cで7行正規表現。どうやっても7行は無理だったw 腕に覚えのある奴がいたら、是非挑戦してみてくれ。
0094デフォルトの名無しさん
2006/10/12(木) 14:07:44正規表現って何をサポートすればいいんだ?
0095デフォルトの名無しさん
2006/10/12(木) 22:49:520096デフォルトの名無しさん
2006/10/12(木) 22:53:170097デフォルトの名無しさん
2006/10/14(土) 02:02:18どこまでの機能を詰め込めるかの問題になりそうだけど。
009897
2006/10/14(土) 02:04:30作るだけなら余裕だろうし。
どれだけ機能を削ったり詰め込めるかって感じ。
0099トリッキーの1
2006/10/14(土) 05:40:11>>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");}}}
0100トリッキーの1
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;}
0101デフォルトの名無しさん
2006/10/14(土) 10:22:42■ このスレッドは過去ログ倉庫に格納されています