七行プログラミング part6

■ このスレッドは過去ログ倉庫に格納されています
2008/07/06(日) 23:00:49
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
2008/07/08(火) 18:04:39
printfだけなら、stdio.hつかわないでもプロトタイプ宣言してやればいい。
2008/07/08(火) 18:55:06
っていうかインクルードファイル内でprintf使ってれば当然宣言済みなんじゃないのか?
前スレで7行ライブラリの話が出てたのを皆忘れてしまったのだろうか?
2008/07/08(火) 19:03:24
どのインクルードファイルがprintf使ってるんだ。
2008/07/08(火) 19:44:12
調べといてよ。
とりあえず、インクルード内でstdio.h含めインクルードしてるのはよくあるんじゃないか?
よく移植の時に重複定義で悩ませられるような。
2008/07/08(火) 20:17:33
重複定義で悩ませられるってなんだよそれ。
標準ライブラリのヘッダがインクルードガードしてないわけがないじゃん。
2008/07/08(火) 21:21:15
>>52
なぜかすっぽ抜けてたりしてわけがわからない時に悩むんだっての。

とりあえずまあガードしてるってことはどちらでも問題ないってことじゃないのか?
2008/07/08(火) 21:28:36
言ってることが分からん。

多いのは問題ないが、足りないのは問題だろ。
2008/07/08(火) 21:49:46
多くたって問題だからガードするんだろ?
問題だったら省略されるわけないんだから、多少忘れたって足りない問題は起きない。
2008/07/08(火) 21:51:03
標準ライブラリでガードされてないなんて、どこの標準非準拠処理系だよ
2008/07/08(火) 21:57:55
だから、ガードを前提にそこら中でインクルードしまくられてるんだから
どっかでインクルードされてりゃ問題ないだろって話。
2008/07/08(火) 21:59:13
どっかってどこだよ。
2008/07/08(火) 22:04:44
そもそも他でインクルードされてなきゃ、ガードなんて無駄なだけじゃないか。
2008/07/08(火) 22:08:26
>>39-59
7行でおk
2008/07/08(火) 22:11:38
全く話がかみ合ってないからもうやめろよ
2008/07/09(水) 00:12:38
#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;}
2008/07/09(水) 18:16:44
っ 七行クロンダイク
64デフォルトの名無しさん
垢版 |
2008/07/09(水) 20:29:09
#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ビット境界にも対応させてある
6564
垢版 |
2008/07/09(水) 21:48:21
訂正
×4ビット境界
○4バイト境界
2008/07/09(水) 22:09:25
こんなに可読性の低いコード書いてて恥ずかしくないの?
2008/07/09(水) 22:22:25
すげー誤読してた
>>64に「こんなに可読性の高いコード書いてて恥ずかしくないの?」
って言ってるんだと思って普通に読み流してた
2008/07/09(水) 22:31:37
>>64
* main(c,v)char**v{って書くのが一番短いよ。
* yはグローバル変数にすれば初期化は不要だよ。
* H=*++t;とすればちょっと得するよ。
* (ANSI C) *s,*d;のように型無しで変数を定義するのは認められてないよ。
69デフォルトの名無しさん
垢版 |
2008/07/09(水) 22:40:53
#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;}}

こんな感じかな
2008/07/09(水) 22:54:44
for(;y++<H;)は{ }がいらないと思う
あとその次のforは第3項をうまく使えば , が一つ消せそうな

freadが3つあるのが気になるけどCだから関数を文字でおく
とかはできないんだよな
2008/07/09(水) 23:09:46
こんなもんか

#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;}
2008/07/09(水) 23:11:07
#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;}}
7372
垢版 |
2008/07/09(水) 23:12:24
誤爆した上に負けてる…

#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;}
7471
垢版 |
2008/07/09(水) 23:13:40
こんなもんかと思ったけどWはlongだったんだな
7572
垢版 |
2008/07/09(水) 23:17:19
あーそうかCでも&&は左から評価なのか
勉強になった
2008/07/09(水) 23:17:48
>>70
size_t(*r)()=fread;
とはできるが、もう少し使用回数が多くないと得にはならないな。
7771
垢版 |
2008/07/09(水) 23:20:19
#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;}

これならいいか
2008/07/09(水) 23:21:05
yもいつのまにかintにされてるんだが。
2008/07/09(水) 23:29:28
>>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;}
8079
垢版 |
2008/07/09(水) 23:30:33
すまんなんでもない
2008/07/09(水) 23:32:05
>>79
お前ちゃんと走らせてるのか?
出力が同じになることぐらい確認しとけよ。
8279
垢版 |
2008/07/09(水) 23:32:56
実は今出先なのでCのコンパイラがなかった
すます
8371
垢版 |
2008/07/09(水) 23:43:43
面倒だからみんな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;}
8471
垢版 |
2008/07/10(木) 00:13:01
#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;}
2008/07/10(木) 00:49:30
いい流れだ
2008/07/10(木) 09:14:57
おまえらそんな可読性の高いコード書いてて恥ずかしくないの?
2008/07/10(木) 11:00:43
>>86 恥なんかあったら、コードは掛けんよ(笑
2008/07/13(日) 16:10:20
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が冗長な気もするけど・・・
2008/07/13(日) 16:18:39
お、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>
2008/07/14(月) 19:05:50
<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)'
2008/07/14(月) 21:04:11
>>35の方が少し短い
2008/07/14(月) 21:17:17
innerHTMLのほうがいい罠
2008/07/14(月) 21:34:04
innerTextとかIEだけじゃん 環境依(Ry
2008/07/14(月) 21:58:39
Firefoxで動くから問題ない
2008/07/15(火) 15:44:19
Firefoxじゃ動かんだろ
2008/07/15(火) 16:18:26
うごくよ
2008/07/15(火) 16:54:21
どちらもIEとFirefoxで動いたが、
OperaとSafariではどちらも動かなかった。
2008/07/15(火) 17:18:11
Mozilla Firefox 2.0.0.6,
Mozilla Firefox-3.0 3.0a8,

どっちでも動かないんだが・・・
2008/07/15(火) 18:49:10
Firefox では動かないよ
まあそんなことはどうでもいいけど、<br> を \n にするだけのために innerText を使うのはいただけない
2008/07/15(火) 20:43:48
htaで動けばおk
2008/07/16(水) 00:26:40
W3C DOMで採択されていないinnerTextを使うなんて…なぜ標準厨が湧かないんだ!!
2008/07/16(水) 01:08:18
JScript標準ですがなにか
2008/07/16(水) 01:37:02
>>101
マジレスするとinnerHTMLもW3C DOM非準拠。
HTML5待ちだよ。
2008/07/16(水) 15:16:14
まさかJScriptなんて言葉が出てくるとはな
2008/07/16(水) 18:33:10
出てきても何も問題は無い
2008/07/19(土) 15:01:55
C++で正規表現エンジン?らしきものをやってみました
10行ですが、これ以上は厳しい・・・

#include <iostream>
struct a{a*b;char*c,*d;int e,f,g;};struct{int h(a*i,char*j,char*&k){a l={i,k,0,
99,99,1};return(*k-')'&&*k-'|'?(m(0,0,k),*k=='*'||*k=='+'&&++l.f||(l.f=1,*k==
'?')?(l.g=*++k-'?')||++k:(l.e=0),l.d=k,i=&l,0):!(j&&(k=i->c,i->b)))||n(i,j,k);}
int n(a*i,char*j,char*&k){a l=*i,o=l;return j?l.e<l.f--?m(&l,j,o.c):l.f<0?h(l.b
,j,o.d):l.g&&m(&l,j,o.c)||h(l.b,j,o.d)||!l.g&&m(&l,j,o.c):h(0,0,k);}int m(a*i,
char*j,char*&k){int p=*k++;if(p=='('||(p=j&&(p=='$'?!*j:((p-'.'?p==*j:*j)&&++j)
)&&n(i,j,k),0))while(!((p=h(i,j,k))&&j||*k++-'|'));return p;}}q;int main(int r,
char**s){return 2<r&&q.h(0,s[2],s[1]=(char*)(std::string("(.*?")+s[1]+")").
c_str())&&std::cerr<<"ktkr.\n";}

コマンドラインの引数に”正規表現”と”マッチ対象の文字列”をこの順番で与えて実行すると
マッチした場合だけ”ktkr”と出力します。使えるメタ文字: . $ ? ?? * *? + +? ( | )
^はグローバル変数を使わないと実装出来なそうだったので却下しました・・・
2008/07/19(土) 15:04:50
あとCのソースを七行×79文字の形式に変換してくれるスクリプトを書きました
もし役に立てるのでしたら幸いです
http://xxx.s97.xrea.com/x/7amigos/7amigos.cgi
2008/07/19(土) 15:39:36
>>106
#include <iostream>
typedef char*x;struct a{a*b;x c,d;int e,f,g;};struct{int h(a*i,x j,x&k){a l={i,
k,0,99,99,1};return(*k-')'&&*k-'|'?(m(0,0,k),*k=='*'||*k=='+'&&++l.f||(l.f=1,*k
=='?')?(l.g=*++k-'?')||++k:(l.e=0),l.d=k,i=&l,0):!(j&&(k=i->c,i->b)))||n(i,j,k)
;}int n(a*i,x j,x&k){a l=*i,o=l;return j?l.e<l.f--?m(&l,j,o.c):l.f<0?h(l.b,j,o.
d):l.g&&m(&l,j,o.c)||h(l.b,j,o.d)||!l.g&&m(&l,j,o.c):h(0,0,k);}int m(a*i,x j,x&
k){int p=*k++;if(p=='('||(p=j&&(p-'$'?(p-'.'?p==*j:*j)&&++j:!*j)&&n(i,j,k),0))\
while(!((p=h(i,j,k))&&j||*k++-'|'));return p;}}q;int main(int r,x*s){return 2<r
&&q.h(0,s[2],s[1]=(x)(std::string("(.*?")+s[1]+")").c_str())&&std::cerr<<"ktkr\
.\n";}
2008/07/19(土) 15:40:49
>>107
二文字の演算子が分解される…
2008/07/19(土) 23:17:04
9行目にバグがありました、、、
#include <iostream>
typedef char*x;struct a{a*b;x c,d;int e,f,g;};struct{int h(a*i,x j,x&k){a l={i,
k,0,99,99,1};return(*k-')'&&*k-'|'?(m(0,0,k),*k=='*'||*k=='+'&&++l.f||(l.f=1,*k
=='?')?(l.g=*++k-'?')||++k:(l.e=0),l.d=k,i=&l,0):!(j&&(k=i->c,i->b)))||n(i,j,k)
;}int n(a*i,x j,x&k){a l=*i,o=l;return j?l.e<l.f--?m(&l,j,o.c):l.f<0?h(l.b,j,o.
d):l.g&&m(&l,j,o.c)||h(l.b,j,o.d)||!l.g&&m(&l,j,o.c):h(0,0,k);}int m(a*i,x j,x&
k){int p=*k++;if(p=='('||(p=j&&(p-'$'?(p-'.'?p==*j:*j)&&++j:!*j)&&n(i,j,k),0))\
while(!((p=h(i,j,k))&&j||*k++-'|'));return p;}}q;int main(int r,x*s){return 2<r
&&q.h(0,s[2],s[1]=(x)(std::string("(.*?(")+s[1]+"))").c_str())&&std::cerr<<"ktkr\
.\n";}

>>108
なるほど。char*が多いのは気になってたのですが、typedefとは。不覚でした

>>109
根本的ではないっぽいですが、とりあえず直してみました
2008/07/20(日) 10:28:38
Part5で9行正規表現はあったね。メタ文字は少なかったけど。
2008/07/21(月) 08:34:58
バグとSTL取ったら伸びてしまいました・・・。
その代わりVC++でもコンパイルできる様になりました。これ以上はもう無理そうなので最後にします。

#include <stdio.h>
typedef char*a;struct b{b*c;a d,e;int f,g,h;}i={0,0,0,0,1,1};struct{int j(a&k,
a l=0,b*m=0){b n={m,k,0,99,99,1};return(*k&&*k-')'&&*k-'|'?(o(k,0,0),*k=='*'||*
k=='+'&&++n.g||(n.g=1,*k=='?')?(n.h=*++k-'?')||++k:(n.f=0),n.e=k,m=&n,0):!(l&&(
k=m->d,m->c)))||p(k,l,m);}int p(a&k,a l,b*m){b n=*m,q=n;return l?n.f<n.g--?o(q.
d,l,&n):n.g<0?j(q.e,l,n.c):n.h&&o(q.d,l,&n)||j(q.e,l,n.c)||!n.h&&o(q.d,l,&n):j(
k);}int o(a&k,a l,b*m){int r=*k++;if(r=='('||(r=l&&(r=='$'?!*l:((r-'.'?r==*l:*l
)&&++l))&&p(k,l,m),0))while(!((r=j(k,l,m))&&l||(j(k),*k++-'|')));return r;}}s;
int main(int t,a*u){for(char v[99]="(",*w=v;*w?(*++w=*u[1]++,1):s.o(*u=v,u[2]++
,&i)?(puts("ktkr."),0):*u[2];);return 0;}

>>111
あれがなければこの挑戦もなかったですね、、、
そこまで縮められるなんて夢にも思わなかったと思うので(日本語でおk)
113前すれ969
垢版 |
2008/07/26(土) 22:53:38
UTF-16BEのテキストファイルをUTF-8に変換
Winの人は(ry
#include <stdio.h>
FILE*i,*o;int a,b;int F(int c){return putc(128|c%64,o);}int main(int c,char**v)
{if(c>2&&(i=fopen(v[1],"r"))&&(o=fopen(v[2],"w")))for(;a=getc(i),a-EOF;((a=a<<8
|getc(i))>>11!=27)?a<128?putc(a,o):a<2048?(putc(192|a>>6,o),F(a)):(putc(224|a>>
12,o),F(a>>6),F(a)):(b=getc(i)%4,c=getc(i),a=64+a%1024,putc(240|a>>8,o),F(a/4),
F(a<<4|b*4|c>>6),F(c)));return i&&fclose(i),o&&fclose(o),o?0:!!fprintf(stderr,c
<3?"usage: %s input output\n":"fairu wo hirakenaijanaika! itteyoshi!!\n",*v);}
エンディアンを自動判定するのは難しそうだな…

それから、前スレ969のプログラム(UTF-8→UTF-16)を4文字ほど短縮した
#include <stdio.h>
FILE*i,*o;int l,p,t[]={0,192,224,240},r=65536;void P(int p){putc(p>>8,o);putc(p
%256,o);}int main(int c,char**v){if(c>2&&(i=fopen(v[1],"r"))&&(o=fopen(v[2],"w"
)))for(fputs("\xfe\xff",o);(c=getc(i))-EOF;(p-=r)>=0?P(p/1024+55296),P(56320+p%
1024):P(p+r))for(p=c-t[l=(c&224)-192?(c&240)-224?(c&248)-240?0:3:2:1];l--;p=p<<
6|getc(i)%128);return i&&fclose(i),o&&fclose(o),o?0:!!fprintf(stderr,c<3?"usag\
e: %s input output\n":"fairu wo hirakenurupoaijanaika! itteyoshi!!\n",*v);}

あと、俺以外の人が変数の型を省いて短縮するのはいいけど、
stderrを省いて実行時に落ちるようになるのはやめてくれ
むしろ、落ちるくらいなら無駄なメッセージ出力を無くしてしまった方がいい
2008/07/28(月) 18:44:02
正直、セキュリティやデバッグ目的で冗長なコードを実装するのは
七行プログラミングとしてどうかと思うがな。

短縮よりも機能や安定性を優先しようと思えば、いくらでも出来るわけで。
七行未満になったなら、糞メッセージを表示するより不正なEOF判定でも入れておけ。
2008/07/28(月) 19:40:05
「〜はやめたほうがいい」
「〜はどうかと思う」
なんかは、自分のコードに反映させればいい。
規律と可能性は背反するものだし、正解はないだろう。
2008/07/28(月) 20:13:02
他人のオナニーに注文つけるのは無粋ってもんだ
2008/07/29(火) 19:40:42
今いいこと言った
2008/07/29(火) 21:42:56
すげーオナニーを見せてくれるとうれしい!?
2008/07/29(火) 22:46:10
要は称えあってれば満足なんですね
mixiとかオススメ
2008/07/29(火) 22:53:57
卑屈なのが文面から滲み出てくるなあ
一種の言語調教なんだから楽しくやろうぜ?
2008/07/29(火) 23:14:10
他人にオナニー見せてるわけだからAV女優並にある程度注文つけられても仕方ないだろ。
2008/07/31(木) 00:41:23
え?あいつらタダであんなことやってんの?
それtも>>121が金払ってくれるって話か?
2008/07/31(木) 05:10:32
はいはい釣り釣り
2008/08/01(金) 01:40:38
カッコの付け方やスペースの入れ方の違いで一生罵り合える人種に
注文付けるななんて中東を平和にするより無茶
2008/08/01(金) 16:31:11
#include <windows.h>
void _(long*A,HWND B,int C,int D,int E){if(GetWindowRect(B,(RECT*)A),A[2]-=A[0
]+=26,A[3]-=A[1]+=99,SetForegroundWindow(B)){}while(E>2?Sleep(E),keybd_event((
char)(C>2?E-C:C?88+C:160),0,3-2*D,0),!~(C-=D=!D)?E=0,1:1:(E-->0?SendMessage(B,
513+!E,E,((47+D*16)<<16)+20+C*16),1:++C-A[2]/16?SetCursorPos(A[0]+C*16,A[1]+D*
16),GetPixel(GetDC(0),0,0)==0xFFFFFF?E=2:1:++D-A[3]/16?C=-1:0)){}}void main(){
if(_((long*)malloc(16),FindWindow("マインスイーパ",0),5,1,93),exit(0),0){}}
2008/08/01(金) 16:58:54
>>113
nurupo
2008/08/01(金) 17:05:54
少しだけ残るのね
128デフォルトの名無しさん
垢版 |
2008/08/14(木) 08:48:24
NOP
NOP
NOP
NOP
NOP
NOP
NOP
2008/08/14(木) 21:33:07
HLT
2008/08/26(火) 10:45:58
RDTSC
MOV ECX,EAX
STI
HLT
RDTSC
SUB EAX,ECX
RET
2008/08/26(火) 13:16:23
>>130
無意味な事を無駄なく実行するそのコードの有様に感動したw
2008/08/26(火) 14:41:07
STIとHLT間のクロック数の計測?
何がすごいのかわからない(たぶん俺の知識がなくて)
2008/08/26(火) 15:33:55
>>132
STIの後にHLTすると、割り込み許可状態で待機する。まぁOS作ってないと分からんわな。
つまりあれだ、アクセラレータか何かの設定をしたあとSleep(-1);して、
叩き起こされたところでその間に何クロック分の時間が経ったかを計算してるようなもん
(しかし2GHzのマシンでさえ2秒強でオーバーフローする!)
2008/08/26(火) 22:27:39
インラインアセンブラとかじゃ動かない?
2008/08/27(水) 00:10:56
>>133
解説してくれたのにわるいが、それくらいはわかるんだ。
結局何がすごいの?
2008/08/27(水) 00:32:51
>>135
あとは感性の問題だからあまり気にするな
すごいと思う人がいれば、何も思わない人がいる。それだけだ
2008/08/27(水) 00:42:12
自作自演だったんだろ
突っ込んでやるなよ
2008/08/27(水) 02:42:01
オーバーヘッドが少ないとか、そういう事じゃないの?
>>131の話からすると。
2008/08/27(水) 02:58:57
>>134
インラインアセンブラだとHLTもSTIも無いだろうな。RDTSCもあるかどうか

あなたがどんな特殊な/一般的な環境を持っているかは知らないけど。

>>135
明らかに無意味な事を無駄なく7行で表現するにはセンスが必要だと思うが
凄いとは思わんな
2008/08/27(水) 10:35:16
>>139
> インラインアセンブラだとHLTもSTIも無いだろうな。RDTSCもあるかどうか

それはない
2008/08/27(水) 11:59:07
なかったらgasでコンパイルできない
2008/08/27(水) 12:31:25
MSCのインラインアセンブラはDBとかの疑似命令に対応してなかったけどな
2008/08/27(水) 17:06:22
アセンブラとインラインアセンブラの区別がつかない人が居るスレはここですか?
2008/08/27(水) 17:07:36
インラインアセンブラにそれがなかったらgasでコンパイルできないのか、そうか

gasでコンパイルできないのか。
2008/08/28(木) 04:27:37
っていうかインラインの命令って下請けのアセンブラに丸投げなんじゃないの?
2008/08/28(木) 10:25:21
コンパイラによる。
GCCは丸投げするからなんでも通る。MSCは自前。
2008/09/07(日) 19:22:42
逆ポーランド記法な有理数電卓
入力は99文字まで、スタックの大きさは10まで
もういじりたくないorz
#include <stdio.h>
typedef int I;abs(I);G(a,b){for(;b&&(a%=b)&&(b%=a););return abs(a+b);}I s[20],*
p=s+20,*q=s+18,g;char f[100],*i=f;long strtol(I*,I**,I);main(){for(fgets(f,100,
stdin);*i;++i)47<*i&&*i<58?*--p=1,*--p=strtol(i,&i,0),--i:*i-32&&*i-10?*i-47?*i
-42?*i-45?*i-43?0:(p[2]=p[2]*p[1]+p[3]**p,p[3]*=p[1]):(p[2]=p[2]*p[1]-p[3]**p,p
[3]*=p[1]):(p[2]*=*p,p[3]*=p[1]):(p[2]*=p[1],p[3]*=*p),(p+=2,g=G(*p,p[1]),p[1]<
0?g=-g:0,*p/=g,p[1]/=g):0;for(;p-q-2;q-=2)printf("%d/%d\t",*q,q[1]);puts("");}
148デフォルトの名無しさん
垢版 |
2008/09/10(水) 11:09:57
#include<stdio.h>
#include<stdlib.h>
G(a,b){for(;b?a%=b:0;)b%=a;return a+b;}int*v,*u,*r,s[20],*p=s+20,*q=s+18,g,f[25]
;char*i=f;main(c){for(fgets(f,100,stdin);c=*i;++i)47<c&&c<58?*--p=1,*--p=strtol(
i,&i,0),--i:(v=p+1,r=p+2,u=p+3,c%=6)-2&&c-4?c-5?c?c-3?c-1||(*r=*r**v+*u**p,*u*=*
v):(*r=*r**v-*u**p,*u*=*v):(p[2]*=*p,*u*=*v):(*r*=*v,*u*=*p),(p+=2,g=G(*p,*u),g*
*u<0?g=-g:0,*p/=g,*u/=g):0;for(;p-q-2;q-=2)printf("%d/%d\t",*q,q[1]);puts("");}

↑適当に縮めてみました。gccで通るコードでよければ3・4行くらいで書けそうですね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況