[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 16:01 / Filesize : 349 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

七行プログラミング part2



1 名前:デフォルトの名無しさん [02/04/15 12:09]
7行×79文字なら言語は問いません。
過去作品は>>2-5を参照。

■前スレ
pc.2ch.net/test/read.cgi/tech/984182993/

756 名前:デフォルトの名無しさん [02/09/14 14:39]
ファイラってできるかな?

757 名前:デフォルトの名無しさん mailto:sage [02/09/14 14:41]
俺主催囲碁プログラミングコンテスト スレより、13行囲碁
pc3.2ch.net/test/read.cgi/tech/1024024666/136-
おいお前ら、これを7行に縮めてください。

#include <stdio.h>
int w[4]={1,-1,12,-12},s,d,h[3],b[132];r(int a, int c){int z,i;b[a]|=8;s++;for
(i=0;i<4;i++){z=a+w[i];if(b[z]==0)d++;if(b[z]==c)r(z,c);}b[a]&=3;}v(int a,int
c){int z,i;b[a]=0;for(i=0;i<4;i++){z=a+w[i];if(b[z]==c)v(z,c);}}int t(int u){
int m,e,g,z,i,k;m=e=0;for(z=0;z<132;z++){k=g=0;if(b[z])continue;for(i=0;i<4;i++
){if(b[z+w[i]]==u){d=s=0;r(z+w[i],1);k+=(d==1)*s*300+(d==2)*s*300+(d==3)*s*20;
}if(b[z+w[i]]==0)k+=10;else g++;}if(g==4)continue;if(k>m){m=k;e=z;}}return e;}
char *p="・○● \n";int main(){int c=1,u=2,z,x,y,i;for(i=0;i<132;i++){if((i+1
)%12==0)b[i]=4;else if(i%12==0||i<12||(i+2)%12==0||i>120)b[i]=3;}for(;;){for(i
=0;i<132;i++)printf("%.2s",&p[b[i]*2]);if(c==1){scanf("%d %d",&x,&y);z=y*12+x;
if(b[z]){printf("Err\n");continue;}}else{if((z=t(u))==0){printf("ps\n");break;
}}b[z]=c;for(i=0;i<4;i++){if(b[z+w[i]]==u){d=s=0;r(z+w[i],u);if(d==0){h[c]+=s;
v(z+w[i],u);}}}d=0;r(z,c);if(d==0)break;u=c;c=3-c;}return 0;}

758 名前:デフォルトの名無しさん [02/09/14 14:46]
>>756>>757
ネタ来たーーーーーーあげ
でも囲碁はちょっと見ただけでも無駄が多い、10行くらいにはすぐなりそう

759 名前:オマケ月 mailto:sage [02/09/14 16:08]
#include <stdio.h>
main(){printf("ファイア\nファイラ\nファイが!");}

760 名前:デフォルトの名無しさん mailto:sage [02/09/14 16:09]
>>759
やってくれたね...

761 名前:758 mailto:sage [02/09/14 19:08]
>>757
ちょっとだけ縮めてみた。十分7行になりそうだ。

int w[4]={1,-1,12,-12},s,d,h[3],b[132],c=1,u=2,x,y,i;r(a,c,f){int z,i;f?b[a]=0:
(b[a]|=8,s++);for(i=4;i--;b[z]==c&&r(z,c,f))d+=!b[z=a+w[i]];!f?b[a]&=3:0;}t(u){
int m,e,g,z,i,k;for(m=e=z=0;z<132;z++)if(k=g=0,!b[z]){for(i=4;i--;b[y]?g++:(k+=
10))if(b[y=z+w[i]]==u)d=s=0,r(y,1,0),k+=(d==1)*s*300+(d==2)*s*300+(d==3)*s*20;
if(g!=4)k>m?m=k,e=z:0;}return e;}char*p="・○● \n";main(z){for(i=132;i--;i%12
==11?b[i]=4:0)if(i%12==0||i<12||(i+2)%12==0||i>120)b[i]=3;for(;;){if(c==1){for(
i=10;i<119;)printf("%.2s",&p[b[i++]*2]);scanf("%d %d",&x,&y);if(b[z=y*12+x]){
puts("Err");continue;}}else if(!(z=t(u))){puts("ps");break;}b[z]=c;for(i=4;i--;
d=0)if(b[x=z+w[i]]==u)if(d=s=0,r(x,u,0),!d)h[c]+=s,r(x,u,1);r(z,c,0);if(!d)
break;u=c;c=3-c;}}

762 名前:758 mailto:sage [02/09/14 23:48]
>>761
現在9行。ゲーム性の向上を目指し、
終了時にアゲハマを表示し、余分な改行を消しました。

int w[]={1,-1,12,-12},s,d=1,h[3],b[132],c=1,u=2,y,i=132,m,g,e,k;r(a,c,f,z,i){b[
a]=!f?s++,b[a]|8:0;for(i=4;i--;b[z]==c&&r(z,c,f))d+=!b[z=a+w[i]];!f?b[a]&=3:0;}
main(z){for(;i--;i%12==11?b[i]=4:0)i%12==0||i<12||i%12==10||i>120?b[i]=3:0;for(
;d;){if(c==1){for(i=10;i<120;)printf("%.2s",&("・○● \n"[b[i++]*2]));if(scanf
("%d %d",&k,&y),b[z=y*12+k]&&puts("Err"))continue;}else{for(m=e=z=0;e<132;e++)
if(k=g=0,!b[e]){for(i=4;i--;b[y]?g++:(k+=10))b[y=e+w[i]]==u?r(y,1,d=s=0),k+=(((
d==1)+(d==2))*15+(d==3))*s*20:0;g!=4&&k>m?m=k,z=e:0;}if(!z&&puts("ps"))break;}b
[z]=c;for(i=4;i--;)b[k=z+w[i]]==u?r(k,u,d=s=0),!d?h[c]+=s,r(k,u,1):0:0;r(z,u=c,
d=0);c=3-c;}printf("%d,%d\n",h[1],h[2]);}

763 名前:デフォルトの名無しさん mailto:sage [02/09/15 00:34]
4行目のスペースが纏められちゃったので修正
;d;){if(c==1){for(i=10;i<120;)printf("%.2s",&("・○●  \n"[b[i++]*2]));if(scanf

764 名前:デフォルトの名無しさん mailto:sage [02/09/15 01:34]
>763
cはu^3で代用、それに伴いc==1→u-1等に変更
((d==1)+(d==2))→(d-1U<2)
i<12||略||i>120→i-12U>108||略
for(i=10;i<120;略&("・○● \n"[b[i++]*2)→for(i=9;i++<119;略"・○● \n"+b[i]*2



765 名前:囲碁スレ136 mailto:sage [02/09/15 07:04]
>>762
やるねぇ・・・。そうやって圧縮するのか。
再帰関数も1つになってるし。
しかしここからはつらそう。

766 名前:デフォルトの名無しさん mailto:sage [02/09/15 14:37]
>>759
printfって最後、\nしないと問題が出る環境なかった?
うろおぼえだけど

767 名前:デフォルトの名無しさん mailto:sage [02/09/15 14:39]
>>762 最初の盤作成部分
for(;i--;b[i]=z-11?z&&z-10&&i-12U<109?0:3:4)z=i%12;

768 名前:デフォルトの名無しさん mailto:sage [02/09/15 18:48]
囲碁8行(あと62-63文字)

int w[]={1,-1,12,-12},s,d=1,h[3],b[132],u=2,y,i=132,m,g,e,k;r(a,c,f,z,i){b[a]=!
f?s++,b[a]|8:0;for(i=4;i--;b[z]-c||r(z,c,f))d+=!b[z=a+w[i]];!f?b[a]&=3:0;}main(
z){for(;i--;b[i]=z-11?z&&z-10&&i-12U<109?0:3:4)z=i%12;for(;d;){for(i=9;i++<119;
)printf("%.2s",&("・○●  \n"[b[i]*2]));for(m=z=0;i--;g!=4&&k>m?m=k,z=i:0)for(k
=g=0,e=4*!b[i];e--;!b[y]?k+=10:g++)b[y=i+w[e]]==u?r(y,1,d=s=0),k+=((d-1U<2)*15+
(d==3))*s*20:0;if(u>1&&(scanf("%d %d",&k,&y),b[z=y*12+k]&&puts("Err")));else{if
(!z&&puts("ps"))break;for(i=4;i--;b[z]=u^3)b[k=z+w[i]]==u?r(k,u,d=s=0),!d?h[u]
+=s,r(k,u,1):0:0;r(z,u^=3,d=0);}}printf("%d,%d\n",h[2],h[1]);}

769 名前:デフォルトの名無しさん mailto:sage [02/09/15 19:12]
printf("%.2s",&("・○● \n"[b[i]*2]));

printf("・\0○\0●\0 \0\n"+b[i]*3);
3文字か…


770 名前:デフォルトの名無しさん mailto:sage [02/09/15 19:25]
関数r内
b[a]=f?0:~b[a];s++;
for(i=4;i--;b[z]-c||r(z,c,f))d+=!b[z=a+w[i]];
b[a]^=!f*~0;
3文字?

771 名前:758 mailto:sage [02/09/15 21:20]
後34文字になりますた。

int w[]={1,-1,12,-12},s,d=1,h[3],b[132],u=2,y,i,m,g,e,k;r(a,c,f,z,i){b[a]=f?0:~
b[a];s++;for(i=4;i--;b[z]-c||r(z,c,f))d+=!b[z=a+w[i]];b[a]^=!f*~0;}main(z){for(
;d;){for(;i++<132;printf("・\0○\0●\0 \0\n"+(b[i]=z-11?z&&z-10&&i-12U<109?b[i
]:3:4)*3))z=i%12;for(m=z=0;i--;g!=4&&k>m?m=k,z=i:0)for(k=g=0,e=4*!b[i];e--;!b[y
]?k+=10:g++)b[y=i+w[e]]==u?r(y,1,d=s=0),k+=((d-1U<2)*15+(d==3))*s*20:0;if(u<2||
!(scanf("%d%d",&k,&y),b[z=y*12+k]&&puts("Err"))){if(!z&&puts("ps"))break;for(i=
4;i--;b[z]=u^3)b[k=z+w[i]]==u?r(k,u,d=s=0),!d?h[u]+=s,r(k,u,1):0:0;r(z,u^=3,d=0
);}}printf("%d,%d\n",h[2],h[1]);}

772 名前:囲碁スレ136 mailto:sage [02/09/15 21:47]
お前ら・・・すごいです(w
もはや暗号だな。

773 名前:デフォルトの名無しさん mailto:sage [02/09/16 00:14]
円周率を求める7行ってないの?もちろんエンドレスで。

774 名前:デフォルトの名無しさん mailto:sage [02/09/16 01:59]
>>773が作ってみるということでどうだっ!



775 名前:デフォルトの名無しさん mailto:sage [02/09/16 10:29]
エンドレスって正しい値を永遠にはきだし続けるって事か?
多倍長クラスとページングマネージャも書けと。
無理臭い

776 名前:デフォルトの名無しさん mailto:sage [02/09/16 20:15]
>>775
メモリさえあれば、数百万桁計算する程度なら7行でもできそうだ。
挑戦してみようかなぁ。

777 名前:デフォルトの名無しさん mailto:sage [02/09/16 20:52]
標準出力に10進数を一桁ずつ吐くだけだから
多倍長クラスはいらないのでは。
しかしアルゴリズムが分からない罠。
ttp://www.pluto.ai.kyutech.ac.jp/plt/matumoto/pi_small/_pi_small.html
たくさんあってどれが7行向きなのやら。

778 名前:デフォルトの名無しさん mailto:sage [02/09/16 22:37]
>>777
1桁ずつ計算する物じゃないぞ

779 名前:デフォルトの名無しさん [02/09/16 22:57]
>>778
一桁ずつできるけどね。やるかどうかは別として。

780 名前:デフォルトの名無しさん mailto:sage [02/09/17 01:26]
以下のコードをバイナリエディタで書いて prg.com で保存後 実行

B0 13 CD 10 C4 2F AA 11 F8 64 13 06 6C 04 EB F6

781 名前:デフォルトの名無しさん mailto:sage [02/09/17 04:39]
>>780
メガデモスレから持ってこないで下さい。(w
farb-rausch.de/prod.html

782 名前:デフォルトの名無しさん mailto:sage [02/09/17 15:39]
>>780
これ何?

783 名前:デフォルトの名無しさん mailto:sage [02/09/17 19:41]
>780の実効ファイル版ISHにしてみた。

<<< A.COM for MS-DOS ( use shift_jis ish ) [ 8 lines ] >>>
!!!&!!9Q!5"XRo"O"I->!C$oR6nt!&"HDm=NH,!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JF;v
!!!&!!9Q!5"XRo"O"I->!C$oR6nt!&"HDm=NH,!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JF;v
!!!&!!9Q!5"XRo"O"I->!C$oR6nt!&"HDm=NH,!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JF;v
%x/。」;掲僕ウFリ策ル」\EB機@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@q繆
。ツ0拆M3鐇Aェ物ォミ^2ンロCm@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@UR「
」\VG・ュッ、{ャナ^・ヨH*j8Le+フ「ワVe、錦ラ;サヌ,Kヤ省竿58h3Q筰ミ隹峻Sスヨアヘニ゙妹4\覬レメノレウh岻屁搶ワ
--- A.COM (8/8) ---


784 名前:デフォルトの名無しさん [02/09/17 20:25]
>>780
だれかこの動作をマジレスしてください。

メガデモスレと言われても、あまりこの板にはこないから。



785 名前:デフォルトの名無しさん mailto:sage [02/09/17 20:30]
>>784
自分でやればわかるよ

786 名前:デフォルトの名無しさん [02/09/17 20:31]
>>785
いや、なんか怖い…。

format cよりも怖いです。

787 名前:デフォルトの名無しさん mailto:sage [02/09/17 20:40]
>>786
www.google.co.jp/search?sourceid=navclient&hl=ja&q=%22B0+13+CD+10+C4+2F+AA+11+F8+64+13+06+6C+04+EB+F6%22
目がちかちかする。

788 名前:デフォルトの名無しさん [02/09/17 21:32]
>>787
噂の「ポケモンフラッシュ」みたいなやつですか?
グロよりも苦手なんでよかった。

789 名前:デフォルトの名無しさん mailto:sage [02/09/17 21:35]
>>788
見てみりゃわかる。無害。

790 名前:デフォルトの名無しさん [02/09/17 21:50]
<age>


791 名前:bloom [02/09/17 21:59]

www.leverage.jp/bloom/start/

792 名前:デフォルトの名無しさん [02/09/17 22:21]
>>789
ちょっと面白かった。
でもわずかにチカチカするのでちょっとだめかもw

フルスクリーンのせいでアプリをひとつ間違って閉じたのに気づかなかったぞゴルァ

793 名前:デフォルトの名無しさん mailto:sage [02/09/17 22:32]
つーか、Cなり何なりで、上のバイナリコードを吐き出すようにすれば、
もっと簡単に試したのではなかろうか。
main(){char data[]={...};fwrite(data,1,sizeof(data),stdout);}
みたく。

794 名前:デフォルトの名無しさん mailto:sage [02/09/17 23:42]
>>789
Win2k飛ばされますた
>>793
16バイトで出来てることに意味があるのでせう
逆アセンブルリスト見て嘆息



795 名前:デフォルトの名無しさん [02/09/18 16:11]
コードをアセンブラで書いて、インストラクションコードを
>>793みたいに文字列として埋め込むのはありでしょうか?
typedef int(*f)();
((f)"....")(); //呼び出し

796 名前:デフォルトの名無しさん mailto:sage [02/09/18 19:40]
>>795
良いと思うけど、普通は逆にオブジェクトコードが増えると思うよ

797 名前:デフォルトの名無しさん mailto:sage [02/09/18 19:40]
オブジェクトコード埋め込みの方が…ですね、スマソ

798 名前:トリッキーの1 mailto:sage [02/09/18 21:29]
ご無沙汰してました。相変わらず皆さん凄いですね。勉強になります。
近いところでは囲碁面白いですね。でも囲碁のルールが解らないので残念です。
>>771
半角スペース2個は全角1個にしないと、貼り付けるときに消えてしまいますよ
それと、「3,3:4,4:2,4:2,5:2,6:2,8」と入力すると相手の石の上に自分の石が来るけれど、
これは囲碁のルールで正しいんですか?

799 名前:デフォルトの名無しさん mailto:sage [02/09/18 22:39]
LZW系の展開・圧縮
使い方は>>752と同じ

同じ辞書を使い続ける6行版
int*Q,N[16384],S,T,U,V,F,G,P,C,X,Z;p(a,b){for(;b--;++S>7?putchar(T),S=T=0:0)T=T
+T|a>>b&1;}g(a){for(G=0;a--;G=G+G|V>>--U&1)!U?U=8,V=getchar():0;}a(){F<1<<12?1[
Q=N+F*4]=X,Q[2]=C,Q[3]=N[C*4],*Q=0,N[C*4]=F++:0;}r(x){p((x>256?r(N[x*4+2]),N[x*
4+1]:(X=x))-1,8);}main(c){for(G=F=257;G--;)1[Q=N+G*4]=G;for(--c?g(8),C=V+1:0;g(
c?8:12),c?C:~V;C=c?!Z?p(C,12),a(),X:Z:(G=X,r(Z<F?Z:C),Z<F||p(G-1,8),P++&&a(),Z)
)for(Z=c?X=V+1,N[C*4]:G;c*Z&&1[Q=N+Z*4]-X;Z=Q[3]);p(0,7);}

辞書が一杯になると再構築する7行版
int*Q,N[16384],S,T,U,V,F,G,P,C,X,Z;i(){for(G=F=257;G--;*Q=Q[2]=Q[3]=0)1[Q=N+G*4
]=G;}p(a,b){for(;b--;++S>7?putchar(T),S=T=0:0)T=T+T|a>>b&1;}g(a){for(G=0;a--;G=
G+G|V>>--U&1)!U?U=8,V=getchar():0;}a(){F<1<<12?1[Q=N+F*4]=X,Q[2]=C,Q[3]=N[C*4],
*Q=0,N[C*4]=F++:i();}r(x){p((x>256?r(N[x*4+2]),N[x*4+1]:(X=x))-1,8);}main(c){i(
);for(--c?g(8),C=V+1:0;g(c?8:12),c?C:~V;C=c?!Z?p(C,12),a(),X:Z:(G=X,r(Z<F?Z:C),
Z<F||p(G-1,8),P++&&a(),Z))for(Z=c?X=V+1,N[C*4]:G;c*Z&&1[Q=N+Z*4]-X;Z=Q[3]);p(0,
7);}

800 名前:デフォルトの名無しさん mailto:sage [02/09/18 22:54]
>>773
ほらよ。多少の誤差には眼をつぶれや。

#include <stdio.h> // printf()
#include <stdlib.h> // rand()
int main(){
printf( "3.1415926535897932384626433832795" ) ;
for (;;) printf( "%d",rand() ) ;
return 0 ;
}


801 名前:デフォルトの名無しさん mailto:sage [02/09/18 22:55]
後はランダムかよ

802 名前:デフォルトの名無しさん mailto:sage [02/09/18 23:08]
お題:素数列挙

803 名前:デフォルトの名無しさん mailto:sage [02/09/18 23:09]
p2pの七行があったらすごいよね。なんて言って見るテスト

804 名前:>>802 mailto:sage [02/09/18 23:15]
printf(char*,...);main(){int z,i=1;for(;z=i++;z?0:printf("%d,",i))while(i%z--);}

1文字オーバーなのは秘密だ。



805 名前:デフォルトの名無しさん mailto:sage [02/09/18 23:24]
>>802
外出だったりする

806 名前:デフォルトの名無しさん mailto:sage [02/09/18 23:32]
>>805
>>74 >>81やね

807 名前:デフォルトの名無しさん mailto:sage [02/09/18 23:37]
>>804
1文字縮めてみますた
printf(char*,...);main(){int z,i=1;for(;z=i++;z||printf("%d,",i))while(i%z--);}

808 名前:804 mailto:sage [02/09/18 23:53]
おぉ、さんきゅー!
そうか、|| か。なんかPerlっぽい。

809 名前:デフォルトの名無しさん mailto:sage [02/09/19 01:06]
>>807
gcc -ansi -pedantic だとprintf(char*,...)は通らず。
ANSI C forbids data definition with no type or storage class
printf()を削除すれば通るので、そっちの方がよい?

1文字縮めてみた。
printf(char*,...);main(z){int i=1;for(;z=i++;z||printf("%d,",i))while(i%z--);}

810 名前:デフォルトの名無しさん mailto:sage [02/09/19 01:14]
これではだめですかね。引き数なしで実行が条件ですが。
main(i,z){for(;z=i++;z||printf("%d,",i))while(i%z--);}

811 名前:デフォルトの名無しさん mailto:sage [02/09/19 01:22]
>>810
bcc32でも動きますね。しかもgccよりも速かった。

812 名前:デフォルトの名無しさん mailto:sage [02/09/19 01:29]
コンパイラを選ぶのはどうかと思う

813 名前:デフォルトの名無しさん mailto:sage [02/09/19 02:00]
>>810 Solaris cc, GNU gcc, Borland bcc32 でコンパイル・実行できますた。
>>807 上記すべてのコンパイラでprintfの宣言がおかしいといわれますた。
>>812 短くするためならコンパイラどころかアーキテクチャすら選択するのが最近の風潮らしいです。

814 名前:デフォルトの名無しさん mailto:sage [02/09/19 02:04]
>>803
p2pの何だ?



815 名前:デフォルトの名無しさん mailto:sage [02/09/19 03:47]
囲碁、申し訳ないんだが、
コンパイルして実行したら、
1の列を指定すると落ちるんだけど。
(ex:1,5)
バグ?


816 名前:デフォルトの名無しさん mailto:sage [02/09/19 04:06]
>>798>>815
囲碁、cygwin+gccやSolaris+ccでは正常らしい動作してますね
bcc32だと動作は正常のようでも、表示がおかしくなりますね
ANSI準拠っぽいソースだけど、どっかしらコンパイラ依存があるんでしょうね
>>771さんはいないようだし、ここはひとつトリッキーの1氏のご助力を!

817 名前:デフォルトの名無しさん mailto:sage [02/09/19 08:15]
プロトタイプ宣言無しで printf 使うのって好かんのだけどどうよ。
…っと言っても>>810、VC++.NETでもdmc++でも通るな。

int printf(char*,...); ... にすれば>>809行けるね。

818 名前:817 mailto:sage [02/09/19 08:16]
あーでも、宣言省略すれば int printf( ... ); 扱いになるんだっけ。Cって。
それならOKか。

819 名前:デフォルトの名無しさん [02/09/19 17:45]
>>810
>main(i,z)
Cって引数の型を省略するとintになるってこと?


820 名前:デフォルトの名無しさん [02/09/19 20:40]
円周率は

#include <stdio.h>
main(){printf("3.14159265358979323846264338327950288419716939937510582097494");
/* 以下略 */
}

よりも桁が多いことを願います。

とりあえず、職人さんに

(~~~゚∀~~)~~゚ メダマ ボーン


821 名前:デフォルトの名無しさん mailto:sage [02/09/19 20:43]
#include <stdio.h>
main()
{
char* url = "www.prokofiev.ru/prikol/text/t5/pi.htm";
system(url);
return 0;
}


822 名前:デフォルトの名無しさん mailto:sage [02/09/19 23:29]
>>814
不特定多数なWinMXみたいな奴でなくて、
相手を登録して交換するスタイル。Grooveとかがそんな感じかなぁ。
七行でできたらビックリだけどね。CUIでそういうの聞いたことないし。

823 名前:デフォルトの名無しさん mailto:sage [02/09/20 00:48]
それもP2Pかもしれないけど、
P2P=ファイル交換じゃないぞ

824 名前:デフォルトの名無しさん mailto:sage [02/09/20 04:32]
なんにせよ、もしできたら凄く便利だと思う



825 名前:デフォルトの名無しさん mailto:sage [02/09/20 04:57]
便利って・・・・・・別に7行でも覚えられるわけで無し・・・・・・
ぱっと思いつく最小のメディアであるFDに収まる1.44MBに入れば何だって同じ気が。
面白いけどね。

826 名前:デフォルトの名無しさん mailto:sage [02/09/20 08:53]
今更ながら>>800にワラタ

827 名前:トリッキーの1 mailto:sage [02/09/20 15:54]
円周率です。意外と七行は簡単でした。オイラーの公式使ってますので収束遅いです。

#include <stdio.h>
#define s ( 5000 /*←希望する桁数*/ /4+2)
int main(){int i,n,c,t,j,l,a[]={4,9},r[s][4]={0,0,8,12},k=10000;for(n=0;n<s*15
;n++)for(i=0;i<2;i++){for(c=t=j=0;j<s;r[j++][i]+=((n&1)*-2+1)*l/(2*n+1))t=(l=k
*t+r[j][i+2])%a[i],c=(l=k*c+(r[j][i+2]=l/a[i]))%(2*n+1);for(t=0,j--;j+1;r[j--]
[i]%=k)t=(r[j][i]+=k+t)/k-1;}for(i=s-(t=1);i+1;*r[i--]%=k)t=(*r[i]=k+*r[i]+r[i
][1]+t)/k-1;printf("%d.",**r);for(i=1;i<s-1;printf("%04d",*r[i++]));return 0;}

828 名前:トリッキーの1 mailto:sage [02/09/20 15:56]
こうやってみるとまだまだ短くなりそうですね。桁数固定にすれば後一行は軽そうです。

829 名前:デフォルトの名無しさん [02/09/20 20:47]
復活直後にでかいのを持ってきましたね。実質5行だし。相変わらず凄い。

7行にするのって、1字1字縮める技術ももちろんあるけれど、
組む前にデータ構造とアルゴリズムをなるべく文字数を減らすことを念頭に
構想する才能が必要だと思うが、それは知識と知恵の両方を要求するよね。
色々なネタで7行達成している常連の職人さんたちはかなりハイレベルだと思った。

830 名前:デフォルトの名無しさん mailto:sage [02/09/20 20:54]
有名人が出てくるたびにヨイショするこの雰囲気、
どうにかならんもんかねぇ。
名無しで新しいアイデア出てきても「たいしたことない」と言ってのけるのに。

831 名前:デフォルトの名無しさん mailto:sage [02/09/20 20:55]
本人がageてないのに他人がageるのも正直ウザい

832 名前:デフォルトの名無しさん mailto:sage [02/09/20 21:04]
ただのひがみかもしれないがマジレス。
有名人をよいしょしているわけではなく、
優れたプログラムを書く人をほめているのでは?

833 名前:デフォルトの名無しさん mailto:sage [02/09/20 21:05]
>>799
UNISYSに通報しますた

834 名前:デフォルトの名無しさん mailto:sage [02/09/20 21:29]
はいはい、そこ雰囲気悪くしない!
作品いっぱい出るのはいいことだし、批評はその作者の次に繋がるので良し!
でも830、無意味な煽りは入れない!
次のネタいきましょう、次。



835 名前:デフォルトの名無しさん mailto:sage [02/09/20 22:24]
次のネタ候補
・FORTH や C, LISP, BASICなどのプログラミング言語のサブセット
・囲碁
>>533の前スレの未達成もののうち、このスレでも未達成のもの

特に言語ものは20行以下になったらとりあえず見せて欲しいなぁ。
サブセット言語で作った7行プログラムとか出てきたりして:-P

836 名前:デフォルトの名無しさん mailto:sage [02/09/21 00:50]
7行でC/C++コンパイラ作ってくだちぃ。


837 名前:デフォルトの名無しさん mailto:sage [02/09/21 01:03]
>>836
四則演算と表示くらいならできるかもしれないが、難しいだろうね。
つーか、>>836よ、インタプリタで良いから作ってみないか?

838 名前:デフォルトの名無しさん mailto:sage [02/09/21 01:23]
>>837
>四則演算と表示くらいなら...
マジで!?それともネタ?
冗談で言ったつもりなんだが…

>インタプリタで良いから...
技術のない漏れには作れません...


839 名前:デフォルトの名無しさん mailto:sage [02/09/21 02:32]
VTL系のBASICはどうなのかな?
オリジナルは768バイトなんでしょ?

840 名前:デフォルトの名無しさん mailto:sage [02/09/21 02:59]
マンセーうぜー言われるかもしれないが、やっぱり>>827は(・∀・)イイ! 

841 名前:デフォルトの名無しさん mailto:sage [02/09/21 05:50]
FORTHモドキ(逆ポーランド電卓か?)。オペレータは+-*/.のみ。

#include <stdio.h>
W[1000],*S=W,c,v;G(){c=getchar();}g(){v=0;do v=v*10+c-48;while((G(),c)-48<10U)
;return v;}main(){G();while(~c)c==45?G(),c-48>9U?v=*S--,*S-=v:(*++S=-g(),G()):
(c-48<10U?*++S=g():c==43?v=*S--,*S+=v:c==42?v=*S--,*S*=v:c==47?v=*S--,*S/=v:c-
46?c-32&&c-10&&printf("err\n"):printf("ok\n%d\n",*S--),G());}

842 名前:デフォルトの名無しさん mailto:sage [02/09/21 10:04]
既出ネタのチェックはしてから話題振ることにせんか?
 ・四則演算 >>5

843 名前:デフォルトの名無しさん mailto:sage [02/09/21 10:22]
多倍長整数、さらには有理数演算に対応しろと言ってみる。

844 名前:デフォルトの名無しさん mailto:sage [02/09/21 11:58]
・何かをグラフィック
・非常に便利な関数を7行で作成




845 名前:デフォルトの名無しさん mailto:sage [02/09/21 14:51]
>>842 ごめん、正直指摘間違いでは?、と始め思った。
つーか、>>841の勘違いですね。

四則演算はすでにあります。要求されたのは、
・FORTHのサブセット  あるいは
・四則演算のみ可能な C/C++ !!コンパイラ!!
ですよん。そして、
・多倍長整数、有理整数演算、浮動小数演算などに対応
が追加されますた。

846 名前:79文字で問題を出してみる(w mailto:sage [02/09/21 15:02]
問題:単なるクリックソートより早いqsort()互換のソート関数を79文字7行で記述せよ。

847 名前:846 mailto:sage [02/09/21 15:03]
>846にパッチ当て。
---問題:単なるクリックソートより早いqsort()互換のソート関数を79文字7行で記述せよ。
+++問題:単なるクイックソートより早いqsort()互換のソート関数を79文字7行で記述せよ。


848 名前:デフォルトの名無しさん [02/09/21 16:42]
>>835
いいだしっぺの法則

849 名前:デフォルトの名無しさん mailto:sage [02/09/21 17:22]
将棋作れ!

850 名前:デフォルトの名無しさん mailto:sage [02/09/21 17:47]
┃激┃し..┃く..┃ず┃れ┃て┃鬱┃だ.┃が┃
┣━╋━╋━╋━╋━╋━╋━╋━╋━┫
┃こ.┃れ┃で┃12┃行┃な.┃ん┃だ┃YO┃
┣━╋━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━╋━┫
┃歩┃歩┃歩┃歩┃歩┃歩┃歩┃歩┃歩┃
┣━╋━╋━╋━╋━╋━╋━╋━╋━┫
┃  ┃角┃  ┃  ┃  ┃  ┃  ┃飛┃  ┃
┣━╋━╋━╋━╋━╋━╋━╋━╋━┫
┃香┃桂┃銀┃金┃王┃金┃銀┃桂┃香┃
┗━┻━┻━┻━┻━┻━┻━┻━┻━┛

851 名前:デフォルトの名無しさん mailto:sage [02/09/21 17:48]
激しくはずれなくてうれしいw

852 名前:デフォルトの名無しさん mailto:sage [02/09/21 17:49]
敵の歩なんかはどうしたらいいのさ?

┃歩┃歩┃歩┃歩┃歩┃歩┃歩┃歩┃歩┃
┣∨╋∨╋∨╋∨╋∨╋∨╋∨╋∨╋∨┫
とか?


853 名前:デフォルトの名無しさん mailto:sage [02/09/21 17:53]
ニフで昔あった将棋は

|歩v|歩^|

で表現していたな

コンピュータの思考ルーチンが激しく難しそうだ

854 名前:デフォルトの名無しさん [02/09/21 23:20]
前のスレッドにあった自動インデントプログラムを機能拡張・7行版にしてみました。
使用方は
 program.exe(仮称) 入力ファイル名 出力ファイル名
です。

#include <stdio.h>
FILE *s,*o;I,c,d;G(){return c=getc(s);}P(){c-10&&putc(c,o);}R(){putc(10,o);}T(t
){while(t-->0)putc(9,o);}S(p){d=1;P();while(~G()&&(P(),c!=41||--d))c-p||++d;}Q(
p){P();while(~G()&&(P(),c!=p))if(c==92||_ismbblead(c))P(G());}main(a,v)char**v;
{s=fopen(v[1],"r");o=fopen(v[2],"w");while(~G())c==63||c==58?R(),T(I),P():c==34
||c==39?Q(c):c==40?S(c):c=='{'?R(),T(I),P(),R(),T(++I):c=='}'?fseek(o,-1,1),P()
,R(),T(--I):P(),c==59&&(R(),T(I));}







855 名前:デフォルトの名無しさん mailto:sage [02/09/21 23:36]
>将棋
駒は数字で表せばいいじゃん。

王金銀桂香飛角歩 
+1+2+3+4+5+6+7+8 

玉金銀桂香飛角歩
-1-2-3-4-5-6-7-8

856 名前:デフォルトの名無しさん mailto:sage [02/09/21 23:55]
>>855
お前は数字を見て将棋だと言えるのか?

#現実問題、数字にでもしなければ不可能だとは思うが
#つーか数字にしても不可能だろ(w






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<349KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef