七行プログラミング 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
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:420102デフォルトの名無しさん
2006/10/14(土) 11:17:280103デフォルトの名無しさん
2006/10/14(土) 14:51:060104デフォルトの名無しさん
2006/10/14(土) 14:53:220105デフォルトの名無しさん
2006/10/14(土) 15:15:5910行でもありえないくらい凄いよ…本当に7行なんて出来るんだろうか
0106デフォルトの名無しさん
2006/10/15(日) 01:37:570107トリッキーの1
2006/10/15(日) 02:06:53おお、その通りです。あのコードからよくわかりましたね!
DFAにすべきなんでしょうが、動けばいいやってことでNFAにしました。
でも現状では最初に適当に作りすぎたためにどんなに頑張っても9行なので、
行数を減らすことを前提に少し構造を変えないといけないかも…
等価なBNFで状態数の小さいものを書くことが出来ればなんとかなるのかな?
>>106
ヒントありがとうございます。
まだ小細工は全然していないのですが、数文字が重要になってきたら試してみます。
7行達成したらお披露目にきますね ノシ
0108デフォルトの名無しさん
2006/10/15(日) 12:12:36↓
int x=0;if(l){for(;
こういう積み重ねが大事なんだろうな。 人間ってすごいな。
0109デフォルトの名無しさん
2006/10/15(日) 13:28:33C++で出来るようになったのか
0110デフォルトの名無しさん
2006/10/15(日) 14:07:28C99なら可。
0111デフォルトの名無しさん
2006/10/15(日) 19:01:41とかあるけど……まぁそれでも7行には入りそうにないな。
もっと根本的な対策がいる。
0112デフォルトの名無しさん
2006/10/16(月) 01:50:150113デフォルトの名無しさん
2006/10/16(月) 06:58:49それは限りなく最後の手段。ASCII文字配列でないコンピュータで動かなくなる。
0114デフォルトの名無しさん
2006/10/16(月) 07:58:300115デフォルトの名無しさん
2006/10/16(月) 15:10:160116デフォルトの名無しさん
2006/10/16(月) 15:48:130117デフォルトの名無しさん
2006/10/16(月) 17:02:540118デフォルトの名無しさん
2006/10/17(火) 00:14:52ついに「ぴゅー太」と呼ぶ時代が来たようだな。 時代が追いついてきたな。
0119デフォルトの名無しさん
2006/10/17(火) 00:20:380120デフォルトの名無しさん
2006/10/17(火) 01:03:250121デフォルトの名無しさん
2006/10/27(金) 23:58:59現在,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>
0122デフォルトの名無しさん
2006/10/28(土) 01:02:08純粋な疑問なんだけど、importが許されるなら、そこで全部書けばいいんじゃない?
0123デフォルトの名無しさん
2006/10/28(土) 15:16:15「BCELを使った」が前提なだけだから、BECL以外をimportしちゃダメだろう。
もちろん他所で書いてimportして「1行で書きました! 7行以下だからいいよね!」
って主張するのは各人の勝手だとは思うけど、スルーされるか叩かれるだけじゃね?
0124デフォルトの名無しさん
2006/10/28(土) 16:08:230125デフォルトの名無しさん
2006/10/28(土) 19:48:05Cで #include <stdio.h> 書くのは許していいの?
0126デフォルトの名無しさん
2006/10/28(土) 20:19:46できなかったら半年ROMってろ。
0127デフォルトの名無しさん
2006/10/28(土) 20:44:460128デフォルトの名無しさん
2006/10/28(土) 23:04:28Javaでjava.*を使わなかったら認めてやるよ
0129デフォルトの名無しさん
2006/10/29(日) 00:44:160130デフォルトの名無しさん
2006/10/29(日) 01:32:42有名どころなら一部の人からは認められないだろうね。
正規表現をboost使って実装されてもハァ?だし。
0131デフォルトの名無しさん
2006/10/29(日) 03:21:160132デフォルトの名無しさん
2006/10/29(日) 03:25:400133sage
2006/11/09(木) 00:13:290134デフォルトの名無しさん
2006/11/11(土) 16:56:120135デフォルトの名無しさん
2006/11/27(月) 22:46:200136デフォルトの名無しさん
2006/11/27(月) 23:19:49BASICだが、独特の技術だった。
0137デフォルトの名無しさん
2006/11/27(月) 23:45:01ネタが無いなら対戦リバーシとかどう?
0138デフォルトの名無しさん
2006/11/27(月) 23:46:52俺が作るのかw
対戦ってコンピューターとの対戦だよな。
交互に入力する対戦でもいいか。
0139デフォルトの名無しさん
2006/11/27(月) 23:49:18x軸とy軸を入力するやつだった気が
0140デフォルトの名無しさん
2006/11/27(月) 23:58:450141デフォルトの名無しさん
2006/11/28(火) 00:08:24いろいろあったわ。
同じゲーム作ってもおもしろいんじゃないか?
ネタがあれば作る人はたくさん出てきそうだけどな
0142デフォルトの名無しさん
2006/11/28(火) 00:09:310143デフォルトの名無しさん
2006/11/28(火) 00:11:24データを外に持つのか。それはいいのか?
0144デフォルトの名無しさん
2006/11/28(火) 00:16:310145デフォルトの名無しさん
2006/11/28(火) 00:16:390146デフォルトの名無しさん
2006/11/28(火) 00:22:08評価は見てる人がそれぞれすれば良いんだから。
0147デフォルトの名無しさん
2006/11/28(火) 00:25:35明日な、明日。
0148デフォルトの名無しさん
2006/11/28(火) 00:31:34プログラム作ってる暇があったらちゃんとオナニーしろよな
0149デフォルトの名無しさん
2006/11/28(火) 00:33:27校則で禁止されています。
0150デフォルトの名無しさん
2006/11/28(火) 01:25:210151デフォルトの名無しさん
2006/11/28(火) 03:45:570152デフォルトの名無しさん
2006/11/28(火) 04:00:38でも、たった7行で逝けるなんて感動。
0153デフォルトの名無しさん
2006/11/28(火) 07:54:50初代のトリッキー1さんとかってまだ居るの?
5年前って凄いな。
0154デフォルトの名無しさん
2006/11/28(火) 08:06:290155デフォルトの名無しさん
2006/11/29(水) 03:25:040156デフォルトの名無しさん
2006/11/29(水) 11:02:47http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=javascript+sprintf&num=50
自前でいろいろ作ってる人はたくさんいるみたいだけど、
これを7行のプログラムにするのも楽しそうだなww
0157デフォルトの名無しさん
2006/11/30(木) 03:32:530158138
2006/12/02(土) 21:34:13COMとの対戦オセロ作ってるんですけど50行くらいあるんですよね。
月曜日まで待ってもらっていいですか?
0159デフォルトの名無しさん
2006/12/02(土) 22:01:460160デフォルトの名無しさん
2006/12/02(土) 22:52:59きたいあげ
0161138
2006/12/04(月) 12:06:280162デフォルトの名無しさん
2006/12/04(月) 13:22:050163デフォルトの名無しさん
2006/12/04(月) 14:07:25だから?
0164デフォルトの名無しさん
2006/12/04(月) 14:13:19せっかくオブラートに包んであげたのに…
既に素晴らしい作品があるから、二番煎じな上に14行なんて面白くもなんともない経過報告いらないですよ
0165デフォルトの名無しさん
2006/12/04(月) 14:49:11(^ω^;)
最近7行のプログラム出てこないから書いてるだけなんだけど
面白くないと思うなら面白いものを提示してくれ
0166デフォルトの名無しさん
2006/12/04(月) 17:44:52相殺法と呼ばれる詭弁術の典型例
やっていることがつまらないという評価に対してなんら反論できてない
■ このスレッドは過去ログ倉庫に格納されています