1read 100read
2011年10月1期プログラム七行プログラミング part6
TOP カテ一覧 スレ一覧 削除依頼 ▼
・ 次のスレ
お前らってwinnyみたいなのつくれんの?無理なの? C++でラーメン作れますか? △△もっとStruts2の良さを教えてくださいSsssion6 ポインタを難しいと言う奴が理解できない
七行プログラミング part6
1 :08/07/06 〜 最終レス :12/01/11 7行×79文字なら言語は問いません。 過去作品は、もしかしたら>>2-10 あたりに。 前スレ http://pc11.2ch.net/test/read.cgi/tech/1142467359/ part4 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
2 : >>1 乙
3 : >>1 乙
4 : ●作品集 http://pc2.2ch.net/test/read.cgi/tech/1033143528/5-15,25 Part 2 http://pc3.2ch.net/test/read.cgi/tech/1018840143/900-906 Part 4 http://pc8.2ch.net/test/read.cgi/tech/1051703369/993-995 Part 5 http://pc11.2ch.net/test/read.cgi/tech/1142467359/982-984
5 : ↓7行で乙
6 : print'''■■■■■■■__ _____■___ ___■■____ _■■______ ■_______■ ■_______■ _■■■■■■■_'''
7 : g=:(],],.])^:[(' '(<2 1)}]\4$' *')"_ シェルピンスキーのギャスケット in J
8 : alert('\u003e\u003e\u0031\u000a\u4E59')
9 : <body id=D onkeydown=K=event.keyCode-38 onload="Z=X=[B=A=12];function Y(){for(C =[q=c=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6?h +=K:t?B=C:0;i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;h+=A;if(f|B)for(Z=X,X=[l=228],B=[ [-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!Z[l]:(P+= k++,c=l+=A);--c>A;)Z[c]=Z[c-A];for(S=P;i<240;S+=X[i]|(X[i]=Z[i]|=++i%A<2|i>228 ) ?'':'Q')i%A||(S+='\n');D.innerText=S;Z[5]||setTimeout(Y,i-P)}Y(h=K=t=P=0)">
10 : B=:'0123456789+/',~a.{~,(a.i.'Aa')+/i.26 enc=:3 :'(B{~#._6[\,(8#2)#:a.i.y),(0 2 1 i.3|#y)#''=''' dec=:3 :'(a.{~#._8[\,(6#2)#:B i.y)}.~_2>.(i.&''=''-#)y' BASE64エンコード&デコード in J
11 : >>9 なにこれ
12 : 前スレで7行ASMってネタ出てたけど、実際どこまで出来るものかな?
13 : org 100h mov ah,9 mov dx,msg int 21h mov ax,4c00h int 21h msg db "Hello, world!$" 7行でHello, world!
14 : アセンブリはCPUやコンパイラやOSによってかなり依存するからなぁ >>13 はx86/DOS/NASMか
15 : http://codepad.org/LN7ZIsBO ↑こういうコードがかけるらしい。qsortの第4引数が int strcmp(const char**a, const char**b) { while(**a == **b) { if(**a == '\0') return 0; (*a)++; (*b)++; } return **a - **b; } をコンパイルしたコードだとか。C言語で無名関数を渡す方法は他にもあるのかな? こういうのもゴルフのテクニックのひとつ?
16 : >>15 partIあたりに、 int main=0xc3; ってのがあったぜ。 >15 にしろ上のコードにしろ、実行環境依存するから美しくはないが 面白い発想ではあるな
17 : もう機械語でいいじゃん
18 : 短くならなくね?
19 : diffとpatchコマンドをそれぞれWin32用に7行でってのは既出ネタかな。 もしまだだったら面白そうだからやってみようと思ってたり。 暇な人用仕様を念のため。 ・Cベースのパッチ作成&適用ツール ・差分ファイルのフォーマットは自由。7行diffで書き出した差分ファイルで7行patchが正常に動けばOK。 ・テキスト関連の機能はなし。あくまでも差分書き出しと差分適用に限定。 ・ディレクトリ差分、複数ファイルの差分をひとつの差分ファイルにまとめる機能も省略。 差分作成:diff.exe old.exe new.exe update.diff 差分適用:patch.exe old.exe update.diff このネタのミソは、いかに差分を小さくする工夫があるか(同一パターンの発見精度の高さ)だよなぁ
20 : ん? /*diff.c*/ #include<windows.h> main(int c,char**v){CopyFile(v[2],v[3],1);} /*patch.c*/ #include<windows.h> main(int c,char**v){CopyFile(v[2],v[1],0);}
21 : それは無関係なファイルも上書きしてしまうからパッチになってない。
22 : http://codepad.org/xZjkIm7R asmも使えることを確認した。実行環境依存のものだけはここで通るように条件つけたら?
23 : なんで特定のOSや特定のCPUに限定する必要があるのか理解できん
24 : http://codepad.org/fozoQIdR 前スレのを試してみた。 http://pc11.2ch.net/test/read.cgi/tech/1142467359/879
25 : >>23 前スレで#include <windows.h> を連発されてウザかったから。
26 : unix板でも篭ってれば見なくて済むよ。
27 : >>26 提案しただけで命令したわけではないし、>>26 にUNIX板の使用を強制されるいわれもない。
28 : アドバイスしただけ
29 : とてもそういう風には読めないね。
30 : 文章力がないだけだな
31 : >>30 氏ね
32 : 反論できなくなったら「氏ね」か。 頭のほどが知れるわ
33 : / \ /\ キリッ . / (ー) (ー)\ "反論できなくなったら「氏ね」か。" / ⌒(__人__)⌒ \ "頭のほどが知れるわ " | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ だっておー!!! /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
34 : 言っとくけど俺をあまりナメないほうがいいよ vipでコテハンやってるしこのスレ潰すくらいの影響力は持ってるから くだらないことで刺激して後悔しないようにね
35 : >>9 は正しくはこうだな <body id=D onkeydown=K=event.keyCode-38 onload="Z=X=[B=A=12];function Y(){for(C =[q=c=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6?h +=K:t?B=C:0;i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;h+=A;if(f|B)for(Z=X,X=[l=228],B=[ [-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!Z[l]:(P+= k++,c=l+=A);--c>A;)Z[c]=Z[c-A];for(S=P;i<240;S+=X[i]|(X[i]=Z[i]|=++i%A<2|i>228 ) ?'■':'_')i%A||(S+='\n');D.innerText=S;Z[5]||setTimeout(Y,i-P)}Y(h=K=t=P=0)">
36 : >>34 無関係の人間まで巻き込まないでね
37 : / \ /\ キリッ . / (ー) (ー)\ "vipでコテハンやってるし" / ⌒(__人__)⌒ \ | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ だっておー!!! /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
38 : 専ブラ用あぼ〜ん条件を正規表現で79*7バイトで書いたら、 そこそこ強力なフィルタが書けそうだな
39 : たしかにwindows.hが続いてたとき 環境依存うぜーって話はなかったのに、 それ以外の時は出るんだよな。 winユーザーが多いのは認めるが、それでも環境依存って ことには代わりはないとは思うがね
40 : >>39 俺は環境依存はそんなに気にならないかな。 特定の環境でしか動かないソースってのは「ハードルを下げたら ここまでジャンプして越えることが出来たよ」って言ってるようなもんだから、 依存しようとしてなかろうと作者の工夫次第と思ってる。 # 別にwindows.hを使うのが幼稚だと言ってるワケじゃないからあしからず ;-) 環境依存は少ないほうが好みだけど、ライン引きが難しいから 「標準出力がゲーム機で動かないじゃないか」というツッコミまで許すことになりそうで怖い。
41 : >>40 s/標準出力が/標準出力がない/
42 : FirefoxでBase64エンデコード <p id=B></p><textarea cols=64 rows=8 onblur=B.innerHTML=/[^+/-9A-Z]/i.test(v=value)?btoa(unescape(encodeURI(v))):decodeURIComponent(escape(atob(v)))>
43 : >>39 標準Cにない機能を使うための止むを得ない環境依存と、 字数を減らすためだけの"馴れ馴れしい"環境依存の違いだと思うよ(後者が悪いとは言わない)。 音を鳴らすという課題なら、windows.hなりXlib.hなり#includeしないわけには行かないだろう。 もちろん79x7の範囲でクロスプラットフォームにできれば言うことはないw
44 : 少なくとも前スレのwindows.hのやつはstdio.h使わずにprintfしてたと思うがね なぜそこに突っ込まないのか…‥ もしかしてwindows.hにprintfがあるのか?
45 : それはwindows.hうんぬんの話ではなくて、コンパイラ依存になるってのが論点になるよ・・・
46 : なんでもありでいいじゃない (面白|凄)ければ評価されるだろうし、逆も然り。 納得できないコードだったら自分で直して投下すればいい コードで語ろうぜ
47 : >>44 そんなんあったっけ。気づかんかった
48 : printfだけなら、stdio.hつかわないでもプロトタイプ宣言してやればいい。
49 : っていうかインクルードファイル内でprintf使ってれば当然宣言済みなんじゃないのか? 前スレで7行ライブラリの話が出てたのを皆忘れてしまったのだろうか?
50 : どのインクルードファイルがprintf使ってるんだ。
51 : 調べといてよ。 とりあえず、インクルード内でstdio.h含めインクルードしてるのはよくあるんじゃないか? よく移植の時に重複定義で悩ませられるような。
52 : 重複定義で悩ませられるってなんだよそれ。 標準ライブラリのヘッダがインクルードガードしてないわけがないじゃん。
53 : >>52 なぜかすっぽ抜けてたりしてわけがわからない時に悩むんだっての。 とりあえずまあガードしてるってことはどちらでも問題ないってことじゃないのか?
54 : 言ってることが分からん。 多いのは問題ないが、足りないのは問題だろ。
55 : 多くたって問題だからガードするんだろ? 問題だったら省略されるわけないんだから、多少忘れたって足りない問題は起きない。
56 : 標準ライブラリでガードされてないなんて、どこの標準非準拠処理系だよ
57 : だから、ガードを前提にそこら中でインクルードしまくられてるんだから どっかでインクルードされてりゃ問題ないだろって話。
58 : どっかってどこだよ。
59 : そもそも他でインクルードされてなきゃ、ガードなんて無駄なだけじゃないか。
60 : >>39-59 7行でおk
61 : 全く話がかみ合ってないからもうやめろよ
62 : #include<stdio.h>/*第一引数のファイル名を検索*/ #include<dirent.h>/*bcc限定かも……*/ char*f,r[4]="B:";void _(char*v){DIR*d;struct dirent*e;int c=0,i;char b[512];A: if(!(d=opendir(strcmp(v,"C:")?v:"\\")))return;if(c)for(i=0;i<c;i++)readdir(d);B :while(c++,e=readdir(d)){if(*e->d_name=='.')goto B;sprintf(b,"%s\\%s",v,e-> d_name);if(fclose(fopen(b,"r"))?closedir(d),_(b),1:strcmp(f,e->d_name)?0:puts(v ))goto A;}}main(int c,char**v){if(c==2){f=v[1];for(;r[0]++-75;)_(r);}return 0;}
63 : っ 七行クロンダイク
64 : #include<stdio.h> *s,*d;main(int c,char**v){long W,H,*t,x,y=0,a;unsigned char h[54],f[3];s=fopen( v[1],"rb");d=fopen(v[2],"wb");fread(h,1,54,s);W=*(t=(long*)&h[18]);H=*(t+1);a=4 -W*3%4;fwrite(h,1,54,d);for(;y++<H;){for(x=0;x++<W;)fread(h,1,3,s),f[0]=f[1]=f[ 2]=77*h[2]+150*h[1]+29*h[0]>>8, fwrite(f,1,3,d);a-4?fread(h,1,a,s):0;}} bmp形式の画像(24bit限定)をグレイスケールに変換 一応4ビット境界にも対応させてある
65 : 訂正 ×4ビット境界 ○4バイト境界
66 : こんなに可読性の低いコード書いてて恥ずかしくないの?
67 : すげー誤読してた >>64 に「こんなに可読性の高いコード書いてて恥ずかしくないの?」 って言ってるんだと思って普通に読み流してた
68 : >>64 * main(c,v)char**v{って書くのが一番短いよ。 * yはグローバル変数にすれば初期化は不要だよ。 * H=*++t;とすればちょっと得するよ。 * (ANSI C) *s,*d;のように型無しで変数を定義するのは認められてないよ。
69 : #include<stdio.h> int*s,*d,y;main(c,v)char**v;{long W,H,*t,x,a;unsigned char h[54],f[3];s=fopen(v [1],"rb");d=fopen(v[2],"wb");fread(h,1,54,s);W=*(t=(long*)&h[18]);H=*++t;a=4-W* 3%4;fwrite(h,1,54,d);for(;y++<H;){for(x=0;x++<W;)fread(h,1,3,s),f[0]=f[1]=f[2]= 77*h[2]+150*h[1]+29*h[0]>>8, fwrite(f,1,3,d);a-4?fread(h,1,a,s):0;}} こんな感じかな
70 : for(;y++<H;)は{ }がいらないと思う あとその次のforは第3項をうまく使えば , が一つ消せそうな freadが3つあるのが気になるけどCだから関数を文字でおく とかはできないんだよな
71 : こんなもんか #include<stdio.h> int*s,*d,y;main(c,v)char**v;{long W,H,*t,a;unsigned char h[54],f[3];fread(h,1, 54,s=fopen(v[1],"rb"));W=*(t=(long*)&h[18]);a=4-W*3%4;fwrite(h,1,54,d=fopen(v[2 ],"wb"));++t;for(;y++<*t;a-4&&fread(h,1,a,s))for(c=W;c--;fwrite(f,1,3,d))fread( h,1,3,s),f[0]=f[1]=f[2]=77*h[2]+150*h[1]+29*h[0]>>8 ;}
72 : #include<stdio.h> int*s,*d,y;main(c,v)char**v;{long W,H,*t,x,a;unsigned char h[54],f[3];s=fopen(v [1],"rb");d=fopen(v[2],"wb");fread(h,1,54,s);W=*(t=(long*)&h[18]);H=*++t;a=4-W* 3%4;fwrite(h,1,54,d);for(;y++<H;){for(x=0;x++<W;)fread(h,1,3,s),f[0]=f[1]=f[2]= 77*h[2]+150*h[1]+29*h[0]>>8, fwrite(f,1,3,d);a-4?fread(h,1,a,s):0;}}
73 : 誤爆した上に負けてる… #include<stdio.h> int*s,*d,y;main(c,v)char**v{long W,H,*t,x,a;unsigned char h[54],f[3];s=fopen(v[ 1],"rb");d=fopen(v[2],"wb");for(fread(h,1,54,s),W=*(t=(long*)&h[18]),H=*++t,a=4 -W*3%4,fwrite(h,1,54,d);y++<H;a-4?fread(h,1,a,s):0)for(x=0;x++<W;fwrite(f,1,3,d ))fread(h,1,3,s),f[0]=f[1]=f[2]=77*h[2]+150*h[1]+29*h[0]>>8 ;}
74 : こんなもんかと思ったけどWはlongだったんだな
75 : あーそうかCでも&&は左から評価なのか 勉強になった
76 : >>70 size_t(*r)()=fread; とはできるが、もう少し使用回数が多くないと得にはならないな。
77 : #include<stdio.h> int*s,*d,y;main(c,v)char**v;{long W,*t,x,a;unsigned char h[54],f[3];fread(h,1, 54,s=fopen(v[1],"rb"));W=*(t=(long*)&h[18]);a=4-W*3%4;fwrite(h,1,54,d=fopen(v[2 ],"wb"));++t;for(;y++<*t;a-4&&fread(h,1,a,s))for(x=W;x--;fwrite(f,1,3,d))fread( h,1,3,s),f[0]=f[1]=f[2]=77*h[2]+150*h[1]+29*h[0]>>8 ;} これならいいか
78 : yもいつのまにかintにされてるんだが。
79 : >>77 >>78 じゃあyもlongにして、あとtも消せる? #include<stdio.h> int*s,*d;main(c,v)char**v;{long W,x,y,a;unsigned char h[54],f[3];for(fread(h,1, 54,s=fopen(v[1],"rb")),W=*(long*)&h[18],fwrite(h,1,54,d=fopen(v[2],"wb")),a=4-W *3%4;y++<*++&W;a-4&&fread(h,1,a,s))for(x=W;x--;fwrite(f,1,3,d))fread(h,1,3,s),f [0]=f[1]=f[2]=77*h[2]+150*h[1]+29*h[0]>>8 ;}
80 : すまんなんでもない
81 : >>79 お前ちゃんと走らせてるのか? 出力が同じになることぐらい確認しとけよ。
82 : 実は今出先なのでCのコンパイラがなかった すます
83 : 面倒だからみんなlongで #include<stdio.h> long*s,*d,y;main(c,v)char**v;{unsigned char h[54],f[3];long *t=&h[18],x,a;fread (h,1,54,s=fopen(v[1],"rb"));a=4-*t*3%4;fwrite(h,1,54,d=fopen(v[2],"wb"));for(;y ++<t[1];a-4&&fread(h,1,a,s))for(x=*t;x--;fwrite(f,1,3,d))fread(h,1,3,s),f[0]=f[ 1]=f[2]=77*h[2]+150*h[1]+29*h[0]>>8 ;}
84 : #include<stdio.h> unsigned char h[54],f[3];long*s,*d,y,*t=h+18,x,a;main(c,v)char**v;{fwrite(h,1, fread(h,1,54,s=fopen(v[1],"rb")),d=fopen(v[2],"wb"));for(a=4-*t*3%4;y++<t[1];a- 4&&fread(h,1,a,s))for(x=*t;x--;fwrite(f,1,3,d))fread(h,1,3,s),*f=f[1]=f[2]=77*h [2]+150*h[1]+29**h>>8 ;}
85 : いい流れだ
86 : おまえらそんな可読性の高いコード書いてて恥ずかしくないの?
87 : >>86 恥なんかあったら、コードは掛けんよ(笑
88 : JavascriptでBase64エンデコード <script>S=String.fromCharCode;c='0123456789+/=';for(i=122;64<i;i-=i-97?1:7)c=S( i)+c;document.write(eval('l=v.length;for(i=p=0;i<l;){for(n=0,j='+(/[^+/-9=A-Z]/ i.test(v=unescape(encodeURI(prompt(r=''))))?'3;j--;l<i&&p--)n=n<<8|v.charCodeAt (i++);for(j=4;j--;)r+=c.charAt(n>>6 *j&63)}p?r.slice(0,p)+(p+1?"==":"="):r':'4;j --;t-64||p--)n=n<<6|(t=c.indexOf(v.charAt(i++)))&63;for(j=3;j--;)r+=S(n>>8 *j&25 5)}decodeURIComponent(escape(r.slice(0,p)||r))')))</script> ほぼ限界だと思うんだが、どうなんだろう pやcharAtが冗長な気もするけど・・・
89 : お、79文字に収まった <script>S=String.fromCharCode;c='0123456789+/=';for(i=123;65<i;)c=S(i-=i-97?1:7 )+c;document.write(eval('l=v.length;for(i=p=0;i<l;){for(n=0,j='+(/[^+/-9=A-Z]/i .test(v=unescape(encodeURI(prompt(r=''))))?'3;j--;l<i&&p--)n=n<<8|v.charCodeAt\ (i++);for(j=4;j--;)r+=c.charAt(n>>6 *j&63)}p?r.slice(0,p)+(p+1?"==":"="):r':'4;\ j--;t-64||p--)n=n<<6|(t=c.indexOf(v.charAt(i++)))&63;for(j=3;j--;)r+=S(n>>8 *j&\ 255)}decodeURIComponent(escape(r.slice(0,p)||r))')))</script>
90 : <body id=D onKeyDown=K=event.keyCode-38 onload='Z=X=[B=A=12];(Y=function(){for( C=[q=c=i=4];f=i--*K;c-=!Z[h+(K+6?p+K:C[i]=p*A-(p/9|0)*145)])p=B[i];for(c?0:K+6? h+=K:t?B=C:0;i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;h+=A;if(f|B)for(Z=X,X=[l=228],B= [[-7,-20,6,h=17,-9,3,3][t=++t%7]-4,0,1,t-6?-A:2];l--;)for(l%A?l-=l%A*!Z[l]:(P+= k++,c=l+=A);--c>A;)Z[c]=Z[c-A];for(S="";i<240;S+=X[i]|(X[i]=Z[i]|=++i%A<2|i>228 )?i%A?"■":"■<br>":"_");D.innerHTML=S+P;Z[5]||setTimeout(Y,i-P)})(h=K=t=P=0)'
91 : >>35 の方が少し短い
92 : innerHTMLのほうがいい罠
93 : innerTextとかIEだけじゃん 環境依(Ry
94 : Firefoxで動くから問題ない
95 : Firefoxじゃ動かんだろ
96 : うごくよ
97 : どちらもIEとFirefoxで動いたが、 OperaとSafariではどちらも動かなかった。
98 : Mozilla Firefox 2.0.0.6, Mozilla Firefox-3.0 3.0a8, どっちでも動かないんだが・・・
99 : Firefox では動かないよ まあそんなことはどうでもいいけど、<br> を \n にするだけのために innerText を使うのはいただけない
100read 1read
1read 100read
TOP カテ一覧 スレ一覧 削除依頼 ▲
・ 次のスレ
お前らってwinnyみたいなのつくれんの?無理なの? C++でラーメン作れますか? △△もっとStruts2の良さを教えてくださいSsssion6 ポインタを難しいと言う奴が理解できない