5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

七行プログラミング

1 :デフォルトの名無しさん:2001/03/10(土) 09:09
海外のプログラマーが、たったの七行足らずで
DVDのプロテクトを解除するプログラムを作成!
我々も負けてはいられません!

ルール:七行なら言語は問いません。では、どうぞ!

867 :デフォルトの名無しさん:02/04/07 05:19
がいしゅつ?

http://www.geocrawler.com/archives/3/2311/2002/2/200/7793896/ から
/*****************************************************************************
Decode DVD's in a few lines of C .....
******************************************************************************/
/* efdtt.c Author: Charles M. Hannum <<EMAIL: PROTECTED>> */
/* */
/* Usage is: cat title-key scrambled.vob | efdtt >clear.vob */

#define K(i)(x[i]^s[i+84])<
unsigned char x[5],y,z,s[2048];main(n){for(read(0,x,5);read(0,s,n=2048);write(1
,s,n))if(s[y=s[13]%8+20]/16%4==1){int i=K(1)17^256+K(0)8,k=K(2)0,j=K(4)17^K(3)9
^k*2-k%8^8,a=0,b=0,c=26;for(s[y]-=16;--c;i/=2,j/=2)a=a*2^i&1,b=b*2^j&1;for(j=
127;++j<n;c=z+c>y)a^=a>14,a=a>8^(y=a^a*8^a<6)<9,b=b>8^(z=b^b/8^b>4^b>12)
<17,i=s[j],i="7Wo~'G_\216"[i&7]+2^"cr3sfw6v;*k+>/n."[i>4]*2^i*257/8,s[j]=i^(i
&i*2&34)*6^z+c+~y;}}



868 :デフォルトの名無しさん:02/04/07 09:39
暇つぶしに上のソースを眺めてみたんだが、得体の知れないとこを見つけてしまった。
知ってる奴がいたら教えてくれ。
上のソースで「i>4」となっている所って、16バイトの配列の添字に1ビット分しか
使用していないみたいなんだけど、どーして? i>>4 の typo ?

869 :857:02/04/07 11:51
>>866
試したんだけど自分のPerl 5.6だとこう修正しないと動かなかったYO ヽ(`Д´)ノ
でも5行は変わらず。後半3行はもったいないけど、まぁ4行は流石に無理だよね

sub u{@b[$l,$k]=@_}sub v{$b[$v=$_[0]]}sub w{'.'eq&v}$y=$c=0;$l=12;$k=19;$o='#'x
10 ."\n";$m='.'x8;@b=split'',$o.("#$m#\n"x8).$o;while(@n=(-1,11,-11,1,1,-11)){u
"P","E";print@b,"YOU:$y\nCOM:$c\n";exit if$l==$k||$y+$c>61;u" "," ";$m=<>%5||
exit;$y++if'#'ne v($l+$n[$m-1])&&w$l=$v;w($k=int rand 4<3&&(w$k-1or w$k+1or w
$k-11or w$k+11)?$v:$k+(v($k+($d=$n[int rand 6]))eq'#'?-$d:$d))&&$c++if$l!=$k}

870 :デフォルトの名無しさん:02/04/07 13:54
全行きっちり使い果たして>>869から-5bytes

sub u{@b[$l,$k]=@_}sub v{$b[$v=$_[0]]}sub w{'.'eq&v}$y=$c=0;$l=12;$k=19;$o='#'x
10 ."\n";$m='.'x8;@b=split'',$o.("#$m#\n"x8).$o;while(@n=(-1,11,-11,1,1,-11)){u
"P","E";print@b,"YOU:$y\nCOM:$c\n";exit if$l==$k||$y+$c>61;u" "," ";$y++if'#'ne
v($l+$n[($m=<>%5||exit)-1])&&w$l=$v;w($k=int rand 4<3&&(w$k-1||w$k+1||w$k-11||w
$k+11)?$v:$k+(v($k+($d=$n[int rand 6]))eq'#'?-$d:$d))&&$c++if$l!=$k}

871 :デフォルトの名無しさん:02/04/07 14:04
素朴な疑問なんですが、

$a=$b?$c:-$c; # $bが真のとき $a=$c, $bが偽のとき $a=-$c

こういうロジック部分を1byteでも縮めて書けないですかね?

872 :869:02/04/07 14:44
>>870
それだとオリジナルプログラムの意味が違ってきちゃう ヽ(`Д´)ノ

> rand 4<3&&(w$k-1||w$k+1||w$k-11||w$k+11)

の部分が正しく動かない。rand 4<3となってる3を4にして、敵の挙動を比較してみて
よ。気持ちはわかるけど最低限次のように書く必要が(今のところ)ある。

> rand 4<3&&(w$k-1or w$k+1or w$k-11or w$k+11)

873 :870:02/04/07 14:58
>>872
スマソ。実をいうと全くのPerl初心者です。
or と || は同値だと思ってました。

874 :デフォルトの名無しさん:02/04/07 20:56
>>871
そういう局所的な短縮ができる例はあまり無いだろ

875 :デフォルトの名無しさん:02/04/07 21:15
Private Declare Function GetAsyncKeyState% Lib "user32" (ByVal k&)
Private Declare Function GetTickCount& Lib "kernel32" ()
Private Declare Function BitBlt& Lib "gdi32" (ByVal a&,ByVal x&,ByVal y&,ByVal w&,ByVal h&,ByVal b&,ByVal c&,ByVal d&,ByVal r&)
Private Sub Form_Paint()
g=32768:Me.Cls:Me.ScaleMode=3:Me.Scale (0,0)-(320,280):Me.Line (0,0)-(320,30),_
g,BF:Me.Line (0,250)-(320,280),g,BF:Randomize
a:
y=140:Do:DoEvents:If GetTickCount()-t<15 Then GoTo a:
i=i+1:If i <= 50 Then y=140:b=0:c=0:d=30:e=d
r=r+1:j=j+1:f=f+1:h=h+1:t=GetTickCount()
BitBlt Me.hDC,0,0,319,280,Me.hDC,1,0,vbSrcCopy
If GetAsyncKeyState(vbKeyEscape) Then End
If GetAsyncKeyState(vbKeySpace) Then c=c+2:k=c/40*1.5:b=b+k Else c=c-2:_
k=c/40*1.5:b=b+k
y=y-b:If f=100 Then e=d:d=Int(Rnd()*40)+20:f=0
l=(d-e)/100*f+e:Me.Line (319,0)-(320,l),g,BF
Me.Line (319,220+l)-(320,280),g,BF:p=150-Int(i/80):If p<30 Then p=30
If h=p Then s=Int(Rnd()*130)+l
If h>p Then Me.Line (319,s)-(320,s+90),g,BF
If h>p+8 Then h=0
If Point(160,y)=g Then MsgBox r:Form_Paint
If Point(161,y)=g Then MsgBox r:Form_Paint
If Point(162,y)=g Then MsgBox r:Form_Paint
Me.Line (160,y)-(162,y+2),vbWhite,BF:If j=2 Then j=0:Me.Caption="Score :" & r _
& " pts."
Loop
End Sub

VBだと全然縮まんない。1236バイト。よくあるゲームです。
鬱だ死のう

876 :デフォルトの名無しさん:02/04/07 21:28
↑:Spaceキーで上に上がります。Escで終了です。

877 :デフォルトの名無しさん:02/04/07 21:39
#!/usr/bin/perl
open(A,"+<a.log");$a=<A>;++$a;seek(A,0,0);print A $a;
print"Content-type: text/html\n\n";print $a;exit;

もとが短いから

878 :デフォルトの名無しさん:02/04/07 21:40
そういえばa.log用意しておいて下さい

879 :853:02/04/08 01:54
しつこいがパックマンを一から作り直してみた。
操作方法は上のと一緒。

Usage: perl pacman map.txt

sub u{$m[$_[0]]=$_[1]}sub w{$_[0]+=$c if$_[1]==1&&$_[0]%$c==1;$_[0]-=$c if$_[1]
==4&&$_[0]%$c==0;$m[$_[0]+$n[$_[1]]]eq'#'or$_[0]+=$n[$_[1]]}@e=(25,45,439,459);
$p=357;@g=('.')x4;@m=('',map{chomp;split//}<>);$c=23;$l=21;sub e{exit}while(@n=
(0,-1,$c,-$c,1)){u$p,'P';u$e[$_],'E'for 0..3;$e=grep/\./,@m;print$m[$_],($_%$c?
'':"\n")for 1..@m;print"REST:$e\n> ";e if!$e;$p==$_&&e for @e;u$p,' ';u$e[$_],
$g[$_]for 0..3;$g=<>%5||e;w($p,$g);for(0..3){$p==$e[$_]&&next;w($e[$_],1+int
rand 4);$g[$_]=$m[$e[$_]]}}

---map.txt----
#######################
#..........#..........#
#.###.####.#.####.###.#
#.....................#
#.###.#.#######.#.###.#
#.....#....#....#.....#
#####.#### # ####.#####
#.# #.#
#####.# ####### #.#####
. # # .
#####.# ####### #.#####
#.# #.#
#####.# ####### #.#####
#..........#..........#
#.###.####.#.####.###.#
#...#.............#...#
###.#.#.#######.#.#.###
#.....#....#....#.....#
#.########.#.########.#
#.....................#
#######################


880 :853:02/04/08 07:12
ちょこっと改良。
http://boobar.hoops.ne.jp/pacmaso.tar.gz
まだ余裕あるんで、パワーエサ付けるなり敵のルーチンいぢるなり、
他言語でやるなり、よろ。

881 :SYN ◆mMJ0UaoA :02/04/11 05:21
7行を遥かにオーバー(13行)しているSHA1です。誰か最適化して〜。言語はVC++。

#include <string>
typedef size_t D;typedef char C;C z,y,i,b,n=0,c[8];D l=0,h=0,*p,B[16],W[80],I[5
]={0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0},H[85];E(C*d,C*s){z=4
;while(z--)*d++=*(s--+3);}D R(D a,D s){return(a<<s)|(a>>32-s);}X(D k){*p+=R(p[1
],5)+p[5]+W[i]+k;p[2]=R(p[2],30);p--;}Y(D k){*p=p[2]^p[3]^p[4];X(k);}G(){for(i=
0;i<16;i++)E((C*)&W[i],(C*)&B[i]);for(i=16;i<80;i++)W[i]=R(W[i-3]^W[i-8]^W[i-14
]^W[i-16],1);for(i=0;i<5;i++)H[80+i]=I[i];p=&H[79];for(i=0;i<20;i++)*p=(p[2]&(p
[3]^p[4]))^p[4],X(0x5a827999);for(i=20;i<40;i++)Y(0x6ed9eba1);for(i=40;i<60;i++
)*p=(p[2]&(p[3]|p[4]))|(p[3]&p[4]),X(0x8f1bbcdc);for(i=60;i<80;i++)Y(0xca62c1d6
);for(i=0;i<5;i++)I[i]+=p[i+1];}L(C c){l+=8;if(!l)h++;*((C*)B+n)=c;n++;if(!(n&=
63))G();}main(C a,C**v){FILE*f=fopen(v[1],"rb");while(fread(&b,1,1,f))L(b);E(c,
(C*)&h);E(c+4,(C*)&l);L(128);while(n!=56)L(0);y=8;while(y--)L(c[7-y]);z=5;while
(z--)printf("%08x",I[4-z]);}


882 :デフォルトの名無しさん:02/04/11 21:06
>>881
小手先の技で70字ちょい削減…っつーか改悪しまくっちゃった。スマソ。

#include <stdio.h>
typedef size_t D;typedef char C;C z,i=0,n=0,c[8];D*p,l=0,h=0,B[16],W[80],H[85],
I[]={0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0};E(C*d,C*s){for(z=4
;z--;)*d++=*(s--+3);}D R(D a,D s){return a<<s|a>>32-s;}L(C c){(*((C*)B+n++)=c,l
+=8)?h:h++;if(!(n&=63)){for(;i<16;i++)E((C*)&W[i],(C*)&B[i]);for(;i<80;i++)W[i]
=R(W[i-3]^W[i-8]^W[i-14]^W[i-16],1);for(i=6;--i;)H[79+i]=I[i-1];for(p=H+79;i<20
;X(0x5a827999))*p=p[2]&(p[3]^p[4])^p[4];for(;i<40;)Y(0x6ed9eba1);for(;i<60;)*p=
p[2]&(p[3]|p[4])|p[3]&p[4],X(0x8f1bbcdc);for(;i<80;)Y(0xca62c1d6);for(i=6;--i;)
I[i-1]+=p[i];}}X(D k){*p+=R(p[1],5)+p[5]+W[i++]+k;p[2]=R(p[2],30);p--;}Y(D k){*
p=p[2]^p[3]^p[4];X(k);}main(D a,C**v){FILE*f=fopen(v[1],"rb");for(;(a=getc(f))+
1;)L(a);E(c,(C*)&h);E(c+4,(C*)&l);for(L(128);n-56;)L(0);for(a=8;a--;)L(c[7-a]);
for(a=5;a--;)printf("%08x",I[4-a]);}

883 :デフォルトの名無しさん:02/04/11 22:04
>>881
おいおい、本当に縮めるつもりがあるのか?
7行になったところを見たいだけちゃうんかと・・・

884 :843:02/04/12 09:44
僕が言うのもなんですが、
>>883さんに激しく同意。

前に作ったパックマンですが、
皆さんからヒントを得て、現在11行(W

885 :853:02/04/12 13:10
>>880
パワーエサ(つうかただの無敵)と上下通り抜け付けて 7 行。
http://boobar.hoops.ne.jp/pacmaso.tar.gz

($d,$p,@e)=split/,/,<>;chomp($_=<>);$c=@m=split//;@m=(0,@m,map{chomp;split//}<>
);sub u{@m[@e,$p]=@_}sub w{($g,*z)=@_;$z+=$g==1&&$z%$c==1?$c:$g==2&&$z+$c>$#m?-
$#m:$g==3&&$z-$c<1?$#m:$g==4&&$z%$c==0?-$c:0;$m[$z+$n[$g]]eq'#'or$z+=$n[$g]}@g=
('.')x@e;$t=0;while(@n=(0,-1,$c,-$c,1)){u(('E')x@e,'P');print$m[$_],($_%$c?'':"
")for 1..@m;$e=grep/[.o]/,@m;print"R:$e P:$t >";$e&&($t||$p!=$_)or exit for@e;u
@g,' ';$t--if$t;$g=<>%5||exit;w $g,*p;for(0..$#e){$p==($b=$e[$_])&&next;w 1+int
rand 4,*b while$b==$e[$_];$g[$_]=$m[$e[$_]=$b]}$t+=$d if$m[$p]eq'o'}

改行位置注意な。(w

886 :デフォルトの名無しさん:02/04/12 19:41
間違ってたらスマソ

#include <stdio.h>
char c[8];size_t I[]={0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0,z,
i,n,h,l,*p,B[16],W[80],H[85]};X(int k){*p+=p[5]+W[i++]+k+(p[1]<<5|p[1]>>27);2[p
--]=p[2]<<30|p[2]/4;}Y(){*p=p[2]^p[3]^p[4];}L(int x){l+=8;*((char*)B+n++)=x;if(
n&=63)return;for(i=0;i<16;i++)for(h=B[i],x=4;x--;h>>=8)W[i]=W[i]<<8|h&255;for(;
i<80;W[i++]=h)h=W[i-3]^W[i-8]^W[i-14]^W[i-16],h=h*2|h>>31;for(i=5;i--;H[80+i]=I
[i])p=H+79;for(i=0;i<20;X(0x5a827999))*p=(p[2]&(p[3]^p[4]))^p[4];for(;i<40;X(
0x6ed9eba1))Y();for(;i<60;X(0x8f1bbcdc))*p=(p[2]&(p[3]|p[4]))|(p[3]&p[4]);for(;
i<80;X(0xca62c1d6))Y();for(i=5;i--;I[i]+=p[i+1]);}main(){while(~(h=getchar()))L
(h);for(h=l,z=4;z--;h>>=8)c[4+z]=h;for(L(128);n<56;L(0));for(z=8;z--;L(c[7-z]))
;for(z=5;z--;printf("%08x",I[4-z]));}


887 :縮め中毒患者:02/04/12 23:58
>>883
プログラムのネタであれば何でもいい
とにかく縮められるものを come on !

888 :デフォルトの名無しさん:02/04/13 00:52
SHA1触ってみたんだけど、
全然ちぢまねえよマジで

889 :デフォルトの名無しさん:02/04/13 07:54
ああ

890 :デフォルトの名無しさん:02/04/13 08:03
いい

891 :デフォルトの名無しさん:02/04/13 13:13
うう

892 :デフォルトの名無しさん:02/04/13 15:54
ええっ!?

893 :デフォルトの名無しさん:02/04/13 15:57
おお〜☆

894 :S:02/04/13 22:13
JavaScript スロットゲーム
現在9行ちょい。7行は容易?

<body onKeyDown=K=event.keyCode><form name=a><input name=b></form><script>R=7;P
=45;C=[];D=document;S="7□=○∴|¥$";A=[0x3EE2E4CC,0x1DCC2C65,0x385CD9A0];T
=[100,5,10,15,20,30,45,60];function Y(){D.a.b.value=P;if(K==13){R>>=1;if(!R){o=
A[0]>>3&7;if(o==(A[1]>>3&7)&&o==(A[2]>>3&7)){alert("賞金 "+T[o]);P+=T[o]}else{
alert("残念");if(P<5){alert("OVER");return}}P-=5;R=7}K=0}for(i=0;i<3;C[i]=A[i++
])if(R&(4>>i))A[i]=A[i]>>27|(A[i]&0x7FFFFFF)<<3;for(i=0;i<3;i++)for(j=0;j<3;C[j
]=B<<27|C[j++]>>3)D.all["F"+(i*3+j)].innerHTML=S.charAt(B=C[j]&7);setTimeout(Y,
99);}for(K=i=0;i<9;)D.write(i%3?"":"<br>","<tt id=F"+i+">",i++," </tt>");for(i=
0;i<8;)D.write("<br><tt>   ",S.charAt(i)," : ",T[i++]);D.a.b.value=P;Y()
</script>


895 :S ◆Q14CxNhI :02/04/13 22:20
<<894

896 :S ◆Q14CxNhI :02/04/13 22:34
<<894
遊び方:
リターンキーで1カラムずつ停止、中央を揃えてください

897 :S ◆Q14CxNhI :02/04/13 22:57
ドラムの配置がダメダメでした。反省。
ついでにちょっと縮めました。

<body onKeyDown=K=event.keyCode><form name=a><input name=b><script>T=[100,5,10,
15,20,30,P=45,60];A=[0x16E29519,0x1DCC2E65,0x384CD988];S="7□=○∴|¥$";R=7
C=[];D=document;function Y(){D.a.b.value=P;if(K==13){R>>=1;if(!R){o=A[0]>>3&7;
if(o==(A[1]>>3&7)&&o==(A[2]>>3&7))alert("賞金 "+T[o]),P+=T[o];else{alert("残念"
);if(P<5){alert("OVER");return}}P-=5;R=7}K=0}for(i=0;i<3;C[i]=A[i++])if(R&4>>i)
A[i]=0x3FFFFFF8&A[i]<<3|A[i]>>27;for(i=0;i<3;i++)for(j=3;j--;C[j]>>=3)D.all["F"
+(i*3+j)].innerHTML=S.charAt(B=C[j]&7);setTimeout(Y,99);}for(K=i=0;i<9;)
D.write(i%3?"":"<br>","<tt id=F",i++,"> </tt>");for(i=8;i--;)
D.write("<br><tt>   ",S.charAt(i)," : ",T[i]);Y()</script>


898 :デフォルトの名無しさん:02/04/14 00:00
>>897
一列目が揃ったけど、結果は「残念」でした。報告。

899 :S ◆Q14CxNhI :02/04/14 00:35
>>898
現在判定しているのは、真ん中の列だけです。
全列を対象とした方が良いですかね?

900 :S ◆Q14CxNhI :02/04/14 00:37
「列」ではなくて「行」ですね。鬱だ・・・。
テストプレイのときは、setTimeout(Y,99) を 300 くらいにしてみてください。

901 :S ◆Q14CxNhI :02/04/14 00:51
<body onKeyDown=K=event.keyCode><form name=a><input name=b><script>T=[100,5,10,
15,20,30,P=45,60];A=[0x16E29519,0x1DCC2E65,0x384CD988];S="7□=○∴|¥$";R=7
function Y(){D.a.b.value=P;if(K==13){R>>=1;if(!R){o=A[0]&56;if(o-(A[1]&56)||o-(
A[2]&56)){alert("残念");if(P<5){alert("終了");return}}else alert("賞金 "+T[o>>=
3]),P+=T[o];P-=5;R=7}K=0}for(i=0;i<3;C[i]=A[i++])if(R&4>>i)A[i]=A[i]%(1<<27)<<3
|A[i]>>27;for(i=0;i<9;C[i%3]>>=3,i++)D.all["F"+i].innerHTML=S.charAt(C[i%3]&7);
setTimeout(Y,99)}D=document;for(K=i=0;i<9;)D.write(i%3?"":"<br>","<tt id=F",i++
,"> </tt>");for(i=8;i--;)D.write("<br><tt>   ",S.charAt(i)," : ",T[i]);C=[]
Y()</script>


902 :デフォルトの名無しさん:02/04/14 02:04
>>910の人、新スレ立ててね。
>>920の人、このスレの名作をまとめてね

903 :デフォルトの名無しさん:02/04/14 03:12
名作候補作品、勝手に選択
選定に当たっては、7行達成を厳格なルールとしました
>>52>>89
>>101>>105>>125>>150>>153>>161>>167
>>319>>320>>337(>>372)>>397
>>402>>428>>430>>494
>>526
>>612>>631>>655
>>745>>753>>770>>774>>798
>>822>>839>>842>>880

904 :デフォルトの名無しさん:02/04/14 04:09
初参加。カレンダ生成プログラムです。多分もっと縮められると思います。
使い方:a.exe 月 年(4桁)

#include <stdio.h>
#include <stdlib.h>
int i=0,d,y,m;void c(int s,int a){while(i<s)printf(" "),i++;for(i=1;i<=a;i++)
printf("%3d%s",i,((s+i)%7)?"":"\n");puts("");}int l(){return((y%400==0)?1:(0==y
%100)?0:(y%4==0));}int w(){return y-=m<3,(y+y/4-y/100+y/400+".#&%(#&($')%'"[m]-
34)%7;}int main(int h,char *v[]) {y=atoi(v[2]);m=atoi(v[1]);d=".&#&%&%&&%&%&"[m
]-7+((m-2)?0:l()&1);printf("%11d %4d\n Su Mo Tu We Th Fr Sa\n",m,y);c(w(),d);}


905 :853:02/04/14 06:11
同じ軸上に居たら敵が追いかけてくるよう改良。
http://boobar.hoops.ne.jp/pacmaso.tar.gz

($n,$p,@e)=split/,/,<>;$c=@m=split//,<>;push@m,map{split//}<>;sub w{(*z,$g)=@_;
$z+=(0,!($z%$c)?$c-1:0,$z+$c>$#m?-$#m-1:0,$z-$c<1?$#m+1:0,$z%$c==$c-2?-$c+1:0)[
$g];$m[$z+$n[$g]]eq'#'or$z+=$n[$g]}sub u{@m[@e,$p]=@_}@n=($t=0,-1,$c,-$c,1);@g=
('.')x@e;while($m[$p]ne'o'or$t+=$n){u(('m')x@e,$d?'D':'C');$e=grep/[.o]/,@m,@g;
print@m,"R:$e P:$t >";$e&&($t||!$d)||exit;u @g,' ';w *p,<>%5||exit;for(@e){($w=
$_)==$p&&next;int$w/$c==int$p/$c&&w *w,$w<$p?4:1;$w%$c==$p%$c&&w *w,$w<$p?2:3;w
*w,1+int rand 4while grep$w==$_,@e;$_=$w}@g=@m[@e];$d=grep $p==$_,@e;$t--if$t}

この辺が限界かな?

906 :デフォルトの名無しさん:02/04/14 08:54
>903
をを、お疲れ。懐かしいね。
マインスイーパや砂嵐が無いんじゃない?

907 :903:02/04/14 17:01
候補にもれがあれば、追加よろしくです
あるいは、投票と考えればよいかな?

908 :904:02/04/14 22:44
バグ取り、圧縮して、月を英語名表示にしました。使い方は>>904と同じです。
※ASCIIコードに激しく依存。入力値チェック無しです。

<calender.c>-------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int i=0,y,m,s,d;main(int h,char **v){m=atoi(v[1]);y=atoi(v[2]);printf("%11s %4"
"d\n Su Mo Tu We Th Fr Sa\n","Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct"
"\0Nov\0Dec"+m*4-4,y);d=".&#&%&%&&%&%&"[m]-7+((m-2)?0:((y%400)?((y%100)?((y%4)?
0:1):0):1));s=(y-=m<3,(y+y/4-y/100+y/400+".#&%(#&($')%'"[m]-34)%7);while(i++<s)
printf("   ");for(i=1;i<=d;i++)printf("%3d%s",i,((s+i)%7)?"":"\n");puts("");}
-------------------------------------------------------------------------------


909 :デフォルトの名無しさん:02/04/15 00:03
[HTTP鯖] >>706 >>760 >>770
[DNA] >>762
[e] >>769
[mersenne twister] >>749(>>750 >>753)
[BMPGEN] >>775
[tar -xvzf] >>776
[蛇] >>792 >>798
[proxy] >>835(>>839)
[BBS] >>840 >>841 >>842 >>877
[pac-man] >>849 >>852 >>853 >>856 >>866 >>869(>>870) >>879 >>885 >>905
[calendar] >>904

[再帰アフォ] >>646
[BASIC(7行じゃないけど、感動的] >>448 >>497 >>498 >>510 >>511 >>514

910 :ヨ?リ^:02/04/15 00:04
[砂嵐] >>52 >>75 >>76 >>78 >>89
[ラスタスクロール] >>105 >>125 >>129
[インデント揃え] >>116(>>126 >>138) >>688
[圧縮] >>101 >>135 >>146 >>153(>>154) >>696 >>737 >>740 >>744
[倉庫番] >>118(>>120) >>150(>>148) >>179(>>180) >>774
[HTTPクライアント] >>161
[動画再生?] >>205
[レイトレ] >>170 >>209
[迷路(模様?)] >>283 >>285 (>>287) >>305
[ツール] >>319
[ライフゲェム] >>320 >>812 >>815(>>817 >>818) >>822
[オセロ] >>336 >>337 >>352 >>372
[四則演算] >>396(>>397) >>402 >>424 >>430


911 :デフォルトの名無しさん:02/04/15 00:05
本文が長すぎるって蹴られた・・・チクショー


[nCr(重複組み合わせ)] >>486
[BASE64] >>488 >>493 >>494
[マインスイーパ] >>385 >>537 >>540
[tic-tac-toe] >>336 >519 >>526
[high&low] >>530
[printf] >>425 >>428
[素因数分解] >>573(>>574)
[dump] >>609 >>612
[起動時間表示] >>623(>>624) >>625 >>627 >>630 >>631
[MIDIピアノ] >>687

912 :デフォルトの名無しさん:02/04/15 01:13
<<910
910は新スレ立てるそうです

913 :デフォルトの名無しさん:02/04/15 01:39
910はまとめてくれたから、スレ立ては>>920にお願いしようか。
それまでに誰かテンプレートまとめて。

914 :デフォルトの名無しさん:02/04/15 01:43
>>909-911
ありがとう、長くて探すきしなかったけどこれで一発だ。

915 : ◆tAdi.2WY :02/04/15 02:35
>>909 を見ていて、>>776 は tar -xvzfじゃなくて tar -xv だなあと思ったので…

#include <stdio.h> /* tar.gzアーカイブ内のファイルとディレクトリだけ展開する */
#include <zlib.h> /* zlib が必要。gcc -Wall -ansi -lz -o tar-xvzf tar-xvzf.c */
char c[512];int a=512,s,t,mkdir(const char*,int),strtol(const char*,char**,int)
,fileno(FILE*);void*p,*q,*r;void x(){fclose(p),p=NULL;}int main(int n,char**b){
r=stdin,q=n>1?gzopen(b[1],"rb"):gzdopen(fileno(r),"rb");while(q&&gzread(q,c,a)>
0)p?t-=s=t>a?a:t,fwrite(c,1,s,p),t?0:x():*c?puts(c),c[156]!=53?p=fopen(c,"wb"),
t=strtol(c+124,NULL,8),(p&&!t)?x():0:mkdir(c,511):0;return!q;}

tar-xvzf hoge.tar.gz か tar-xvzf < hoge.tar.gzで展開。
外部ライブラリに頼る時点でちょっと弱いかな。

916 :デフォルトの名無しさん:02/04/15 03:03
そろそろpart2突入ですか。次スレも良スレになることを願ってやみません。

917 :デフォルトの名無しさん:02/04/15 10:42
漏れの環境C++入ってないから、
始めのほうのC++のやつが見れん。
だれかコンパイルしたやつくれ〜。
つーかC++なのかも分からん。
とにかく実行してみたい。
お願いします。

    _
┌─┴┴─┐
│ 良 ス レ │
└─┬┬─┘
    ││ 
   ゛゛'゛'゛

918 :デフォルトの名無しさん:02/04/15 10:47
bccいれろや。

919 :917:02/04/15 11:30
>>918
そんなのがあるなんて知らなかった。
マジ、サンクス。

920 :デフォルトの名無しさん:02/04/15 12:12
七行プログラミング part2
http://pc.2ch.net/test/read.cgi/tech/1018840143/

921 :デフォルトの名無しさん:02/04/16 08:33
お疲れ。いいスレだった

922 :デフォルトの名無しさん:02/04/20 16:20
>>372
恐れ多く、申し訳ないけど、指摘させてください。。
オセロって先手●では???

923 :デフォルトの名無しさん:02/04/20 18:58
>>992
ttp://www.othello.org/nakaji/lesson/lesson/rulej.html
うむ。

924 :デフォルトの名無しさん:02/04/20 19:04
>922
画面を白黒反転すれば解決!w

925 :デフォルトの名無しさん:02/04/20 23:18
>>922
ソースの○●を●○に変えれば解決?

926 :デフォルトの名無しさん:02/04/20 23:42
>>922
ルールを変えれば解決・・・

927 :デフォルトの名無しさん:02/04/21 00:20
プラパズルNo5とかどうでしょうか。
全組み合わせを探し出し、できれば表示する。
ルール
正方形が5つ集まってできたコマが
12種類(5つの正方形を組み合わせて出きる全通りです)あります。
これを6*10マスに収まるように並べる並べ方をしらべます。
ちなみに組み合わせは全部で2339通りあります。
もちろんコードが短ければ短いほど、前途売りの検出が速ければ速いほど イイ! ってかんじで。

928 :デフォルトの名無しさん:02/04/21 00:22
このスレ終わってるから、ぜひ次スレで披露してください
http://pc.2ch.net/test/read.cgi/tech/1018840143/

929 :三村:02/04/29 22:00
終わってるのかよ!

930 :デフォルトの名無しさん:02/05/18 01:27
age

931 :デフォルトの名無しさん:02/06/05 21:56
sage

932 :デフォルトの名無しさん:02/06/30 11:40
もうそろそろ1000取り合戦だな。

933 :デフォルトの名無しさん:02/06/30 23:08
何だかパート2が荒れ出し模様


934 :hage:02/07/01 10:06
七行プログラムはpart2で終わりにしよう。
part1が良スレ過ぎたので、part2が糞スレに見える。
と、愚痴ってみるテスト。

935 :933:02/07/01 18:45
>>934
板全体から見ると、part2も悪くないんだけどね。
part3を作りたいと思わないのは、
激しく同意

936 :デフォルトの名無しさん:02/07/07 01:14
>>935
トリッキーすれも part2 無くして終わったし、さびしいね
7行part3 も作るだけ作ってみれば、ネタはあとから来るんじゃないかな、
と期待してみる

937 :933:02/07/07 02:09
>>936
そだね。最近はDCTとかで復活の兆しが。
ただ、単体では動かない七行プログラミングモジュールを集めて・・・、
という方向には賛同しかねるとか、言ってみるテスト

938 :936:02/07/10 21:38
>>937
同じく。モジュールを集めるのには、必ずしも賛成できません。
DCT や CRC のような単品でも十分実用(あるいは縮めが面白そう)ならばいいけど、
JPEG の全工程をモジュール化しても、それって意味あるのだろうかと。
お前単に長いプログラムを分割して持ってきただけじゃないかと、小一時間・・・

939 :デフォルトの名無しさん:02/07/13 21:35
まだ生きてたんだ!!このスレッド。
去年の夏頃読んでたんだけど、無くなったのかと思ってた。

940 :デフォルトの名無しさん:02/07/14 02:08
>>939
旧スレをageるのはどうかと・・・

941 :デフォルトの名無しさん:02/07/14 03:38
>>939
去年の夏?! ちゃんと続きも読んでおけよ。

七行プログラミング part2
http://pc.2ch.net/test/read.cgi/tech/1018840143/

362 KB
■ このスレッドは過去ログ倉庫に格納されています

>>815(>>817 >>818) >>822
[オセロ] >>336 >>337 >>352 >>372
[四則演算] >>396(>>397) >>402 >>424 >>430
Hにわかには信じ難いけど…いや、冗談だよねそれ?冗談だと言ってくれ!俺そんなパティさま想像さえしたくないぞ!
パティさまは自分が作った人形に誇りがあるからそんなことはしない、しないはず!するわけないぞ! ワぁこんなお客様に言っても無駄なのは分かっているのですけどね。どうせ反省出来ないでしょうし。 >





















★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)