七行プログラミング
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGDVDのプロテクトを解除するプログラムを作成!
我々も負けてはいられません!
ルール:七行なら言語は問いません。では、どうぞ!
0002デフォルトの名無しさん
NGNG・動作環境 MS-DOS プロンプト
1>class Suzuki {
2> public static void main(String args[]) {
3> while (true) {
4> System.out.print( System.in ) ;
5> }
6> }
7>}
0003SAGE
NGNG2>
3> int main()
4> {
5> printf( "Hello, World!" );
6> return 0;
7> }
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG1>cli
2>hlt
3>nop
4>nop
5>nop
6>nop
7>nop
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG卯津だ・・
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG>DVDのプロテクトを解除するプログラムを作成!
このコードが気になる。だれかあぷして。
0010アンノウン名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=983191866&ls=50
0011デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG#!/usr/bin/perl -w
# 526-byte qrpff, Keith Winstein and Marc Horowitz <[email protected]>
# MPEG 2 PS VOB file on stdin -> descrambled output on stdout
# arguments: title key bytes in least to most-significant order
$_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
>>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
[Hot Wired - 7行でDVD暗号を解読するプログラム]
http://www.hotwired.co.jp/news/news/technology/story/20010308302.html
0014デフォルトの名無しさん
NGNG誰かインデントしてみてくれ。
0015perl初心者
NGNGそれでSTDINから$_に2048バイトずつ読み込んで、$a=29,$c=142、
ifのなかで、@aに$_の内容をunsigned charの配列にして読み込み、
その21番目と48と論理積とって偽ならそのまま出力、真なら$h=5,
$_と@aの80番目のXORをとってその下8ビット・・・むきーーーー
0016デフォルトの名無しさん
NGNGさいてー、プププ
0017デフォルトの名無しさん
NGNG{
$a = 29;
$c = 142;
if ((@a = unpack("C*",$_))[20] & 48)
{
$h = 5;
$_ = unpack(b24,join("",@b = map
{
pack(B8,unpack(b8,chr($_^$a[--$h+84])))
}
@ARGV ));
s/...$/1$&/;
$d = unpack(V,pack(b25,$_));
$b = 73;
$e = 256 | (ord($b[4])) << 9 | ord($b[3]);
$d = $d>>8^($f = ($t = 255)&($d>>12^$d>>4^$d^$d/8))<<17,
$e = $e>>8^($t&($g = ($q = $e>>14&7^$e)^$q*8^$q<<6))<<9,
$_ = (map
{
$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;
$t ^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]
}
(16..271) )[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]
}
print pack("C*",@a)
}
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG>さいてー、プププ
否定はしないよ。あっちのメガデモ関係とか見てると鬱になるよな。
0022デフォルトの名無しさん
NGNG技術云々って言うか、暇な奴が多いってことだろうけど。
日本のプログラマは搾取対象なので、趣味でなんか作る暇も無い。
(そういう風にプログラマを使ってる糞会社のせい。)
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG凄いことだろ
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027いつでもどこでも名無しさん
NGNGテクノポリス別冊 プログラム・ポシェット
に投稿してました。
0028五郎
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG003121
NGNG0032トリッキーの1
NGNGすなわち砂嵐シミュレータを作ってみました。ざーっていうあれです。音は鳴らないけど。
言語はC+APIです。VisualC++6でコンパイル確認、Win2kと98で動作確認しました。
かな〜り削り取ったつもりですが、#include含めて13行もあります。
#include <Windows.h>
int i,r,a=640,b=400;long t[11]={40,640,400,2097153};char*k,y[0xfa000];long
WINAPI WndProc(HWND d,UINT m,UINT w,long l){PAINTSTRUCT p;switch(m){case 15:
HBITMAP q;HDC e;e=CreateCompatibleDC(BeginPaint(d,&p));GetDIBits(e,(q=
CreateCompatibleBitmap(p.hdc,a,b)),0,b,0,(BITMAPINFO*)t,0);for(k=y;k<y+a*b*4;
k+=4)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(p.hdc,0,0,a,b,0,0,0,b,y
,(BITMAPINFO*)t,0);DeleteObject(q);DeleteDC(e);EndPaint(d,&p);InvalidateRect
(d,0,0);return 0;case 2:PostQuitMessage(0);}return DefWindowProc(d,m,w,l);}int
WINAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int n){MSG m;WNDCLASS w;w.style=3;w
.lpfnWndProc=WndProc;w.cbWndExtra=w.cbClsExtra=0;w.lpszMenuName=0;w.hIcon=0;w.
hbrBackground=0;w.hCursor=LoadCursor(0,IDC_ARROW);w.lpszClassName="Tax's";w.
hInstance=i;RegisterClass(&w);ShowWindow(CreateWindow("Tax's","2ch",1<<19,99,
99,a,b,0,0,i,0),n);while(GetMessage(&m,0,0,0))DispatchMessage(&m);return 0;}
あと1行くらいは何とかなるかもしれないけれど、7行はちょっと……
オリジナルの、まともな変数名なコードを読みたいという人がもしいれば公開します。
あと、「俺ならここはこうする」という人がいれば是非是非教えてください。
0033このスレの1
NGNG003516進数スレより
NGNGint main(){
FILE *stream = fopen( "temp.txt", "w" );int giko, hahaha;
for( giko = 0; giko <= 0xF; giko++ ){fprintf( stream, "%x│", giko );
for( hahaha = 0; hahaha <= 0xF; hahaha++ )
fprintf( stream, " %x", giko & hahaha );
fprintf( stream, "\n" );}fclose( stream );}
0036デフォルトの名無しさん
NGNGまじで凄くねぇ?これ・・・
0037デフォルトの名無しさん
NGNG必要最低限のものが詰まってる感じだな
0038SAGE
NGNG11行にはなったけど…7行はツラいなぁ。
// 無意味にC++。VC++6依存かも。
#include <windows.h>
PAINTSTRUCT p;HBITMAP q;HDC e;char*k,y[1<<20];int a=640,b=400,i,t[11]={40,a,b,
2097153},r;long WINAPI f(HWND d,UINT m,UINT w,long l){if(m==15){GetDIBits((e=
CreateCompatibleDC(BeginPaint(d,&p))),(q=CreateCompatibleBitmap(p.hdc,a,b)),0,
b,0,(BITMAPINFO*)t,0);for(k=y;k<y+a*b*4;k+=4)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;
SetDIBitsToDevice(p.hdc,0,0,a,b,0,0,0,b,y,(BITMAPINFO*)t,0);DeleteObject(q);
DeleteDC(e);return !InvalidateRect(d,0,!EndPaint(d,&p));}if(m==2)
PostQuitMessage(0);return DefWindowProc(d,m,w,l);}int WINAPI WinMain(HINSTANCE
i,HINSTANCE,LPSTR,int n){WNDCLASS w={3,f,0,0,i,0,LoadCursor(0,IDC_ARROW),0,0,
"Tax's"};RegisterClass(&w);ShowWindow(CreateWindow("Tax's","2ch",1<<19,99,99,a
,b,0,0,i,0),n);for(MSG m;GetMessage(&m,0,0,0);DispatchMessage(&m));return 0;}
0039デフォルトの名無しさん
NGNGimport java.awt.*;import java.awt.image.*;import java.util.*;public class Noise
extends Canvas{int P=256;byte[]c=new byte[P];int W=320;int H=240;byte[]p=new
byte[W*H];MemoryImageSource s;Image image;Random r=new Random();public Noise(){
for(int i=0;i<P;i++)c[i]=(byte)r.nextInt();s=new MemoryImageSource(W,H,new
IndexColorModel(8,P,c,c,c),p,0,W);s.setAnimated(true);image=createImage(s);}
public void update(Graphics g){for(int i=0;i<W*H;i++)p[i]=(byte)r.nextInt();s.
newPixels(0,0,W,H);g.drawImage(image,0,0,null);repaint(20);}public void paint(
Graphics g){update(g);}public Dimension getPreferredSize(){return new Dimension(
W,H);}public static void main(String[]a){Frame f=new Frame("Noise");Noise n=new
Noise();f.add(n);f.pack();f.setVisible(true);}}
32氏にならって作成。
Javaアプリケーション。
3行オーバー。
APIの使い方ちゃうねん。
レイアウトめんどい。
終了はCTRL+Cで(駄目すぎ)。
はっきり言って面白くない。
他の題材を探してこようと思う。
004039
NGNGやはりPerlしかあるまいか。
0041トリッキーの1
NGNGやっぱ他人の目は大切だな。何で気付かない?という所でだいぶん無駄がありましたね。
3行目が処理系依存なのが残念ですが、修正しても多分11行に収まりそうです。
最適化ありがとうございます。随分参考になりました。
>>40
Javaは言語が綺麗ですからね。import文はいいなぁ……(笑)
0042デフォルトの名無しさん
NGNG16,7,8歳頃ってハッカーとして一番の成長期だと思う。
なのに、日本の高校生は受験に追われ、PCとネットに(特にネットに)触れる機会が
少ないので、諸外国と比べハッカーが育ちにくいというのは、憂うべき状況だな。
0043デモスレ住人
NGNG#include<windows.h>typedef void*v;typedef int i;i a=640,b=400,t[11]={40,640,400
,2097153},r;char*k,y[1<<25];HDC h,e;WINAPI w(v d,i m,i w,i l){if(m==15){v q=
CreateCompatibleBitmap(h,a,b);GetDIBits(e=CreateCompatibleDC(0),q,0,b,0,(v)t,0)
;for(k=y;k<y+a*b*4;k+=4)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(h,0,0,
a,b,0,0,0,b,y,(v)t,0);DeleteObject(q);DeleteDC(e);InvalidateRect(d,0,0);return
0;}return(m==2)?PostQuitMessage(0),0:DefWindowProc(d,m,w,l);}WNDCLASS c={0,(v)w,
0,0,(v)(1<<22),0,0,0,0,"."};WINAPI WinMain(v i,v x,v y,i z){MSG m;RegisterClass
(&c);h=GetDC(CreateWindow(".","頑張ってみたけど9行が限界かなぁ",37066<<16|32,
99,99,a,b,0,0,i,0));while(GetMessage(&m,0,0,0))DispatchMessage(&m);return 0;}
0044デフォルトの名無しさん
NGNGプ。ちょうどその期間だけポッカリとブランクがあるんですけれど。
0045名無しさんi486
NGNG0046>39
NGNGN.java
import java.awt.*;import java.awt.image.*;import java.util.*;class N extends
Frame{int W=320,H=240,P=256;byte[]c=new byte[P],p=new byte[W*H];
MemoryImageSource s;Image im;Random r=new Random();int i;N(){for(i=0;i<P;i++)c
[i]=(byte)r.nextInt();s=new MemoryImageSource(W,H,new IndexColorModel(8,P,c,c,c
),p,0,W);s.setAnimated(true);im=createImage(s);setSize(W,H);setVisible(true);}
public void update(Graphics g){for(i=0;i<W*H;i++)p[i]=(byte)r.nextInt();s.
newPixels(0,0,W,H);g.drawImage(im,0,0,null);repaint(20);}public void paint(
Graphics g){update(g);}static void main(String[]a){new N();}}
0047デフォルトの名無しさん
NGNGなんで?1行80文字以下の制限があるのに?プ
0048デフォルトの名無しさん
NGNG004943
NGNG#include<windows.h>typedef void*v;typedef int i;i a=640,b=400,t[11]={40,640,480
,2097153},r;char*k,y[1<<25];v h,m=y;WINAPI w(v d,i m,i w,i l){if(m==15){v q=Cr\
eateCompatibleBitmap(h,a,b);GetDIBits(h,q,0,b,0,(v)t,0);for(k=y;k<y+a*b*4;k+=4\
)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(h,0,0,a,b,0,0,0,b,y,(v)t,0);\
DeleteObject(q);return InvalidateRect(d,0,0);}if(m==2)ExitProcess(0);return De\
fWindowProc(d,m,w,l);}WINAPI WinMain(v i,v x,v y,i z){v c[]={0,(v)w,0,0,(v)(1<\
<22),0,0,0,0,"."};RegisterClass((v)c);h=GetDC(CreateWindow(".","2ch",37066<<16|
32,99,99,a,b,0,0,i,0));while(GetMessage(m,0,0,0))DispatchMessage(m);return 0;}
0050デフォルトの名無しさん
NGNG0051トリッキーの1
NGNGコンパイル出来なかったですが(Cコンパイラだとinclude以外は可能かな?)
参考になる部分は多かったです。文末の\はしらなかった。
WM_PAINTでBegin/EndPaintを呼ばなくてもいいんでしたっけ?
Windows3.1だと飛んでしまった記憶があるんですが、今試してみると
上手く動いてそうに見えます。MSDNにも「呼べ」って書いてないし。
最終的に10行になりました。後1行なら何とかなるでしょうが、
速度を維持したまま7行は絶対無理だと確信しました(笑)。
今回のはBegin/EndPaint問題も回避して、DCも毎回解放し、
何より全ての行が78文字以上なので等角フォントでみると
とても美しく見えます。俺としては満足です。
皆さんのコードはとても参考になりました。ありがとうございます。
#include <Windows.h>
HBITMAP q;HDC e,v;char*k,y[1<<20];int a=640,b=400,c,i,t[11]={40,a,b,1572865},r
;long WINAPI f(HWND d,UINT m,UINT w,long l){c=DefWindowProc(d,m,w,l);if(m==2)
PostQuitMessage(0);if(m==15){GetDIBits((v=GetDC(d)),(q=CreateCompatibleBitmap(
v,a,b)),0,b,0,(BITMAPINFO*)t,0);for(k=y;k<y+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9
+5)>>16;SetDIBitsToDevice(v,0,0,a,b,0,0,0,b,y,(BITMAPINFO*)t,0);DeleteObject(q
);InvalidateRect(d,0,0);ReleaseDC(d,v);}return c;}int WINAPI WinMain(HINSTANCE
i,HINSTANCE,LPSTR,int n){MSG m;WNDCLASS w={3,f,0,0,i,0,LoadCursor(0,IDC_ARROW)
,0,0,"Tax's"};RegisterClass(&w);ShowWindow(CreateWindow("Tax's","2ch",1<<19,99
,99,a,b,0,0,i,0),n);for(m;GetMessage(&m,0,0,0);DispatchMessage(&m));return 0;}
005246
NGNGN.java
import java.awt.*;import java.awt.image.*;import java.util.*;class N extends
Frame{int W=320,H=240;byte[]p=new byte[W*H];MemoryImageSource s;Image m;Random
r=new Random();void b(){for(int i=0;i<W*H;i++)p[i]=(byte)r.nextInt();}N(){b();s
=new MemoryImageSource(W,H,new IndexColorModel(8,256,p,p,p),p,0,W);
s.setAnimated(true);m=createImage(s);setSize(W,H);setVisible(true);}public void
update(Graphics g){b();s.newPixels();g.drawImage(m,0,0,null);repaint(20);}
public void paint(Graphics g){update(g);}static void main(String[]a){new N();}}
0053駄目プログラマ
NGNGint WINAPI WinMain (HANDLE hI,HANDLE hP,LPSTR lp,int n)
{
RECT g;DWORD i=-1;HDC hdc = GetDC(0);GetWindowRect(GetDesktopWindow(), &g);
while(i--)SetPixel(hdc,rand()%g.right,rand()%g.bottom,rand());
ReleaseDC(0,hdc);return 0;
}
ほらよ、7行砂嵐プログラム。WIN32用でCな。win98meで動作確認。win2kは未確認。
ほっとけば いつか終了(藁。 我慢できなくなったらタスク終了しとけ。
0054デフォルトの名無しさん
NGNG見るからに動かしてみたくないぞ(藁
0055デフォルトの名無しさん
NGNGなんだって最終的に1行にできるよ。
0056デフォルトの名無しさん
NGNG用意されてるものだけで書くのが面白いんだろ。
0057デフォルトの名無しさん
NGNGこれはすげえ。これだけのコードの短さを保ちながら、WNDCLASS部分などの
エラーチェック以外はほぼ完璧だ。しかも鬼門のDIBits関連APIをいじりながら、
描画アルゴリズムも最適化されてる。それでこの速度が達成出来るのか、うーむ。
いい勉強をさせられた。久々に他人のソースを見て感動したよ。
0058デフォルトの名無しさん
NGNG>WM_PAINTでBegin/EndPaintを呼ばなくてもいいんでしたっけ?
呼ばなくてもいいけど、そのときはDefWindowProc()に処理を回さないとだめ。
DefWindowProc()が代わりにBegin/EndPaintを呼んでくれる。
WM_PAINTでBegin/EndPaintを呼ばずにreturnすると、無限ループになるよ。
005957
NGNG51さんはちゃんとその周りの処理も出来ているよ。
先にDefWindowProcを呼んで、その後で個別処理をしている。
ちなみにBegin/EndPaintを呼ばないと無限ループというのは間違いで、
WM_PAINTが絶え間なく呼ばれ続けるだけのはず。
今回の様なプログラムならそれを逆手にとって
InvalidateRectを呼ばない方法も考えられるね。
(そうするとまた少しコードが短くなる(笑))
でもそれは本来正しいプログラムではないので、51さんの方法がベストでしょう。
0060デフォルトの名無しさん
NGNGもう1行いけそう
#include <windows.h>
HBITMAP q;HDC e,v;char*k,y[1<<20];int a=640,b=400,c,i,t[11]={40,a,b,1572865},r;
int WINAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){int m[7];WNDCLASS w={67,De\
fWindowProc,0,0,i,0,0,0,0,"1"};RegisterClass(&w);ShowWindow(CreateWindow("1",0,
1<<19,0,0,a,b,0,0,i,0),1);while(GetMessage((MSG*)m,0,0,0)){DefWindowProc((HWND)
m[0],m[1],m[2],m[3]);if(m[1]==513)return 0;if(m[1]==15){GetDIBits((v=GetDC((HW\
ND)m[0])),(q=CreateCompatibleBitmap(v,a,b)),0,b,0,(BITMAPINFO*)t,0);for(k=y;k<y
+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(v,0,0,a,b,0,0,0,b,
y,(BITMAPINFO*)t,0);DeleteObject(q);InvalidateRect((HWND)m[0],0,0);}}}
006160
NGNGウインドウを閉じると、メモリにゴミが残りますw
スタイル変更したほうがよかったな。
0062デフォルトの名無しさん
NGNGふ〜ん。Javaの方が短いけれどずいぶんスッキリしているなあ
0063デフォルトの名無しさん
NGNG大学に行ったらこんな凄いプログラムつくってみたいです
0064名無しでGO!
NGNG006560
NGNG#include <windows.h>
HBITMAP q;HDC v;char*k,y[1<<20];int a=640,b=400,c,i,t[11]={40,a,b,1572865},r;W\
INAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){int m[7];WNDCLASS w={67,DefWind\
owProc,0,0,i,0,0,0,0,"1"};RegisterClass(&w);ShowWindow(CreateWindow("1",0,1<<19
,0,0,a,b,0,0,i,0),1);while(GetMessage((MSG*)m,0,0,0)){w.lpfnWndProc((HWND)m[0],
m[1],m[2],m[3]);if(m[1]==513)break;if(m[1]==15){v=GetDC((HWND)m[0]);for(k=y;k<y
+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(v,0,0,a,b,0,0,0,b,
y,(BITMAPINFO*)t,0);DeleteObject(q);InvalidateRect((HWND)m[0],0,0);}}return 0;}
0066>64
NGNG0067トリッキーの1
NGNG情報tnxです。
59さん、確かにコレを利用するとかなり短く書けますね。
>>60
うーん、怖い。メッセージループ内で処理する場合、
SendMessageで送られたメッセージなどが
直接プロシージャにまわされてしまうので、
この例では例えばWM_DESTROYなどが処理できないはずです。
しかし、今思いついたんですが、GetMessageの返す
エラーメッセージを利用する方法がありますね。
というわけで>>58-60さんを参考にして書いてみました。
これも8行ですが、ちゃんと終了出来ます。
メモリはOSが解放してくれることを期待しています。
#include <Windows.h>
HBITMAP q;char*k,y[1<<20];int a=640,b=400,r,m[8];BITMAPINFO t={40,a,b,1,24};H\
WND g;int WINAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){WNDCLASS w={3,DefWi\
ndowProc,0,0,i,0,LoadCursor(0,IDC_ARROW),0,0,"T"};RegisterClass(&w);HDC v=Get\
DC(g=CreateWindow("T","2ch",268959744,99,99,a,b,0,0,i,0));q=CreateCompatibleB\
itmap(v,a,b);while(GetMessage((MSG*)m,g,0,0)!=-1){if(m[1]==15){GetDIBits(v,q,0
,b,0,&t,0);for(k=y;k<y+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToD\
evice(v,0,0,a,b,0,0,0,b,y,&t,0);}else DispatchMessage((MSG*)m);}return 0;}
7行が見えてきましたね(笑)
0068トリッキーの1
NGNG>>62
美しい言語である上、比較的簡単にグラフィックをさわれますからね。
>>63
これは悪い例です。というか、パズルみたいな物です。参考にしてはいけません。
確かに私は大学生ですが、普段こんな狂ったコードを書いているわけではありません。
>>64
他に適した言語がなかなか見つからないんですが、心当たりありますか?
使ったこと無いけれど、HSPとかだと簡単なのかな?
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGプログラム組んだことないのですが
はじめからC++って大丈夫ですか??
C言語知らなくてもC++の入門書読んでも大丈夫ですか??
007160
NGNG>メモリはOSが解放してくれることを期待しています。
CS_CLASSDC か CS_OWNDC指定しておけば平気だと思う。
この例だと
WNDCLASS w = {67, ...
かな
0072トリッキーの1
NGNGなるほど、名案!素晴らしい。
ちなみに>>67は、WM_PAINTが外から投げられると画面の更新を止めます。
その可能性は結構大きいので、バグプログラムだと言えるでしょう。悲しい。
>>70
すみません、スレ違いなので別の場所で会えれば……
007360
NGNG>警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。
>while (GetMessage(lpMsg, hWnd, 0, 0)) ...
おぃ、どういうことだよ。
今までのサンプルってなんなんだ?
0074トリッキーの1
NGNG-1を返しても、メッセージは大抵取れています。
Windows3.1の名残なのか、hwnd==NULLの場合でも正常に動作します。
ただこの場合、頻繁にエラーの-1が返されるようです。
しかし、本当にエラー(Windowが消滅した、など)を返してきた場合
対応できないので、>>67ではわざわざhwndを設定してエラーが出ないようにし、
その代わりエラーが返ってきたら(必ずいつか返ってくる)強制終了しています。
007560
NGNG7行到達w
Cだとプリプロセッサというウザイものがあるから難しいねw
>>67を参考に。
#include <windows.h>
HDC v;char*k,y[1<<20];int a=640,b=400,c,i,r, m[8];BITMAPINFO t={40,a,b,1,24};H\
WND g;WINAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){ WNDCLASS w={67,DefWind\
owProc,0,0,i,0,0,0,0,"1"};RegisterClass(&w);v=GetDC(g=CreateWindow("1",0,26895\
9744,0,0,a,b,0,0,i,0));while(GetMessage((MSG*)m,g,0,0)!=-1){if(m[1]==15){for(k=
y;k<y+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(v,0,0,a,b,0,0
,0,b,y,&t,0);}elseDispatchMessage((MSG*)m);}return 0;}
0076トリッキーの1
NGNG恥ずかしい……まさかこんな大穴を見落としていたとは。
確かにここまできたらGetDIBitsをする意味は全くないですね。
ちょっと惜しいのは、ウィンドウをドラッグすると更新が止まってしまう事です。
↓はそれを修正したInvalidateRectを呼ぶバージョンです。あとちょっと手を入れてあります。
#include <Windows.h>
char*k,y[1<<20];int a=640,b=400,c,r,m[8];BITMAPINFO t={40,a,b,1,24};HWND g;WI\
NAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){WNDCLASS w={67,DefWindowProc,0,0
,i,0,0,0,0,"T"};RegisterClass(&w);HDC v=GetDC(g=CreateWindow("T","2ch",513<<19
,99,99,a,b,0,0,i,0));while(GetMessage((MSG*)m,g,0,0)!=-1){if(m[1]==15){for(k=y
;k<y+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;SetDIBitsToDevice(v,0,0,a,b,0,0
,0,b,y,&t,0);}else DispatchMessage((MSG*)m);InvalidateRect(g,0,0);}return 0;}
しかし60さん、メッセージループといい素晴らしい目の付け所です。
60さんがいなければ7行達成出来ませんでしたね。今回はホントに勉強になりました。
007860
NGNGむむっ、こっちも別のアプローチで完成w
InvalidateRect呼ばないけど、ちょっとずるしてその辺解決。
#include <windows.h>
HDC v;char*k,y[1<<20];int a=640,b=400,c,i,r, m[8];BITMAPINFO t={40,a,b,1,24};H\
WND g;WINAPI WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){WNDCLASS w={67,DefWindow\
Proc,0,0,i,0,0,0,0,"1"};RegisterClass(&w);v=GetDC(g=CreateWindow("1",0,2689597\
44,0,0,a,b,0,0,i,0));for(;;){if(PeekMessage((MSG*)m,0,0,0,1))DispatchMessage((
MSG*)m);else{if(!IsWindow(g))return 0;for(k=y;k<y+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(
r=r*9+5)>>16;SetDIBitsToDevice(v,0,0,a,b,0,0,0,b,y,&t,0);}}}
0079トリッキーの1
NGNGああなるほど。良くあるOnIdleの形ですね。
どちらの手法でも最終的にCPUを喰いまくるので(笑)
OKでしょう。
……そろそろ次のネタの時期ですね。
フルスクリーンのラスタースクロールとか(笑)
0080トリッキーの1
NGNG自己レス
>最終的に10行になりました。後1行なら何とかなるでしょうが、
>速度を維持したまま7行は絶対無理だと確信しました(笑)。
今日の昼の発言。なんといい加減な確信だ(鬱)
0081デフォルトの名無しさん
NGNG0082トリッキーの1
NGNG008381>82
NGNG008760
NGNG俺もアレに触発されてやってみたわけだし。
008852
NGNGJavaの方が短いけれどわかりやすい。
・・・、というかWin32 APIよくわからないだけかも・・・。
乱数使うときはRandom#nextInt()を使ったほうが高速なんですね。
今までMath.random()使っていたけれど実はMath.random()が重いということを
知った今日この頃。
# Random#nextInt()はintだしねー
008960
NGNG最後におまけで整理した行連結(\)なしバージョン
#include <windows.h>
char*k,y[1<<20];int a=640,b=400,c,r;BITMAPINFO t={40,a,b,1,24};WINAPI WinMain(
HINSTANCE i,HINSTANCE,LPSTR,int){MSG m;WNDCLASS w={67,DefWindowProc,0,0,i,0,0,0
,0,"1"};RegisterClass(&w);HWND g=CreateWindow("1",0,268959744,0,0,a,b,0,0,i,0);
HDC v=GetDC(g);for(;;){if(PeekMessage(&m,0,0,0,1))DispatchMessage(&m);else{if(!
IsWindow(g))return 0;for(k=y;k<y+a*b*3;k+=3)*k=*(k+1)=*(k+2)=(r=r*9+5)>>16;
SetDIBitsToDevice(v,0,0,a,b,0,0,0,b,y,&t,0);}}}
0090デフォルトの名無しさん
NGNG009160
NGNG元絵を作る時点で7行超えてるし(鬱
0093デフォルトの名無しさん
NGNGdd 10cd13b0h,0c38ea0b7h,193740e4h,0f8e2aac7h,8626c031h,0f2e94105h,0ffh
0094トリッキーの1
NGNGそれは7行スレよりトリッキースレでしょう。
お待ちしております(笑)
>>91
骨格だけ作ってみました。10行です。最適化していないのでコード的に無駄だらけです(tとか)。
ここから出発するのはやめた方がいいかもしれません。BitBltは良くない。
とはいえ、Get/PutDIBitsを使うのもいまいち良くないですし。
いっそのこと、Windowの形態を無くしてしまうのも手かも……
その場合終了方法が問題です。
フルスクリーン ラスタースクロール
#include <windows.h>
#include <math.h>
HDC v,d,e;HWND g;int n,f,t[10]={40,0,0,1572865},m[8];WINAPI WinMain(HINSTANCE
i,HINSTANCE,LPSTR,int){t[1]=GetSystemMetrics(0);t[2]=GetSystemMetrics(1);
WNDCLASS w={67,DefWindowProc,0,0,i,0,0,0,0,"Lus"};RegisterClass(&w);v=GetDC(g=
CreateWindow("Lus",0,WS_VISIBLE|WS_POPUP,0,0,t[1],t[2],0,0,i,0));d=GetDC(0);
SelectObject(e=CreateCompatibleDC(d),CreateCompatibleBitmap(d,t[1],t[2]));
BitBlt(e,0,0,t[1],t[2],d,0,0,SRCCOPY);while(GetMessage((MSG*)m,g,0,0)!=-1){if
(m[1]==15)for(n=0;n<t[2];n++)BitBlt(v,sin(n*3.0/t[2])*sin((f++)/40.0)*60,n,t[1
],1,e,0,n,SRCCOPY);DispatchMessage((MSG*)m);InvalidateRect(g,0,0);}return 0;}
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGなんでこの行数でこんな事が出来るんだ・・
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGRubyじゃ無理だな。
0100デフォルトの名無しさん
NGNGおいおい、(約)7行っていう縛りがあるから面白いんじゃないの?
50行×79字なんて掲示板には適さないし、研ぎの魅力が半減だ。
010138
NGNG…というネタを振ろうと思って試しに作ってみたら出来ちゃった。
#include <stdio.h>
main(int C,char**V){FILE*r,*w;int c,p=-1,l=1;if(C==4){r=fopen(V[2],"rb");if(r)
{w=fopen(V[3],"wb");if(*V[1]-'x'){while((c=getc(r))-EOF){if(p-c||l==255){if(l-
1)putc(p,w),putc(l,w);putc(c,w),l=0;}l++,p=c;}if(l-1)putc(p,w),putc(l,w);}else
{while((c=getc(r))-EOF){if(c==p){l=getc(r);while(l--)putc(p,w);if(EOF==(c=getc
(r)))break;}else if(p+1)putc(p,w);p=c;}}fclose(r);fclose(w);}}else puts(
"usage: [a|x] [file_in] [file_out] (a:compress, x:expand)");return 0;}
# ただしただのRLEなので単色ビットマップとか以外はむしろサイズ増えるかも(^^;
010260
NGNG>>94
まだいけそうなのでがんばります。
#include <windows.h>
#include <math.h>
WinMain(HINSTANCE i,HINSTANCE,LPSTR,int){WNDCLASS w={67,DefWindowProc,0,0,i,0,0
,0,0,"R"};HDC e,d=GetDC(0);int a=GetSystemMetrics(0),b=GetSystemMetrics(1),n,f,
o=SRCCOPY;RegisterClass(&w);HWND g=CreateWindow("R",0,9<<28,0,0,a,b,0,0,i,0);M\
SG m;SelectObject(e=CreateCompatibleDC(d),CreateCompatibleBitmap(d,a,b));BitBlt
(e,0,0,a,b,d,0,0,o);while(IsWindow(g)){if(PeekMessage(&m,0,0,0,1))DispatchMess\
age(&m);for(n=0;n<b;n++)BitBlt(GetDC(g),sin(n*3.0/b)*sin((f++)/40.0)*60,n,a,1,e
,0,n,o);}return 0;}
0103デフォルトの名無しさん
NGNGこの調子でスライド辞書+ハフマンお願い。
0104デフォルトの名無しさん
NGNG010560
NGNGまっとうなやつで可能なのかな?
#include <windows.h>
#include <math.h>
int a=GetSystemMetrics(0),b=GetSystemMetrics(1),n,f,o=SRCCOPY,s;MSG m;HINSTANCE
i;main(){ WNDCLASS w={67,DefWindowProc,0,0,i=GetModuleHandle(0),0,0,0,0,"R"};
RegisterClass(&w);HWND g=CreateWindow("R",0,9<<28,0,0,a,b,0,0,i,0);HDC d=GetDC(
g);while(IsWindow(g)){if(PeekMessage(&m,0,0,0,1))DispatchMessage(&m);else{for(n
=0;n<b;n++)BitBlt(d, s=sin((f+n+1)/40.0)*60,n,a,1,d,s,n,o);f++;}}return 0;}
0106デフォルトの名無しさん
NGNGムリ(藁
010760
NGNG0108トリッキーの1
NGNGこれでいいんじゃないでしょうか。Windowを登録しないという技を使えば、
表示的にはまともな(ただし作法からは大幅にはずれた)プログラムは出来そうですが。
砂嵐で培ったノウハウが活用されていますね。C+APIに関してはコレくらいかな?
さて、次は何でしょう。圧縮ですか?インデントツールですか?
インデントツールは難しそうです。構文解析を7行は辛いな(笑)
0109デフォルトの名無しさん
NGNG0110B++
NGNGとりあえずラスタスクロールを>>94をもとに作ってみた。
#include <windows.h>
#include <math.h>
char*p,q[1<<23];int v,w,h,y,f;HANDLE n,a,b,c,t;int APIENTRY WinMain(HINSTANCE
i,HINSTANCE,LPSTR,int){v=(w=GetSystemMetrics(0))*3;h=GetSystemMetrics(1);b=
CreateCompatibleDC(a=GetDC(0));BITMAPINFO o={{40,w,h,1,24}};SelectObject(b,
CreateDIBSection(a,&o,0,(void**)&p,0,0));BitBlt(b,0,0,w,h,a,0,0,SRCCOPY);c=
GetDC(n=CreateWindow((LPCTSTR)32770,"2ch",9<<28,0,0,w,h,0,0,i,0));MSG m;
CopyMemory(q+v,p,v*h);while(GetMessage(&m,0,0,0)){for(y=0;y<h;y++)CopyMemory(p
+y*v,q+y*v+v+(int)(sin(y*3.0/h)*sin(++f/10.0)*60)*3,v);BitBlt(c,0,0,w,h,b,0,0,
SRCCOPY);DispatchMessage(&m);InvalidateRect(n,0,0);}return 0;}
下手にバックバッファ(DIBSection)使ったら長くなった。
ポイントはウィンドウクラスに32770(ダイアログ用のクラス)
を使うとRegisterClassが不要になること。
0111トリッキーの1
NGNG参戦大歓迎です(笑)
>ポイントはウィンドウクラスに32770(ダイアログ用のクラス)
なるほど、そんな怪しい方法があったとは。参考になります。
この場合、"EDIT"などでもいいかもしれませんね。
しかしこの場合、どうやって終了させればいいんでしょ?
ALT+F4利かないですね。例のSendMessage問題が難しそうです。
後、このコードはC++処理系だとコンパイル出来ないのが残念ですね。
0113トリッキーの1
NGNGstdio、stdlibだけで2行だし、そのうえ特殊な物をつかうと……
致し方ないですけどね(笑)
0114デフォルトの名無しさん
NGNG011638
NGNG※ 構文解析?知らんな(ナンチテ
※ IEからコピペするときは行末スペースを削ってからぶち込んでクレ。
※ 絶対Perlとかの方が向いてる作業だよなぁ、これ…。
#include <stdio.h>
#define g EOF!=(c=getc(stdin))
#define p(x) putc(x,stdout)
int main(){int i,c,d=0,n=0;while(g){p(c);if(c!='#')break;while(g){p(c);if(c==
'\n')break;}}while(g){if(c=='\\'&&g&&c!='\n')p('\\');if(c!='\n'){if(c=='}')d--
;if(n){n=0;for(i=0,p('\n');i<d;i++)p('\t');}p(c);if(c==',')p(' ');if(c==';')n=
1;if(c=='{'){d++;n=1;}if(c=='}')n=1;}}return 0;}
011738
NGNG011839
NGNGopen I,"s.txt";while(<I>){chop;$m.=$_;$w=length;$h++;}$p=index $m,"P";$m=~
s|P|.|;@b=(0,0,$w,0,-1,0,1,0,-$w,0);while($m=~/\$/){$t=$m;substr $t,$p,1,"P";
for(1..$h){print substr($t,0,$w,"")."\n";}print"\n";$v=$b[<STDIN>];$d=$p+$v;
$c=substr $m,$d,1;if($c eq'#'){next;}if($c eq'$'){$c=substr $m,$d+$v,1;if($c
eq'#'){next;}substr $m,$d,1,".";substr($m,$d+$v,1,$c eq"_"?'#':'$');}$p=$d;}
s.txt---------------------
................
......#####.....
......#...#.....
....###$..#.....
....#..._.#.....
....#...__#.....
....#.P.$$#.....
....#.....#.....
....####..#.....
.......####.....
................
................
>>109氏の挑戦に応えて、倉庫番である。
5行である。
恐るべしPerl。
ステージは外部ファイル(邪道?)。
移動は8、2、4、6+リターン。
Perl初心者なので無駄あると思う。
誰か面白いステージ作って下さい。
011939
NGNG012039
NGNG;@b=(0,0,$w,0,-1,0,1,0,-$w,0);while($m=~/\$/){$t=$m;substr $t,$p,1,'P';for(1..$h
){print substr($t,0,$w,"")."\n";}print"\n";$v=$b[<STDIN>];$d=$p+$v;$c=substr $m,
$d,1;if($c eq'#'){next;}if($c eq'$'){$c=substr $m,$d+$v,1;if($c =~/#|\$/){next;}
substr $m,$d,1,".";substr $m,$d+$v,1,$c eq'_'?'#':'$';}$p=$d;}
よし、修正(汗)。
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGじゃあどうすれバインダー
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125トリッキーの1
NGNG残念ながらうちのjperl4(dos)ではインタプリタを通りませんでした。
それっぽいところを修正したら、今度は標準出力に何も表示されません。
うーん、同じ症状の人はいないかな?
>>121-122
perlは汚い言語なので、凄いと思わせるプログラムはなかなか難しいでしょう。
よほど難しい題材でないと、「7行でこんな事が!」という感じにはなりづらいです。
>>108
参考までに、全画面ラスタースクロールのWindowを登録しないバージョンを作ってみました。
展開してみるとわかると思うけど、簡単かつ邪道な方法です。
7行です。終了は左クリックです。
#include <windows.h>
#include <math.h>
WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){HDC d,e;int x=GetSystemMetrics(
0),y=GetSystemMetrics(1),n,f;d=GetDC(0);SelectObject(e=CreateCompatibleDC(d),
CreateCompatibleBitmap(d,x,y));BitBlt(e,0,0,x,y,d,0,0,SRCCOPY);while(!(
GetKeyState(1)&(1<<31))){for(n=0;n<y;n++)BitBlt(d,sin((n)*3.0/y)*sin((f++)/
40.0)*60,n,x,1,e,0,n,SRCCOPY);Sleep(1);}InvalidateRect(0,0,1);return 0;}
すかすかなので、気合いを入れればもう1行くらい余裕で縮まりそうです。
全画面砂嵐なら5行で作れるかもしれませんね(笑)
012638
NGNG#include <stdio.h>
#define p(x) putchar(x)
main(){int c,i,v=10,k=0,d=0,n=0;for(;(c=getchar())-EOF;v=c){if(v==10&&c==35)do
{p(c);}while(c-10&&(c=getchar())-EOF);else{if(c==92&&g){if(c==10){c=v;continue
;}else p(92);}if(c==10)c=32;if(c=='}')d--;if(n){n=0;if(!k&&c-59)for(i=0,p(10);
i<d;i++)p(9);}if(c==41)p(32);p(c);if(c==44)p(32);if(c==40)p(32),k++;if(c==41)k
&&k--;if(c=='{')n=1,d++;if(c=='}'||c==59||c==58)n=1;}}return 0;}
ダメダメ。俺の腕じゃこんなもんだな。
>>118
うち(v5.6.0)だとちゃんと動いたっす。マップも
スクリプト内に埋めちゃってても7行で行けるんでは?
0127デフォルトの名無しさん
NGNGいまどきPerl4はないと思うが…。今の普通はどう考えても5だよ。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGa.pas---------------------
program a;uses Windows;var d,e:HDC;x,y,n,f:UINT;begin x:=GetSystemMetrics(0);y
:=GetSystemMetrics(1);d:=GetDC(0);e:=CreateCompatibleDC(d);SelectObject(e,
CreateCompatibleBitmap(d,x,y));BitBlt(e,0,0,x,y,d,0,0,SRCCOPY);while((1shl 31)
and GetKeyState(1)=0)do for n:=0to y-1do begin BitBlt(d,Round(sin(n*3/y)*sin(f
/40)*60),n,x,1,e,0,n,SRCCOPY);Inc(f);Sleep(0);end;InvalidateRect(0,0,True)end.
5行でふ。しっかし、こんなんでよう動きますなあ・・・。
0130デフォルトの名無しさん
NGNG7行でレイトレーシングしてクレヨ
0131デフォルトの名無しさん
NGNGむしろ、7行レイトレーシングを引っ提げて
そっちから殴り込みかけてくれヨ。(^^)
0132デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGhttp://www.activestate.com/Products/ActivePerl/
0135*nix厨
NGNGスライド辞書圧縮にチャレンジしました。
#include <stdio.h>
int l=0,s,i,j,m,e=32,f=0x3ff;char c,*d=0;main(){while((c=getchar())-EOF){d=rea\
lloc(d,l+1);d[l++]=c;}d[l]=0;if(l<4){for(i=0;i<l;i++)printf("%c",d[i]);return 0
;}printf("%c%c%c",d[0],d[1],d[2]);for(s=3;s<(l-3);s++){j=(s>e)?e:s;for(m=1,j=((
l-s-2)>j)?j:(l-s);j>2;j--){for(i=(s-(s&f));i<s;i++){if(!(m=memcmp(d+i,d+s,j)))
break;if((i+j)>l)break;}if(!m)break;}if(!m){printf("(%d,%d)",s-i,j);s+=j-1;}el\
se putchar(d[s]);}for(i=s;i<l;i++) printf("%c",*(d+i));return 0;}
の7行。
コード化は課題とさせてください。
動作はテキストファイルを放りこめば見れます。
0136デフォルトの名無しさん
NGNG0137*nix厨
NGNGま、7行で動くからいいか・・・
0138>126
NGNG#include <stdio.h>
#define p(x) putchar(x)
main(){int c,i,v=10,k=0,d=0,n=0;for(;(c=getchar())-EOF;v=c){if(v==10&&c==35)do
p(c);while(c-10&&(c=getchar())-EOF);else{if(c==92&&(c=getchar())-EOF){if(c==10)
{c=v;continue;}else p(92);}if(c==10)c=32;if(c=='}')d--;if(n){n=0;if(!k&&c-59)
for(i=0,p(10);i<d;i++)p(9);}if(c==41)p(32);p(c);if(c==44)p(32);if(c==40)p(32),k
++;if(c==41)k&&k--;if(c=='{')n=1,d++;if(c=='}'||c==59||c==58)n=1;}}return 0;}
こうじゃないか?
0139デフォルトの名無しさん
NGNG>そっちから殴り込みかけてくれヨ。(^^)
うむ。我々は誰の挑戦でも受ける!
0141デフォルトの名無しさん
NGNGうぉぉ。
本当にできるとは。
新しい方も見てみたい。
age
0143デフォルトの名無しさん
NGNGコンパイル通らんぞ
#include <stdlib.h>
#include <memory.h>
が抜けてる。
それと、これって当然解凍できないよね。
バイナリの圧縮も出来ないし。
まだまだ職人の入り込む余地はあるな
0144デフォルトの名無しさん
NGNG行指向の言語じゃ無理だし。
流行のDelphiやpythonじゃこうはいかない・・?
0145デフォルトの名無しさん
NGNG(c=getchar())-EOF
の部分って、等価比較より引き算の方が速いって事ですか?
それとも単に字数を稼ぐ為?
EOFのこういう使い方は初めてみたので。
0146*nix厨
NGNG#include <stdio.h>
int e=31,f=1023,g=0,h,i,j,k,l=0,m,n=127,s;char *d=0;main(){while((s=getchar())-EOF){d=
realloc(d,l+1);d[l++]=s;}d[l]=0;for(s=0;s<(l-3);s++){j=(s>e)?e:s;for(m=1,j=((l-s-2)>j)?j:(
l-s);j>2;j--){for(i=(s<f)?0:s-f;i<s;i++){if((!(m=memcmp(d+i,d+s,j)))||((i+j)>l))break;}if(
!m)break;}if(!m){if(s-g){for(k=s-g;k>n;k-=n){putchar(n);for(h=0;h<n;h++)putchar(d[g++]);}
putchar(k);for(;k>0;k--)putchar(d[g++]);}putchar(0x80+(j<<2)+(s-i)/256);putchar((s-i)%256)
;s=(g=s+j)-1;}}putchar(l-s);for(i=s;i<l;i++)putchar(d[i]);return 0;}
下記データが並んだのフォーマット。
先頭バイトの*値*が0x80未満なら以降の*値*バイトが未圧縮。
0x80以上なら次のバイトと合わせて先頭ビットがフラグ(1=圧縮)、7-16ビットが
一致する相対位置、2-6が一致するバイト数。
これで復号も可能なデータになったはずだけど、バグがあるかも。
0147*nix厨
NGNGついでにターミナルの設定を間違ったみたいで、横が90字くらいあるぞ(w
だめだ。今日は寝よ
014839
NGNG>スクリプト内に埋めちゃってても7行で行けるんでは?
エディットしやすさを優先したんですが、
よく見たら埋め込むスペースがありますね。
というわけで、ちょこちょこと無駄を省いて
(代入後再評価できるのど忘れしてた。ジーザス、なんてこった)
マップ込み5行倉庫番でし。
sokoban.pl-----------------------
$p=35;$m='###########..$...._##.$.##.._##..$...._##.$....._##..$########..# '
.' #..##### #....._# ########';@b=(0,0,$s=10,0,-1,0,1,0,-$s,0);while($m=~/\$/
){substr$t=$m,$p,1,'P';for(1..$s){print substr($t,0,$s,"")."\n";}print"\n";if((
$c=substr$m,$d=$p+($v=$b[<>]),1)eq'#'){next;}if($c eq'$'){if(($c=substr$m,$d+$v,
1)=~/#|\$/){next;}substr$m,$d,1,".";substr$m,$d+$v,1,$c eq'_'?'#':'$';}$p=$d;}
0149高橋はゑみ
NGNG-(37,24),"■",3,B:M=-1730:V=2:FORT=1TO400:I=INP(0):V=-V*(I=255)+(I=253)*2-(I=247
)*2+((I=223)-(I=251))*120:M=M+V:IFPEEK(M)=32THENBEEP1:POKEM,135:PRINTCHR$(11);T:
BEEP0:NEXT
ワンラインあるけあるけゲームだよー。P8用。
015039
NGNGsokoban.pl----------------
$p=35;$m='###########..$...._##.$.##.._##..$...._##.$....._##..$########..#....'
.'..#..#####..#....._#..########';@b=(0,0,$s=10,0,-1,0,1,0,-$s,0);while($m=~/\$/
){substr$t=$m,$p,1,'P';for(1..$s){print substr($t,0,$s,"")."\n";}print"\n";if((
$c=substr$m,$d=$p+($v=$b[<>]),1)eq'#'){next;}if($c eq'$'){if(($c=substr$m,$d+$v,
1)=~/#|\$/){next;}substr$m,$d,1,".";substr$m,$d+$v,1,$c eq'_'?'#':'$';}$p=$d;}
0151むぎ茶
NGNGlanguage="JavaScript">
&lt;!--
alert(" Λ_Λ \n ( ´∀`)\n ( )\n | | | \n (__)_) ");
//--&gt;
</script>
0152デフォルトの名無しさん
NGNG動いたよん(Perl5.6Win32) ヽ( ´ー`)ノ
0153*nix厨
NGNG#include <stdio.h>
int e=31,f=1023,g=0,h,i,j,k,l=0,m,n=127,o,(*p)()=&putchar,s;char *d=0;main(){
while((s=getchar())-EOF){d=realloc(d,l+9);d[l++]=s;}memset(d+l,0,8);printf(
"%x\n",l);l+=8;for(s=0;s<(l-3);s++){j=(s>e)?e:s;for(m=1,j=(l-s-2>j)?j:(l-s);j>2
;j--){for(i=(s<f)?0:s-f;i<s;i++){if(!(m=memcmp(d+i,d+s,j))||i+j>l)break;}if(!m)
break;}if(!m){if(s-g){for(k=s-g;k>n;k-=n)r(o=n);r(o=k);}(*p)(128+(j<<2)+(s-i)/
256);(*p)((s-i)%256);s=(g=s+j)-1;}}}r(){(*p)(o);for(h=0;h<o;h++)(*p)(d[g++]);}
出力フォーマットは>>146と同じだが、先頭行に圧縮前サイズを出力するようになった。
これは終了時の処理が7行にまとまらなかったためで、オーバーランして圧縮し、
復号時に圧縮前サイズまで展開をする。この外道な仕様で勘弁して(w
0154*nix厨
NGNG#include <stdio.h>
#include <stdlib.h>
int c,h,i,j,l,s=0;char *d=0;main(){if(scanf("%x\n",&l)-1)return 1;if(!(d=(char*
)malloc(l+8)))return 2;while((c=getchar())-EOF){if(c<127){for(i=0;i<c;i++){if((
h=getchar())-EOF){d[s++]=h;}else return 1;}}else{if((h=getchar())-EOF){h+=(c-
128)<<8;for(i=0,j=s-(h&1023);i<h>>10;i++){d[s++]=d[j++];if(s>l)break;}}else
return 1;}if(s>l)break;}fwrite(d,1,l,stdout);return 0;}
フォーマット異常時の処理まで手が回っていないので、>>153の出力結果だけ
放りこむようにしてください。
0155デフォルトの名無しさん
NGNG次はやっぱしハフマンかArithへの挑戦?
http://www.ioccc.org/
ここに応募してみるのも一興。
0156デフォルトの名無しさん
NGNGおぉ!すげーよ
バイナリもそれなりに圧縮するし、ちゃんと戻る(w
謝っとこ、何度も書き込むんで、ドキュソと思っていました。ごめん
0157デフォルトの名無しさん
NGNGVisualC++6(Win32)で動作確認しました。
符号化、復号化共に、以下のコードを追加しました。
#include <fcntl.h> //_O_BINARY
main(){
_setmode( _fileno( stdin ), _O_BINARY );
_setmode( _fileno( stdout ), _O_BINARY );
...
バイナリデータをリダイレクトする場合、Windowsでは最初に
setmodeを実行しないとうまくいかない様です。(ほかに良い方法はあるかな?)
それにしても凄いプログラムですね。
0158デフォルトの名無しさん
NGNG>>155 さんもいってるけど
http://www.ioccc.org/
に応募するのどう?
0159>157
NGNGファイルの先頭が改行"\r\n"のデータに対してはなんかおかしくなるね。
scanfのせいだろうけど。
0160デフォルトの名無しさん
NGNG>Sorry, right now you cannot enter the contest.
>The International Obfuscated C Code Contest is closed.
って書いてあるぞ。
0161tara
NGNGWindows専用です。引数に数字でホスト名を入力(www.yahoo.co.jpなら
210.152.236.113)してください。デフォルトのインデックスファイルの
内容を取得します。リンクする時にWinsockのライブラリを含めてください。
#include <stdio.h>
#include <winsock.h>
main(int c,char **a){SOCKADDR_IN d;WSADATA w;char t[99],x[]="GET /\n\n";
int z;SOCKET s;WSAStartup(MAKEWORD(2,2),&w);s=socket(AF_INET,SOCK_STREAM,0);if(
c!=2)return;d.sin_family=AF_INET;d.sin_port=htons(80);d.sin_addr.s_addr=
inet_addr(a[1]);if(!connect(s,(PSOCKADDR)&d,sizeof(d))){send(s,x,7,0);Sleep(
5000);while(z=recv(s,t,99,0)){t[z]=0;printf("%s",t);}}closesocket(s);}
HTTPヘッダなどはそのまま出てしまいます。
0163デフォルトの名無しさん
NGNGトリッキーの1氏、まともな変数名のを拝見したく。
是非お願い姿態。
0164トリッキーの1
NGNGご要望にお応えして。
最初から行数を減らすことを念頭に置いていたので、
あまりよろしくない部分もあるのでご注意。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
int i;
static int r; // 乱数用
switch( message )
{
case WM_PAINT:
{
hdc = BeginPaint (hWnd, &ps);
unsigned char *bitmap;
bitmap=new unsigned char[640*400*3];
HDC hmemdc;
hmemdc=CreateCompatibleDC(hdc);
HBITMAP hb;
hb=::CreateCompatibleBitmap(hdc,640,400);
BITMAPINFO bi;
// 最低でも以下の情報だけは指定する必要がある
bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi.bmiHeader.biWidth = 640;
bi.bmiHeader.biHeight = 400;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 24;
bi.bmiHeader.biCompression = BI_RGB;
// 念のために精確なBITMAPINFOを取得しておく
GetDIBits(hmemdc,(HBITMAP)hb,0,400,0,&bi,DIB_RGB_COLORS);
for(i=0;i<640*400*3;i+=3)
{
// r:疑似乱数
// RGBすべてを同じ値にしてグレースケールにする
bitmap[i]=bitmap[i+1]=bitmap[i+2]=r>>16;
r = (r * 9 + 5);
}
// dcにコピー
SetDIBitsToDevice(hdc,0,0,640,400,0,0,0,400,bitmap,&bi,DIB_RGB_COLORS);
DeleteObject((HBITMAP)hb);
DeleteDC(hmemdc);
delete bitmap;
EndPaint( hWnd, &ps );
InvalidateRect(hWnd,NULL,false);
break;
}
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hWnd, message, wParam, lParam );
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
MSG msg;
WNDCLASS wndclass;
HWND hWnd;
if(!hPrevInstance)
{
// 古いWNDCLASSを使用(行数を減らすため)
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=NULL;
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=NULL;
wndclass.lpszClassName="Tax";
wndclass.lpszMenuName=NULL;
if(!RegisterClass(&wndclass))
return FALSE;
}
hWnd=CreateWindow("Tax","2ch",WS_OVERLAPPED|WS_SYSMENU
,CW_USEDEFAULT,CW_USEDEFAULT,640,400
,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while( GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
return msg.wParam;
}
0165158
NGNG終わってたのか…。
読んでなかった。
じゃあ、
The 2CH Obfuscated C Code Contest
2OCCCでも作るかな。
0166デフォルトの名無しさん
NGNG2occc.???.comみたいなサブドメでも可。
0167*nix厨
NGNG外道の技とアルゴリズム変更にまで手を染めたのですが、どうしても7行は無理でした。
とりあえず符号の生成までは7行でしたので、未完ながら努力の足跡書きこんどきます。
今回のは最低限のincludeもありません、コンパイルが通らない時は適当に付け加えてください。
q(int *a,int *b){return *a<*b?-1:1;}struct v{int i,b,h,n;}*v;struct{int n,i,e,k
;struct v v[63];}x[32]={0,},*a=x;main(){int b,i,j,l=0,m,n=1024;char *d=0;while(
(b=getchar())+1)a[(d=realloc(d,l+2))[l++]=b>>4].n++,a[d[l++]=b%16].n++;for(i=0;
i<32;i++)a[a[i].i=a[i].v[0].i=i].e=1;qsort(a,16,n,&q);for(b=17,i=0;!x[i].n;i++,
a++)b--;while(2<b){qsort(a,b--,n,&q);for(j=1;j<3;j++)for(i=0,v=a[j].v;i<a[j].e;
i++)v[i].h|=(j%2)<<v[i].b++;m=a[1].e;memcpy(a->v+a->e,a[1].v,m<<4);memcpy(a->v+
m+a->e,a[2].v,496);a->e+=m+a[2].e;a->n+=a[1].n+a[2].n;memcpy(a+2,a,n);a+=2;}
/* ここからデバッグ用。つか、これ無しだと意味不明になる */
printf("huffman code\n");
{
int y,z;
for(y=0;y<a[0].e;y++){
if(a[0].v[y].i<16){
printf("%d ",a[0].v[y].i);
for(z=a[0].v[y].b-1;z+1;z--)
printf("%d",(a[0].v[y].h>>z)%2);
printf("\n");
}
}
}
}
0168*nix厨
NGNG普通なら上の見たく空白が潰れると鬱氏だけど、全然関係ないや(ワーィ!
0169デフォルトの名無しさん
NGNGすげー。凄すぎるぜアンタ!!
俺はアンタを抱きしめたいぜ!
男に抱きしめられても困る
って意見は却下。
0170ランバート
NGNGオイラの頭じゃレイトレは無理ですぅ。
ヘボプログラマは参戦不可ですか?
T.java
import java.awt.*;public class T extends Frame{double B,A,D,m,X,Y,Z,R,L;
int a=10000;public static void main(String a[]){T r=new T();r.setSize(255,255);
r.show();}public void paint(Graphics g){for(int y=0;y<255;y++)for(int x=0;
x<255;x++){int c=L(x-128,y-128);c=c<0?0:c;g.setColor(new Color(c,c,c));
g.drawLine(x,y,x,y);}}int L(int x,int y){B=-a*4;A=x*x+y*y+a;D=B*B-4*A*a*3;
if(D>0){m=(-B+Math.sqrt(D))/(2*A);X=x*m;Y=y*m;Z=-100;R=Math.sqrt(X*X+Y*Y+Z*Z);
X/=R;Y/=R;Z/=R;L=1/Math.sqrt(3);L=(X-Y-Z)*L*255;return(int)L;}return 0;}}
0171デフォルトの名無しさん
NGNGトリッキーの1氏、サンクス。
スレ的に終わったっぽい話題なのにすんまそん。
0173フォルトの名無しさん
NGNGすげー、なんで動く?
PGが得意ってより、理解が深いんだろうな
変形ツリーでノード・ペアの確定と同時に符号まで振ってる
別なアルゴリズムと言って良いような…
0174ランバート
NGNG7行に収まらないし。
誰か本物のレイトレを見せてくれよぅ。
import java.awt.*;public class N extends Frame{double A,B,C,D,E,F,G,L,M,N,R,T,
X,Y,Z,H=200;static void main(String[]a){N r=new N();r.setSize(200,200);
r.show();}public void paint(Graphics g){for(int y=0;y<H;y++)for(int x=0;x<H;
x++){int c =L(x-100,y-100);g.setColor(new Color(c,c,c));g.drawLine(x,y+20,x,
y+20);}}int L(int x, int y){B=-H*H;A=x*x+y*y+H*50;C=(H-50)*H;D=B*B-4*A*C;
if(D>0){R=(-B+Math.sqrt(D))/(2*A);X=x*R;Y=y*R;Z=-100*R;L=1/Math.sqrt(3);
R=Math.sqrt(X*X+Y*Y+Z*Z);L=(X-Y-Z)*L/R;int h=(int)(((double)F(X,Y,Z,R))*L);
return L>0?(h>0?h:(int)(L*255)):30;}return F(x,y,100,0);}int H(double x,
double y, double z, double r){E=x;F=y;G=z-H;x/=r;y/=r;z/=r;T=-(E*x+F*y+G*z);
x=2*x*T+E;y=2*y*T+F;z=2*z*T+G;return F(x,y,z,F);}int F(double x,double y,
double z,double b){M=10000-b;N=y==0?0:M/y;return N>0?((((x*N>0?x*N+M/2:-x*N)%M)
>M/2)^(((z*N+H)%M)>M/2)?100:200):0;}}
0175デフォルトの名無しさん
NGNGいや、十分すげーじゃん。その調子で頼むぜ!
017660
NGNGつか、ちぢまらね〜
0177デフォルトの名無しさん
NGNGこれだけ圧縮物が集まると、後はブロックソートと外面のファイル管理さえあれば
立派に実用ツールですね
0178デフォルトの名無しさん
NGNGMTForMTSも欲しいぞ
017938
NGNGMTFくらいなら俺でも出来そうだ(w。とりあえずencoderのみ。
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
main(){setmode(fileno(stdin),_O_BINARY);setmode(fileno(stdout),_O_BINARY);
int c,i,j,t,tbl[256];for(i=0;i<256;i++)tbl[i]=i;
while(EOF!=(c=getchar())){for(i=0;tbl[i]!=c;i++);t=tbl[i];for(j=i;j;
j--) tbl[j]=tbl[j-1];tbl[0]=t;putchar(i);}return 0;}
018038
NGNG引数無しで実行すると stdin から読んで stdout に吐くencoder。
第一引数を 'd' として実行すると decoder。
#include <stdio.h>
#include <io.h>
main(int C,char**V){setmode(fileno(stdin),1<<15);setmode(fileno(stdout),1<<15);
int c,i,t,tbl[256];for(i=0;i<256;i++)tbl[i]=i;while((c=getchar())-EOF){if(C>=2
&&*V[1]=='d'){putchar(t=tbl[c]);while(c--)tbl[c+1]=tbl[c];tbl[0]=t;}else{for(i=
0;tbl[i]!=c;i++);putchar(i);t=tbl[i];while(i--)tbl[i+1]=tbl[i];tbl[0]=t;}}
return 0;}
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGどうやってDVDの再生するのよ。
どうやって使うのよ。
そこが抜けていると何にも役にたたないプログラムだよね。
0184名無しさん
NGNG解けることで、プログラムの可能性を示す教育目的のプログラムだ。
それ言っては、プログラミングの解説本にあるようなアルゴリズム
解説のためのサンプルコードにケチを付けてるのと一緒。
0185デフォルトの名無しさん
NGNGサンプルになってるの?
0186デフォルトの名無しさん
NGNGバカかお前。コード読めや。
0187デフォルトの名無しさん
NGNGまあまあ、コードが理解できないようなかわいそうな奴なんだから、
そんなにきつい事言うなよ。
0188デフォルトの名無しさん
NGNG同意
コメントで用が足りてる
0189デフォルトの名無しさん
NGNGネタ?
0190デフォルトの名無しさん
NGNGネタ!
0191デフォルトの名無しさん
NGNGコメントもついてないしぃ
オンラインヘルプもついてないしぃ
だっめっじゃっあぁぁぁぁん
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGとりあえず君がコードを読めない人間であることはよくわかった。
>オンラインヘルプもついてないしぃ
もはや意味不明。
0194*nix厨
NGNG7行超えてますけど出力もする版のハフマン圧縮です。
出力部は、真面目に削ってないので入れた結果11行でした。
符号表は先頭から4ビットの符号長と可変長の符号の組が16個です。
int b,i,j,l=0,m,n=1024,c=0,p=7,h[32];r(int h,int b){for(b--;b+1;b--){c|=(h>>b)%
2<<p;if(!p--)putchar(c),c=0,p=7;}}q(int*a,int*b){return*a<*b?-1:1;}struct v{int
i,b,h,n;}*v;struct{int n,i,e,k;struct v v[63];}x[32]={0,},*a=x;main(){char*d=0;
while((b=getchar())+1)a[(d=realloc(d,l+2))[l++]=b>>4].n++,a[d[l++]=b%16].n++;
for(i=0;i<32;i++)a[a[i].i=a[i].v[0].i=i].e=1;qsort(a,16,n,&q);for(b=17,i=0;!x[i
].n;i++,a++)b--;while(2<b){qsort(a,b--,n,&q);for(j=1;j<3;j++)for(i=0,v=a[j].v;i
<a[j].e;i++)v[i].h|=(j%2)<<v[i].b++;m=a[1].e;memcpy(a->v+a->e,a[1].v,m<<4);
memcpy(a->v+m+a->e,a[2].v,496);a->e+=m+a[2].e;a->n+=a[1].n+a[2].n;memcpy(a+2,a,
n);a+=2;}for(i=0;i<16;i++){for(j=0;j<32;j++){if(a->v[j].i==i){r(a->v[j].b-1,4);
r(a->v[j].h,a->v[j].b);h[i]=a->v[j].b;h[i+16]=a->v[j].h;break;}}}for(i=0;i<l;i
++)r(h[d[i]]+16,h[d[i]]);if(p-7)r(0,p);}
符号表は先頭から4ビットの符号長と可変長の符号の組が16個です。
その後に符号化したデータが入り、最後は0でパディングしてあります。
0195デフォルトの名無しさん
NGNG画像も7行内にテキストで収めること。
アイコラは不可。
0196デフォルトの名無しさん
NGNG顔文字板のAAを使えばできそうな気も…
0197ネタレス
NGNGエロタイピング練習ソフトだ。
偽AI搭載で「いやよいやよも好きのうち」まで実装してみたぞ。
#include<stdio.h>
main(){
int c;while((c=getch())!=0x1B)
switch(c){
case' ':printf("いやっ\n");break;
case'\r':printf("そこはだめっ\n\a\a\a");break;
default:printf("書いていて悲しくなったのは隠しておきたい\n");}}
どうだ。7行で音まで出るぞ。
0198デフォルトの名無しさん
NGNGできた。
#include<stdio.h>
main(){printf("namco: (())\n");}
019957行にせOS(i386)
NGNG[ORG 0]
jmp start
msg00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db 'kaomozi dasitai yo...', 13, 10, 0
msg01&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db 'dareka yatte hosii naa...', 13, 10, 0
msg02&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db 'mou ascii na seikatu ha iyada!', 13, 10, 0
msg03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db 'haa.', 13, 10, 0
msg04&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db 'zya-ne.', 13, 10, 0
rebootmsg&nbsp;&nbsp;&nbsp;&nbsp;db 'nannka botan osite kure.', 13, 10, 0
message :
&nbsp;&nbsp;&nbsp;&nbsp;lodsb
&nbsp;&nbsp;&nbsp;&nbsp;or al,al
&nbsp;&nbsp;&nbsp;&nbsp;jz done
&nbsp;&nbsp;&nbsp;&nbsp;mov ah,0eh
&nbsp;&nbsp;&nbsp;&nbsp;mov bx,0007
&nbsp;&nbsp;&nbsp;&nbsp;int 0x10
&nbsp;&nbsp;&nbsp;&nbsp;jmp message
done :
&nbsp;&nbsp;&nbsp;&nbsp;ret
getkey :
&nbsp;&nbsp;&nbsp;&nbsp;mov ah, 0
&nbsp;&nbsp;&nbsp;&nbsp;int 016h
&nbsp;&nbsp;&nbsp;&nbsp;ret
reboot: ;; reboot
&nbsp;&nbsp;&nbsp;&nbsp;mov si, rebootmsg
&nbsp;&nbsp;&nbsp;&nbsp;call message
&nbsp;&nbsp;&nbsp;&nbsp;call getkey
&nbsp;&nbsp;&nbsp;&nbsp;db 0EAh
&nbsp;&nbsp;&nbsp;&nbsp;dw 0000h
&nbsp;&nbsp;&nbsp;&nbsp;dw 0FFFFh
xwait :
&nbsp;&nbsp;&nbsp;&nbsp;call message
&nbsp;&nbsp;&nbsp;&nbsp;call getkey
&nbsp;&nbsp;&nbsp;&nbsp;ret
start :
&nbsp;&nbsp;&nbsp;&nbsp;mov ax,0x7c0
&nbsp;&nbsp;&nbsp;&nbsp;mov ds,ax
&nbsp;&nbsp;&nbsp;&nbsp;cli
&nbsp;&nbsp;&nbsp;&nbsp;mov ax,0x9000
&nbsp;&nbsp;&nbsp;&nbsp;mov ss,ax
&nbsp;&nbsp;&nbsp;&nbsp;mov sp,0xffff
&nbsp;&nbsp;&nbsp;&nbsp;sti
&nbsp;&nbsp;&nbsp;&nbsp;mov si, msg00
&nbsp;&nbsp;&nbsp;&nbsp;call xwait
&nbsp;&nbsp;&nbsp;&nbsp;mov si, msg01
&nbsp;&nbsp;&nbsp;&nbsp;call xwait
&nbsp;&nbsp;&nbsp;&nbsp;mov si, msg02
&nbsp;&nbsp;&nbsp;&nbsp;call xwait
&nbsp;&nbsp;&nbsp;&nbsp;mov si, msg03
&nbsp;&nbsp;&nbsp;&nbsp;call xwait
&nbsp;&nbsp;&nbsp;&nbsp;mov si, msg04
&nbsp;&nbsp;&nbsp;&nbsp;call xwait
&nbsp;&nbsp;&nbsp;&nbsp;call reboot
times 510-($-$$) db 0
dw 0xAA55
0200199
NGNG0201デフォルトの名無しさん
NGNGつながりませんでした
0202デフォルトの名無しさん
NGNG0203名無しさん
NGNG1行部門、256バイト部門と1024バイト部門があって
ほとんどが BASIC と機械語だったよーな
0204デフォルトの名無しさん
NGNGそんだけDVDのプロテクトがアホだったって事です。
改行を一切入れなければ1行プログラムだって可。
0205デフォルトの名無しさん
NGNGint main(int C,char*V[]){IGraphBuilder *pB;IMediaControl *pC;WCHAR v[MAX_PATH];
if(1<C){CoInitialize(NULL);CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPR\
OC_SERVER,IID_IGraphBuilder,(void**)&pB);pB->QueryInterface(IID_IMediaControl,(
void**)&pC);MultiByteToWideChar(CP_OEMCP,0,V[1],-1,v,MAX_PATH);pB->RenderFile(v
,NULL);pC->Run();MessageBox(NULL,"","",MB_OK);pC->Release();pB->Release();CoUn\
initialize();return 0;}}
どっかの掲示板からのコピペっす.
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGJSでもダメみたいっす。どうにか制御できないもんでしょうか?
0208270
NGNG0209ランバート
NGNG光が今ひとつだけど
レイトレっぽくなったのではないでしょうか?
でもオイラの頭じゃ7行は無理っス。
import java.awt.*;public class R extends Frame{class V{double x,y,z,r;V(double
a,double b,double c){x=a;y=b;z=c;}V(V a){x=a.x;y=a.y;z=a.z;}double c(V s){
return x*s.x+y*s.y+z*s.z;}void n(){r=Math.sqrt(x*x+y*y+z*z);x/=r;y/=r;z/=r;}}
static void main(String[]a){R r=new R();r.setSize(255,255);r.show();}public
void paint(Graphics g){for(int y=0;y<255;y++)for(int x=0;x<255;x++){V A=new
V(x-128,y-128,100);V B=new V(0,0,200);int c=L(A,B);g.setColor(new Color(c,c,c))
;g.drawLine(x,y+20,x,y+20);}}double a,b,c,d,R;int L(V A,V B){a=(new V(A)).c(A);
b=(new V(A)).c(B);c=(new V(B)).c(B)-10000;d=b*b-a*c;if(d>0){R=(-b+Math.sqrt(
d))/a;V N=new V(A.x*R,A.y*R,A.z*R);N.n();R=(N.x+N.y-N.z)/Math.sqrt(3);A.x-=B.x;
A.y-=B.y;A.z-=B.z;int h=(int)(((double)H(N,A))*R);return R>0?( h>0?h:(int)(R*
255)):30;}return F(A);}int H(V N,V A){a=-N.c(A);N.x=2*N.x*a+A.x;N.y=2*N.y*a+
A.y;N.z=2*N.z*a+A.z;return F(N);}int F(V A){a=A.x;b=10000-A.r;c=A.y==0?0:b/A.y;
return c>0?((((a*c>0?a*c+b/2:-a*c)%b)>b/2)^(((A.z*c+200)%b)>b/2)?100:200):0;}}
0210名無しさん@お腹いっぱい。
NGNGDVDつきのwindows 98 があります
さて、どうやって7行プログラムを実行
して、解除するのでしょうか?
恐らくここをみた人の8割が思っているはず
0211デフォルトの名無しさん
NGNGじゃぁ、あんたここにいる8割はアホだと思ってんの?
自分がアホだからって他人もアホだと思うのは大間違い
0212デフォルトの名無しさん
NGNGなになに? よく分からんが、実行の仕方教えてとかヘタレな話?
0213デフォルトの名無しさん
NGNG7行すれなんだからコードで語ろうぜ!
0214デフォルトの名無しさん
NGNG#include<windows.h>
#include<math.h>
int*P,y[1<<18],a=256,c,r,m[8],n,S=a/2,u,v;BITMAPINFO T={40,a,a,1,32};HWND g;
float s,X,Y=-.57,Z,t,l,d;WINAPI WinMain(HINSTANCE I,HINSTANCE,LPSTR,int)
{WNDCLASS w={67,DefWindowProc,0,0,I,0,0,0,0,"T"};RegisterClass(&w);HDC h=GetDC(
g=CreateWindow("T","2ch",513<<19,0,0,a,a,0,0,I,0));while(GetMessage((MSG*)m,g,0,0)!=-1)
{if(m[1]==15){s+=.1;Z=Y*cos(s);X=Y*sin(s);P=y;for(v=S;v>-S;v--){for(u=-S;u<S;u++)
{d=9999-u*u-v*v;d>0?t=sqrt(d),l=sqrt(u*u+v*v+t*t),n=(X*u/l+Y*v/l+Z*t/l)*255,n=n<0?0:n:
n=64;*P++=n;}}SetDIBitsToDevice(h,0,0,a,a,0,0,0,a,y,&T,0);}else DispatchMessage((MSG*)m);
InvalidateRect(g,0,0);}return 0;}
0215デフォルトの名無しさん
NGNGちょっとボク、VOBってしってる?
>>211-212
210はわざわざageてくれたんだよ。
でもちょっと英語が苦手なんだよ。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG>>210
Win98にコピー対策なんぞあったか。
エラーセクタプロテクトも何もないと思ったが。
# シリアルなんぞコピー対策ではない
本来の使い方は、DVDからripしてきたvobに、
/usr/local/bin/perl unvob.pl < rip.vob > out.mpg
とかやる。
コードを読め。
コメントを読め。
0218名無しさん@お腹いっぱい。
NGNG来の使い方は、DVDからripしてきたvobに、
これはどうやるんでしょうか?
<マジレス希望!>
0219デフォルトの名無しさん
NGNGhttp://www.dab.hi-ho.ne.jp/kankyo/gamekan/dvd/rip.htm
をみればわかると思う
0220デフォルトの名無しさん
NGNGだれも7行プログラムの使用方法を知らないのであった。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG書ききれるんだね凄いねってのが面白さなわけで。
http://www.cs.cmu.edu/~dst/DeCSS/Gallery/ 参照のこと。
実用性を求めてはいけないのです。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGここ読んだ限りちがうんじゃないのか?
0225デフォルトの名無しさん
NGNG有志がサイト提供してくれちゃいました。
http://2occc.nothing.sh/
転送量とかが増えちゃ悪いので、sageで書きます。
0226デフォルトの名無しさん
NGNG無駄無駄。たぶんDVDコピーしたいぜ教えてクンのPCにはPerlすら入ってないぜ。
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGdir > abc.txt なんてコマンドも知らないんじゃ?
0229デフォルトの名無しさん
NGNG「ハシ」も比較的よくあったかも。
あぁ、時代が違うのか・・・
0230デフォルトの名無しさん
NGNG鬱逝
0231basic09が使いたかった。
NGNGSyntax Error
Ready
?.
0
Ready
0232デフォルトの名無しさん
NGNGs="s=Z:wscript.echo replace(s,chr(90),chr(34)+s+chr(34))":wscript.echo replace(s,chr(90),chr(34)+s+chr(34))
0233デフォルトの名無しさん
NGNGvbsってevalあるの?
0234デフォルトの名無しさん
NGNG0235>234
NGNG0236デフォルトの名無しさん
NGNG20 GOTO 10
0237デフォルトの名無しさん
NGNG/* */
/* Thanks to Phil Carmody <[email protected]> for additional tweaks. */
/* */
/* Length: 434 bytes (excluding unnecessary newlines) */
/* */
/* Usage is: cat title-key scrambled.vob | efdtt >clear.vob */
#define m(i)(x[i]^s[i+84])<<
unsigned char x[5],y,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=m(1)17^256+m(0)8,k=m(2)0,j=m(4)17^m(3)9^k
*2-k%8^8,a=0,c=26;for(s[y]-=16;--c;j*=2)a=a*2^i&1,i=i/2^j&1<<24;for(j=127;++j<n
;c=c>y)c+=y=i^i/8^i>>4^i>>12,i=i>>8^y<<17,a^=a>>14,y=a^a*8^a<<6,a=a>>8^y<<9,k=s
[j],k="7Wo~'G_\216"[k&7]+2^"cr3sfw6v;*k+>/n."[k>>4]*2^k*257/8,s[j]=k^(k&k*2&34)
*6^c+~y;}}
0238デフォルトの名無しさん
NGNGhttp://www.cs.cmu.edu/~dst/DeCSS/Gallery/hannum-efdtt-source.txt
です。知っている人は知っていると思うが。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGなんか俳句みたいなノリですね。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGhttp://cheese.2ch.net/test/read.cgi?bbs=avi&key=978772988
0245デフォルトの名無しさん
NGNGHyperCard10行勝負!思い出したよ。
懐かしさと感動をあたえてくれたよ、このスレ…続きを見たいもんだ
0246デフォルトの名無しさん
NGNG見たいなら、なんか新たなネタを振るとよいと思われ。
0248デフォルトの名無しさん
NGNGfrom slashdot日本語
256バイト以下限定、perlコンテスト。
俳句ジェネレータ、いいよ。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGecho T_OOWW3=XXWX5 2PY5w3P_-l.P-KD1Ep-OLPZ-pJP-pw40PQX5fsPu>%2
echo dsharTMPcmd:5Fe,xPQX-=.PQX-MQP-xx4_P5rjP5Z2P-jE,JP=>>%2
echo 5O2,APQX5R8P-rJPPRX5iBP-x=PRX5TsP59DHHP5rIHP-w64ZP=>>%2
echo 40-2APQX-MiP-trP5_WP-pBP51w,pPTYPZPZP__ox44Qx47HGSz2.r>>%2
echo 4OSitBnaz43PysRGiC.EGb5_h0PEGL7l8JwIm1E48WwPiOB7tLGM8O>>%2
echo Bur_GTvb6jJEXCzHHoE2feG.Oh71PZ64.ChRPFt4ltaz6URzCLAmDG>>%2
echo MHUckSHkJzB2An4ECsRFpANlGn4EWsRFpA0fm4CORzKX42.l8HGXGN>>%2
echo .UuBD_k8H47HGZGl4_kFUERn4IBL8dstltaVuerBCoC1PP9tWQ7l4c>>%2
echo k09.AOSvtOIVx4DKMHWIOB8J2n4D6P8tazLP4eSOIsRErOyutU3.BP>>%2
echo hoQsRErLsORoP4.o6hbzD24OGqu60a44Cp.1od8NgTVzCT4OBAv9cq>>%2
echo 814Whp.Ck8HCy4oauAk4Cn94B6UB2zCx4mDBzwpJ94.ByB.CMHYuX2>>%2
echo .Jp4KQLsRGh4pArv2MQTBOR1QRtOsO3nP4.nnhBsRFK8gHCOPD4dea>>%2
echo Yb.QFRlMQTKQ4nnhbnP4.J8v94PAtElta2jT9pWVab5jKz3Q4b8mCn>>%2
echo ndBsREXV2MRH6uu46cN5x.EQtuZpxoWQx47HG_zq.T4psORL7mFb.U>>%2
echo N1B48LGH2OCutFCq_1AQr4.PII47GnPP4t0KQt6KzBmCkvx_Kprp.4>>%2
echo l4BpMO4anCc46bj559A5lF4xP_RsLLMBg1aZWPnKbx.K.:>>%2
これででてきたものは COM 形式のファイルとして実行できる立派な「バイナリ」なんだけど。
0251デフォルトの名無しさん
NGNGあの当時、凄い衝撃的で、あれでプログラム習おうって気になったし・・・・・
0252デフォルトの名無しさん
NGNGその展開コードは、たぶん同一作者の
"com2txt"ってソフト使ってると思われ。
最初の"T_OOWN3="って部分を逆アセンブルすると
綺麗なソースが出てくるのにショックを受けた覚えがある。
おかげでx86アセンブリ覚えました :-)
0253デフォルトの名無しさん
NGNGどういう原理なんですか? 普通に画面表示するbatにしか見えない・・・
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG1つ目のパラメーターには何が入るのだろうか…?
0256デフォルトの名無しさん
NGNGどちらも同じ人でしょ
http://hayabusa.ics.nara-wu.ac.jp/~nide/
0257デフォルトの名無しさん
NGNGアドレス違反となっちゃいましたが…
0258デフォルトの名無しさん
NGNGじじいsage
0259デフォルトの名無しさん
NGNGPureDOSかW9x系列じゃないと動かないと思うさ。
NT/2000/Meは当然ながら無理だよ。
com2txtの方が感動がでかいと思う。
0260デフォルトの名無しさん
NGNGは
は
は
は
は
は
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNGhttp://www.geocities.co.jp/SiliconValley-PaloAlto/8642/turedure/cprog_01.htm#010605
0263デフォルトの名無しさん
NGNG0264ho
NGNGFF9の穴掘り宝探しゲームをイメージしてください。
Dim XX, YY, c
Private Sub Form_Load()
Randomize: Form1.ScaleMode = 6: XX = Form1.ScaleWidth * Rnd: YY = Form1.ScaleHeight * Rnd: c = 0
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form1.Cls: c = c + 1: Print c & " 回目": If Abs(X - XX) < 1 And Abs(Y - YY) < 1 Then Print "当たり ": Form_Load Else Print "距離 " & Int(((X - XX) ^ 2 + (Y - YY) ^ 2) ^ 0.5) & "mm"
End Sub
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG($d,$m,$y,$w)=(localtime)[3..6];print$y+1900,'/',++$m,"/$d\n",$"x(($w-=$d-
1)%7*3);printf"%2d%s",$_,++$w%7?$":$/for(1..28+($m-2?3-$m*.86%2:!($y%4)));
0267デフォルトの名無しさん
NGNGネタスレ(スタート)
↓
Windows7行時代(最盛期)
↓
標準C7行時代(衰退)
↓
ネタスレ
0268デフォルトの名無しさん
NGNGお、凄い。
0269デフォルトの名無しさん
NGNGどこら辺が?それほどトリッキーには見えないけど
0270267
NGNGこの無駄な努力をかってください。
0271デフォルトの名無しさん
NGNGすばらしい
0272デフォルトの名無しさん
NGNG2 foreach dn (`/bin/ls |awk '{print $NF}'`)
3 @ cnt = `pwd|awk 'BEGIN{RS="/"}{print}'|wc -l`
4 while( $cnt )
5 echo -n "| ";@ cnt--
6 end
7 if( -f $dn ) then
8 echo "|--- $dn (F)"
9 else if( -d $dn ) then
10 echo "|=== $dn (D)";cd $dn;`basename $0` $1 $2;cd ..
11 endif
12end
うーん。。。かなり削って12行。。。
shで書けば頭のまじない取れるし、もっと減るかも。。
0273272
NGNG0274デフォルトの名無しさん
NGNGホットゾヌではポップアップ内でだけインデントが反映される
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGeval ` ifconfig | sed -e ' /^[^[:space:]]*:[0-9]*/ {
s|^\([^:]*\):\([0-9]*\).*$|X=x; TMP="\2"; [ "$device"
!= "\1" ] \|\| |g; b; }; /^[^[:space:]]/ { s|.*|X=x;
[ 0 = 0 ] \|\| |g; b; }; /inet addr:
[0-9]*\.[0-9]*\.[0-9]*\.[0-9]* *Bcast:[0-9.]* *Mask:[0-9.]*/
{ s|^.*inet addr:\(\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\)
*Bcast:\([0-9.]*\) *Mask:\([0-9.]*\).*$|eval " rdev_${TMP}_addr=\1;
rdev_${TMP}_mb=\7_\6; rdevip_\2_\3_\4_\5=${TMP};
rdev_LIST=\\\\"\\\\$rdev_LIST \\\\${TMP}\\\\"; " \|\| |g;
b; }; s|^.*$||g; ' ` X=x;
本当は改行を入れたらダメ
/etc/sysconfig/network-scripts/ipup-aliases
にこんなの書いてあった、、、すごいよぅ
0278デフォルトの名無しさん
NGNG何所よ??
0279N88BASIC
NGNGX=0:Y=0:WHILE W<100 AND GET@(X,Y)<>0:PSET(X,Y),2:K$=INPUT$:
S=1-CHR(K$)<>20:FOR S=S TO 0:Y=Y-1:NEXT:X=X+1:F=X>100:WEND:
IF F THEN PRINT "クリア" ELSE PRINT "ゲームオーバー"
N88Basicで障害物よけ1ボタンゲーム。
100個の障害物(点)があり、それをよける。スペースを押すと
上昇し、離すと下降。
N88BASICの命令を忘れてしまったので、以下の命令は勘でかいた。
PSET(X,Y),6 座標x,yに黄色いの点を描画
GET@(X,Y)<>0 画面上のx,yにある点の色が黒でなければ
S=1-CHR(K$)<>20 K$のアスキーコードが&H20(=スペース)ならばSは0,でなければ1
0280279
NGNGFOR I=1 TO 100
X=RND(100):
Y=RND(100):
PSET(X,Y),6:
NEXT:
X=0:
Y=0:
WHILE W<100 AND GET@(X,Y)<>0:
PSET(X,Y),2:
K$=INPUT$:
S=1-CHR(K$)<>20:
FOR S=S TO 0:
Y=Y-1:
NEXT:
X=X+1:
F=X>100:
WEND:
IF F THEN
PRINT "クリア"
ELSE
PRINT "ゲームオーバー"
0281279
NGNGまちがえた。これだとキー押してるときに何もせず
離しているときに上昇してしまう…
10 FOR I=1 TO 100:X=RND(100):Y=RND(100):PSET(X,Y),6:NEXT:
X=0:Y=0:WHILE W<100 AND GET@(X,Y)<>0:PSET(X,Y),2:K$=INPUT$:
S=1-CHR(K$)<>20:FOR S=S TO 0:Y=Y+2:NEXT:Y=Y-1:X=X+1:F=X>100:WEND:
IF F THEN PRINT "クリア" ELSE PRINT "ゲームオーバー"
0282迷路(らしきもの)
NGNG#include <stdlib.h>
int main(int argc, char* argv[]){ randomize();
struct _a { short s[82]; f(){int i;for(i=0;i<39;i++)
s[i]=rand()&0x100?'/':'\';s[i]=0;} } d;
for(int i=0;i<80;i++){ d.f();puts((char *)(d.s));};
return 0;}
実行例
/////\\\\/\/\\//
\//\/\\////\/\\\
/\\\\\\\//\\\\\/
/\/\\\/\/\\\\\//
////\\/\\//\\/\\
/\/\\\\\\\/////\
\//\//\\////\/\\
\/\/\\\\//\/\/\\
/\\/\\//\\/\//\\
//\//\/\//\\/\\/
\////\\/\///\//\
0283デフォルトの名無しさん
NGNGゴメン。あまり身が詰まってるように見えない。
多分このスレでは、訳わからんぐらい密度の高いコードが
期待されていると思われ。
0284デフォルトの名無しさん
NGNG┌──┐
│┌┐│
└─┘│
───┘
0285デフォルトの名無しさん
NGNG#include <stdlib.h>
int y=0;int main(int argc, char* argv[]){ randomize();
struct a{ short s[40]; a(){int x;for(x=0;x<39;x++)
s[x]='/'+(((4410+ x*y/(x+y+1))%2)<<8);
s[x]=0;y++;puts((char *)(s));}; } b[25];
return 0;}
乱数より規則あった方が楽しい
\\\\\/////////
\\//////////\\
\/////\\\\\\\\
\///\\\\\\\///
\//\\\\\//////
///\\\//////\\
//\\\/////\\\\
//\\\///\\\\\\
//\\///\\\\\//
//\\///\\\////
//\\//\\\/////
//\///\\\///\\
0286デフォルトの名無しさん
NGNGVine Linux 2.1
0287デフォルトの名無しさん
NGNGs[x]='/'+(((2+((x-20+((y-9)>>9))>>8)+((y-9)>>9) )%2)<<8);
//////\\\\\
//////\\\\\
//////\\\\\
//////\\\\\
//////\\\\\
\\\\\//////
\\\\\//////
\\\\\//////
\\\\\//////
0288デフォルトの名無しさん
NGNG\/\/\/\/\/\/\/\/\/\//\/\/\/\/\/\/\
\/\/\//\/\/\//\/\/\//\/\/\/\\/\/\/\
/\//\//\/\\/\\/\//\//\/\\/\//\//\/\
\//\\//\//\\//\//\\//\//\\/\\//\\/\
//\\///\\//\\\//\\///\\//\\///\\//\
\\\////\\\////\\\////\\\///\\\\///\
///////\\\\\\\///////\\\\\\///////\
\\\\\\\\\\\\\\\\\\\\///////////////
\\\\\\\///////\\\\\\///////\\\\\\\/
///\\\\///\\\\///\\\////\\\////\\\/
\\//\\\//\\///\\//\\///\\//\\\//\\/
/\\//\\/\\//\\/\\//\//\\//\//\\//\/
\/\\/\\/\//\//\/\\/\//\//\/\\/\\/\/
/\/\/\\/\/\/\\/\/\/\//\/\/\//\/\/\/
\/\/\/\/\/\/\/\/\/\//\/\/\/\/\/\/\/
\/\/\/\\/\/\/\\/\/\//\/\/\//\/\/\/
0289トリッキーの1
NGNGコードにずいぶん余裕があるし、ここは一つグラフィック対応で作って下さい(笑
0290デフォルトの名無しさん
NGNG#include <windows.h>
int main(){ SIZE w; HANDLE d=GetDC(0); GetTextExtentPoint(d,"/",2, &w);
int e=GetSystemMetrics(0)/w.cx,f=GetSystemMetrics(1)/w.cy,hx=e/2,hy=f/2;
for(int y=0;y<f;y++){for(int x=0;x<e;x++){ short s[3]={0};
s[0]='/'+(((4096+(x-hx)*(y-hy)/7+((x-hx+((y-hy)>>9))>>8)+((y-hy)>>9) )%2)<<8);
TextOut(d,x*w.cx,y*w.cy,(char *)s,2); }}; Sleep(3333); return 0;}
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG0293290
NGNGだとしたら、マンデルブロみたいな絵の方が楽しいかもな
といってマンデルブロ書いてもオリジナライティ無いし・・・
テキストでって所がある意味面白いと思ったんだけど(貼り付けられるし)
0294デフォルトの名無しさん
NGNGじゃ ─│┌┐┘└├┬┤┴┼ これで考えてみよう 7行じゃ無理かな?
0295トリッキーの1
NGNGでも何でもいいですよ、面白ければ(笑
0296デフォルトの名無しさん
NGNG(つまりローグ)
0297デフォルトの名無しさん
NGNGこんなのは7行プログラム課題にどうだ?
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGmain(){
printf("age");
main()
}
0300デフォルトの名無しさん
NGNGヘタレでごめん、もっと綺麗に出来るかも・・
#include <stdio.h>
#include <stdlib.h>
const int n=11;int y=0;short l[]={' ','┌','┘','┐','─','│','└'};
int main(){struct a{short s[40];a(){int x,ny;for(x=0;x<=n;x++)
s[x]=l[(x<min(y,ny=n-y-(y>n/2)))+(x>max(y,ny))+(y!=x)*(x!=ny)*4+((x==y)+(x==ny)*3)*((y>n/2)+1)];
s[x]=0;y++;puts((char *)(s));}} b[n];return 0;}
0301300
NGNG0302*nix厨
NGNGint a[]={0,41,60,-1},*b=a,*c=a;char q[]="int a[]={0,41,60,-1},*b=a,*c=a;char q[\
]=\0#include <stdio.h>\0main(){for(;*b!=-1;b++){printf(q+*b);for(*c||putchar(34\
);-1<*c;c++){printf(q+*c);putchar(92);putchar(48);}*b||putchar(34)&putchar(59);\
putchar(10);}}\0";
#include <stdio.h>
main(){for(;*b!=-1;b++){printf(q+*b);for(*c||putchar(34);-1<*c;c++){printf(q+*c\
);putchar(92);putchar(48);}*b||putchar(34)&putchar(59);putchar(10);}}
実際にコンパイルする際は、行末の\で行を繋いでからやってね
0303300
NGNG#include <stdlib.h>
short l[]={' ','┌','┘','┐','─','│','└'};
int const n=19;int y=0,main(){struct a{short s[n+2];a(){int w,z,x=0;while(x<=n)
s[x++]=l[(x<min(y,w=n-y-(z=y>n/2)++)||x>max(y,w))+(y!=x&&x!=w)*4+((x==y)+(x==w)*3)*z];
s[x]=0;y++;puts((char*)s);}}b[n];return 0;}
これが僕の限界・・・・ほとんど縮んでない。
0304デフォルトの名無しさん
NGNG絵的に面白いのは出来ない?
0305300
NGNGinclude <stdio.h>
#include <stdlib.h>
int const n=19;short s[n+2],*l=(short*)" ┌┘┐─│└";int y=0,main(){
struct a{a(){int w,z,x=0;while(x<=n)s[x++]=l[(x<min(y,w=n-y-(z=y>n/2)++)||
x>max(y,w))+(x!=y&&x!=w)*4+((x==y)+(x==w)*3)*z]; s[x]=0;y++;puts((char*)s);}
}b[n];return 0;}
>>304
この経線使うと接続判定必要だよね(^^;
出来るかのなぁ・・・
0306デフォルトの名無しさん
NGNG─┐─└└│───│└└┌┌─
┐┘┌┐││───││└│┘┐
┘┌┌└┘─────│─┌┌┘
┌└└└│┌────┐└└└┌
└│││││┌──┐││││└
│││││││┌┐││││││
└│││││└─┘│││││└
┌└└└│└───┘│└└└┌
┘┌┌└┌─────┐└┌┌┘
┐┘┌┘││───││─┌┘┐
─┐┐└└│───│└└│┐─
0307300
NGNG0308デフォルトの名無しさん
NGNG同じ方式が使えるのに
0309デフォルトの名無しさん
NGNGそれじゃあまったく意味がないっす。
何の為に斜め以外を使うんだか・・・
0310デフォルトの名無しさん
NGNG#include <stdio.h>
char* c = "┌┼┘└┐";
main(){ int i,j;
for(i=0;i<20;i++){ for(j=0;j<20;j++){
fwrite(c+((i*2+j)%5)*2,2,1,stdout);
} printf("\n"); }
}
0311デフォルトの名無しさん
NGNG┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼
┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└
┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌
└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘
┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐
┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼
┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└
┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌
└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘
┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐
┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼
┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└
┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌
└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘
┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐
┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼
┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└
┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌
└┐┌┼┘└┐┌┼┘└┐┌┼┘└┐┌┼┘
0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGコロンブスの卵的・・・
0314デフォルトの名無しさん
NGNG良いね!
0315デフォルトの名無しさん
NGNGこの模様ってなんていうんだっけ。
0316デフォルトの名無しさん
NGNGパターン見つければいくらでもできるけど
このスレの趣旨から外れそうなのでこのシリーズこれで最後。
public class CCC{
public static void main(String[] x){
String s="│┌┐││┌┘││└┘│└─┘└──┼──┐┌─┐";
for(int i=0;i<25;i++){ for(int j=0;j<25;j++){
int wk;System.out.print(s.substring(wk=(i*7+j)%25,wk+1));
} System.out.println(); } } }
0317実行結果
NGNG││└┘│└─┘└──┼──┐┌─┐│┌┐││┌┘
┘└──┼──┐┌─┐│┌┐││┌┘││└┘│└─
┐┌─┐│┌┐││┌┘││└┘│└─┘└──┼──
││┌┘││└┘│└─┘└──┼──┐┌─┐│┌┐
┘│└─┘└──┼──┐┌─┐│┌┐││┌┘││└
─┼──┐┌─┐│┌┐││┌┘││└┘│└─┘└─
┐│┌┐││┌┘││└┘│└─┘└──┼──┐┌─
┘││└┘│└─┘└──┼──┐┌─┐│┌┐││┌
─┘└──┼──┐┌─┐│┌┐││┌┘││└┘│└
─┐┌─┐│┌┐││┌┘││└┘│└─┘└──┼─
┐││┌┘││└┘│└─┘└──┼──┐┌─┐│┌
└┘│└─┘└──┼──┐┌─┐│┌┐││┌┘││
──┼──┐┌─┐│┌┐││┌┘││└┘│└─┘└
─┐│┌┐││┌┘││└┘│└─┘└──┼──┐┌
┌┘││└┘│└─┘└──┼──┐┌─┐│┌┐││
└─┘└──┼──┐┌─┐│┌┐││┌┘││└┘│
──┐┌─┐│┌┐││┌┘││└┘│└─┘└──┼
┌┐││┌┘││└┘│└─┘└──┼──┐┌─┐│
│└┘│└─┘└──┼──┐┌─┐│┌┐││┌┘│
└──┼──┐┌─┐│┌┐││┌┘││└┘│└─┘
┌─┐│┌┐││┌┘││└┘│└─┘└──┼──┐
│┌┘││└┘│└─┘└──┼──┐┌─┐│┌┐│
│└─┘└──┼──┐┌─┐│┌┐││┌┘││└┘
┼──┐┌─┐│┌┐││┌┘││└┘│└─┘└──
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG#include<windows.h>
int WINAPI WinMain (HINSTANCE d, HINSTANCE e,PSTR f,int g){HGLOBAL a,b;BYTE *c;
BYTE sp[24] = " ";OpenClipboard(NULL);
a = GetClipboardData(CF_TEXT);if(!a)return 0;b = GlobalAlloc(GHND,10000);
c = GlobalLock(b);lstrcpy(c,GlobalLock(a));GlobalUnlock(a);while(*c){if(*c==32||*c==9){
MoveMemory(c+(*c==32?6:24),c+1,lstrlen(c));MoveMemory(c,sp,(*c==32?6:24));}c++;}
GlobalUnlock(b);EmptyClipboard();SetClipboardData(CF_TEXT,b);CloseClipboard();return 0;}
0320km
NGNG#define R(x,y) (w[b&1][(s+L+80*y)%L/80*80+(s+80+x)%80]=='O')
void main(){int a,b=0,s=0,L=80*24;char w[2][2001];do{w[0][s++]=((s%7)&(s%64))?
'O':' ';}while(s<L);while(1){printf("\x1B[2J%s",w[b&1]);getchar();s=0;do{a=
R(-1,-1)+R(0,-1)+R(1,-1)+R(-1,0)+R(1,0)+R(-1,1)+R(0,1)+R(1,1);w[(b+1)&1][s]=(
a==3)?'O':(a!=2)?' ':w[b&1][s];s++;}while(s<L);b++;}}
トーラス世界型のライフゲームです。横80文字コンソール専用。VC++5.0で確認。
終了は ctrl+C です。リターンキーを押して1世代ずつ進めて下さい。
コンソールアプリとか詳しくないんで画面消去にエスケープシーケンス使ったり
入力待ちに getchar() とか使ってるけど,普通はどうやるんスかー?(´Д`)
0321デフォルトの名無しさん
NGNG本当の意味でスッキリ7行だと素晴らしいと思うが…
0322デフォルトの名無しさん
NGNGでもほら,もともと 1 さんが感動したDVDプロテクト解除のコードも
無理やり 7 行に押し込めたものだし〜・・・。
0323322
NGNG>>12 さんがルール決めてますね。1行は79文字以内。
0324321
NGNG…だって会社で短縮したプログラム書いてたら
「君のは行数短いけど横に長いね。」って
言われちゃったんだYO!(泣)
0325デフォルトの名無しさん
NGNGPerlなら同じ事をずっと短く単純で済む
#!perl
use Win32::Clipboard;package Win32::Clipboard;sub
t{$_=shift;s/\t/' ' x 4/ge;s/( +)/' ' x length($1)/ge;return $_}
Set(t(Get()));
0326デフォルトの名無しさん
NGNG随分冗長なスクリプトだね(w
0327デフォルトの名無しさん
NGNG内容はオセロ。
#include <stdio.h>
#define R(x,v,w,y,z) r(i,c,x,(v>w?w:v))|r(i,c,-x,(y>z?z:y))
char n[]=" \\MD[REJQZBCIUY:<;A@^XP5]=`8cdkVbmFNWelGO9?_gf32>4on0H1i67jha";int
i,c,p,s[8],m[64],y,z;d(){for(c=0;c<64;c++){printf("%s%s","┼\0●\0○"+m[c]*3,(
2-(c%8==7)-(c==63))+"\n\n");}}r(int i,int c,int d,int e){p=0;while(e-->0&&(c+=
d,m[c]))if(m[c]-i)s[p++]=c;else{d=p;while(p)m[s[--p]]=i;return d;}return 0;}q(
int i,int c){y=c%8,z=c/8;if(R(1,7-y,7,y,7)|R(7,y,7-z,7-y,z)|R(8,7,7-z,7,z)|R(9
,7-y,7-z,y,z)){m[c]=i;d();}else q(3-i,c);}main(){m[28]=m[35]=1;m[27]=m[36]=2;d
();while(i++<60){q(2-i%2,n[i]-48);}}
0328デフォルトの名無しさん
NGNGすげー!素直に感動した。
0329デフォルトの名無しさん
NGNGどうせだからAIも積んでもらい隊Na!
0330デフォルトの名無しさん
NGNGいやー、無理でしょう(藁
しかし、すごいなー、このページの人たちは。
僕も参戦してイイですかね?
0331デフォルトの名無しさん
NGNGそりゃもちろん(・∀・)イイ!! でしょ!!
参加者が増えてスレのびたほうがいいにきまってるし。
0332デフォルトの名無しさん
NGNG0333300
NGNGトリッキーなとこ全然ないし(笑)
#include <stdio.h>
unsigned long b=0,z[]={0x15,0x1041,0x10101,0x1110};
char i,j,k,l,s[]=" ",c[]=" OX",q[]=" ?",d(long a,long b){return ((a&b)==b);}
int main(){for(l=0;l<9;l++){puts("\n 012");for(i=0;i<3;i++){s[0]=i+'0';for(j=1;j<4;j++)
s[j]=c[b>>(i*6+j*2-2)&3];puts(s);}i=1-l%2;if(d(b>>i,z[0])||d(b>>(i+6),z[0])||
d(b>>(i+12),z[0])||d(b>>i,z[1])||d(b>>(i+2),z[1])||d(b>>(i+4),z[1])||d(b>>i,z[2])||
d(b>>i,z[3])){putchar(c[++i]);puts(" won");return i;}q[0]=c[1-i+1];puts(q);
scanf("%d,%d",&j,&i);b+=(l%2+1L)<<(j*6+i*2);}return 0;}
0334デフォルトの名無しさん
NGNG小さくすれば、トリッキーに見えます。
つーか、それってトリッキーじゃないんですか>3目並べ、対戦式
0335300
NGNG0336300
NGNG誰か思考ルーチン組んで〜(笑)
#include <stdio.h>
unsigned long k,b=0,z[]={0x15,0x1041,0x10101,0x1110};char s[]=" 012",c[]=" XO",
q[]="O?\0X?",d(long a,long b){return ((a&b)==b);};int h,i,j,l,main(){for(l=0;l<9;l++){
puts(" 012");for(i=0;i<3;i++){s[0]=i+'0';for(j=0;j<3;j++)s[j+1]=c[b>>(i*6+j*2)&3];
puts(s);}h=l%2;if (d(k=(b>>h),z[0])||d(k>>6,z[0])||d(k>>12,z[0])||d(k,z[1])||d(k>>2,z[1])||
d(k>>4,z[1])||d(k,z[2])||d(k,z[3])){putchar(c[h+1]);puts(" won");return i;}
puts(q+h*3);scanf("%d,%d",&j,&i);b+=(2L-h)<<(i*6+j*2);}return 0;}
0337トリッキーの1
NGNG7行オセロ、人間対無能AIです。
#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}
もはやインデントを揃えた位では元のコードが読めなくなってしまっていますが、
もしコメント付き変数名まとものバージョンを欲しい方がいれば上げます。
0338トリッキーの1
NGNG置けない場所を指定した場合は再度入力してください。
X=55などの変な入力をチェックしていないので、即クラッシュします。
両者置けなくなったらプログラム終了です。自分で数えてください。
もっとも、このコンピュータは激弱ですので負けようがないとおもいますが(笑
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・○●・・・
・・・●○・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
3 5
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・○●・・・
・・○○○・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・●●●・・・
・・○○○・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
1 1
3 3
・・・・・・・・
・・・・・・・・
・・○・・・・・
・・○○●・・・
・・○○○・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・○・・・・・
・●●●●・・・
・・○○○・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
0339デフォルトの名無しさん
NGNG0340300
NGNGちょっと悔しい・・・・
さすがです。
0341デフォルトの名無しさん
NGNGうわ、マジでオセロですか?コンピュータと対戦ですか?
信じられない・・
0342デフォルトの名無しさん
NGNG0344トリッキーの1
NGNGこのスレの初期の頃の砂嵐プログラムで、効率的な削り方を覚えました。
あれ、今年の3月だったんだなぁ。懐かしいというか(笑)。
>>343
ありがとうです。番兵を駆使してとにかくif文から逃げました。
後はもう小手先のテクニックでひたすら1文字ずつ……。
途中の三項演算子のトリックに気付いて、やっと7行が見えましたね。
0345デフォルトの名無しさん
NGNG等幅で見てたらなんか芸術を感じた
コードに圧倒された気分だ。とにかくすげぇ
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGしかし文字数を減らすと綺麗に7行にならない。
すごい
感動した
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGまともヴァージョンアプきぼん!
0350デフォルトの名無しさん
NGNGコメント付きバージョンUPきぼん!!
0351デフォルトの名無しさん
NGNGすげぇ…アンタハッカーだよ!
0352300
NGNG行き詰まったので次のネタ探し(^^;
#include <stdio.h>
long k,b=0,z[]={0x15,0x1041,0x10101,0x1110};char s[]=" 012",d(long a,long b){
return ((a&b)==b);};int h,i,j,l,main(){for(l=0;l<9;l++){puts(" 012");for
(i=0;i<3;i++){s[0]=i+'0';for(j=0;j<3;j++)s[j+1]=" xo"[b>>(i*6+j*2)&3];puts(s);}
if(d(k=(b>>(h=l%2)),z[0])||d(k>>6,z[0])||d(k>>12,z[0])||d(k,z[1])||d(k>>2,z[1])
||d(k>>4,z[1])||d(k,z[2])||d(k,z[3])){puts("x won\0o won"+h*6);return h;}
puts("O?\0X?"+h*3);scanf("%d,%d",&j,&i);b+=(2L-h)<<(i*6+j*2);}return 0;}
0353トリッキーの1
NGNG>>347
マジで盲点でした。なるほど、確かにその通りです。
やっぱり一人でやるとどこかに盲点が出来るな……。
参考になりました。
>>350,351
次にsageで載せておきます。参考になれば幸いです。
0354トリッキーの1
NGNG// 盤状態:横9*縦10で、使用は8*8
// 0:無し 1:1player 2:2player 3:改行
// y*9+xというイメージ。0行目と9行目は番兵
map[90]={0},
// 盤を走査する場合、縦横斜め方向に向かうために足されるべき数
dir[]={-10,-9,-8,-1,1,8,9,10};
void check()
// putに駒を置いた場合ひっくり返せる枚数をallに足す
{
if(map[put]==0)
for(i=0;i<8;i++)
// 8方向走査
{
// dir[i]の方向の相手のコマの数を確認
for(count=0,cur=put+dir[i];map[cur]==3-turn;cur+=dir[i])
count++;
if(count && map[cur]==turn)
// 1枚以上存在し、その上端が自分のコマだったら
{
all+=count;
cur=put;
if(done)
// doneがtrueの場合は、実際にひっくり返す
do map[cur]=turn,cur+=dir[i]; while(map[cur]!=turn);
}
}
}
// mapに対応するオセロ駒&改行
char *h="・○●\n";
int main()
{
// 初期化
for(i=1,map[41]=map[49]=2;i<10;map[i++*9]=3)
map[40]=map[50]=turn=pass=1;
/* for(i=1;i<10;i++) map[i*9]=3;
map[9*4+4]=map[9*5+5]=1;map[9*4+5]=map[9*5+4]=2;
turn=pass=1; */
for(;;all=done=0) // ループのたびにallとdoneを初期化(セミコロン1個削除するため)
{
// 盤の表示。今回のデータ構造だとこれで表示できる
// ついでにdone=0でcheckを呼び、何枚駒を置けるのチェック
for(put=9;put<82;++put)
check(),printf("%.2s",&h[map[put]*2]);
if(all)
// 1枚でも駒が置けた場合はcomは左上から走査、人は置けるまで繰り返す
// 置けた(=allの値が変わった)らturn終了
for(done=all=pass=put=8;all==8;check())
turn-2?(scanf("%d %d",&put,&i),put+=i*9):++put;
else if(pass)
// 駒を置けない。s=0にしてフラグを立てる
pass=0,printf("pass");
else
// 両者とも駒を置けないので終了
break;
turn=3-turn; // turn交代:1->2,2->1
}
return 0;
}
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG曖昧すぎるよ
1行で書けるネタだから7行に入らないだろうってくらい条件あげてね
0360デフォルトの名無しさん
NGNGAA でアルファブレンド」ってのはどう?
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNG337、このトリッキーさでバグがなさげなのも評価したい。
>>360
アルファブレンドというネタ自体がイマイチ。
元絵とかの入力も全て含めて7行っていうネタの方がよろしい。
で、じゃあネタ出せといわれるとやっぱり困るんだけどね。
何かパズルネタとかかなぁ……
0363デフォルトの名無しさん
NGNG前2chで、HTAの極小ブラウザを見た気がする。
…どのスレだったっけか。
0364デフォルトの名無しさん
NGNGhttp://piza.2ch.net/tech/kako/982/982930049.html
の30番だね。ソースを転載すると、
// 以下転載
scrbrwsr.hta
-------------------------------------------------
<!-- Script Browser 777 by IUnknown -->
<HTML><TITLE>Script Browser 777 by IUnknown</TITLE>
<STYLE>
BODY{background=MENU;border=no}
#addrbar{width=532px}
#btn {width=30px;height=20px}
</STYLE>
<SCRIPT language="JavaScript">
var WB;
function InitWB(){
WB=document.all.tags("IFRAME").WB;
CT=document.body}
function ResizeWB(){
WB.style.width=CT.clientWidth-20;
WB.style.height=CT.clientHeight-50;
addrbar.style.width=CT.clientWidth-60}
function NaviWB(){WB.navigate(addrbar.value)}
</SCRIPT>
<BODY onload="InitWB()" onresize="ResizeWB()" oncontextmenu="return false" scroll="no">
<INPUT type="text" id="addrbar"> <INPUT id="btn" onclick="NaviWB()" type="button" value="GO">
<IFRAME id="WB" style="width:572px;height:355px"></IFRAME></BODY></HTML>
-------------------------------------------------
ファイル名は別に何でも構わないが拡張子だけは hta に
しておくこと。関連付けのないファイルアイコンになるが
ダブルクリックすればブラウザは起動するはずだ。
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNGs/シェル!/シェルスクリプト/
っていうかスクリプト言語作って。7行で。
ネイティブコンパイルできればなおヨシ。
0369デフォルトの名無しさん
NGNGlisp系だったらできるかもしれないが。
よくわかってないで発言してる?
あるいはネタかな。
0370367
NGNGでもスクリプトの方が面白そうかなぁ・・・なんて思ってさ。
ごめんな。日本語ヘタで。
0371デフォルトの名無しさん
NGNGどうよ。
ReactOS の cmd.exe
http://www.neuro.gatech.edu/users/cwilson/cygutils/unversioned/cmd-reactos/
JavaShell
http://www01.u-page.so-net.ne.jp/db3/midori/JMichelle.ja.html
0372トリッキーの1
NGNG7行でタグブラウザを実現するには、>>364さんの様に
IE系のスクリプトで書く必要がありそうですね。
タグをどのように実装するかがポイントかな。
シェルスクリプトは面白い物が作れなさそうです。というのも、
ある程度の標準ライブラリ的要素がないと出来ても面白くないし、
そういう物をつくっているとどの段階で「完成」と言えるのか
わからないし、機能を削って行数を得るのは美しくないですからね。
もはや時代遅れネタなのですが、6行で出来たのでアップします。
そろそろバグがありそうな気もしますが、
仮にあったとしても、もはや普通にデバッグ出来ません。
/* othello by Tax */
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;void k(){if(m[p]==0)for(i=m;*i
;i++){for(v=p+*i;m[v]==9-t;v+=*i);if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v
+=*i;while(m[v]-t);}}main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a=d=0){for
(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9:s?s=0,
puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}return 0;}
0373デフォルトの名無しさん
NGNG一段とトリッキーに・・・本領発揮っすね。
展開しても、見慣れているC言語だとは思えないんですけど。
0374デフォルトの名無しさん
NGNGタグ?タブ?
0375デフォルトの名無しさん
NGNGprint "Hello"
print "Hello"
print "Hello"
print "Hello"
print "Hello"
print "Hello"
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG七行で。
0379デフォルトの名無しさん
NGNGBASICの予約語だけで何文字かな?(笑
0380デフォルトの名無しさん
NGNGできるよ。
一行2048文字なら
0381デフォルトの名無しさん
NGNGじゃあサブセットでどうよ。
・行番号は00から99行まで(00,01,02...99)
・制御構文はGOTOとIF-THENのみ
・変数は整数のみ
・変数名は二文字
・内蔵関数は、GETとPUTのみ
GET aa : aaに数を入力させる
PUT aa : aaの内容を出力する
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG演算子はどうさ
0384381
NGNG>>383
MODを%に割り当てよう。aa = bb % 5
もちろん即値は使えないとダメだよん。
それ以外はBASIC準拠でいいんじゃない?
0385デフォルトの名無しさん
NGNGマインスイーパです。でも、ここまでしか出来なかった。無念。
起動後、「横 縦 爆弾の数」の順で入力し、「x軸 y軸」で指定。
98SE、Borland C++ 5.5.1で確認。サイズ固定とかならもうちょい行けるけど。
#include <iostream.h>
int u,a,b,w,h,m,*f,o[8],x,y,n,i,j;void C(int n){int&c=f[n];if(c<10)if(!(c&16))
{c|=16;m--;if(c==16)for(int r=0;r<8;r++)C(n+o[r]);}}void D(){for(i=0;i<a;){
printf("%c ","??????????######012345678@######"[f[i++]]);if(i%u==0)puts("");}}
main(){cin>>w>>h>>b;if(b<w*h){srand(time(NULL));u=w+2;a=u*(h+2);f=new int[a];
m=w*h;o[0]=-u-1;o[1]=-u;o[2]=-u+1;o[3]=-1;o[4]=1;o[5]=u-1;o[6]=u;o[7]=u+1;for
(i=0;i<a;i++){x=i%u;y=i/u;f[i]=x&&x<=w&&y&&y<=h?0:10;}for(i=0;i<b;i++){do n=
rand();while(n>=a||f[n]>=9);f[n]=9;for(j=0;j<8;j++){int&c=f[n+o[j]];if(c!=9)
c++;}}for(;;){D();cin>>x>>y;C(n=y*u+x);if(f[n]==(9|16)){puts("(T_T)");break;}
if(m==b){puts("(^_^)");break;}}D();delete f;}}
0386デフォルトの名無しさん
NGNG・includeにstdlib.hとtime.hが必要
・main関数にreturnがない
C++規格のコンパイラだとエラーになる。
しかしネタとしてはかなり面白い部類だし、
なんだか縮めがいがありそうな内容だね。
このネタで>>337さんの参戦を期待したい
0387385
NGNGさっそく指摘が!!
サンクスです。
いやー、BCC32でこれで通っちゃったからいいかなーと(笑)
分かってたけど、エラーも何も出なかったので。
少しでも削りたかったからだけど、やっぱりまずいですよねぇ。
もちっと色々考えてみます。ハイ。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGC言語だと ( ) + - * / の括弧+四則演算( *と/ 優先付)でも難しいと思う
という事でお題
C言語で int fourStrToInt(char *str) を書け
0390デフォルトの名無しさん
NGNGfourStrToIntの仕様を書いてくれー、google検索したけど見つからない
0391ベタすぎるので下げ
NGNG#include <stdlib.h>
main(){printf("int fourStrToInt(char *str)");return EXIT_SUCCESS;}
0392デフォルトの名無しさん
NGNGstr に数式を書いておいて、計算をして返す関数ってこと?
>>385
マインスイーパか、なかなか面白そうなネタですね。
確かにサイズ、爆弾の密度固定にすれば7行に収まるかもですね…
0393デフォルトの名無しさん
NGNGアルゴリズムの基礎として知っているべき内容ではあるが、7行ねぇ…
再帰を使わずに実装しないと無理かな、やぱ
0394k|m
NGNGやっぱし再帰使うと無理っすか。。。
#include <stdio.h>
typedef int FT;
char *s;
char C(){ // char (except space)
while(*s==' '||*s=='\t') ++s; return *s;
}
FT N(){ // number
char g=0; FT r=0;
if(!C()) return 0;
if(*s=='-') g=*s++; else if(*s=='+') ++s;
C();
while(('0'<=*s)&&(*s<='9')){ r*=10; r+=(*s)-'0'; ++s; }
return (g!='-')?r:-r;
}
FT E(); // prototype
FT F(){ // factor
FT r;
if(!C()) return 1;
if(*s=='('){ ++s; r=E(); s++; return r; }
return N();
}
FT T(){ // term
FT r; char g;
if(!C()) return 0;
r = F(); C();
while(*s=='*'||*s=='/'){ g=*s++; if(g=='*') r*=F(); else if(g=='/') r/=F(); C(); }
return r;
}
FT E(){ // exp
FT r; char g;
if(!C()) return 0;
r = T(); C();
while(*s=='+'||*s=='-'){ g=*s++; if(g=='+') r+=T(); else if(g=='-') r-=T(); C(); }
return r;
}
void main(){
char i=0, a[128];
while(a[i]="-3 + 12/ (( - 3) - 1)"[i])++i;
s=a; printf("%d",E());
}
参考:C言語による最新アルゴリズム事典 / 奥村晴彦 著
0395394
NGNGchar i=0, a[128];
while(a[i]="-3 + 12/ (( - 3) - 1)"[i])++i;
じゃなくて
char a[] = "-3 + 12/ (( - 3) - 1)";
でいいのに・・・
0396縮め君
NGNGbcc32 5.5.1 でしかコンパイル通ることを確認してないっす。
#include <stdio.h>
char*s,a[999];int e(),c(){while(*s==32||*s==9)s++;return!*s;}int n(){int r=0,g=
0;if(c())return 0;if(*s==43||*s==45)g=*s++;for(c();47<*s&&*s<=57;r=r*10+*s++-48
);return g-45?r:-r;}int f(){int r;return c()?1:(*s-40?n():(s++,r=e(),s++,r));}
#define m(N,U,P,Q,R,S) int N(){int r,g;if(c())return 0;r=U();c();while(*s==R||\
*s==S){g=*s++;if(g==R)r##P##=U();if(g==S)r##Q##=U();c();}return r;}
m(t,f,*,/,42,47)m(e,t,+,-,43,45)int main(){s=gets(a);return !printf("%d",e());}
式は標準入力から998文字以内で入れてください。
0397縮め君
NGNG#include <stdio.h>
char*s,a[999];int e();int c(){while(*s==32||*s==9)s++;return!*s;}int n(){int r=
0,g=0;if(c())return 0;if(*s==43||*s==45)g=*s++;for(c();47<*s&&*s<58;r=r*10+*s++
-48);return g-45?r:-r;}int f(){int r;return c()?1:*s-40?n():(s++,r=e(),s++,r);}
#define m(N,U,P,Q,R,S) int N(){int r,g;if(c())return 0;r=U();c();while(*s==R||\
*s==S){g=*s++;if(g==R)r##P##=U();if(g==S)r##Q## =U();c();}return r;}
m(t,f,*,/,42,47)m(e,t,+,-,43,45)int main(){s=gets(a);return !printf("%d",e());}
0398394
NGNG短KEEEeeeeee(゚Д゚)感動したっす。
ちなみに関数 n() (>>394では N()) の中身をちょこっといじくって
各関数や変数をdouble型にするだけで,小数も扱えるんですよね。
これは挑戦あるのみっすね。笑い
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG0401sage
NGNG0402ツール・怒・名無しさん
NGNG#include <stdio.h>
char b[99],c[99],i,*p;S(){int r=E();if(*p==43)p++,r+=S();if(*p==45)p++,r-=S();
return r;}E(){int r=T();if(*p==42)p++,r*=E();if(*p==47)p++,r/=E();return r;}K()
{for(;*p==32||*p==9;p++);}T(){int r;K();if(*p==40)p++,r=S(),p++;if(*p==45)p++,r
=-T();if(*p==43)p++,r=T();if(c[*p])for(r=0;c[*p];r=10*r+*p++-48);K();return r;}
main(){for(i=48;i<58;c[i++]=1);while(1)p=gets(b),printf("[%d]\n",S());}
0403デフォルトの名無しさん
NGNG<お題:小町算(C言語)>
1,2,3,4,5,6,7,8,9(数字の並びは固定)である。
これらの数の間に+、−、何も入れないという演算子をいれて、計算
する。そして、計算結果が100になる組み合わせを、すべて表示する
プログラムを作成せよ。100になるのは、12とうりのはず。
(夏休みの課題。今のところ27行。)
<注意>
1行に2文以上書かない。
ヘッダー、DLL,COM,など、ソースレベルおよびバイナリレベルの外部ルーチン
は禁止する。
ソースコードは、すべてカウントする。(コメント、ヘッダなど)
プログラムは、コンソールアプリケーションとする。
入出力は、ストリーム入出力を使用する。
誰かたすけて〜。小町算中毒に・・・
0404デフォルトの名無しさん
NGNGimiga wakarimasen.
0405デフォルトの名無しちん
NGNG#include <stdio.h>main(){for(;;) printf("(・∀・)ジサクジエンデシタ! ");}
0406デフォルトの名無しさん
NGNG#include <stdio.h>
void main(void){for(;;) printf("(・∀・)ジサクジエンデシタ! ");}
0408300
01/08/26 19:13ID:cBHXyQ9gでも、未宣言の関数呼んだりしてるし
これって構わないの??
.c なら大丈夫だっけ?
0409デフォルトの名無しさん
01/08/26 21:08ID:fBf5GSTg構わないよ。warningは出るけど無視。
リンカが帳尻あわせてくれる。
0410布団圧縮袋さん
01/08/26 21:19ID:279bywtU0411ツール・怒・名無しさん
01/08/26 23:10ID:dHIzLWCQfoo(){int a=hoge();}
double hoge(){return 0.1;}
とやってaの値が壊れてるぞと騒いでる新人がいたな。。。
0412デフォルトの名無しさん
01/08/26 23:20ID:svFMyf0E0413デフォルトの名無しさん
01/08/26 23:54ID:Uj3iWCOo0414デフォルトの名無しさん
01/08/27 00:15ID:xedpPvGcそれ以外を返すなんてやだぃ!!
0415389
01/08/27 10:00ID:bSwtBedY>>402
すごいなあ、四則演算でも厳しいと思ったんだけど・・
・・代入有(変数付)でもいけたかもしれないね。
文字列で四則演算して整数を返せって課題だから#includeやmainは不要だから・・・
じゃあ次の課題
C言語で vprintf か vsprintf を内部関数を呼ばずに書けってのは?
浮動小数点有 だと無理だから
% [flags] [width] type_char
type_char
d 整数 符号付き 10 進整数
i 整数 符号付き 10 進整数
o 整数 符号なし 8 進整数
u 整数 符号なし 10 進整数
x 整数 符号なし 16 進 int(a,b,c,d,e,f を使用)
X 整数 符号なし 16 進 int(A,B,C,D,E,F を使用)
c 文字 1 つの文字
s 文字列ポインタ ヌルターミネータを検出するか,精度に達するまで,文字を出力する
% なし % 文字がプリントされる
flags
- 結果を左詰めで維持し,右側に空白を埋込む
0416デフォルトの名無しさん
01/08/27 12:29ID:SZV9w40wシェアウェア作っていいの?
0417デフォルトの名無しさん
01/08/27 12:30ID:SZV9w40wシェアウェア作っていいの?
0418 ◆JJ4mnGoc
01/08/27 12:51ID:u6uH360E402 に次の式渡したら答えが-10になりました。
3-4*2+15/3
[-10]
なんででしょ? bcc++5.5.1 拡張子cでコンパイルしました。
0419 ◆JJ4mnGoc
01/08/27 12:59ID:u6uH360Eスタックが返る順に計算が行われてるから、
3-(4*2+15/3)になっちまってるみたいですね。
んー、これまずいですよね。私もちょっと考えてみます。
0420デフォルトの名無しさん
01/08/27 13:36ID:q21zzpHodelスレに(・∀・)カエレ!!このかちゅーしゃ使いが!!
0421 ◆JJ4mnGoc
01/08/27 14:44ID:u6uH360E11個しか出ないと思って悩んでしまった
-1+2-3+4+5+6+78+9
これもアリなんだね? 演算子が「数の間に」ないけど。
042260
01/08/27 20:13ID:8xBKXMk.>>415
#include <stdarg.h>
typedef unsigned u;char c,s[99],*o,*h;int p,j,d;int z(char*b,u d,int r){j=0;
while(d)s[p++]="0123456789abcdef"[d%r],d/=r;while(b[j++]=s[--p],p);return j;}
int vsp(char*b,char*f,...){va_list v;va_start(v,f);h=b;do{if(*f=='%'){c=*++f;if
(c==37)*b++=37;if(c==99)*b++=va_arg(v,char);if(c=='s'){o=va_arg(v,char*);while(
*b=*o++)b++;}if(c=='u')b+=z(b,va_arg(v,u),10);if(c=='d'||c=='i'){d=va_arg(v,int
);if(d<0)*b++='-',d=-d;b+=z(b,d,10);}if(c=='x')b+=z(b,va_arg(v,u),16);}else*b++
=*f;}while(*f++);va_end(v);return b-h-1;}
%x/%d/%i/%u/%s/%cサポート(%oは忘れた)
雛型8行。もう少し縮みそうだけど、flag/widthのサポートは難しいかな。
042360
01/08/27 20:16ID:Z85lGkRw%の仕様が不明なので、%%で%を表示
0424ツール・怒・名無しさん
01/08/28 00:44ID:skAV8joQ#include <stdio.h>
char b[99],*p;E(){int r=T();l:if(*p==43){p++;r+=T();goto l;}if(*p==45){p++;r-=
T();goto l;}return r;}T(){int r=F();l:if(*p==42){p++;r*=F();goto l;}if(*p==47)
{p++;r/=F();goto l;}return r;}S(){for(;*p==32||*p==9;p++);}F(){int r=0;S();if(
*p==40?p++,r=E(),p++,0:*p==45?p++,r=-F(),0:*p==43?p++,r=F(),0:1)for(;47<*p&&*p
<58;r=10*r+*p++-48);S();return r;}main(){for(;;)p=gets(b),printf("%d\n",E());}
0425デフォルトの名無しさん
01/08/28 06:34ID:XumLL8YMだれか、幅とflagにも対応してください
#include <stdarg.h>
typedef unsigned u;typedef char c;int vsp(c*b,c*f,...){c x[9]="%csuxodi",t,s[99
],*o,*h;int p,i,n,r;u d;va_list v;va_start(v,f);h=b;do{if(*f=='%'){p=i=0;x[8]=t
=*++f;while(x[i++]!=t);if(i<3)*b++=(i==1)?37:va_arg(v,c);else if(i<4){o=va_arg(
v,c*);while(*b=*o++)b++;}else{n=va_arg(v,int);r=i==5?16:i==6?8:10;if(i==7||i==8
)if(n<0)*b++='-',n=-n;d=n;while(d)s[p++]="0123456789abcdef"[d%r],d/=r;while(*b
++=s[--p],p);}}else*b++=*f;}while(*f++);va_end(v);return b-h-1;}
#include <stdio.h>
// テストドライバ
int main()
{
int i;
char buf[512];
i = vsp(buf, "%%%s%s%s%c %d %u %x %i %u %o", "test1 ", "test2 ", "test3", 'Z', -123, 123, 0x123, -123, -123, 83);
printf("\n%d:%s\n", i, buf);
return 0;
}
042660
01/08/28 06:35ID:XumLL8YM0427
01/08/28 06:48ID:cVrGreLc042860
01/08/28 07:10ID:XumLL8YMtypedef char c;int vsp(c*b,c*f,...){int p,i,n,r;va_list v;c x[9]="%csuxodi",*o,
*h,s[99];unsigned d;va_start(v,f);h=b;do{if(*f^'%')*b++=*f;else{p=i=0;x[8]=*++f
;while(x[i++]!=*f);if(i<3)*b++=(i==1)?37:va_arg(v,c);else if(i<4){o=va_arg(v,c*
);while(*b=*o++)b++;}else if(i<9){n=va_arg(v,int);r=i==5?16:i==6?8:10;if(i==7||
i==8)if(n<0)*b++='-',n=-n;d=n;while(d)s[p++]="0123456789abcdef"[d%r],d/=r;while
(*b++=s[--p],p);}}}while(*f++);va_end(v);return b-h-1;}
整理、ってことで仕事に行きます。
0429デフォルトの名無しさん
01/08/28 08:05ID:DwbZUWmAいたちがい
0430ツール・怒・名無しさん
01/08/28 20:40ID:oqu.Va2Mtypedef double d;char b[999],*p;d T(),F();d E(){d r=T();l:if(*p==43){p++;r+=T()
;goto l;}if(*p==45){p++;r-=T();goto l;}return r;}d T(){d r=F();l:if(*p==42){p++
;r*=F();goto l;}if(*p==47){p++;r/=F();goto l;}return r;}S(){for(;*p==32||*p==9;
p++);}d F(){d r=0,s=1,f=1;S();if(*p==40?p++,r=E(),p++,0:*p==45?p++,r=-F(),0:*p
==43?p++,r=F(),0:1)for(;47<*p&&*p<58;(f?r=10*r+*p++-48:(s/=10,r=r+s*(*p++-48)))
,(*p==46?p++,f=0:0));S();return r;}main(){while(p=gets(b))printf("%g\n",E());}
0431デフォルトの名無しさん
01/08/29 14:04ID:7WZsAq3s本当の7行プログラミングじゃないのが多いよね?
0433デフォルトの名無しさん
01/08/29 14:28ID:lTYEA0560434431
01/08/29 14:38ID:7WZsAq3s基本的に1文1行じゃないの?
このスレにあるのはただ横に並べただけのような気がするんだけど。
0436300
01/08/29 14:43ID:r10mk.nkでも、元ネタからしてそうなんだけど・・・・
むしろ、79*7文字以内がここの七行の意図。
0437431
01/08/29 14:47ID:7WZsAq3sなるほど、79文字ないですか。
では、実際に1文1行7行プログラミングはやっぱり無理ですかね?
0438デフォルトの名無しさん
01/08/29 15:13ID:iIYcB4L.043960
01/08/29 15:54ID:f5AD.QBU書いてたのはvsprintfじゃ無くて、sprintfでした
勘違い下げ。
0440デフォルトの名無しさん
01/08/29 17:59ID:GnfmfSsIケンカ売ってるの?
0441デフォルトの名無しさん
01/08/29 18:29ID:caLfilt20443デフォルトの名無しさん
01/08/30 18:02ID:kWM.DNtE---- ここから
エL!ヘ
---- ここまで
org 100h
mov ah, 4ch
int 21h
正常終了するだけです。
MS-DOS, Windowsで動作確認してます。
↑くだらねぇ(´Д`)
0444デフォルトの名無しさん
01/08/30 19:12ID:AMLCVR/Eエ
-----
2バイト。
int 20h
これじゃダメなん?
それから、!とヘの順序が逆だろ
0445デフォルトの名無しさん
01/08/30 19:56ID:kWM.DNtEおお、ナイスですね。
順序が逆ってのも全くそのとおりです。
すんません。
0446デフォルトの名無しさん
01/08/30 21:09ID:kWM.DNtEいまここ、読み返してみましたが、面白いっすね。
私もBASIC挑戦してみまっす。
0447デフォルトの名無しさん
01/08/30 21:50ID:LeZxLyYgデモスレの256バイトプログラムを思い出した。
coreジェネレータっていう名前の
スゲェソフトなのかと一瞬焦っちまったよ。
0448デフォルトの名無しさん
01/08/30 22:20ID:kWM.DNtEとんでもない行数になっちまいました。
//----------------------------------------------------------------------------//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define sc strncmp
static int b[65536],r,m;static char l[100][80],c[80];
char*sk(char*s){char*p;for(p=s;*p==' ';p++);return p;}int ad(char*s){short*i;i=
s;return*i;}int is(char*s){int z;if((*s>='0'&&*s<='9')||*s=='-')z=atoi(s);else
z=b[ad(s)];return z;}cmd(char*s){int i,f,g;if(*s)if(sc(s,"GOTO ",5)==0){r=is(sk
(s+5))-1;}else if(sc(s,"PUT ",4)==0){printf("%d.",is(sk(s+4)));}else if(sc(s,
"? ",2)==0){f=0;if(s[strlen(s)-1]==';'){f=1;s[strlen(s)-1]=0;}printf("%s",s+2);
if(f)printf("\n");}else if(sc(s,"GET ",4)==0){printf("?");gets(c);b[ad(sk(s+4))
]=atoi(c);c[0]=0;}else if(sc(s,"IF ",3)==0){if(is(s+3))cmd(sk(s+6));}else if(s[
2]=='='){f=is(s+3);g=is(s+6);f=(s[5]=='+')?f+g:(s[5]=='-')?f-g:(s[5]=='*')?f*g:
(s[5]=='/')?f/g:(s[5]=='>')?f>g:(s[5]=='<')?f<g:(s[5]=='!')?f!=g:(s[5]=='=')?f
==g:(s[5]=='%')?f%g:f;b[ad(s)]=f;}else if(atoi(s)>0||s[0]=='0'){strcpy(l[atoi(s
)],s+3);if(m<atoi(s))m=atoi(s);}else if(s[0]=='L'){for(i=0;i<=m;i++)if(*l[i])
printf("%02d %s\n",i,l[i]);}else if(s[0]=='R'){for(*s=r=0;r<=m;r++)cmd(sk(l[r])
);}else if(s[0]=='Q'){exit(0);}else{puts("ERR");}}main(){for(;;){gets(c);if(*c)
{cmd(sk(c));puts("\nOK");}}}
0449デフォルトの名無しさん
01/08/30 22:30ID:HxZGoFi6スタックに0000hが入っているから1バイトでも済むぞ。
0450448
01/08/30 22:36ID:kWM.DNtEそれでもこんなにでかくて鬱。。
0451デフォルトの名無しさん
01/08/30 22:42ID:3zV3Y2uEMSX-DOS用のプログラムをMS-DOSで走らせない為に
使ってたね。iretだったっけ?
0452デフォルトの名無しさん
01/08/30 22:44ID:DcpruMmY----
テ
----
1バイト。
0453デフォルトの名無しさん
01/08/31 00:05ID:5Lf7sibEも、もしかしてミニセットベーシックですか!?
スゲェ!あんたスゲェよ!
0454448
01/08/31 01:07ID:PIOyNsYQ現実逃避して書いた甲斐があったってもんです。。(本業は並列化コンパイラ
しかし、7行ではないのでダメみたいです。
精進します…ってか、アレンジ許可ですんで誰か直して…
#ところで、BASICの使い方知ってる人、今どれだけいるんですかね
0455448
01/08/31 01:16ID:PIOyNsYQ世界最小のBASIC(もどき)は恐らくVTL(バイナリ768バイト)っていう
やつみたいです。20年以上前のものみたいです。
MC6800で書かれたものらしく、現在の32ビットプロセッサでは
あれより小さいのはちと無理でしょうね。
0456デフォルトの名無しさん
01/08/31 21:27ID:iy.vFuC.0457デフォルトの名無しさん
01/08/31 22:05ID:PdYiCt8o0458456
01/08/31 22:11ID:p07F3Eh6どういう意味ですか?
private sub プログラマ (眠い as string,残り時間 as long)
on error goto さよなら
プログラマ = 眠い * 残り時間
さよなら:
プログラマ = 廃棄物
end sub
0460デフォルトの名無しさん
01/08/31 22:20ID:PdYiCt8oだったら100桁計算するのも1億もそんなに変わらんから
0461デフォルトの名無しさん
01/08/31 22:22ID:SQ0g2tCg7行といっても詰め込んで7行?意味ないじゃん。
Cでセミコロン使ったらその場で1行でわ?
カンマ演算子を多用すれば結構縮まりそうだが(W
0462デフォルトの名無しさん
01/08/31 22:29ID:nTJ9noQE0463デフォルトの名無しさん
01/08/31 22:36ID:PIOyNsYQまあ、それもそうですね。
出題の仕方によっては、何でもありになってしまいますから。
ここの皆さんは、その辺を適当に見積もってマッタリやってるんですよ。
意味なんて追求するなら、こんなとこ(2ch)来ない方が有意義な一日が
送れるかもしれませんね。
それもまた、いいでしょう。さようなら。
0464デフォルトの名無しさん
01/08/31 23:05ID:.ftWvnAAこれって桁おちとかしないのかな?
ソースは全然追ってないけれども、連分数表示の公式から求めているのかな?
#!/usr/local/bin/ruby
k, a, b, a1, b1 = 2, 4, 1, 12, 4
while TRUE
# Next approximation
p, q, k = k*k, 2*k+1, k+1
a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
# Print common digits
d = a / b
d1 = a1 / b1
while d == d1
print d
$stdout.flush
a, a1 = 10*(a%b), 10*(a1%b1)
d, d1 = a/b, a1/b1
end
end
0465デフォルトの名無しさん
01/08/31 23:14ID:gbtJPnGkrubyがわからん・・・
0466デフォルトの名無しさん
01/09/01 00:07ID:8UdnvL3ARuby知らないけど、今時のScript言語ならbignumぐらい
実装してるんでは?
0467300
01/09/01 00:28ID:MnqMeubQそれ見て凄い、って思えない人にはこのスレ不要でしょうね。
0468464
01/09/01 00:51ID:fRlPzhIUおれもrubyわからん。昨日インストールしたばったりだ。
でもなんとなく分かりそうじゃない?
インデントが消えちゃってるから見づらいけど。
0469デフォルトの名無しさん
01/09/01 11:48ID:o5v4nYCE0470デフォルトの名無しさん
01/09/01 15:18ID:q8kyDf0kスレのはじめから読め。
つか、もしかして煽ってんの?
0471デフォルトの名無しさん
01/09/01 19:48ID:8ybdpsNgint
main
(
)
{
char
*
i
=
"s"
"a"
"g"
"e"
;
printf
(
"%s"
,
i
)
;
return
0
;
}
だめだ・・・・おさまらなかった・・・・
0472デフォルトの名無しさん
01/09/02 14:33ID:7fBLjvHQまじワラタよ・・・
0473デフォルトの名無しさん
01/09/02 15:40ID:G96xcqig0474デフォルトの名無しさん
01/09/02 21:52ID:.hT4oV56>>448さんは実は凄くないかい?
0475デフォルトの名無しさん
01/09/03 06:04ID:hl5nRbHk0476474 (!=448)
01/09/04 00:42ID:UPHiRqCk0478デフォルトの名無しさん
NGNG>475
ちゃいます(kw
誉めてもらえるのはうれしいっすが、誰か治してくれたらもと嬉しいです。。
>477
んー、RUNとかの代わりに"R"1文字って言う風にケチな仕様にしてますが、
GOTO を G とかにしたらそれこそ、BASICでなくなるんだろうなぁとか
思いながら作ってたらああなりました。
やっぱBASICよか、ほかのネタ考えたほうが面白いでしょうね。(ちと苦しいから…
0479デフォルトの名無しさん
NGNG448のプログラムは、以下のようなソースを通します。
10 A1=3
15 B1=2
20 M1=A1%B1
25 M2=M1=0
30 IF M2 GOTO 50
35 B1=B1+1
40 Q1=A1>B1
45 IF Q1 GOTO 20
46 PUT A1
50 A1=A1+1
55 GOTO 15
↑3以上の素数計算を永遠にやります。。
…あんまり面白いものは作れないです(kw
0480デフォルトの名無しさん
NGNGHSPスレの302がHSPで七行プログラミングスレを誰か立ててくれって言ってるんで、
HSPで7行プログラミングをお願いします>HSPスクリプターさん(藁
0481480
NGNGとりあえず、言いだしっぺなんで、
手元にDLしてあったHSPで479のを作りなおして見た
A1=3
*x
B1=2
*y
M1=(A1\B1)
M2=(M1==0)
IF M2 :GOTO *z
B1=B1+1
Q1=(A1>B1)
IF Q1 :GOTO *y
mes A1
*z
A1=A1+1
wait 1
GOTO *x
なんか、HSPってベーシックモドキって感じが拭えねぇなぁ
ベーシック理解してれば一日で屑アプリは作れそう
一行に多重に命令を書いてやれば7行に収まるけど、まぁいいか
0482デフォルトの名無しさん
NGNG479の者です。別人だと証明します。。
っていうか、ID無いんですね、ここ。(kw
確かに":"で繋いで何行も書けますからねぇ>フルBASIC
僕は結構気に入ってた言語なんですが、やっぱ教育用言語の域は
脱せなかったのかな。
その反面、HSPは、けっこう単品で色々できるように工夫できてて
面白いですよね。
時間あれば、HSPも色々やってみたいんですがねぇ。。
0483デフォルトの名無しさん
NGNGよほどためになるわなあ
0484デフォルトの名無しさん
NGNG0485480
NGNG自由度は一定以上は無い。
飼い殺しのようなもので、それ以上ほしかったらDLL依存しかないから、
あんまりお勧めできるもんじゃない
まぁ、上記のような素数を求めたりとかの簡易なのはCで作るよりは効率いいけど
(小数を扱うものは覗く)
>>482
0486デフォルトの名無しさん
NGNGint main(int c,char** v){int N,R,m,i,r;unsigned long b,P=1;if(c<3)return -1;
N=atoi(v[1]);R=atoi(v[2]);if(N>32||N<R)return;if(R<=N-R)m=0;else{m=1;R=N-R;}
for(i=0;i<N-1;i++)P=(P<<1)+1;for(b=0;b<=P;b++){r=0;for(i=0;i<32;i++)if(1<<i&b)
r++;if(r==R){unsigned long b2=0;unsigned long w=b;if(m==1){w=~w;w&=P;}while(
b2<32){if(1<<b2&w){printf("%d ",b2+1);}b2++;}printf("\n");for(i=0;i<32;i++){
if(!(1<<i& b)){b|=1<<i;}else{break;}}}if(b==0xFFFFFFFF){break;}}return 0;}
0487デフォルトの名無しさん
NGNG0488| - -)
NGNG#include <stdio.h>
char *m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";void
c(char*d,unsigned char*s,int l){int v[3]={0,2,3};long t=0;int i;for(i=l;i<3;i++
)s[i]=0;for(i=0;i<3;i++)t=(t<<8)|(s[i]);for(i=0;i<4;i++)d[i]=m[(t>>((3-i)*6))&
0x3F];if(l<3)memset(d+v[l],'=',4-v[l]);}int main(void){char r[54],*p;char o[4];
int l;while((l=fread(r,1,54,stdin))>0){p=r;while(l){int e=l>3?3:l;c(o,p,e);p+=e
,l-=e;fwrite(o,1,4,stdout);}putchar('\n');}return 0;}
0489デフォルトの名無しさん
NGNGusage: java H port
import java.io.*;import java.net.*;import java.util.*;
public class H{public static void main(String a[])throws Exception{new H().e(new
Integer(a[0]).intValue());}void e(int p)throws Exception{ServerSocket v=new
ServerSocket(p);for(;;){Socket s;try{s=v.accept();}catch(IOException e){break;}
new T(s).start();}v.close();}}class T extends Thread{Socket s;T(Socket q){s=q;}
public void run(){try{StringTokenizer t=new StringTokenizer(new BufferedReader(
new InputStreamReader(s.getInputStream()),1024).readLine()," ");t.nextToken();
String f=t.nextToken();if(f.endsWith("/"))f+="index.html";f="."+f;try{
DataInputStream i=new DataInputStream(new FileInputStream(f));DataOutputStream o
=new DataOutputStream(s.getOutputStream());byte b[]=new byte[1024];int l;o.
writeBytes("HTTP/1.0 200 OK\r\nContent-type: text/html\r\n");while((l=i.read(b))
!=-1){o.write(b,0,l);}o.close();}catch(FileNotFoundException y){try{
DataOutputStream o=new DataOutputStream(s.getOutputStream());o.writeBytes("HTTP"
+"/1.0 404 Not found\r\n");o.close();}catch(IOException z){}}catch(Exception y){
}s.close();}catch(IOException e){}}}
0490デフォルトの名無しさん
NGNG0491base64.c
NGNGint i=0,c,d=0,e=0;main(){while(EOF-(c=getchar())){i+=8;while(i>5)i-=6,d=d*256+c
,putchar("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(c
>>i)&63]);if(++e>53)puts(""),e-=54;}if(i)putchar(i-4?"AQgw"[c&3]:"AEIMQUYcgkos\
w048"[c&15]),puts(i-4?"==":"=");else if(e)puts("");return 0;}
0492base64.c
NGNG0493base64.c
NGNG#include<stdio.h>
int i=0,c,d=0,e=0;main(){while(EOF-(c=getchar())){i+=8;while(i>5)i-=6,d=d*256+c
,putchar("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d
>>i)&63]);if(++e>53)puts(""),e-=54;}if(i)putchar(i-4?"AQgw"[d&3]:"AEIMQUYcgkos\
w048"[d&15]),puts(i-4?"==":"=");else if(e)puts("");return 0;}
0494base64_decode.c
NGNG#include<string.h>
char*m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",*a;
int i=0,c,x,d=0;g(){x=getchar();return x-EOF?(a=strchr(m,x))?a-m:g():64;}main()
{while((c=g())<64){i+=6;d=d*64+c;while(i>7)i-=8,putchar((d>>i)&255);}return 0;}
0495491-494
NGNG0496デフォルトの名無しさん
NGNG0497basic.c
NGNGただし、RはRUN、QはQUIT、Lは実装せず。
※4行目elseの後ろに半角スペースが1つあります。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define X(c,n,e) if((!strncmp(p,c,n))&&(p+=n)){for(;*p==32;++p);p=(e);}else
int b[65536],f,g,i;static char l[103][80],c[80],*p;I(){return*p-48?atoi(p)?atoi
(p):b[*(short*)p]:atoi(p);}main(){do{gets(l[i=100]);p=l[i];while(i<101){for(;*p
==32;++p);X("\0",1,l[++i])X("GOTO ",5,l[i=I()])X("PUT ",4,(printf("%d\n",I()),l
[++i]))X("GET ",4,(printf("?"),gets(c),b[*(short*)p]=atoi(c),*c=0,l[++i]))X("I\
F ",3,I()?p+3:l[++i])X("RUN",3,l[i=l[100][0]=0])X("QUIT",4,l[i=102])if(*p==48||
atoi(p))strcpy(l[atoi(p)],p+3),++i;else(61-p[2]?puts("ERR"):(p+=3,f=I(),p+=3,g=
I(),--p,b[*(short*)(p-5)]=*p-43?*p-45?*p-42?*p-47?*p-60?*p-62?*p-21?*p-61?*p-37
?f:f%g:f==g:f!=g:f>g:f<g:f/g:f*g:f-g:f+g)),p=l[++i];}puts("OK");}while(i-102);}
0498477
NGNG>>488さんの小手先で短くした版。
#include <stdio.h>
#include <stdlib.h>
int u(char*s,char*r){for(;*r;s++,r++)if(*s-*r)break;return!*r;}int t(char*s){
int r=0;for(;*s;s++,r++);return r;}int b[65536],r,m;char l[100][80],c[80];char*
S(char*s){for(;*s==' ';s++);return s;}int N(char*s){return ((*s>'/'&&*s<':')||
*s=='-')?atoi(s):b[*(short*)s];}int C(char*s){int i=0,f,g=s[0];if(*s)if(u(s,
"GOTO "))r=N(S(s+5))-1;else if(u(s,"PUT "))printf("%d.",N(S(s+4)));else if(u(s,
"? ")){if(s[t(s)-1]==';'){i=1;s[t(s)-1]=0;}printf("%s",s+2);if(i)printf("\n");}
else if(u(s,"IF ")){if(N(s+3))C(S(s+6));}else if(s[2]=='=')f=N(s+3),g=N(s+6),i=
s[5]-43,b[*(short*)s]=i?i-2?i+1?i-4?i-17?i-19?i+22?i-18?i+6?f:f%g:f==g:f!=g:f>g
:f<g:f/g:f*g:f-g:f+g;else if((f=atoi(s))>0||g=='0'){for(i=0;i<t(s+2);i++)l[f][i
]=s[3+i];if(m<f)m=f;}else if(g=='L'){for(;i<=m;i++)if(*l[i])printf("%02d %s\n",
i,l[i]);}else if(g=='R')for(;i<=m;i++)C(S(l[i]));else if(g=='Q')exit(0);else if
(u(s,"GET ")){printf("?");fgets(c,79,stdin);b[*(short*)S(s+4)]=atoi(c);}else
puts("ERR");}main(){for(;;){fgets(c,79,stdin);if(*c){C(S(c));puts("\nOK");}}}
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501名無しさん
NGNGで1行は縮みそうだね
>>498のこれ好きー
>int u(char*s,char*r){for(;*r;s++,r++)if(*s-*r)break;return!*r;}
0502デフォルトの名無しさん
NGNGインデント付けたソース両方載せて欲しいなぁ・・
0503デフォルトの名無しさん
NGNGindent使えばイージャン
0504basic.c
NGNG501さんの指摘した関数は
u(char*s,char*r){for(;*r&&*s!=*r;++r);return!*r;}
または
u(char*s,char*r){while(*r&&*s!=*r)++r;return!*r;}
(どちらもバイト数は同じ)と書けます。
・関数の返り値はintにして省略する。
・1度しか呼ばない関数を定義しない。
・変数は出来るだけグローバルにして同時に宣言。
・if文は出来るだけ使わない(?:を使うためにも関数の型をそろえる
などは有効)。
・;の代わりに,を使う。
この辺りはIOCCCの1-linerを作るコツと一致します。
>>502さん
私のコードはインデントしても多分無駄です。
一応インデント+適当に括弧をつけて見やすくしました。
行数が多いようなので次に書きます。
0505491-495,497,504
NGNG#include<stdlib.h>
#include<string.h>
#define X(c,n,e) if((!strncmp(p,c,n))&&(p+=n)){for(;*p==32;++p);p=(e);}else
int b[65536], f, g, i;
static char l[103][80], c[80], *p;
I()
{
return *p - 48 ?
( atoi(p) ? atoi(p) : b[*(short*)p] ):
atoi(p);
}
main ()
{
do{
gets(l[i = 100]);
p = l[i];
while (i < 101){
for (; *p == 32; ++p);
X("\0", 1, l[++i])
X("GOTO ", 5, l[i = I()])
X("PUT ", 4, (printf("%d\n", I()), l[++i]) )
X("GET ", 4, (printf("?"), gets(c),
b[*(short*)p] = atoi(c), *c = 0, l[++i]) )
X("IF ", 3, I()? p+3 : l[++i])
X("RUN", 3, l[i = l[100][0] = 0])
X("QUIT", 4, l[i = 102])
if(*p == 48 || atoi(p)) strcpy(l[atoi(p)], p+3),++i;
else ( 61 - p[2] ?
0506505
NGNGputs("ERR"):
( p+=3, f=I(), p+=3, g=I(), --p,
b[*(short*)(p-5)] =
*p - 43 ?
*p - 45 ?
*p - 42 ?
*p - 47 ?
*p - 60 ?
*p - 62 ?
*p - 21 ?
*p - 61 ?
( *p - 37 ? f: f % g )
:
f == g
:
f != g
:
f > g
:
f < g
:
f / g
:
f * g
:
f - g
:
f + g ) ),
p = l[++i];
}
puts("OK");
}
while (i - 102);
}
0507デフォルトの名無しさん
NGNG>u(char*s,char*r){for(;*r&&*s!=*r;++r);return!*r;}
++sが抜けてるよ
0508504
NGNG(新バージョンのバグの一因だった)
さらに関数uは巧く引数をグローバル変数化したほうが全体として短くなります。
0509504
NGNG0510504
NGNG#include<stdio.h>
#include<stdlib.h>
int b[65536],f,g,i,n;char *m[]={"GOTO ","PUT ","ET ","IF ","RUN","QUIT"},l[103]
[80],c[80],*p,*q,*r,x;S(){for(;*p==32;++p);}T(){return!U()&&(S()|1);}U(){for(r=
m[n++];*r&&*r==*p;++r)++p;return*r;}I(){g=atoi(p);return*p-48?g?g:b[*(short*)p]
:g;}main(){do{gets(p=l[i=100]);while(i<101){n=0;S();if(*(q=p)==48||atoi(q))for(
p=l[atoi(q)],q+=3;*p++=*q++;)i=101;else p=!*q?l[++i]:T()?l[i=I()]:T()?printf("\
%d\n",I()),l[++i]:T()?printf("?"),gets(c),b[*(short*)p]=atoi(c),*c=0,l[++i]:T()
?(I()?p+3:l[++i]):T()?l[i=l[100][0]=0]:T()?l[i=102]:(61-q[2]?puts("ERR"):(p=q+3
,f=I(),x=p[2]-43,p+=3,g=I(),b[*(short*)q]=x?x-2?x+1?x-4?x-17?x-19?x+22?x-18?x+6
?f:f%g:f==g:f!=g:f>g:f<g:f/g:f*g:f-g:f+g),l[++i]);}puts("OK");}while(i-102);}
0511504
NGNG良く見ると2文字縮まった。後ろ9行のみ。
これもGOTETPUIFがIFの代わりになったりします。
int b[65536],f,g,i,n;char*m[]={"GOTO ","ET ","PUT ","IF ","RUN","QUIT"},l[103][
80],c[80],*p,*q,*r,x;S(){for(;*p==32;++p);}T(){return!U()&&(S()|1);}U(){for(r=m
[n++];*r&&*r==*p;++r)++p;return*r;}I(){g=atoi(p);return*p-48?g?g:b[*(short*)p]:
g;}main(){do{gets(p=l[i=100]);while(i<101){n=0;S();if(*(q=p)==48||atoi(q))for(p
=l[atoi(q)],q+=3;*p++=*q++;)i=101;else p=!*q?l[++i]:T()?l[i=I()]:T()?printf("?"
),gets(c),b[*(short*)p]=atoi(c),*c=0,l[++i]:T()?printf("%d\n",I()),l[++i]:T()?(
I()?p+3:l[++i]):T()?l[i=l[100][0]=0]:T()?l[i=102]:(61-q[2]?puts("ERR"):(p=q+3,f
=I(),x=p[2]-43,p+=3,g=I(),b[*(short*)q]=x?x-2?x+1?x-4?x-17?x-19?x+22?x-18?x+6?f
:f%g:f==g:f!=g:f>g:f<g:f/g:f*g:f-g:f+g),l[++i]);}puts("OK");}while(i-102);}
0512チャット
NGNG#include <conio.h>
#include <winsock.h>
#include <string.h>
main(int a,char**v){WSADATA w;int s[10],i,j,e=0,os,p=0,r;char b[1000],t[100];
u_long g=0;sockaddr_in o;a--;memset(&s,0,sizeof(s));os=sizeof(o);memset(&o,0,
os);e|=WSAStartup(0x202,&w);e|=s[0]=socket(2,1,0);o.sin_family = 2;o.sin_addr.
s_addr = a?inet_addr(v[1]):0;o.sin_port = htons(9314);if(a)e|=connect(s[0],
(sockaddr*)&o,os);else{e|=bind(s[0],(sockaddr*)&o,os);e|=listen(s[0],9);}for(;e
+1;){fd_set f;timeval v= {0, 0};FD_ZERO(&f);for(i=0;i<10;i++){if(s[i])FD_SET(s[
i], &f);}select(0,&f,0,0,&v);for(i=0;i<10;i++){if(s[i]&&FD_ISSET(s[i],&f)){if(a
||i){ioctlsocket(s[i],FIONREAD,&g);r=1000-p;recv(s[i],b+p,r,0);p+=(g>r)?r:g;for
(;*b<=p;memmove(b,b+*b,p-*b),p-=*b){puts(b+1);if(!a){for(j=1;j<10;j++)if(s[j])
send(s[j],b,*b,0);}}}else{for(j=1;j<10;j++)if(!s[j]){s[j]=accept(s[0],0,0);
break;}}}}if(a)if(kbhit()){fgets(t+1,99,stdin);t[*t=strlen(t+1)]='\0';(*t)++;
send(s[0],t,*t,0);}}}
途中でめげたため匿名&終了処理してないチャットです。
0513age
NGNG0514縮め君
NGNGint b[65536],f,g,i,n;char*m[]={"GOTO ","ET ","PUT ","IF ","RUN","QUIT"},l[103][
80],c[80],*p,*q,*r,x;S(){for(;*p==32;++p);}T(){return!U()&&(S()|1);}U(){for(r=m
[n++];*r&&*r==*p;++r)++p;return*r;}I(){g=atoi(p);return*p-48?g?g:b[*(short*)p]:
g;}main(){do{gets(p=l[i=100]);while(i<101){n=0;S();if((f=atoi(q=p))||*q==48)for
(p=l[f],q+=3;*p++=*q++;i=101);else++i,p=!*q?l[i-1]:T()?l[i=I()]:T()?printf("?")
,gets(c),b[*(short*)p]=atoi(c),l[i]:T()?printf("%d\n",I()),l[i]:T()?(I()?p+3:l[
i]):T()?l[i=*l[100]=0]:T()?l[i=102]:(61-q[2]?puts("ERR"):(p=q+3,f=I(),x=p[2]-42
,p+=3,g=I(),b[*(short*)q]=x-1?x-3?x?x-5?x-18?x-20?x+9?x-19?x+5?f:f%g:f==g:f-g:f
>g:f<g:f/g:f*g:f-g:f+g),l[i]);}puts("OK");}while(i-102);}
小手先の技で18文字縮小…できたかも。自信ない。
0515デフォルトの名無しさん
NGNG0516504
NGNG18字縮小とはやられました。
5行目は!*q?l[i-1] じゃなくて!*q?l[i] ですね。
下から2行目の 9は 23じゃないでしょうか?よって引き算の値を
43から42に変えても文字数は減らないと思います。
この2つの修正を加えると19字縮小になりますね。
0517504
NGNG0518504
NGNG駄目です。
atoiを無駄に呼ばない圧縮はOKですが、
!*q?で始まる巨大条件節がp+3を返して次のループに入る場合、変数iの
値が元と異なってしまいます。処理で言うなら、(BASICの)IFの条件が
成立した場合の動作がおかしくなります。
514さんの中で使用可能なのは
*c=0, の省略(5)
atoi() を不要にする(4)
他には
最後の x?で始まる条件節は順序を入れ替えて+=を使用(1)
I()?で始まる条件節の()が不要(2)
で実際は12字縮小ですね。
0519504
NGNG消える直前のものは●▲で表示される。対戦型、勝利判定付。
入力は11から33で行う。不正な入力で終了。
int b[9],i,j,k=4,l;P(){return j=b[i],printf(" \0●\0○\0▲\0△"+(j-j/3-j/5*2)*
3),++i<9?printf(i%3?"┃":"\n━╋━╋━\n"),P():puts("");}T(){return(b[i]-=(j=b[
i],k*3&j?k:0)),++i<9?T():0;}W(){l=k*3;return l&b[0]?l&b[1]?l&b[2]:l&b[3]?l&b[6]
:l&b[4]?l&b[8]:0:l&b[4]?l&b[1]?l&b[7]:l&b[2]?l&b[6]:l&b[3]?l&b[5]:0:l&b[8]?l&b[
5]?l&b[2]:l&b[7]?l&b[6]:0:0;}main(){for(;!W();){k^=5;do{printf("? ");l=atoi(ge\
ts());l-=4+l/10*7;if(l>8||l<0)return 0;}while(b[l]);i=0;T();b[l]=k*3;i=0;P();}
return puts("\n○ Won!\0\n△ Won!"+k*3-3)&0;}
0520504
NGNG・あまり短くないので短くする。
・思考ルーチンを入れて1人対戦にする。
0521デフォルトの名無しさん
NGNG0523514
NGNG> 5行目は!*q?l[i-1] じゃなくて!*q?l[i] ですね。
おわ、ほんとだ。
> p+3を返して次のループに入る場合
ひぇぇぇぇ。
# でもこっちは p+3 を --i,p+3 に変えちゃえば…うーむ、苦しいか。
> 下から2行目の 9は 23じゃないでしょうか?
ここで意図してる処理って if( x=='!' ) return (f!=g); ですよね?
42 - 0x21 == 9 じゃないですか?
0524504
NGNGx == '!' すなわち x - 42 == '!' - 42 すなわち (x-42) + 9 == 0
あなたが正しいですね。私の504, 510のコードが間違ってます。
504は21→33、510は22→10ですね。
#文字のASCII覚えてないので、man ascii して表みるんだけどOctal
#とかHexadecimalを見ていたみたい。←言い訳
>>300さん
ルールが異なります。私のは勝負がつくまで延々打ち続けますよ。
(必ず9手以内に終わる、というやつではないです。)常に場面には
3個以内の○と△しかありません。従って履歴というか、打った順序
を覚える必要があり、あなたの方式で効率的に勝利判定を行おうと
するとそのままでは36bits必要になります。ただし各点の状態は7通り
なので、巧くすれば27bitsで済むように出来るかも知れません。
その辺り工夫が必要です。変数2つ使ってもいいかも。
0526504
NGNG#include <stdio.h>
long a,b,c,i,k=2,w=73,x=4161,y=262657;W(long p){return!!(p-(c&p));}P(){return c
=(a>>i&3)<<2-k,c+=(b>>i&3)<<k,printf(" \0●\0○\0▲\0△"+(c-c/3-c/5*2)*3),(i+=
3)<27?printf(i%9?"┃":"\n━╋━╋━\n"),P():puts("");}main(){for(P();c=b|b/2,W(
w)&W(w<<9)&W(w<<18)&W(x)&W(x*8)&W(x*64)&W(y)&W(x*4033);c=a,a=b,b=c){c=w*y;a-=(a
|a/2)&c;do printf("? "),scanf("%ld",&c),c-=4+c/10*7,c=c>8|c<0?0:3<<c*3;while(!c
||c&a||c&b);a+=c;i=0;P();k^=2;}return puts("\n○Won!\0\n△Won!"+k*4)&0;}
0527デフォルトの名無しさん
NGNG0528java httpd
NGNG>>489
をいじってみた。Request-LineだけでResponseを送っちゃうのとRequest Methodを
見ていないのはhttpdとしてまずいので修正。まだつめられるかも...
import java.io.*;import java.net.*;public class W extends Thread{Socket s;int i
;DataOutputStream o;BufferedInputStream a,b;public static void main(String a[])
throws Exception{ServerSocket v=new ServerSocket(Integer.parseInt(a[0]));for(;;
){try{new W(v.accept()).start();}catch(IOException e){break;}}v.close();}String
n(String r) throws IOException{if(r.equals("")){while(((i=b.read())>0&&i!=32&&i
!=10)){r+=(char)i;}}else o.writeBytes("HTTP/1.0 "+r+"\r\n\r\n");return r;}
public void run(){try{b=new BufferedInputStream(s.getInputStream());String m=n(
""),f="."+n("");if(f.endsWith("/"))f+="index.html";o=new DataOutputStream(new
BufferedOutputStream(s.getOutputStream()));while(!n("").startsWith("\r")){}if(!
m.equals("GET"))n("501 Not Implemented");else{try{a=new BufferedInputStream(new
FileInputStream(f));n("200 OK\r\nContent-type: text/html");while((i=a.read())!=
-1){o.write(i);}a.close();}catch(FileNotFoundException y){n("404 Not found");}}
o.close();b.close();s.close();}catch(IOException e){}}W(Socket q){s=q;}}
0529デフォルトの名無しさん
NGNGまた、ANSI-Cに沿いましょう。
「書かなくてもコンパイラが勝手にincludeしてくれる(by gcc/bcc/tcc)」
などというマイナールールは避けませんか?
Javaだとこういう問題が無いのがいいっすね。
0530デフォルトの名無しさん
NGNG乱数種にtime()を使うのでtime.hのincludeが必要で、実質mainは4行制約です。
乱数種系関数がが処理系依存かも…。randomize()はlccに怒られました。
srand((unsigned)time(NULL));
srand(time(NULL));
randomize();
↑もう少し削れそうです。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){int t,r,i;srand(time(NULL));r=1+rand()%100;for(t=1;t<=5;++t){printf(
"%d回>入力しれ(1-100):",t);scanf("%d",&i);if(r==i){puts("(・∀・)イイ!");return 0
;}if(abs(r-i)<10)printf("(゚Д゚)ハァ?");else printf("Σ(,,゚д゚)ガーン!");if(r>i)puts
(" age");else puts(" sage");}printf("■■■ 糸冬 ■■■ ○%d\n",r);return 0;}
0532ななし
NGNGイイ(・∀・)!ただその一言。
0533デフォルトの名無しさん
NGNG作者はANSI-Cを知らないようだし、それはいいんだけれど、
問題の作品自体も他の作品に比べて密度が低いですね。
530さんの参戦はうれしいことだけれど、
>>531-532さん、これをほめちゃ、他の作品(未完だけれど>>528みたいな)が可哀想だよ
0534デフォルトの名無しさん
NGNGまあまあ、マターリしようよ♪
「密度が低い」というのは、みんな(530を含めて)わかってるって。
単純ながら、80桁×7行の範囲内で、モララさんを起用するようなセンスは(・∀・)イイ!と思うよ。
「■■■ 糸冬 ■■■」←バラエティ番組のお約束風で結果が見え見えなトコとか。
これを528と比較しては、折角参戦してくれた530が可哀想だよ。
0535トリッキーの1
NGNG今のところ9行止まりです。8行までなら小手先のテクニックで
何とかいけそうなんですが、さらに1行削るのはデータ構造の
根本的な見直しが必要になりそうっす。
途中だけれど、一応発表します。最初「X Y 爆弾」と入力し、
その後は「X軸 Y軸」と入力します。
#include <stdio.h>
#include <time.h>
int r=time(0),x,y,t,n,q,l;char*p,*m;o(int v,int f){int i,s=(v<0||v>q-1)?0:(!f)
?m[v]:(o(v,0))?p[v]='*',-1:2;if(s>1)for(i=0;i<9;i++)s+=o(v+(i%3-1)*x+i/3-1,f-1
);return (f==1&&p[v]=='/')?n--,p[v]='0'+s-2,(s==2)?o(v,2):s:s;}main(){scanf(
"%d%d%d",&x,&y,&t);l=x*y;p=m=new char[++x*y*2+x+1];q=x*y;n=q-y-t;for(;p-m-q;++
p)*p=0,*(p+q)=((p-m)%x+1-x)?r=r*9+5,((r>>26&63)<64*t/l--)?t--,*p=1,'*':'/':
'\n';for(*(p+q)=0;printf(p),n;)scanf("%d%d",&t,&r),n=(o(t-1+r*x-x,1)<0)?0:n;delete[]m;return 0;}
こちらも9行です。アルゴリズムを変えて再帰を使わずにやっています。
これも頑張れば8行までなら可能でしょうが、7行は辛いかな。
#include <stdio.h>
#include <time.h>
#define c(a) for(r=1,q=0;q<9;q++)y=a[t+(q%3-1)*x+q/3-1],r=(a-p)?r+y:r*(y-'0');
int r=time(0),f,x,y,t,n,q;char*p,*m;main(){scanf("%d%d%d",&x,&y,&t);n=x*y-t;f=
x*y;p=m=new char[++x*(y+2)*3];for(q=x*(y+2)+1;p-m-q;p++)*p=0,*(p+q)=f?((p-m)>x
&&f)?((p-m)%x)?r=r*9+5,((r>>26&63)<64*t/f--)?t--,*p=1,47:47:10:0:0;for(t=x+1;n
&&p[t]-'*';(t==p-m)?puts(p+x+1),scanf("%d%d",&t,&r),m[t+=r*x]?p[t]='*':p[t]|=
16:t++){c(p)if(!r&&p[t]==47||p[t]==63){c(m)n--,p[t]=47+r;t=x;}}puts(p+x+1);
delete[]m;return 0;}
今はtime.hを使ってかなりへちょいランダムジェネレータを自作していますが、
どんなにへちょくてもstdio.hのみで乱数を作れれば7行はすぐですね(まず無理だろうけど)
また暇が出来たら続きをやることにします。
0537デフォルトの名無しさん
NGNGtypedef int I;typedef char* C;extern"C"{printf(C,...);long time(long*);scanf(C,
...);}I r=time(0),x,y,t,n,q,l;C p,m;o(I v,I f){I i,s=(v<0||v>q-1)?0:(!f)?m[v]:(
o(v,0))?p[v]='*',-1:2;if(s>1)for(i=0;i<9;i++)s+=o(v+(i%3-1)*x+i/3-1,f-1);return
(f==1&&p[v]=='/')?n--,p[v]='0'+s-2,(s==2)?o(v,2):s:s;}main(){scanf("%d%d%d",&x,
&y,&t);l=x*y;p=m=new char[++x*y*2+x+1];q=x*y;n=q-y-t;for(;p-m-q;++p)*p=0,*(p+q)
=((p-m)%x+1-x)?r=r*9+5,((r>>26&63)<64*t/l--)?t--,*p=1,'*':'/':'\n';for(*(p+q)=0
;printf(p),n;)scanf("%d%d",&t,&r),n=(o(t-1+r*x-x,1)<0)?0:n;delete[]m;return 0;}
0538デフォルトの名無しさん
NGNG0539トリッキーの1
NGNGさすが60さん(お久しぶりです♪)
素晴らしい!全く思いつかなかった!
誰か、これが反則か否か教えて下さい……
0540トリッキーの1
NGNG正しくはこちら。
typedef int I;typedef char* C;extern"C"{printf(C,...);long time(long*);scanf(C,
...);}I r=time(0),x,y,t,n,q,l;C p,m;o(I v,I f){I i,s=(v<0||v>q-1)?0:(!f)?m[v]:(
o(v,0))?p[v]='*',-1:2;if(s>1)for(i=0;i<9;i++)s+=o(v+(i%3-1)*x+i/3-1,f-1);return
(f==1&&p[v]=='/')?n--,p[v]='0'+s-2,(s==2)?o(v,2):s:s;}main(){scanf("%d%d%d",&x,
&y,&t);l=x*y;p=m=new char[++x*y*2+x+1];q=x*y;n=q-y-t;for(;p-m-q;++p)*p=0,*(p+q)
=((p-m)%x+1-x)?r=r*9+5,((r>>26&63)<64*t/l--)?t--,*p=1,'/':'/':'\n';for(*(p+q)=0
;printf(p),n;)scanf("%d%d",&t,&r),n=(o(t-1+r*x-x,1)<0)?0:n;delete[]m;return 0;}
後で気が向いたら、もう少し削ってみます。もしかしたら後1行くらいいけるかも。
0541504
NGNG私の>>519のような#include<stdio.h>を書くとコンパイル出来ないもの
(書かなければgccを始めUNIX上の多くのコンパイラでコンパイル出来る)
ものは駄目ですか?
或いは#includeがなくとも多くのコンパイラ(メジャーなものの内の一つ)
でコンパイル出来る場合は#includeを書かない状態で7行を認めませんか?
#元のDeCSSの7行だって #!/usr/bin/perl は行数にいれていないよ。
#includeを入れて7行のほうがより美しい、というのは分かるが、それを
強制するのは創作の幅を少なくさせるという意味でよくない、と思う。
(K&R的に引数省略して書く(不正使用)とかは動作する範囲ではやりたい
し....最近のIOCCCでは禁止になったけど。)
それに、60さんの>>537のようなイカす作品が生まれない訳で、
(7*79が条件なので反則ではありますが....私も79(80ではない)に何度も
泣かされています)私としてはルールは緩く、作品はスマートに、と
思う訳です。
0542デフォルトの名無しさん
NGNG創作の幅がうんぬんっていうのはなんだかおかしいんじゃないか。
厳しいルールのなかでスマートでイカす作品を生み出すのが本来の目的じゃないの?
0543デフォルトの名無しさん
NGNG自分で書くのは、どうなんだろうねぇ。
0544デフォルトの名無しさん
NGNG>>537は7*79だ
0545504
NGNGなんだかとは?
>>厳しいルールのなかでスマートでイカす作品を生み出すのが本来の目的じゃないの?
違うと思うな。作品の芸術性が失われる。本来の目的言い出したら1番さん
どうなの?#!/usr/bin/perl含めて8行の作品を7行と言っている訳だしね。
あの長方形に文字が詰め込まれた形を良しとするならば#includeは忌み嫌う
べきでさえあるし。この辺りは感性の問題と思うからより多くの人がここを
楽しむためにはルールは緩くしておいて、各人が自分の気に入ったものを
評価すれば良いと思う。(それが私が作品の幅云々と言った意味)コンテスト
の場合はルールを厳しくするべきであり、それをフォーマルとするならば、
ここはカジュアルであると私は捕らえている。
>>544さん 数えていませんでした。>>536を鵜呑みにしていました。
79なら◎ですよ。
0546300
NGNG僕的には、には「#includeを含めなくてもいいんじゃない?」っていう態度よりは
「#includeを含めた上で7行におさめようとする努力とその結果」に尊敬の念を感じます。
0547トリッキーの1
NGNG必要なのに無ければCでは無いと思います。
私は自分の書くCソースは、可能な限り幅広い環境で
正しく実行できるようにしようと思っているので、
(マインスイーパーはASCII文字依存になってしまいましたが)
#include無しでもいい、などという事を考えもしませんでした。
これは一人でも多くの人に自分を評価されたい、という自己満足のためです。
しかしそれでも、いかに#includeを少なくして機能を実装するか
(例えば、randomを使うときstdlib.hを使わず自前で作る、など)
等々、創作の幅が狭まるなどという事はありえません。発想力次第です。
特に60さん(>>537)が、#includeを使わないという素晴らしい方法を
編み出されたように、創作の幅はかえって広まっていると思います。
とはいえ、コレは私個人の意見です。発表は自由ですので、是非
練りに練ったソースを公開してもらえればと思います。
誰かが、それを#includeつきで7行にしてくれるかもしれません。
しかし、コンパイラ依存の場合は、万人が納得する物は提示出来ない
のではないか、と考えています。
#ちなみに#!/usr/bin/perlはPerlのプログラム構文ではないです、念のため
054860
NGNG#includeが有る無しじゃなくて、プログラムとして完結しているか、
が重要だと思うだけど。#includeを取り除くのを目的としたのではなくて、
1行でも短くするtipsとしてあのコードを出したわけです。
正規のC++の手順を踏んで、ああいう書き方もあるよ、と。
Cではプロトタイプ宣言が無くても、リンクのときにつじつまを合わせてくれるから、
わざわざ書かなくてもいい気がします。
#inclulde有る無しが重要ではなくて、プリプロセッサが何をやっているのか。
それを考えれば、決して趣旨から外れているわけではないと思いますけどね。
#includeは特別。私にとってそんな考えは(?)なのです。
私が考えるところは、こんなところです。
なんか、自己弁護みたいになっちゃったけど、
#includeを書く方針になるなら、次からそれに従います。
>>544
あ、そうですね。紛らわしくて申し訳ない
0549504
NGNGこれは非常に違います。このような態度はありえません。#includeなぞは
作品の芸術性の前にはとるに足らない問題だと言っている訳です。
#includeの有無に固執することは、「#!/usr/bin/perlを含めず7行」を認め
ないことにつながり、このスレッドの表題を否定することにつながります。
※誤解のないように言いますが、私自身は自分の作品の#includeに関しては
厳しくとっています。ここに出したのも、一つの作品を除いて#includeが
あるし、残りの一つは#includeを入れるとコンパイルできなくなります。
(しかも、後に#include付のもので置き換えている。)私は#includeを含め
ない、60さんのような作品のもつ自由な発送にある意味真似の出来なさを
感じた訳です。C++言語にしておいてextern"C"でprotoする辺りは、当然
と言えば当然のことですが、私にしてみればコロンブスの卵です。
これに比べれば、「#includeを含めた上で7行におさめようとする努力と
その結果」である、519→526(私の作品ですが)はあまり尊敬の念に値し
ないように思いますが。
0550504
NGNG作品を投稿して頂いて、それを鑑賞したい訳です。そのためにはルールは
緩いほうが良い訳です。私自身は性格的な問題もあって厳しめのルールで
やってしまい、発想力を失ってしまっているので、それを打ち破って欲し
いのです。
0551デフォルトの名無しさん
NGNG投稿する人の勝手でいいじゃん。
どうしてもincludeを入れたくないなら入れなければいいし。
当然俺の評価は下がるけど、「include無しの評価を上げろ」っていわれても
そりゃ絶対無理だよ。屁理屈こねたところで構文エラーなんだし。
つーわけで俺の中でこれ以後504放置決定
0552300
NGNG#includeを無条件に外すことに対して
「#includeを含めなくてもいいんじゃない?」
と主張することに対する意見であって不要だから外す、
っていうのとは別問題です。
>>537は#includeをなくすトリッキーだけど正当な(?)手段なわけで、
これは問題にはしてませんので。
てか、これやろうとしてたけど、知識不足でできんかった(笑)
まぁ、ほぼトリッキーの1さんに賛成ってことで。
0553縮め君
NGNG#include 無しだろうが何だろうが、書き込んでみるのは勝手でしょう。
ネタが面白かったり使われてる技が凄ければ、多少
長かったり何だったりしてもそれはそれで眺めてて楽しいし。
ただ、芸術性云々を持ち出して「処理系依存だけど7行」を
完成品として認めてしまうのは寂しい。
>>537氏のような手を使ってもヨシ、#includeを一つでも減らせないか
考えてみるのもヨシ、他を気合いで短くするのもヨシ。
とにかくまだ改善すべき余地のあるものとして見たいと思う。
>>549
#!/usr/bin/perl は #include とは全然別のレベルっすよ。
それは比較にならない。
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG漏れはjavaできんので無理だが。
0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG別に7行にこだわらんでもよいんじゃない?
1画面プログラムって程度で。
0559デフォルトの名無しさん
NGNG200 OK
404 NOT FOUND
あと、フォルダのリスティングだけでいいのかな。
だったらやってみます。
056060
NGNG#include <winsock2.h>
int s,c,z,l,p;char b[9999],*q;sockaddr_in i={2,20480},j;FILE*f;main(){WSADATA w
;WSAStartup(2,&w);s=socket(2,1,0);bind(s,(sockaddr*)(&i),16);listen(s,~(1<<31))
;for(;;){z=16;p=0;c=accept(s,(sockaddr*)&j,&z);while(l=recv(c,b+p,9998-p,0)){p
+=l;if(strstr(b,"\r\n\r\n"))break;}if(*b^71){q=b+5;while(*q!=32&&*q!=13)*q=(*q^
47)?*q:92,q++;*q=0;if(f=fopen(b+5,"rb")){send(c,"HTTP/1.0 200 OK\r\n\r\n",19,0)
;while(l=fread((void*)b,1,9999,f))send(c,b,l,0);fclose(f);}else send(c,"HTTP/1\
.0 404 Not Found\r\n\r\n",26,0);}else send(c,"HTTP/1.0 400 Bad Request\r\n\r\n"
,30,0);closesocket(c);}}
動作も怪しいし、まだ全然練りこんでません。ベースとして使ってください。
10行なのでsage
0561489
NGNG0562デフォルトの名無しさん
NGNGhttp://www.ioccc.org/
Larry Wall も参加していた、歴史あるプログラミングコンテストだ。
お前らの実力見せてみろ。
0563デフォルトの名無しさん
NGNGIOCCC では
http://www.ioccc.org/1990/dds.c
というかなりよくできたインタープリタが、1991 年には
http://www.ioccc.org/1991/dds.c
という BASIC コンパイラ(!)が入賞していた。
0564デフォルトの名無しさん
NGNGすごすぎ
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG何かいいネタないかな
0567デフォルトの名無しさん
NGNGこういうコードを読む作業って、
自分のプログラミング能力を伸ばすための
良い訓練になるのかな?
0568528
NGNGBuffered*Stream使わないだけでも2行位縮まりそうな気がするです...
使わないでも動くんだけど、それはアリなんですかね?
# あ、Socketは最低限のBufferingはされてるか。
0570デフォルトの名無しさん
NGNG詰将棋を解くと将棋が強くなるか?という疑問に似てるな。
システム設計が上手くなったりはしないが、アルゴリズムの
発案は上手くなると思う。
0571トリッキーの1
NGNGまだよく見ていませんが、直感的に8行までなら何とかなりそうですね。
しかし、毎度ながら感服します(笑)
#もしよければ個人的な連絡を取ってみたいのですが、
#気が向いたら[email protected]にメール貰えませんか?
057260
NGNGってことで、修正版。
#include <stdio.h>
#include <winsock2.h>
int s,c,z=16,l,p;char b[9999],*q;FILE*f;main(){WSADATA w;sockaddr_in i={2,20480
};WSAStartup(2,&w);s=socket(2,1,0);bind(s,(sockaddr*)&i,z);listen(s,~(1<<31));
for(;;){p=0;c=accept(s,(sockaddr*)&i,&z);while(l=recv(c,b+p,9998-p,0)){p+=l;if(
strstr(b,"\r\n\r\n"))break;}if(*b^71)send(c,"HTTP/1.0 400 Bad Request\r\n\r\n",
30,0);else {q=b+5;while(*q!=32&&*q!=13)*q=(*q^47)?*q:92,q++;*q=0;if(f=fopen(b+5
,"rb")){send(c,"HTTP/1.0 200 OK\r\n\r\n",19,0);while(l=fread((void*)b,1,9999,f)
)send(c,b,l,0);fclose(f);}elsesend(c,"HTTP/1.0 404 Not Found\r\n\r\n",26,0);}
closesocket(c);}}
>>571
私の方もお話してみたいので、今夜あたりメール送ってみます
0573デフォルトの名無しさん
NGNG#include<iostream.h>
int a,b=2;void k(){if(a%b==0 && (a/=b))cout<<b<<",";else return;}
void main(){cout<<"数入れろ";cin>>a;k();b--;while(a!=1 &&(b+=2))k();return;}
0574572
NGNG#include<iostream.h>
int a,b=2;void k(){if(a%b==0&&(a/=b))cout<<b<<",";else return;}void main(){cout
<<"素因数分解"<<endl<<"数入れろ";cin>>a;k();b--;while(a!=1&&(b+=2))k();return;}
0575573
NGNG名前間違えました。573です。
ちなみにさっきのバグありました。
バグ修正ついでに約数も求めるようにしやした。
#include<iostream.h>
int a,b=2,c;k(){while(a%b==0&&(a/=b))cout<<b<<"×";}main(){cout<<"数入れろ";cin
>>a;c=a;k();for(b=3;a!=1;b+=2)k();for(a=1;a<=c;a++)if(c%a==0)cout<<a<<",";}
0576デフォルトの名無しさん
NGNGおお。GCDだ。
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNG改行いれなきゃいいだろ
0579デフォルトの名無しさん
NGNG今更・・・(w
自分がどんなにイタイ発言をしているか分かっているの?
過去スレを読んでみな。
0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG#include <stdio.h>
char *p="char *p=%c%s%c;main(){printf(p,34,p,34);}";
void main(void)
{
printf(p, 34, p, 34);
}
0584デフォルトの名無しさん
NGNGincludeが無いよ
0585573
NGNG素数判定です。
それまでの素数を保存しない中ではいいとこいってる・・・・かな?
#include<iostream.h>
int main(){unsigned __int64 b=1,c=1,d=3,z,i=3;a:for(;i<c;i+=2){for(z=3;z<b;z+=2)
if(i%z==0){i+=2;goto a;}cout<<i<<",";}b++;c+=d;d+=2;goto a;return 0;}
0586デフォルトの名無しさん
NGNG遅くてよけりゃ二行。
#include <iostream.h>
int main(){for(int z,i=1;z=++i;){while(i%--z);if(z==1)cout<<i<<",";}return 0;}
0587デフォルトの名無しさん
NGNGPROGRAM-ID. AISATU.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "HELLO".
STOP RUN.
あっ、もう7行だ。
0588トリッキーの1
NGNG0589*nix厨
NGNG1ソース多言語で"Happy 2ch world!"を出力する
・コンパイルのワーニングは無視してかまわない
・"Happy 2ch world!"以外はなるたけ出さない
・実行可能な言語を示す
(DOS窓とMS系OSのコマンドラインなどは1つとして数える)
例:DOS窓+C言語
rem (){printf("Happy 2ch world!\n");return 0;} main(){ /*
echo Happy 2ch world!
rem */
rem ();return 0;}
元ネタ(f77,c,/bin/shの3つ)
http://www.ioccc.org/1986/applin.c
0590トリッキーの1
NGNGネタありがとう♪面白そう。
……しかし、これはスレ違いかな?
トリッキースレの方に転載して貰って、そちらで盛り上がりません?
http://pc.2ch.net/test/read.cgi/tech/983191866/
0591デフォルトの名無しさん
NGNG7行にどれだけ言語を盛り込めるか大会。
…にしてしまえば、そうスレ違いでもないかも?
0592トリッキーの1
NGNGそれでも面白そうですが、7行の美しさはまた別の所にあるような気がして。
8行で言語を詰め込んだのを、7行にしてもあまり驚きは無いでしょう?
(少なくとも、今までのこのスレのプログラムのような)。
とはいえ、別にここでもいいし、いっそのこと別スレにするという手もありますね(笑)
*nix厨さんの意向に従います。
0593トリッキーの1
NGNG>後で気が向いたら、もう少し削ってみます。もしかしたら後1行くらいいけるかも。
さっき気が向いて、さぁ後1行削ってみよう!と思ったけれど、時間が経つと駄目だね。
変数名の意味を全然覚えていなくて、展開してみてもわけわからん……
自分で自分のコードを解析しています(笑)。新しく書いた方が楽かも。
0594デフォルトの名無しさん
NGNG0595*nix厨
NGNG実は仕事中の逃避モードです
確かにプログラムの技術というよりトリッキーモノですね
では移動しましょう
http://pc.2ch.net/test/read.cgi/tech/983191866/642
0596デフォルトの名無しさん
NGNG#include<iostream.h>
int main(){unsigned int i=1,b=1,c=1,z;a:for(;i+=2;){if(c<i)c+=1+(b++<<1);
for(z=3;z<=b;z+=2)if(i%z==0)goto a;cout<<i<<",";}return 0;}
ちょっとだけ短くしてみた。
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGekat n (x:xs) = (map (take n)(take n (iterate tail (cycle x )))) ++ (ekat n xs)
mrep 1 = [[1]]
mrep n = ekat n (map (n:)(mrep (n-1)))
pretty x = sequence_ (map print x)
main = do x <- getNum ;pretty (mrep x)
where getNum :: IO Int
getNum = do{args<-getArgs;readIO (args!!0) }
引数nに対してnPnを出力。
0599デフォルトの名無しさん
NGNG言語がわからん…(^^;
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG多分 Haskell かと
0603デフォルトの名無しさん
NGNGs(int*a,int*b){while(a<b)*a>*b?*a^=*b^=*a^=*b:s(a++,b-1);}
0604なんで?
NGNGDebug/Cpp1.exe : fatal error LNK1120: 外部参照 1 が未解決です。
0605デフォルトの名無しさん
NGNG0606605
NGNG2> #include <stdlib.h>
3> int main()
4> {
5> printf("ageてごめん。\n"); abort();
6> }
7>
0607606
NGNG0608^
NGNGこのスレッドは大耳モナーが嫌々管理中です、なんら問題はありません.
(\_/) タリー
( ´Д) タリー タリー
/ つ (\_/) (\_/)ノ⌒ヽ、
(_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__) ))
EOF
0609dmp.c
NGNGWin98にはdump.exeがナイので昔作ったモノ。技のないダサいプログラムですが。*/
#include <stdio.h>
main(a,v)char**v;{FILE*f;char c,s[80],t[20];long p=0,m=0,n;if(a>1&&(f=fopen
(v[1],"rb"))){if(a>2)sscanf(v[2],"%x",&p);if(p>0)fseek(f,p,SEEK_SET);if(a>3
)sscanf(v[3],"%x",&m);if(n=p%16){sprintf(s,"%08X: %*s",p,n*3,"");sprintf(t,
"%20s","");}for(;(!m||p<m)&&fread(&c,1,1,f);p++){if(!(n=p%16))sprintf(s,"%"
"08X: ",p);sprintf(s+9+n*3," %02X",c&255);t[n]=(((unsigned)c<32||c==127)?
'.':c);t[n+1]=0;if(n==15)printf("%s : %""s\n",s,t);}if(p%16)printf("%-58s:"
" %s\n",s,t);}else puts("USAGE:dmp filename [start [end]]");}
0610デフォルトの名無しさん
NGNG(・∀・)イイ!!
0611デフォルトの名無しさん
NGNG0612dmp.c 改
NGNGオーバーフロー発見。鬱死。t[20]->t[24]。
その他小細工。
#include <stdio.h>
p,m,n;main(a,v)char**v;{FILE*f;char c,s[80],t[24];if(a>1&&(f=fopen(v[1],"rb"))){
if(a>2)sscanf(v[2],"%x",&p);fseek(f,p,SEEK_SET);if(a>3)sscanf(v[3],"%x",&m);if(n
=p%16)sprintf(s,"%08X: %*s",p,n*3,""),sprintf(t,"%20s","");for(;(!m||p<m)&&fread
(&c,1,1,f);p++){if(!(n=p%16))sprintf(s,"%08X: ",p);sprintf(s+9+n*3," %02X",c&255
);t[n]=((c&255)<32||c==127)?46:c;t[n+1]=0;if(n==15)printf("%s : %s\n",s,t);}if(p
%16)printf("%-58s: %s\n",s,t);}else puts("USAGE:dmp filename [start [end]]");}
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNGusing namespace std;
int main(void)
{
cout<<"ほんとに7行でプロテクトはずせるの?"<<endl;
return(0);
}
0615デフォルトの名無しさん
NGNG相互リンク
0616デフォルトの名無しさん
NGNG0617トリッキーの1
NGNG0618デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int f,b;main(v,c)char*c[];{FILE*i,*o;char*p,*q,s[256];sprintf(s,"%s~",c[1]);if(
i=fopen(c[1],"rb")){if(o=fopen(s,"wb")){while(fgets(s,255,i)){p=strstr(s,"//");
if(p&&*(p-1)!='"')*p=0;else{if(!f){p=strstr(s,"/*");if(p){f=1;b=1;q=strstr(p,
"*/");if(q){q=p+2;f=0;}else*p = b = 0;}}else{q=strstr(s,"*/");if(q){strcpy(s,q+
2);f=0;}}}if(!b){fputs(s,o);}b=f;}fclose(o);}fclose(i);}}
0619デフォルトの名無しさん
NGNG#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
char ch[50],title[]="NOTICE v1.00";
unsigned int gs,gm,gh;
for(;;)
{
gs=GetTickCount()/1000;
gm=gs;
gm/=60;gs%=60;
gh=gm;
gh/=60;gm%=60;
wsprintf(ch,"起動してから %d 時間 %d 分 %d 秒",gh,gm,gs);
if(MessageBox(NULL,ch,title,MB_RETRYCANCEL)==IDCANCEL)
break;
Sleep(1000);
}
return 0;
}
0620>>619
NGNGchar ch[50],title[]="NOTICE v1.00";
for(;;) {
unsigned int gs=GetTickCount()/1000;
wsprintf(ch,"起動してから %d 時間 %d 分 %d 秒",gs/3600,(gs/60)%60,gs%60);
if(MessageBox(NULL,ch,title,MB_RETRYCANCEL)==IDCANCEL) return 0;
Sleep(1000);
}
0621デフォルトの名無しさん
NGNG汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院では
生徒及びその保護者の個人情報を名簿図書館等に売却しています。
中央高等学院 http://chs-f.com/index.html 中央高等学院福岡校
http://www.chuo-school.ac/
0622デフォルトの名無しさん
NGNG8行なので×
0623デフォルトの名無しさん
NGNGこんなのはどうでしょう。
終了しないけど、それほど邪魔にもならない……かな?(--;;;)
#include <windows.h>
int WINAPI WinMain(i,p,l,n){HWND h;DWORD d;char c[99];RECT r;HDC q;while(1){h=
GetDesktopWindow();d=GetTickCount()/1000;wsprintf(c,"起動してから %d 時間 %d \
分 %d 秒",d/3600,d/60%60,d%60);GetWindowRect(h,&r);q=GetWindowDC(h);
SetTextColor(q,0xFF0000);DrawText(q,c,-1,&r,DT_RIGHT|DT_TOP|DT_SINGLELINE
);InvalidateRect(h,&r,1);Sleep(1000);}return 0;}
0624623
NGNG#include <windows.h>
int WINAPI WinMain(i,p,l,n){HWND h;DWORD d;char c[99];RECT r;HDC q;
h=GetDesktopWindow();GetWindowRect(h,&r);q=GetWindowDC(h);SetTextColor(q,
0xFF0000);while(1){d=GetTickCount()/1000;wsprintf(c,"起動してから %d 時間 %d \
分 %d 秒",d/3600,d/60%60,d%60);DrawText(q,c,-1,&r,DT_RIGHT|DT_TOP|DT_SINGLELINE
);InvalidateRect(h,&r,1);Sleep(1000);}return 0;}
0625619
NGNGoh!!ここまで化けるとは。非常に感激していますヽ( ´ー`)ノ
調子に乗って、終了を追加してみたり…。
でも1行オーバー(;´Д`)
#include <windows.h>
int WINAPI WinMain(i,p,l,n){HWND h;DWORD d;char c[128];RECT r;HDC q;
h=GetDesktopWindow();GetWindowRect(h,&r);q=GetWindowDC(h);SetTextColor(q,
0xFF0000);int vk=0;while(!vk){d=GetTickCount()/1000;
vk=GetAsyncKeyState(VK_SHIFT)&GetAsyncKeyState(VK_CONTROL);
wsprintf(c,"起動してから %d 時間 %d 分 %d 秒 SHIFT+CTRLで終了",d/3600,d/60%60,d%60);
DrawText(q,c,-1,&r,DT_RIGHT|DT_TOP|DT_SINGLELINE);InvalidateRect(h,&r,1);
Sleep(1000);}return 0;}
>624に準じて改造しましたが、ウチではVC++がだだこねてエラーを吐き出すので、
WinMain付近を619のに差し替えて動かしました。
0626デフォルトの名無しさん
NGNG0627624
NGNGおお、頑張ってますね。
んじゃ、ちょっときわどい手を使いますが、7行にまとめてしまいませう。
#include <windows.h>
int WINAPI WinMain(i,p,l,n){HWND h;DWORD d;char c[99];RECT r;HDC q;int k=0;
h=GetDesktopWindow();GetWindowRect(h,&r);q=GetWindowDC(h);SetTextColor(q,
0xFF0000);while(!k){d=GetTickCount()/1000;k=GetAsyncKeyState(VK_SHIFT)&
GetAsyncKeyState(VK_CONTROL);wsprintf(c,"起動してから %d 時間 %d 分 %d 秒 SHIF\
T+CTRLで終了",d/3600,d/60%60,d%60);DrawText(q,c,-1,&r,34);InvalidateRect(h,&r,
1);Sleep(1000);}return 0;}
同じ手法を使えばもう少し縮みそう。
WinMainは、うちのVC++では警告3つで通してくれました(^^;)
0628624
NGNGcppだとだめなようです。
0629NASM
NGNGcode test
org 100h
start:
mov dx,offset mes1
mov ah,09h
int 21h
mes1 DB 'あせむぶら!',0Dh,0Ah,'$'
code ends
end start
0630619
NGNGint WINAPI WinMain(i,p,l,n){HWND h;DWORD d;char c[99];RECT r;HDC q;int k=0;
h=GetDesktopWindow();GetWindowRect(h,&r);q=GetWindowDC(h);SetTextColor(q,
0xFF0000);while(!k){d=GetTickCount()/1000;k=GetAsyncKeyState(16)&
GetAsyncKeyState(17);wsprintf(c,"起動してから %02d 日 %02d 時間 %02d 分 \
%02d 秒 SHIFT+CTRLで終了",d/86400,d/3600%24,d/60%60,d%60);DrawText(q,c,
-1,&r,34);InvalidateRect(h,&r,1);Sleep(1000);}return 0;}
また、ヤッチャッタ。
欠点は49日までしか測定出来ないところ。
0631624
NGNGお疲れ様です。49日多分対応……したと思うのですが。
実際にやってみないとわからないのが辛い(--;)
ついでに、表示されなくなるバグもこれで直ったかと。
#include <windows.h>
int WINAPI WinMain(i,p,l,n){HWND h;DWORD d,y=0;char c[99];RECT r;HDC q;int k=0,
z=0;h=GetDesktopWindow();while(!k){d=GetTickCount()/1000;d=d+z*0x418937;Sleep(
100);GetWindowRect(h,&r);k=GetAsyncKeyState(16)&GetAsyncKeyState(17);wsprintf(c
,"起動してから %02d 日 %02d 時間 %02d 分 %02d 秒 SHIFT+CTRLで終了",d/86400,d/
3600%24,d/60%60,d%60);q=GetWindowDC(h);SetTextColor(q,0xFF0000);DrawText(q,c,-1
,&r,34);if(k==1)k=0;InvalidateRect(h,&r,1);ReleaseDC(h,q);if(y>d)z++;y=d;}}
0632619
NGNGおお!スゴイです。早速コンパイルして使用しています。
以前のは、IEを動かすとたま〜に消えましたが、今回は消えない!
さすがに、これ以上は進化できないようです。
新ネタを思いついたら、また書くです(>▽<)。
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGint isprime(int n){return n == 2;}
0636デフォルトの名無しさん
NGNGint isprime(int n){
int i = 2;
if (n < 2) return 0; else if (n == 2) return 1;
while((n % i != 0) && (i < n)) i++;
return n == i;
}
0637デフォルトの名無しさん
NGNGn % n == 0 なのは当たり前だから i < n っていらないや。
int isprime(int n){
int i = 2;
if (n < 2) return 0;
else if (n == 2) return 1;
while(n % i != 0) i++;
return n == i;
}
0638デフォルトの名無しさん
NGNGint isprime(int n){
int i=2;if(n<2)return 0;
for(;i<=n/2;i++)if(n/i*i==n)
return 0;return 1;}
0639デフォルトの名無しさん
NGNGint isprime(int n){
int i = 2;
if (n < 2) return 0;
while(n % i != 0) i++;
return n == i;
}
0640デフォルトの名無しさん
NGNGないのでは。
0641デフォルトの名無しさん
NGNGもちろん分ってはいるのですが。
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNG詰まんないかも。
0644デフォルトの名無しさん
NGNGfor(a[0]=0x00;a[0] <= 0xff;a[0]++)for(a[1]=0x00;a[1] <= 0xff;a[1]++)
for(a[2]=0x00;a[2] <= 0xff;b++,a[2]++){
printf("<font color=\"#%02X%02X%02X\" size=1>●</font><tt>#%02X%02X%02X</tt>",a[0],a[1],a[2],a[0],a[1],a[2]);
if(b == 16)printf(b=0,"\n");
}printf("</body></html>");//HTML1677万色表示
0645まもら ◆MtyDeTiY
NGNGprivate static boolean isDividable( int n, int i ) {
return ( i != 1 ) && ( n % i != 0 ) && isDividable( n, i-1 );
}
public static boolean isPrime(int n) {
return isDividable( n, n-1 );
}
0646デフォルトの名無しさん
NGNGなにそれ?
アフォ?
0647デフォルトの名無しさん
NGNG自分にアフォとか言ってるアフォのいるスレはここですか?
0648デフォルトの名無しさん
NGNG再帰とは思いつかなかった。
短くて、素晴らしい。
0649デフォルトの名無しさん
NGNG>private static boolean isDividable( int n, int i ) {
> return ( i != 1 ) && ( n % i != 0 ) && isDividable( n, i-1 );
>}
↑これ不味くないかな?
iが1だと必ずfalseになっちゃう。
後、大きな数を調べようとすると再帰が多すぎてStackOverflowErrorになってしまう。
0650not 645
NGNGreturn ( i == 1 ) || (i > 0) && ( n % i != 0 ) && isDividable( n, i-1 );
return ( i <= 1 ) || ( n % i != 0 ) && isDividable( n, i-1 );
前者は遅い。後者は1以下を渡されてもtrueを返す…。
あと
return isDividable( n, sqrt(n) );
でちょっとだけ大きな数も調べれるように…。
0651645/まもら ◆MtyDeTiY
NGNG>650 さんのが正解だ...
テストしないで書き込んじゃだめでしたね。スマソ。
>646 さんは、漏れに突っ込んだんだよね。たしかにアフォでした。
0652デフォルトの名無しさん
NGNG嗚呼過去の栄光よ…
0653 ◆woDeLPHI
NGNG出たソースを全部消して以下と置き換えてコンパイル&GO
uses forms,math;var x,y:integer;x0,y0:double;begin with TForm.Create(nil) do try
show; while Visible do begin application.ProcessMessages;
x:=random(width); y:=random(Height);
x0:=x0-(x0-width div 2 ) / (1000+random(1000))/1000;
y0:=y0-(y0-height div 2 ) / (1000+random(1000))/1000;
Canvas.Pixels[x,y]:=round(x0*cos(hypot(x-x0,y-y0)/32)*256);
end; finally free;end; end.
uses forms,math;var x,y,c:Word;a:array[byte]of byte;function f(n:byte):byte;
begin Result:=round(cos(hypot((x+a[n*2])mod(c*2)-c,(y+a[n*2+1])mod(c*2)-c)/c)
*255)end; begin c:=80;with TForm.Create(nil) do try show; while Visible do
begin application.ProcessMessages; x:=random(width); y:=random(Height);
case random(10000)of 1: inc(a[random(9)]);2:dec(a[a[8]mod 9]);end;
Canvas.Pixels[x,y]:=f(0)+f(1)shl 8+f(2) shl 16; end; finally free;end; end.
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNGあなたに指図される筋合いはありません。
何の権限があってそのような事を言うのですか?
0660デフォルトの名無しさん
NGNG別のところにも書きまくっているんだね。
http://pc.2ch.net/test/read.cgi/prog/1006353701/320
0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNG地雷を掘り出すと、ゲームに負け
マス目に番号が表示された場合、その数は周囲の 8 個のマス目に隠れている地雷の数を示す
地雷があると判断したマス目に印をつける
0664デフォルトの名無しさん
NGNGマインスイーパーは、>>535-540で出来てるぞ。
当時のレスを読みふけってしまった。
懐かしい面々、今はどうしているのかな?
0665波紋アプレット(10行)
NGNGimport java.awt.*;import java.awt.event.*;import java.awt.image.*;public class
W extends java.applet.Applet{ImageProducer s;int w=64,T=4;int[] p=new int[w*w]
,v=new int[w*w];byte[] q=new byte[w*w],r=new byte[256],b=new byte[256];public
void update(Graphics g){g.drawImage(createImage(s),0,0,w*T,w*T,0,0,w,w,null);}
public boolean mouseDown(Event e,int x,int y){v[x/T+y/T*w]+=128;return true;}{
byte d=(byte)-128;for(int i=0;i<256;i++){r[(d++)&255]=(byte)i;b[i]=(byte)255;}
s=new MemoryImageSource(w,w,new IndexColorModel(8,256,r,r,b),q,0,w);new Thread
(){public void run(){for(;;){for(int i=w+1;i<w*w-w;i++){v[i]+=(p[i-w]+p[i-1]+p
[i+1]+p[i+w])/4-p[i];p[i-w]+=v[i-w];q[i]=(byte)(p[i-w-1]-p[i]);}repaint();try{
sleep(50);}catch(Exception e){return;}}}}.start();}}
--------w.html
<HTML><BODY>
<APPLET CODEBASE="." CODE="W.class" WIDTH="255" HEIGHT="255"></APPLET>
</BODY></HTML>
--------README
なんか汚い
パレット生成部分に無駄があるっぽい
挙動がやばい
ツッコミは勘弁
0666どビギナー
NGNG見てみたす。
思わず目を細めてしまったのは、男の悲しいサガでしょうか?
Javaほとんどサパーリなので、コードに手入れできないや。
役に立てずスマソです。勉強しよっと。
0667デフォルトの名無しさん
NGNGということで、FORTHは作れませんかね?
組み込む機能は小さくても自己拡張できるし。
0668デフォルトの名無しさん
NGNG辞書を別にすればできない気もしないな。
0669MASM 6
NGNG.CODE
ORG 100H
MAIN PROC
.exit
MAIN ENDP
END MAIN
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG面白い面白い。
demoぺえ
0672671
NGNG簡単な7行demo作れそうな予感・・・
0673デフォルトの名無しさん
NGNG#include <stdio.h>
typedef unsigned long D;typedef unsigned char B;D f[256],tt;struct{D l,r;}t[256];
u(){D i,s=0;for(i=0;i<256;i++){t[i].r=f[i];t[i].l=s;s+=f[i];}tt=s;}wr(B *b,B *w,
D s,FILE *fp){D i,j,k,l,r,p,m;B c;for(i=0;i<256;i++)f[i]=0;for(i=0;i<s;i++)f[b[i
]]++;u();l=j=0;r=1UL<<31;for(i=0;i<s;){c=b[i++];m=r/tt;p=l;l+=m*t[c].l;r=m*t[c].
r;if(p>l){k=j-1;while(w[k]==0xFF)w[k--]++;w[k]++;}while(r<(1UL<<24)){w[j++]=(l>>
24)&0xFF;l<<=8;r<<=8;}}while(l){w[j++]=(l>>24)&0xFF;l<<=8;}j++;fwrite(f,4,256,fp
);fwrite(&s,4,1,fp);fwrite(&j,4,1,fp);fwrite(w,1,j,fp);}D lc(D l){D i;for(i=0;i<
255;i++)if(t[i].l<=l&&t[i+1].l>l)return i;return 0xFF;}D rd(B *b,B *w,D s,FILE*
fp){D o,i,j,k,d,l,r,m;for(i=0;i<s;i++)w[i]=0;fread(f,4,256,fp);fread(&o,4,1,fp);
fread(&j,4,1,fp);fread(w,1,j,fp);s=o;u();r=1<<7;l=w[0];k=(i=1)-1;while(s){while(
r<1<<24){l=(l<<8)|w[i++];r<<=8;}r/=tt;m=l/r;d=lc(m);b[k++]=d;l-=r*t[d].l;r*=t[d]
.r;s--;}return o;}main(int a,char *argv[]){FILE *i,*o;D n;B b[8192],w[8250];i=
fopen(argv[2],"rb");o=fopen(argv[3],"wb");while(!feof(i)){if(argv[1][0]=='e'){n=
fread(b,1,8192,i);wr(b,w,n,o);}else{n=rd(b,w,8192,i);fwrite(b,1,n,o);if(n!=8192)
break;}}fclose(o);fclose(i);}
0674デフォルトの名無しさん
NGNG0675パーティクル&ブラー(13行)
NGNGimport java.awt.*;import java.awt.image.*;class E{public static void main(
String[]a){new Frame(){int T=4,W=128,n=96,F=255,i;P[]p=new P[n];Image m;byte[]
t=new byte[W*W],c=new byte[768];class P{double x,y,u=Math.random()*2-1,v=-Math
.random()*1.5-.5;int s(){x+=u;y+=(v+=.01);return(int)x+(int)y*W;}}{for(i=0;i<n
;i++)p[i]=new P();for(i=0;i<F;i+=3){c[i]=c[i+256]=c[i+512]=(byte)i;c[i+F]=c[i+
510]=c[i+511]=(byte)F;}show();MemoryImageSource s=new MemoryImageSource(W,W,
new IndexColorModel(8,256,c,0,false),t,0,W);s.setAnimated(true);m=createImage(
s);resize(512,512);repaint();try{for(;;Thread.sleep(15)){for(i=0;i<n;i++){int
v=p[i].s();if(v>0&&v<W*W)t[v]+=128;}for(i=1;i<W*(W-1);i++)t[i]=(byte)(((t[i-1]&
F)+(t[i+1]&F)+(t[i+W]&F))*F/768);s.newPixels();}}catch(Exception e){}}public
boolean mouseDown(Event e,int u,int v){for(int j=0;j<n;j++){p[j]=new P();p[j].
x=u/T;p[j].y=v/T;}return true;}public void update(Graphics g){g.drawImage(m,0,
0,W*T,W*T,0,0,W,W,this);}};}}
--------README
実行は
> javac E.java
> java E
で、ウィンドウ上でクリックすれ
7行には遠く及ばなかった・・・
J2SE1.4で動作確認
MS Javaではかなり厳しい動作だたよ すまそ
0676675
NGNG次はL-Systemでもやってみようかな
import java.awt.*;import java.awt.image.*;class E{public static void main(
String[]a){new Frame(){class P{double x,y,u=Math.random()*2-1,v=-Math.random()
*1.5-.5;int s(){return(int)(x+=u)+(int)(y+=(v+=.01))*W;}}int T=4,W=128,F=255,i
;P[]p=new P[0];Image m;byte[]t=new byte[W*W];public void update(Graphics g){g.
drawImage(m,0,0,W*T,W*T,this);}public boolean mouseDown(Event e,int X,int Y){p
=new P[96];for(int j=0;j<96;j++){(p[j]=new P()).x=X/T;p[j].y=Y/T;}return 0<1;}
{for(i=0;i<F;i+=3){t[i]=t[i+256]=t[i+512]=(byte)i;t[i+F]=t[i+510]=t[i+511]=(
byte)F;}MemoryImageSource s=new MemoryImageSource(W,W,new IndexColorModel(8,F+
1,t,0,0<0),t,0,W);s.setAnimated(true);m=createImage(s);resize(W*T,W*T);show();
try{for(repaint();;Thread.sleep(15)){for(i=0;i<p.length;i++){int z=p[i].s();if
(z>0&&z<W*W)t[z]+=128;}for(i=1;i<W*(W-1);i++)t[i]=(byte)(((t[i-1]&F)+(t[i+1]&F
)+(t[i+W]&F))*F/768);s.newPixels();}}catch(Exception e){}}};}}
0677デフォルトの名無しさん
NGNG0678波紋/改(11行)
NGNGimport java.awt.*;import java.awt.image.*;class W{public static void main(
String[]a){new Frame(){int T=6,W=64,F=255,i,j;float r=1.414f;byte[]q=new byte[
W*W];float[]p=new float[W*W],v=new float[W*W];Image m;{byte d=(byte)-128;while
(i<F+1){q[j=((d++)&F)*3]=q[j+1]=(byte)i;q[2+3*i++]=(byte)F;}MemoryImageSource
s=new MemoryImageSource(W,W,new IndexColorModel(8,256,q,0,0<0),q,0,W);resize(W
*T,W*T);s.setAnimated(true);m=createImage(s);show();try{for(repaint();;Thread.
sleep(33)){for(i=W+1;i<W*W-W-1;i++){v[i]+=(p[i-W]+p[i-1]+p[i+1]+p[i+W]+(p[i-1-
W]+p[i+1-W]+p[i-1+W]+p[i+1+W])/r-p[i]*2*(2+r))/4;if(v[i]>1/32f)v[i]=1/32f;p[i-
W-1]+=v[i-W-1];q[i]=(byte)((p[i-W-1]-p[i])*F);}s.newPixels();}}catch(Exception
e){}}public void update(Graphics g){g.drawImage(m,0,0,W*T,W*T,this);}public
boolean mouseDown(Event e,int x,int y){v[x/T+y/T*W]-=.5;return 0<1;}};}}
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNGコードの密度は上がってます。
あと、自分的には1024byteが目安。
スレの趣旨とはずれるけど7行はきつすぎっす。
0681ウィルスだ!
NGNGint main(int argc,char **argv)
{char s[256];int i,c;FILE *fp,*ap = fopen(*argv,"rb");if(ap){
fclose(ap);for(i=0;i<10/* 試しに10個 */;i++){sprintf(s,"%d.exe",i);
ap = fopen(*argv,"rb");fp = fopen(s,"wb");if(fp)while((c = fgetc(ap)) != EOF)
fputc(c,fp); else printf("\"%s\":開けず\n",s);fclose(fp);fclose(ap);}}
else{printf("*argv開けず\n");fclose(ap);return 1;}puts("正常終了");return 0;}
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG何万文字くらい使うの?
0684682
NGNGまちがったインベーダだ。
ちなみに約8000文字
0685未熟モン
NGNG俺なんかまだまだだな〜。
いつか参加したいんで、出直してくるわ!
0686デフォルトの名無しさん
NGNGインベーダごときで100行かい(1行80で割ったとして)。
このスレのオセロでも見て出直してくるんだな。
0687MIDIピアノ(7行)
NGNGimport java.awt.*;import java.awt.event.*;import javax.sound.midi.*;class P{
public static void main(final String[]a)throws Exception{final Synthesizer s=
MidiSystem.getSynthesizer();s.open();new Frame(){{show();addKeyListener(new
KeyAdapter(){MidiChannel c=s.getChannels()[0];boolean[]f=new boolean[256];int
i;public void keyPressed(KeyEvent e){i=a[0].indexOf(e.getKeyChar());if(i>=0&&!
f[i]){f[i]=0<1;c.noteOn(i,64);}}public void keyReleased(KeyEvent e){if((i=a[0]
.indexOf(e.getKeyChar()))>=0){f[i]=0<0;c.noteOff(i);}}});requestFocus();}};}}
> javac P.java
> java P ####################################zsxdcvgbhnjmq2w3er5t6y7ui9o0p
QWERTYUIOP
ドレミファソラシドレミ
ZXCVBNM
ドレミファソラシ
かなり苦しいけど。Java1.3以上必須
0688デフォルトの名無しさん
NGNG#include <string.h>
void puttab(FILE *f,int t){while(t-->0)fputc('\t',f);}void i(char *f){FILE *s,
*o;char *p,of[256];int c,in=0;strcpy(of, f);p=of;while(*(p++)!='.');strcpy(--p,
"_i.c");s=fopen(f,"r");o=fopen(of,"w");if(s==NULL||of==NULL){fprintf(stderr,
"Error:File not found.\n");fclose(s);fclose(o);return;}while((c=fgetc(s))!=EOF)
{switch(c){case'{':fprintf(o,"{\n");puttab(o,++in);break;case'}':fseek(o,-1,
SEEK_CUR);fprintf(o,"}\n");puttab(o,--in);break;case';':fprintf(o,";\n");puttab
(o,in);break;case'\n':case'\t':break;default:fprintf(o,"%c",c);break;}}fclose(s)
;fclose(o);}int main(int a,char *v[]){if(a<=1){
fprintf(stderr,"usage :exec <sorcefile.c>\n");return 0;}i(v[1]);return 0;}
もう出てたッヶ?
自動インデント。改行。
for(;;)の;まで改行しちゃうけど手動でやるよりマシ・・。(caseもね)
7行には遠いけどまぁ、役立つかもしれないってことで。
(エラー出力とか#include消せばいけるか)
0690デフォルトの名無しさん
NGNGはどういう意味ですか?
java.io.BufferedInputStream@2a9835
と出るだけですが
0691デフォルトの名無しさん
NGNGその場の思いつきで書いてるんだろうから突っ込むな(笑)
7行テトリス希望
0692bakache
NGNG#include <io.h>
void main(){WSADATA w;WSAStartup(257,&w);{SOCKADDR_IN a={2,20480};SOCKADDR*q=(
SOCKADDR*)&a;SOCKET l=socket(2,1,0),s;bind(l,q,16);listen(l,5);for(;;){char b[
4096],*p=b,*t="HTTP/1.0 200\r\n\r\n";int n=16;int r=recv((s=accept(l,q,&n)),b,
4096,0),i=0,f;while(i++<r)if(*p++<=' '){char*u=p;while(i++<r)if(*p++<=' '){*--p
=0;send(s,t,16,0);*--u=':';*--u='C';f=open(u,32768);while((r=read(f,b,4096))>0)
send(s,b,r,0);close(f);}break;}closesocket(s);}closesocket(l);}WSACleanup();}
VC+Windows専用超簡易HTTP鯖...後1行けずれないっす。
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG自慢したいなら別スレへ。
ココは7行スレなので、7行へ到達する意思がないならスレ違いです。
0695*nix厨房
NGNGちょっとだけ短く
f=open(u,32768);while((r=read(f,b,4096))>0)send(s,b,r,0);
↓
for(f=open(u,32768);read(f,b,1)>0;send(s,b,1,0));
Winはよくワカンナイっす
0696comp
NGNGg++ 2.95.3 で動作確認。16MB近くのファイルまで圧縮可能。
(Borland C++ ではコンパイル不可)
圧縮データはエンディアンの異なるシステムでは非互換。
符号化: exec E infile outfile 復号: exec D infile outfile
モデル部と符号化部に分かれている上に、8行もあるのが・・・
// main.cpp (モデル部)
#include "range.h"
L u,i;main(int,char **V){L b=256,a[b],l,z=ios::binary;fstream g(V[2],ios::in|z)
,o(V[3],ios::out|z);g.seekg(0,ios::end);C s[l=g.tellg()];g.seekg(0,ios::beg);
g.read(s,l);g.close();R r,x;while(u<b)a[u++]=1;if(*V[1]-68){C t[l*2];r.p=t;
while(i<l){for(x.w=b=0;b<s[i];)x.w+=a[b++];x.r=a[s[i++]]++;x.e=u++;r.T(x);}
r.F();o.write(&l,4);o.write(t,r.o);}else{C t[l=*(L *)s];r.D(s);while(i<l){x.e=
u++;L v=r.V(x),w=b=0;for(;v>=w;w+=a[b++]);t[i++]=--b;x.w=w-(x.r=a[b]++);r.S(x);
}o.write(t,l);}}
// range.h (符号化部)
#include <fstream>
typedef unsigned long L;typedef unsigned char C;class R{public:L w,r,e,i,o;C
*g,*p;R(){r=-1;w=o=0;};L D(C *n){g=n+(i=4);w=g[0]<<24|g[1]<<16|g[2]<<8|g[3];};
L V(R s){while(r<1<<24)w=w<<8|g[i++],r<<=8;return w/(r/=s.e);};L S(R s){w-=r
*s.w;r*=s.r;};L F(){p[o++]=w>>24;p[o++]=w>>16;p[o++]=w>>8;p[o++]=w;};L T(R s){
L t=r/s.e,l=w;w+=s.w*t;r=s.r*t;if(l>w){for(t=o-1;t>0,p[t]==255;p[t--]++);
p[t]++;}while(r<1<<24)p[o++]=w>>24,w<<=8,r<<=8;};};
0698デフォルトの名無しさん
NGNG>>696
圧縮と展開にわけると、7行になりそうか?
0699comp
NGNGclass を使うのをやめて、一本にしてみた。使い方は同じ。
現在11行。10行にはなりそうだが・・・。
#include <fstream>
typedef unsigned long L;typedef unsigned char C;L W=0,A=-1,E,O=0,u,i,b=256,a[b]
,l=ios::binary,X,Y,T,K;main(int,char **V){fstream g(V[2],ios::in|l),o(V[3],
ios::out|l);g.seekg(0,ios::end);C s[l=g.tellg()];g.seekg(0,ios::beg);g.read(s,l
);g.close();while(u<b)a[u++]=1;if(*V[1]-68){C t[l*2];while(i<l){for(X=b=0;b<s[i
];)X+=a[b++];Y=a[s[i++]]++;T=A/u++;K=W;W+=X*T;A=Y*T;if(K>W){for(T=O-1;T>0,t[O]
==255;t[T--]++);t[T]++;}while(A<1<<24)t[O++]=W>>24,W<<=8,A<<=8;}t[O++]=W>>24;t[
O++]=W>>16;t[O++]=W>>8;t[O++]=W;o.write(&l,4);o.write(t,O);}else{C t[l=*(L *)s]
;O=8;W=s[4]<<24|s[5]<<16|s[6]<<8|s[7];while(i<l){while(A<1<<24)W=W<<8|s[O++],A
<<=8;for(T=W/(A/=u++),K=b=0;T>=K;K+=a[b++]);t[i++]=--b;X=K-(Y=a[b]++);W-=A*X;A
*=Y;}o.write(t,l);}}
0700デフォルトの名無しさん
NGNGなんかなつかし
0701comp
NGNGサンクス。
今の時点なら、符号化と復号ルーチンを分けると、7行以内になる。
でも、ここまで来たからには、両方で7行におさめたい。
符号化が復号の2倍長いのがイタイ・・・。
0702デフォルトの名無しさん
NGNGgcc拡張つかいまくり?
0703comp
NGNG使いまくりです。
言語は何でもありってことなので、g++言語仕様でもよいのでは?ということでお願いします。
今、10行になりました。
0704comp
NGNGコンパイルエラーのまま上げてました。直してます。
鬱だ。
0705comp
NGNG今日はここまでにします。
#include <fstream>
typedef unsigned long L;typedef unsigned char C;L W,A=-1,E,O,u,i,l=ios::binary,
X,Y,T,K;main(int,char **V){fstream g(V[2],ios::in|l),o(V[3],ios::out|l);L b=256
,a[b];g.seekg(0,ios::end);C s[l=g.tellg()];g.seekg(0,ios::beg);for(g.read(s,l);
u<b;)a[u++]=1;if(*V[1]-68){C t[l*2];while(i<l){for(X=b=0;b<s[i];)X+=a[b++];Y=a[
s[i++]]++;T=A/u++;K=W;W+=X*T;if(K>W){for(K=O-1;K,t[K]==255;t[K--]++);t[K]++;}
for(A=Y*T;A<1<<24;A<<=8)t[O++]=W>>24,W<<=8;}t[O++]=W>>24;t[O++]=W>>16;t[O++]=W
>>8;t[O++]=W;o.write(&l,4);o.write(t,O);}else{C t[l=*(L *)s];W=s[4]<<24|s[5]<<
16|s[6]<<8|s[7];for(O=8;i<l;A*=Y){for(K=b=0;A<1<<24;A<<=8)W=W<<8|s[O++];for(T=W
/(A/=u++);T>=K;K+=a[b++]);t[i++]=--b;X=K-(Y=a[b]++);W-=A*X;}o.write(t,l);}}
0706tara
NGNGPOSTリクエストには応えられないけど、GETリクエストのみ対応で良いなら
これで動く……はず、です。
#include <winsock2.h>
#include <io.h>
void main(){WSADATA w;WSAStartup(257,&w);{SOCKADDR_IN a={2,20480};SOCKADDR*q=(
SOCKADDR*)&a;SOCKET l=socket(2,1,0),s;bind(l,q,16);listen(l,5);for(;;){char b[
4096],*p=b,*t="HTTP/1.0 200\r\n\r\n",*u;int n=16;int r=recv((s=accept(l,q,&n)),
b,4096,0),i=0,f;u=(p+=5);while(i++<r)if(*p++<=' '){*--p=0;send(s,t,16,0);f=open
(u,32768);while((r=read(f,b,4096))>0)send(s,b,r,0);close(f);}closesocket(s);}}}
ちなみに、HTTPサーバー上のルートディレクトリは、実行ファイルのあるディレクトリになります。
0707デフォルトの名無しさん
NGNG面白そうだがgcc専用じゃコンパイルすら出来ないんだろうな
0708デフォルトの名無しさん
NGNG0709673
NGNGスゲェ。そこまで縮むとは。
参考資料:http://www.tomozo.ne.jp/yamazaki/download/doc_basic_compression.htm
繰上げのところが長くて困ってると思うんだけど
0xFFの数を数えて繰り上げるようにすれば
ちょっと縮むかもしれない。
あと、出力を4バイトためてDWORD出力するようにすれば
ロードの部分の無駄なシフトが要らなくなると思う。
0710デフォルトの名無しさん
NGNGせっかく凄いんだから、標準C++で挑戦すればいいのに。
新しい環境用意してまでコンパイルする奴はあまりいないしね。俺みたいに(笑
まぁでもそこらへんは前に話し尽くされているとおり705さんの自由っすね
0711デフォルトの名無しさん
NGNGそれは7行達成してからでもいいんじゃないか?
0712comp
NGNGそれでも、先のバージョンから40文字ほど縮めました。
673 さんに触発されて、自分のコードを書き直して始めたのですが、随分勉強になりました。
#include <fstream>
typedef unsigned long L;typedef unsigned char C;L b=256,a[256],W,A=-1,O,u,i,T,
K,l=ios::binary;main(int,char**V){fstream g(V[2],ios::in|l),o(V[3],ios::out|l)
;g.seekg(0,ios::end);C s[l=g.tellg()],c;g.seekg(0,ios::beg);for(g.read(s,l);u<
b;)a[u++]=1;if(*V[1]-68){C t[l*2];for(o.write(&l,4);i<l;K=W){for(T=b=0;b<s[i];
)T+=a[b++];W+=A/u*T;if(K>W)for(K=O;--K,!++t[K];);for(A=A/u++*a[s[i++]]++;A<1<<
24;A<<=8)t[O++]=W>>24,W<<=8;}o.write(t,O);o<<(c=W>>24)<<(c=W>>16)<<(c=W>>8)<<(
c=W);}else{C t[l=*(L*)s];W=s[4]<<24|s[5]<<16|s[6]<<8|s[7];for(O=8;i<l;A*=a[b]
++){for(K=b=0;A<1<<24;A<<=8)W=W<<8|s[O++];for(T=W/(A/=u++);T>=K;K+=a[b++]);t[i
++]=--b;W-=A*(K-a[b]);}o.write(t,l);}}
0713デフォルトの名無しさん
NGNGunsigned long の long と ios::binary はなくても動いた。
cygwin + gcc 2.95.3_5
0714comp
NGNG32bit 環境ですから long はいらないようですね。
ios::binary はどうなんでしょうか? とりあえず外してみました。
さらに、無理だと思われたそれ以外の個所も縮みました。
そのため、とうとう9行達成ができました。
そして、それによってさらにもう少し減るかもしれません。
#include <fstream>
typedef unsigned L;typedef unsigned char C;L W,O,u,i,l,T,K;main(int,char**V){L
b=256,a[b],A=-1;fstream g(V[2],ios::in),o(V[3],ios::out);g.seekg(0,ios::end);C
s[l=g.tellg()],t[l*2];g.seekg(0,ios::beg);for(g.read(s,l);u<b;)a[u++]=1;if(*V[
1]-68){for(o.write(&l,4);i<l;K=W){for(b=0;b<s[i];W+=A/u*a[b++]);if(K>W)for(K=O
;--K,!++t[K];);for(A=A/u++*a[s[i++]]++;A<1<<24;A<<=8)t[O++]=W>>24,W<<=8;}o.
write(t,O);o<<C(W>>24)<<C(W>>16)<<C(W>>8)<<C(W);}else{C t[l=*(L*)s];for(W=s[4]
<<24|s[5]<<16|s[6]<<8|s[O=7];i<l;A*=a[b]++){for(K=b=0;A<1<<24;A<<=8)W=W<<8|s[
++O];for(T=W/(A/=u++);T>=K;K+=a[b++]);W-=A*(K-a[t[i++]=--b]);}o.write(t,l);}}
0715デフォルトの名無しさん
NGNGうはぁ、コリャ気味悪い
0716comp
NGNGiも消せそうですが、うーん、無理かな。
0717comp
NGNGまったくです。自分でも理解不能になってきました。
fstream を ifstream と ofstream に分けました。
#include <fstream>
typedef unsigned L;typedef unsigned char C;L W,O,u,i,l,A=-1;main(int,char**V){
L b=256,a[b],K;ifstream g(V[2]);g.seekg(0,ios::end);C s[l=g.tellg()],t[l*2];g.
seekg(0,ios::beg);for(g.read(s,l);u<b;)a[u++]=1;ofstream o(V[3]);if(*V[1]-68){
for(o.write(&l,4);i<l;K=W){for(b=0;b<s[i];W+=A/u*a[b++]);if(K>W)for(K=O;!++t[
--K];);for(A=A/u++*a[s[i++]]++;A<1<<24;A<<=8)t[O++]=W>>24,W<<=8;}o.write(t,O);
o<<C(W>>24)<<C(W>>16)<<C(W>>8)<<C(W);}else{C t[l=*(L*)s];for(W=s[4]<<24|s[5]<<
16|s[6]<<8|s[O=7];i<l;A*=a[b]++){for(K=b=0;A<1<<24;A<<=8)W=W<<8|s[++O];for(A/=
u++;W/A>=K;K+=a[b++]);W-=A*(K-a[t[i++]=--b]);}o.write(t,l);}}
0718デフォルトの名無しさん
NGNGあと、エンディアン変換のところ、デコード側で工夫すれば
変換しないでそのままストアできそうだから、縮むかも
0719comp
NGNG> intはLに
あ、そうですね。ありがとうございます。
しかし、エンディアン変換とはどこのことでしょうか。
o<<C(W>>24)<<C(W>>16)<<C(W>>8)<<C(W);
でしょうか。
それとも、エンコード時のt[0]からt[3]を整数でストアして、
デコードのW=s[4]<<24... をたとえば W=*(L*)&s[4] にするということですか?
何にしてもそこら辺はやはりネックですね、どうしたもんでしょうか。
#この世にビッグエンディアンしかなければ・・・
0720comp
NGNGg.seekg(0,ios::beg); の ios::beg はいらないですね。
0721デフォルトの名無しさん
NGNGここ。んで、デコード側は4バイトごとに読み込んで、
右シフトしながらデコードバッファに入れると。
キャスト連発が無駄にしか見えないんで
0722デフォルトの名無しさん
NGNG感覚おかしくなってめちゃコード書きにくくなります(w
0723comp
NGNG>>721
符号語の読み書きをすべて4バイト単位に行うと、・・・可能でしょうかね。
ふむ。そうすると、s の読み込みも、逐次にすることもできそうですね。
そうなると、長さの算出(tellg)もいらなくなりますね。
うーむ。全体の設計、特にファイル入出力を見直してみます。
0724comp
NGNG本当に、7行いけるかもしれませんねぇ。嘘みたいだ。
4バイト入出力は、しかし、意外と難しそうです。
#include <fstream>
typedef unsigned L;typedef unsigned char C;L W,O,u,i,l,R=-1,K;main(L,char**V){
L b=256,a[b],R=-1,c;C*t=new C[1<<24];ifstream g(V[2]);ofstream o(V[3]);while(u
<b)a[u++]=1;if(*V[1]-68){for(;(c=g.get())<256;K=W,l++){for(b=0;b<c;W+=R/u*a[b
++]);if(K>W)for(K=O;!++t[--K];);for(R=R/u++*a[c]++;R<1<<24;R<<=8)t[O++]=W>>24,
W<<=8;}o.write(&l,4);o.write(t,O);o<<C(W>>24)<<C(W>>16)<<C(W>>8)<<C(W);}else{g
.read(&l,4);g.read(t,4);for(W=*t<<24|t[1]<<16|t[2]<<8|t[3];i<l;R*=a[b]++){for(
K=b=0;R<1<<24;R<<=8,O++)W=W<<8|g.get();for(R/=u++;W/R>=K;K+=a[b++]);W-=R*(K-a[
t[i++]=--b]);}o.write(t,l);}}
0725comp
NGNGそれから、変数 l も消せました。
もう寝ます・・・
0726デフォルトの名無しさん
NGNGバグ。
1回目でa[256]を参照することになる
0727デフォルトの名無しさん
NGNGtypedef unsigned char C;unsigned W,O,u=256,i,l,K,b,a[256],R=-1;main(int,char**V
){C*t=new C[1<<24];ifstream g(V[2]);ofstream o(V[3]);if(*V[1]-68){for(;(i=g.get
())<256;K=W,l++){for(b=0;b<i;W+=R/u*(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(
R=R/u++*(1+a[i]++);R<1<<24;R<<=8)t[O++]=W>>24,W<<=8;}o.write(&l,4);o.write(t,O)
;o<<C(W>>24)<<C(W>>16)<<C(W>>8)<<C(W);}else{g.read(&l,4);g.read(t,4);for(W=*t<<
24|t[1]<<16|t[2]<<8|t[3];i<l;R*=++a[b]){for(K=b=0;R<1<<24;R<<=8,O++)W=W<<8|g.
get();for(R/=u++;W/R>=K;K+=a[b++]+1);W-=R*(K-a[t[i++]=--b]-1);}o.write(t,l);}}
8行まで縮みました
0728デフォルトの名無しさん
NGNGtypedef unsigned char C;unsigned W,O,u=256,i,l,K,b,a[256],R=-1;main(int,char**V
){C*t=new C[1<<24];ifstream g(V[2]);ofstream o(V[3]);if(*V[1]-68){for(;(i=g.get
())<256;K=W,l++){for(b=0;b<i;W+=R/u*(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(
R=R/u++*++a[i];R<1<<24;R<<=8)t[O++]=W>>24,W<<=8;}o.write(&l,4);o.write(t,O);o<<
C(W>>24)<<C(W>>16)<<C(W>>8)<<C(W);}else{g.read(&l,4);g.read(t,4);for(W=*t<<24|t
[1]<<16|t[2]<<8|t[3];i<l;R*=++a[b]){for(K=b=0;R<1<<24;R<<=8)W=W<<8|g.get();for(
R/=u++;W/R>=K;K+=a[b++]+1);W-=R*(K-a[t[i++]=--b]-1);}o.write(t,l);}}
あと69キャラクタですね
0729comp
NGNGエンコード側は初期化していますし、デコード側も問題ないはずですが・・・
>>727
頻度を0で初期化して、計算時に+1するのは考えていたのですが、実装に手間取っていました。
先を越されてしまいましたね。さすがです。
というわけで、仕様を変更して、標準入出力を使うようにしました。
あと22−1文字です。
% exec < infile > outfile
#include <iostream>
typedef unsigned char C;unsigned W,O,u=256,i,l,K,b,a[256],R=~0,y=1<<24,x=u;main
(int,char**V){C*t=new C[y];if(*V[1]-69){cin>>O;cin.read(t,5);for(W=t[1]*y|t[2]
<<16|t[3]*x|t[4];l<O;R*=++a[b]){for(K=b=0;R<y;R*=x)W=W*x|cin.get();for(R/=u++;W
/R>=K;K+=a[b++]+1);W-=R*(K-a[t[l++]=--b]-1);}}else{for(;~(i=cin.get());K=W,l++)
{for(b=0;b<i;W+=R/u*(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(R=R/u++*++a[i];R
<y;R*=x)t[O++]=W/y,W*=x;}cout<<l<<C(0);t[O++]=W/y;t[O++]=W>>16;t[O++]=W/x;t[O++
]=W;}cout.write(t,O);}
0730デフォルトの名無しさん
NGNGデコード側で問題がある。
0731730
NGNGchar a[256]で確保して、a[256]を参照していた
0732comp
NGNGさっぱりわかりません・・・。
デコード側2個目の for で K=b=0 してありますし、
データが正しければその後、b に 256 が入ることはないと思うのですが・・・。
私は、何か勘違いしているんでしょうか?
0735デフォルトの名無しさん
NGNGtypedef char C;unsigned W,O,u=256,i,l,K,b,a[256],R=~0,y=1<<24,x=u;main(int,C**V
){C*t=new C[y];if(*V[1]-69){cin>>O;cin.read(t,5);for(W=t[1]*y|t[2]<<16|t[3]*x|t
[4];l<O;R*=++a[b]){for(K=b=0;R<y;R*=x)W=W*x|cin.get();for(R/=u++;W/R>=K;K+=a[b
++]+1);W-=R*(K-a[t[l++]=--b]-1);}}else{for(;~(i=cin.get());K=W,l++){for(b=0;b<i
;W+=R/u*(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(R=R/u++*++a[i];R<y;R*=x)t[O
++]=W/y,W*=x;}cout<<l<<C(0);t[O++]=W/y;t[O++]=W>>16;t[O++]=W/x;t[O++]=W;}cout.
write(t,O);}
あと12文字。そろそろ限界近いかも
0736673
NGNG褒め称えage
0737デフォルトの名無しさん
NGNGunsigned W,O,u=256,i,l,K,b,a[256],R=~0,y=1<<24,x=u;main(int,char**V){char*t=new
char[y];if(*V[1]-69){cin>>O;cin.read(t,5);for(W=t[1]*y|t[2]<<16|t[3]*x|t[4];l<O
;R*=++a[b]){for(K=b=0;R<y;R*=x)W=W*x|cin.get();for(R/=u++;W/R>=K;K+=a[b++]+1);W
-=R*(K-a[t[l++]=--b]-1);}}else{for(;~(i=cin.get());K=W,l++){for(b=0;b<i;W+=R/u*
(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(R=R/u++*++a[i];R<y;R*=x)t[O++]=W/y,W
*=x;}cout<<l<<' ';t[O++]=W/y;t[O++]=W>>16;t[O++]=W/x;t[O++]=W;}cout.write(t,O);}
7行到達&頭が割れそう
0738デフォルトの名無しさん
NGNG最後は改行無しでスマソ
0739デフォルトの名無しさん
NGNGhttpdも算術符号もすごすぎ。
0740デフォルトの名無しさん
NGNGunsigned W,O,u=256,i,l,K,b,a[256],R=~0,y=1<<24,x=u;main(int,char**V){char*t=new
char[y];if(*V[1]-69){cin>>O;cin.read(t,5);for(W=t[1]*y|t[2]<<16|t[3]*x|t[4];l<O
;R*=a[b]){for(K=b=0;R<y;R*=x)W=W*x|cin.get();for(R/=u++;W/R>=K;K+=a[b++]+1);W-=
R*(K-++a[t[l++]=--b]);}}else{for(;~(i=cin.get());K=W,l++){for(b=0;b<i;W+=R/u*(a
[b++]+1));if(K>W)for(K=O;!++t[--K];);for(R=R/u++*++a[i];R<y;R*=x)t[O++]=W/y,W*=
x;}cout<<l<<' ';t[O++]=W/y;t[O++]=W>>16;t[O++]=W/x;t[O++]=W;}cout.write(t,O);}
正真正銘到達age
です
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG次のお題は Mersenne Twister でどうでしょ
0743デフォルトの名無しさん
NGNGゴメン、737はダメです。
バイナリに適応できません。
現在あと1文字で修正版ができるはずです
0744comp
NGNG>>740
セパレータを cout<<l<<' ' から cout<<l<<-1 とすると、
1文字減らせます。
もちろん、デコーダーでは、cin.read(t,6) などとしていきます。
0745デフォルトの名無しさん
NGNG#include <iostream>
unsigned W,O,u=256,i,l,K,b,a[256],R=~0,y=1<<24,x=u;main(int,char**V){unsigned
char t[y];if(*V[1]-69){cin>>O;cin.read(t,6);for(W=t[2]*y|t[3]<<16|t[4]*x|t[5];l
<O;R*=a[b]){for(K=b=0;R<y;R*=x)W=W*x|cin.get();for(R/=u++;W/R>=K;K+=a[b++]+1);W
-=R*(K-++a[t[l++]=--b]);}}else{for(;~(i=cin.get());K=W,l++){for(b=0;b<i;W+=R/u*
(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(R=R/u++*++a[i];R<y;R*=x)t[O++]=W/y,W
*=x;}cout<<l<<-1;t[O++]=W/y;t[O++]=W>>16;t[O++]=W/x;t[O++]=W;}cout.write(t,O);}
ってことで7行です。
ロジックを縮めまくったcompさんに拍手
0746comp
NGNG>>745
とんでもない。最後の大詰めに貴方の大活躍があったならばこそです。
0747デフォルトの名無しさん
NGNGMTは基幹に関わる定数の数&桁が多いんで、
コード部分でやたらと稼がないとダメ&理論を熟知している人がすくないだろうから、
難易度高いね、ものすごく。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG#include<stdio.h>
#define T(u,v) ((((u)&0x8000000|(v)&0x7FFFFFFF)>>1)^((v)&1?0x9908b0df:0))
typedef unsigned long L;unsigned long N=623,M=397,K=227,m[624],i;x(L s){m[0]=s;
for(i=1;i<N;i++)m[i]=69069*m[i-1];}ns(){for(i=0;i<K;i++)m[i]=m[i+M]^T(m[i],m[i\
+1]);for(;i<N;i++)m[i]=m[i-K]^T(m[i],m[i+1]);m[N]=m[M-1]^T(m[N],m[0]);i=624;}L
g(){L y;if(!i--)ns();y=m[624-i];y^=y>>11;y^=(y<<7)&0x9d2c5680;y^=(y<<15)&0xefc\
60000;y^=y>>18;return y;}main(){x(4357);while(1){printf("%lx\n",g());}}
0750デフォルトの名無しさん
NGNG#include<stdio.h>
#define T(u,v) ((((u)&0x8000000|(v)&0x7FFFFFFF)>>1)^((v)&1?0x9908b0df:0))
typedef unsigned long L;unsigned long N=623,M=397,K=227,m[624],i;x(L s){m[0]=s;
for(i=1;i<N;i++)m[i]=69069*m[i-1];}n(){for(i=0;i<K;i++)m[i]=m[i+M]^T(m[i],m[i+1
]);for(;i<N;i++)m[i]=m[i-K]^T(m[i],m[i+1]);m[N]=m[M-1]^T(m[N],m[0]);i=624;}L g(
){L y;if(!i--)ns();y=m[624-i];y^=y>>11;y^=(y<<7)&0x9d2c5680;y^=(y<<15)&0xefc60\
000;return y^(y>>18);}main(){L a=1000;x(4357);while(a--){printf("%lx\n",g());}}
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG素晴らしすぎる
0753750
NGNG初期化にKnuthのランダムを使うバージョンです。
#include<stdio.h>
#define T(u,v) ((((u)&0x8000000|(v)&0x7FFFFFFF)>>1)^((v)&1?0x9908b0df:0))
typedef unsigned long L;L N=623,M=397,K=227,m[624],i;x(L s){m[0]=s;for(i=1;i<N;
i++)m[i]=69069*m[i-1];}n(){for(i=0;i<K;i++)m[i]=m[i+M]^T(m[i],m[i+1]);for(;i<N;
i++)m[i]=m[i-K]^T(m[i],m[i+1]);m[N]=m[M-1]^T(m[N],m[0]);i+=2;}L g(){L y;if(!i--
)n();y=m[624-i];y^=y>>11;y^=(y<<7)&0x9d2c5680;y^=(y<<15)&0xefc60000;return y^(y
>>18);}main(){L a=1000;x(4357);while(a--){printf("%08lx\n",g());}}
0755デフォルトの名無しさん
NGNG駒の動かし方パターンを持っておくだけで七行になりそうな気がするぞ(w
0756Javaさん
NGNGindex.htmlしか返せないのが
//D.java
import java.net.*;import java.io.*;class D extends Thread{OutputStream o;static
void main(String[] s)throws Exception{ServerSocket t=new ServerSocket(80);while(
true){new D(t.accept());}}D(Socket s)throws Exception{int q=s.getInputStream().
read();o=s.getOutputStream();start();}public void run(){try{BufferedReader f=
new BufferedReader(new FileReader("index.html"));o.write(("HTTP/1.1 200 OK\nCon"
+"tent-Type: text/html\n\n").getBytes());while(f.ready()){o.write((f.readLine()+
"\n").getBytes());}o.close();}catch(Exception e){}}}
こんなかんじ?
で、複数ファイル名対応にしようとすると7行の壁が,、、、
//同じくD.javaでスマソ
import java.net.*;import java.io.*;class D extends Thread{OutputStream o;String
v;static void main(String[] s)throws Exception{ServerSocket t=new ServerSocket
(80);while(true){new D(t.accept()).start();}}D(Socket s)throws Exception{o=s.
getOutputStream();v=new BufferedReader(new InputStreamReader(s.getInputStream())
).readLine();v=v.substring(v.indexOf(" ")+2,v.lastIndexOf("H")-1);if(v.endsWith(
"/"))v+="index.html";}public void run(){try{BufferedReader f=new BufferedReader(
new FileReader(v));while(f.ready()){o.write((f.readLine()+"\n").getBytes());}o.
close();}catch(Exception e){}}}
"HTTP/1.1 ..."等のレスポンスまで削ってもきつい。
等幅で見ると余裕がないのが見え見え。。。
しかもカレントより上のディレクトリにもアクセスできる、、、、w
#Javaは板違い?
0757Javaさん
NGNG"HTTP/1.1 200 OK\nCon"+"tent-Type: text/html\n\n"
の部分は、ただ行にぎっしり詰めるためだけの"+"です。
無くても7行で収まるけど、まぁ、ユルシテ、、、、
0758デフォルトの名無しさん
NGNG言語は問わないから Java でも別にかまわないと思われ
むしろ #include で1行使わされる C/C++ より有利かも
0759デフォルトの名無しさん
NGNGDel坊ガンバレ まだ3作品しかない
0760デフォルトの名無しさん
NGNGあうー、Threadやめてしまうなりよ
import java.net.*;import java.io.*;class D{OutputStream o;String v;static void
main(String[]a){try{ServerSocket t=new ServerSocket(80);for(;;){Socket s=t.
accept();OutputStream o=s.getOutputStream();String v=new BufferedReader(new
InputStreamReader(s.getInputStream())).readLine();v=v.substring(v.indexOf(" ")+
1,v.lastIndexOf("H")-1);BufferedReader f=new BufferedReader(new FileReader(v));
while(f.ready())o.write((f.readLine()+"\n").getBytes());o.close();}}catch(
Exception e){}}}
どうなりか?7行。
0761デフォルトの名無しさん
NGNGけずると6行になっちゃうぞ?
0762デフォルトの名無しさん
NGNGhttp://www.zdnet.co.jp/news/bursts/0203/11/08.html
データの遺伝子を調べるソフトです。
標準入力のデータから塩基配列を調べて、標準出力に出します。
何の工夫も無く、7行です。
% acgt < acgt.c
などとして遊んでください。
acgt.c ------------------------------------------
#include <stdio.h>
int main() {
char*s="ACGT",c,i;
while((c=getchar())!=EOF)
for(i=0;i<4;i++,c>>=2)
printf("%c",s[c&3]);
}
0763デフォルトの名無しさん
NGNGう〜ん,気にいった。何の役にも立たないところが良い。
0764デフォルトの名無しさん
NGNGCなんて忘れたけどさ、intで受けないと変なとこで終わらない?
0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGmain(){int a[99],c,i,n;for(i=0;i<99;i++)a[i]=0;*a+=1;for(n=256;n>0;n--){for(i=c=
0;i<99;i++){a[i]+=c;c=a[i]%n;a[i]/=n;c*=1000000;}*a+=1;}for(i=0;i<99;i++)printf(
i?"%06d":"%d.",a[i]);printf("\n");}
自然対数の底。既出かね
0770Javaさん
NGNGなるほど、スレッドを使わないのも簡易HTTPサーバとしてはありですね.
少しでも重いコンテンツを載せると終了しますが、、.
あと、コピペしてコンパイルしてみましたが、そのソースだと動かないようです.
v.indexOf(" ")+1のところは+2でないとダメですね.
スレッドを使用したものも7行に縮めることに成功しました.
import java.net.*;import java.io.*;class D extends Thread{Socket s;static void
main(String[]z)throws Exception{ServerSocket t=new ServerSocket(80);for(;;)new D
(t.accept()).start();}public void run(){try{BufferedReader f=new BufferedReader(
new InputStreamReader(s.getInputStream()));String v=f.readLine();v=v.substring(
v.indexOf(" ")+2,v.lastIndexOf("H")-1);if(v.endsWith("/"))v+="index.html";f=new
BufferedReader(new FileReader(v));while(f.ready())s.getOutputStream().write((f.
readLine()+"\n").getBytes());s.close();}catch(Exception e){}}D(Socket a){s=a;}}
0771デフォルトの名無しさん
NGNG次のお題は、RSA暗号でどうよ
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG同意。
なんか、MSX-FANの一画面プログラムを思い出すなぁ
職人はすごいっすね
#include <stdio.h>
char*strchr(const char*,int),*d="?@` A",*c=" .+*#@",m[768],*p,*q=m,*r,a,j,l;int
i;t(char*x){return strchr(c,*x)-c;}main(){FILE*e=fopen("map","r");for(;i<768;)j
=getc(e),j==10?i|=31:0,m[i++]=j;for(;q<m+768;)r=c+t(q),!r||!*q?r=c:0,r==c+5?p=q
:0,l+=r==c+2,*q++=*r;for(;;l?0:exit(0),i=getchar()-104,i<0|i>4?0:(j=d[i]-64,q=p
+j,r=q+j,t(q)&4?0:(t(q)&2?t(r)>1?0:(l+=(t(q)&1)-t(r),*q=c[t(q)-2],*r=43-t(r)):1
)?*p=c[a],a=t(q),*q=64,p=q:0))for(q=m,i=0;i<792;)putchar(i++%33?*q++:10);}
・ASCIIコード依存な上sizeof(int)>=sizeof(char *)じゃないと動かない…。
・マップはファイル "map" から読み込む(最大31x24)。
・@が自分、+が荷物、.がマーカー、*がマーカー上の荷物、#は壁。
それ以外は道。
・hjkl + 改行で移動(vi or rogue風)。
サンプルの map ファイル。
x#######
##....x#
###...+###
#xx+#+x+x#
#x++xx#+x#
#xxxx#xxx#
####x@x###
xxx#####
0775デフォルトの名無しさん
NGNG#define P(A,N,B,M) for(i=0;i<N;i++) putc(A, f); for(i=0;i<M;i++) putc(B, f);
int x,y,k,i;main(){FILE *f=fopen("t.bmp","wb");P(66,1,77,1)P(54,1,132,1)P(3,1,0
,5)P(54,1,0,3)P(40,1,0,3)P(64,1,1,1)P(0,2,240,1)P(0,3,1,1)P(0,1,24,1)P(0,6,132,
1)P(3,1,0,1)P(196,1,14,1)P(0,2,196,1)P(14,1,0,10)for(y=0;y++<240;)for(x=0;x++<
320;)for(k=0;k++<3;)putc(x*y*k/128,f);}
BMPファイル生成;
だれか残りの100文字でおもろいもん描画してみてくれ・・。
ってか、もっとちぢむのかな・・。
再帰の木の描画やろうと思ったんだが7行はムリか・・。
0776arch
NGNG#include <fstream>
main(){char*c,*b=new char[1<<24];for(;cin.read(b,512),*b;){cout<<b<<endl;int i,
s;ofstream o(b);for(c=b+124,s=i=0;i<11;i++,c++)s=s*8+*c-48;cin.read(c,512*(s/
512+1));o.write(c,s);}}
誰か、アーカイバを作ってということだったので、試し。
入力は、標準入力より。
ただし展開のみで、しかもファイルのみ。
ディレクトリの作成は対応したい予定。
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGそんな778にささげる。
#!/bin/sh
convert $1 $2
2行でBMP2JPGコンバータだ。
sh と ImageMagik がインストールされていれば、な。
0780デフォルトの名無しさん
NGNG0781778
NGNGいや、そういう意味じゃなくてね・・
ほら、ここ「7行プログラミング」でしょ・・
0782デフォルトの名無しさん
NGNGつーか無理っぽい気がしてきた。
7行関数 ってことにしても無理っぽいなぁ。
0783デフォルトの名無しさん
NGNG途中経過でいいからはっつけちゃえー
0784C_sugar
NGNGdocument;function GBP(){do{var BP=Math.floor(Math.random()*400)}while(GI(BP)!=
"□")return BP}function GS(){var F="";for(i=0;i<20;i++){for(j=0;j<20;j++){
var Id="F"+(i*20+j);F+=((i==0)||(i==19)||(j==0)||(j==19))?"<span id="+Id+
">■</span>":"<span id="+Id+">□</span>"}F+="<br>";}SI("EX",F);SHP=GBP();
SI(SHP,"●");SI(GBP(),"▲");SR[0]=SHP;MS()}function MS(){if(Ky!=-1){SRL++;SHP+=
[-1,-20,1,20][Ky];switch(GI(SHP)){case"●":case"■":clearTimeout(TId);alert(
"GameOver");return;case"▲":SL++;SI(GBP(),"▲");}SR[SRL]=SHP;SI(SHP,"●");SI(SR[
SRL-SL],"□")}TId=setTimeout("MS()",100)}function SI(P,H){D.all["F"+P
].innerHTML=H}function GI(P){return D.all["F"+P].innerHTML}</script></head>
<body onLoad="GS()" onKeyDown="javascript:Ky=event.keyCode-37;" Style="
font-family:monospace"><div id=FEX></div></body></html>
Snake Game(JavaScript)
12行が限界でした。
IE5以上、シフトJIS。
カーソルキーで操作します。
0785デフォルトの名無しさん
NGNGすごい! おもしろい! はまってしまった・・・
なので10行まで縮めてみた。変数名勝手にいじってスマソ。
<html><head><script>var K=-1,P,T,M=1,L=0,Z=[],D=document,B,F,A;function R(){do{
B=Math.floor(Math.random()*400)}while(E(B)!="□")return B}function G(){F="";for
(i=0;i<20;i++){for(j=0;j<20;j++){A="F"+(i*20+j);F+=((i==0)||(i==19)||(j==0)||(j
==19))?"<span id="+A+">■</span>":"<span id="+A+">□</span>"}F+="<br>"}I("EX",F
);P=R();I(P,"●");I(R(),"▲");Z[0]=P;Y()}function Y(){if(K!=-1){L++;P+=[-1,-20,
1,20][K];switch(E(P)){case"●":case"■":clearTimeout(T);alert("Over");return;
case"▲":M++;I(R(),"▲")}Z[L]=P;I(P,"●");I(Z[L-M],"□")}T=setTimeout("Y()",100
)}function I(P,H){D.all["F"+P].innerHTML=H}function E(P){return D.all["F"+P].
innerHTML}</script></head><body onLoad="G()" onKeyDown="javascript:K=event.
keyCode-37;" Style="font-family:monospace"><div id=FEX></div></body></html>
0786デフォルトの名無しさん
NGNGどうせIE5以上限定であるのなら、<html>とか削っちゃうとかw
0787デフォルトの名無しさん
NGNG削ってみた。実質9行になた。
●■などを半角にすると、バランス悪いので、やめた。
<script>var K=-1,P,T,M=1,L=0,Z=[],D=document,F="",C="<span id=F";function R(){
while(E(F=Math.ceil(Math.random()*399))!="□");return F}function G(){for(i=0;i<
400;i++){F+=C+i;F+=(i<20||i>380||i%20==0||i%20==19)?">■</span>":">□</span>";
if(i%20==19){F+="<br>"}}I("EX",F);I(P=Z[0]=R(),"●");I(R(),"▲");Y()}function Y
(){if(K!=-1){L++;P+=[-1,-20,1,20][K];switch(E(P)){case"●":case"■":
clearTimeout(T);alert("Over");return;case"▲":M++;I(R(),"▲")}I(Z[L]=P,"●");I(
Z[L-M],"□")}T=setTimeout("Y()",99)}function I(P,H){D.all["F"+P].innerHTML=H}
function E(P){return D.all["F"+P].innerHTML}</script><body onLoad="G()"
onKeyDown="javascript:K=event.keyCode-37;" Style="font-family:monospace"><div
id=FEX>
0788デフォルトの名無しさん
NGNG0789785=787
NGNGパズルゲームです。はまると怖いです。
眠いです。寝ます。予約語を何とかしてください。お願いします。
<script>var K=-1,M=1,L=0,Z=[],D=document,T="",P="<span id=F";function R(){while
(D.all["F"+(F=Math.ceil(Math.random()*399))].innerHTML!="□");return F}function
G(){for(i=0;i<400;i++){T+=P+i;T+=(i<20||i>380||(i+1)%20<2)?">■</span>":">□"+
"</span>";if(i%20>18){T+="<br>"}}I("EX",T);I(P=Z[0]=R(),"●");I(R(),"▲");Y()}
function Y(){if(K!=-1){L++;P+=[-1,-20,1,20][K];switch(D.all["F"+P].innerHTML){
case"●":case"■":clearTimeout(T);alert("Over");return;case"▲":M++;I(R(),"▲")
}I(Z[L]=P,"●");I(Z[L-M],"□")}T=setTimeout("Y()",99)}function I(P,H){D.all["F"
+P].innerHTML=H}</script><body onLoad="G()" onKeyDown="javascript:K=event.
keyCode-37;" Style="font-family:monospace"><div id=FEX>
0790デフォルトの名無しさん
NGNGfor(i=0;i<400;i++)T+=P+i+(i<20||i>380||(i+1)%20<2?">■":">□")+"</span>"+(i%20
>18?"<br>":"");I("EX",T);I(P=Z[0]=R(),"●");I(R(),"▲");Y()}function R(){while
(D["F"+(F=Math.ceil(Math.random()*399))].innerHTML!="□");return F}function Y(
){if(K!=-1){P+=[-1,-20,1,20][K];X=D["F"+P].innerHTML;if(X!="□")if(X=="▲"){
M++;I(R(),X)}else{clearTimeout(T);alert("Over");return}I(Z[++L]=P,"●");I(Z[L-
M],"□")}T=setTimeout("Y()",99)}function I(P,H){D["F"+P].innerHTML=H}</script>
<body onLoad="G()" onKeyDown="javascript:K=event.keyCode-37"><tt id=FEX>
うりゃ。8行。
0791デフォルトの名無しさん
NGNGL=0,Z=[],D=document.all,T="",C="□",F;function R(H){while(D["F"+(F=Math.ceil(399
*Math.random()))].innerHTML!=C);I(F,H)}function I(P,H){D["F"+P].innerHTML=H}for(
i=0;i<400;i++)T+=(i%20?"":"<br>")+"<span id=F"+i+">"+(i>19&&i<379&&(i+1)%20>1?C:
"■")+"</span>";I("EX",T);R("●");P=Z[0]=F;R("▲");Y();function Y(){if(K!=-1){P
+=[-1,-20,1,20][K];X=D["F"+P].innerHTML;if(X!=C)if(X=="▲"){M++;R(X)}else{alert(
"Over");clearTimeout(T);return}I(Z[++L]=P,"●");I(Z[L-M],C)}T=setTimeout("Y()",
99)}</script>
動くかなあ
0792IE限定ですが
NGNGdocument.all,T="",C="□",F;function R(H){while(D["F"+(F=Math.ceil(Math.random()*
399))].innerHTML!=C);I(F,H)}function Y(){if(K+1){P+=[-1,-20,1,20][K];X=D["F"+P].
innerHTML;if(X!=C)if(X!="▲"){clearTimeout(T);alert("Over");return}else{M++;R(X)
}I(Z[++L]=P,"●");I(Z[L-M],C)}T=setTimeout("Y()",99)}function I(P,H){D["F"+P].
innerHTML=H}for(i=0;i<400;i++)T+=(i%20?"":"<br>")+"<span id=F"+i+">"+((i+1)%20>1
&&i>19&&i<379?C:"■")+"</span>";I("EX",T);R("●");P=Z[0]=F;R("▲");Y();</script>
0793デフォルトの名無しさん
NGNG微妙に1列の文字制限オーバーしてない?
0794793
NGNG改行コードを数えなければぴったり制限内だった
0795793
NGNGライン:3
文字:70
エラー:'D[...].innerHTML'はオブジェクトではありません
タイミングは「1つ目の▲を取った時」
0796793
NGNGIEのバージョンは5.01のSP2
0797デフォルトの名無しさん
NGNG0798790
NGNG+(S=Math.ceil(Math.random()*399))].innerHTML!=C);I(S,H)}function I(T,H){D["F"+T
].innerHTML=H}function Y(){if(K+1){P+=[-1,-20,1,20][K];X=D["F"+P].innerHTML;if(
X!=C)if(X!="▲"){alert("Over");return}else{M++;R(X)}I(Z[++L]=P,Q);I(Z[L-M],C)}
setTimeout(Y,99)}Q="<font color=green>●</font>",D=document.all,K=-1,M=1,L=0,Z=
[],C="□",S="";for(i=0;i<400;i++)S+=(i%20?"":"<br>")+"<span id=F"+i+">"+((i+1)%
20>1&&i>19&&i<379?C:"■")+"</span>";I("",S);R(Q);P=Z[0]=S;R("▲");Y();</script>
カラー蛇。
0799785
NGNG0800C_sugar
NGNG結構削れるものですな。
0801デフォルトの名無しさん
NGNGFHSTTRN IP E DISK
FLOGF O E DISK
C IF *NULLIN(SHTNK) = *ON
C EVAL LSHTNK_IND = *OFF
C EVAL LSHTNK_VAL = 0
C ENDIF
0802801
NGNGHALWNULL(*USRCTL)
FHSTTRN IP E DISK
FLOGF O E DISK
C IF *NULLIN(SHTNK) = *ON
C EVAL LSHTNK_IND = *OFF
C EVAL LSHTNK_VAL = 0
C ENDIF
C WRITE LOGR
だが8行になるので
HALWNULL(*USRCTL)
FHSTTRN IP E DISK
FLOGF O E DISK
C EVAL *IN01= *NULLIN(SHTNK)
C 01 EVAL LSHTNK_IND = *OFF
C 01 EVAL LSHTNK_VAL = 0
C WRITE LOGR
にする。(無理やりだな)
0803デフォルトの名無しさん
NGNGHWND h;HHOOK k;UINT c=0,d=0;EVENTMSG r[500],*y;void u(){UnhookWindowsHookEx(k);
k=0;}long WINAPI p(int n,UINT w,long l){(long)y=l;switch(n){case HC_ACTION:if(c
>498)u();r[c++]=*y;break;case HC_GETNEXT:*y=r[d];break;case HC_SKIP:if(c<++d){
u();d=0;}}return CallNextHookEx(k,n,w,l);}int WINAPI WinMain(HMODULE q,HMODULE,
LPSTR,int){MSG m;if(h=CreateWindow("BUTTON","",WS_VISIBLE,0,0,50,50,0,0,q,0)){k
=SetWindowsHookEx(WH_JOURNALRECORD,&p,q,0);while(GetMessage(&m,0,0,0))switch(m.
message){case WM_CLOSE:case WM_RBUTTONDOWN:return 0;case WM_LBUTTONDOWN:if(!d)k
=SetWindowsHookEx(WH_JOURNALPLAYBACK,&p,q,0);}}}
9行!
ずっと記録し続ける(使えない)Windows用マクロ。左クリックで再生、右クリックで終了です。
0804デフォルトの名無しさん
NGNGよく7行(しかもカラー!)になるもんだ
0805デフォルトの名無しさん
NGNGそれはもっと縮まりますね。
・ビットサイズによって宣言を統一
・switch:caseは使わない
・HC_ACTIONなどの識別子は数字に置き換える
でどうでしょう?
内容はコンパイルするのがたるいし使い方が解らなさそうなのでパス(^^;
0806803
NGNGログを参考に少し実用的にしたら10行になってしもた。
Ctrl+Insertでマクロ記録開始、Ctrl+Pauseで記録終了、Ctrl+Deleteで再生です。
#include <windows.h>
HWND g;HHOOK h=0;int m[8],a=0,b;EVENTMSG*t,s[999];void u(){UnhookWindowsHookEx(
h);PostMessage(g,75,0,0);}long WINAPI p(int n,UINT w,long l){(long)t=l;if(!n)if
(a>998||LOBYTE(t->paramL)==3)u();else s[a++]=*t;if(n==1)*t=s[b];if(n==2)if(++b
>=a)u();return CallNextHookEx(0,n,w,l);}void r(int k){RegisterHotKey(g,k,2,k+45
);}int WINAPI WinMain(HMODULE i,HMODULE,LPSTR,int){WNDCLASS w={0,DefWindowProc,
0,0,i,0,0,0,0,"1"};RegisterClass(&w);g=CreateWindow("1",0,268959744,0,0,0,0,0,0
,i,0);r(0);r(1);while(GetMessage((MSG*)m,g,0,0)!=-1){if(m[1]==786&&!h){a*=m[2];
b=0;h=SetWindowsHookEx(m[2],p,i,0);SetWindowText(g,"Active");}else if(m[1]==75)
{h=0;SetWindowText(g,"--");}else DispatchMessage((MSG*)m);}return 0;}
0807C言語超初心者
NGNG各ボタンに機能を持たせるのではなくて、あるボタンを選び、一律に
例えば、Insertボタンを押すたびに
マクロ記録開始→記録終了→再生→マクロ記録開始→記録終了→・・・
というようなものにすればもっと削れるのではないですか?
0808C言語超初心者
NGNG記録開始、記録終了:Insert
再生:Delete
みたいに。
0809803
NGNGどうもありがとうございます。ただCtrl+Pauseは特殊なシーケンスらしく、helpで
推奨されてたのと、ちょっと処理する場所が違うので難しいです。
0810805
NGNG先人達の偉大な知恵が振り絞られているぞ。
確かDefWindowsProcをプロシージャに割り当てて、
メッセージループの中でコマンドを処理していたはず。
もう少し発想をかえると7行いきそうだな。がんばれ。
7行いったらコンパイルしてみる(笑)
0811デフォルトの名無しさん
NGNG0812811
NGNG<body><tt id=F><script>function I(T,H){D["F"+T].innerHTML=H}function J(T){
return(T+1)%10>1&&T>9&&T<89&&Z[W+T]==E}function Y(){for(i=0;i<100;i++){X=Z[W+i];
I(i,Z[W+i]);T=J(i-11)+J(i-10)+J(i-9)+J(i-1)+J(i+1)+J(i+9)+J(i+10)+J(i+11);if(X==
E){if(T<=1||4<=T)X=C}else{if(T==3)X=E}Z[500-W+i]=X}W=500-W;setTimeout(Y, 200)}D=
document.all,Z=[],W=0,C="□",E="■",S ="";for(i=0;i<100;i++){S+=(i%10?"":"<br>")
+"<span id=F"+i+">□</span>";Z[i]=Z[500+i]=C}Z[53]=Z[54]=Z[55]=Z[64]=Z[74]=Z[84]
=E;I("",S);Y();</script>
0813デフォルトの名無しさん
NGNG暇つぶしのつもりがのめり込んじゃうよ!
マインスイーパより中毒性ある
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNG蛇もそうだが、見た目は <b> の方が良いと自分では思われ。1文字縮むしw
<body><b id=F><script>D=document.all,Z=[],C="□",E="■",S="",W=0;for(i=0;i<100;
i++){S+=(i%10?"":"<br>")+"<span id=F"+i+">□</span>";Z[i]=Z[500+i]=C}Z[53]=Z[54
]=Z[55]=Z[64]=Z[74]=Z[84]=E;I("",S);Y();function J(T){return(T+1)%10>1&&T>9&&T<
89&&Z[W+T]==E}function I(T,H){D["F"+T].innerHTML=H}function Y(){for(i=0;i<100;)
{I(i,X=Z[W+i]);for(j=T=0;j<8;j++)T+=J(i-(j%2?-1:1)*[11,10,9,1][j>>1]);Z[500+i++
-W]=X==E?T<2||T>3?C:X:T==3?E:X}W=500-W;setTimeout(Y,200)}</script>
0816815
NGNG0817815
NGNG<body><b id=F><script>function Y(){for(i=0;i<100;){D["F"+i].innerHTML=X=Z[W+i]
for(j=T=0;j<8;j++){A=i-(j%2?-1:1)*[11,10,9,1][j>>1];T+=(A+1)%10>1&&A>9&&A<89&&Z
[W+A]==E}Z[500-W+i++]=X==E?T<2||T>3?C:X:T-3?X:E}W=500-W;setTimeout(Y,99)}C="□"
S="",Z=[],D=document.all,W=0;for(i=0;i<100;Z[i++]=Z[500+i]=C)S+=(i%10?"":"<br>"
)+"<b id=F"+i+">□</b>";D["F"].innerHTML=S;Z[53]=Z[54]=Z[55]=Z[64]=Z[74]=Z[84]=
E="■";Y()</script>
0818815
NGNG(j=T=0;j<8;j++){A=i-[11,10,9,1,-1,-9,-10,-11][j];T+=(A+1)%10>1&&A>9&&A<89&&Z[W+
A]==E}Z[500-W+i++]=X==E?T<2||T>3?"□":X:T-3?X:E}W=500-W;setTimeout(Y,99)}Z=[];
for(W=i=0;i<100;Z[i++]=Z[500+i]="□")document.write((i%10?"":"<br>")+"<b id=F"+
i+">□</b>");Z[53]=Z[54]=Z[55]=Z[64]=Z[74]=Z[84]=E="■";Y()</script>
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG2行以上あるから、できるかな
0822815
NGNGカーソル●を上下左右で移動、スペースで配置のトグル、リターンで実行です
場の大きさも14×14に広げました(端っこは異常地帯のままですが)
<body onKeyDown=K=event.keyCode><script>function Y(){if(G){for(i=0;i<196;Z[500-
W+i++]=X==E?T<2||T>3?"□":X:T-3?X:E)for(V(i,X=Z[W+i]),j=T=0;j<8;T+=(A+1)%14>1&&
A>13&&A<181&&Z[W+A]==E)A=i-[15,14,13,1,-1,-13,-14,-15][j++];W=500-W;}else{if(K
==13){G=1;}else{if(K==32){Z[P]==E?Z[P]="□":Z[P]=E;}else if(K+1){V(P,Z[P]);P+=[
-1,-14,1,14][K-37];V(P,C);}}K=-1;}setTimeout(Y,199)}function V(L,H){D.all["F"+L
].innerHTML=H}D=document,Z=[];for(G=W=i=0;i<196;Z[i++]=Z[500+i]="□")D.write(i%
14?"":"<br>","<b id=F"+i+">□</b>");E="■";K=-1;V(P=91,C="●");Y()</script>
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNGJPEG圧縮つくろうぜ
0826デフォルトの名無しさん
NGNGJPEG変換は、>>782 さんができているとかいないとか。
0827デフォルトの名無しさん
NGNGGUIだけなら、今までそれなりにあった。
もうちょっと具体的になると、作品を作りやすいかも。
JavaScript でもぐら叩き、ってどですか?(ネタ)
作り始めてみたんですが、難航中。
0828デフォルトの名無しさん
NGNGVzのマクロだと可能だけど(笑)
0829デフォルトの名無しさん
NGNGぜひあぷしてくれ!
0830デフォルトの名無しさん
NGNGVz買ったらテトリスマクロついてくるよ
マスターユーザーならみんな持ってるはず
0831829
NGNGVz持ってないから、しらなかたよ。
調べたらテトリス以外にもいくつかマクロゲームがあたみたいね。
てっきり、>>828 さんが作ったかとおもた。
作成にチャレンジしてみるか・・・
普通に作って10行くらいになれば、きっと縮められる。
0832ネタ
NGNG仕様はお任せします。
0833デフォルトの名無しさん
NGNG掲示板作るだけなら、7行で余裕だよね。その辺がネタ?
0834デフォルトの名無しさん
NGNGimport java.net.*;import java.io.*;class P extends Thread{public void run(){try{
int d;while((d=i.read())!=-1)o.write(d);}catch(Exception e){}}P(InputStream I,
OutputStream O){i=I;o=O;}OutputStream o;InputStream i;public static void main(
final String[]a)throws Exception{new Thread(){public void run(){try{ServerSocket
s=new ServerSocket(8080);for(;;){Socket n=s.accept(),o=new Socket(a[0],Integer.
parseInt(a[1]));new P(o.getInputStream(),n.getOutputStream()).start();new P(n.
getInputStream(),o.getOutputStream()).start();}}catch(Exception e){}}}.start();}}
うがぁ.あと1文字.
プロキシ.
java P host port
0835834
NGNGint d;while((d=i.read())!=-1)o.write(d);i.close();o.close();}catch(Exception e){
}}public static void main(final String[]a)throws Exception{ServerSocket s=new
ServerSocket(8080);for(;;){Socket n=s.accept(),o=new Socket(a[0],Integer.
parseInt(a[1]));new P(o.getInputStream(),n.getOutputStream()).start();new P(n.
getInputStream(),o.getOutputStream()).start();}}P(InputStream I,OutputStream O)
{i=I;o=O;}OutputStream o;InputStream i;}
激しく勘違い.
でけた.どないや.
0837デフォルトの名無しさん
NGNG0838期待あげ
NGNG0839834
NGNGJava なり.
import java.net.*;import java.io.*;class P extends Thread{public void run(){try{
for(int d;(d=i.read())!=-1;)o.write(d);i.close();o.close();}catch(Exception e){}
}P(InputStream I,OutputStream O){i=I;o=O;}public static void main(final String[]
a)throws Exception{ServerSocket s=new ServerSocket(a.length>2?Integer.parseInt(a
[2]):8080);for(;;){Socket n=s.accept(),o=new Socket(a[0],Integer.parseInt(a[1]))
;new P(o.getInputStream(),n.getOutputStream()).start();new P(n.getInputStream(),
o.getOutputStream()).start();}}OutputStream o;InputStream i;}
改良版.
> java P host port [local port]
なり.
0840デフォルトの名無しさん
NGNGFreeBSD 4.3 + Apache 1.3.24 で動作確認。
>>832
こんなもんでいいの?
--- a.cgi ---
#!/usr/bin/perl
print"content-type: text/html\n\n<html><form method='GET' action='a.cgi'>\
<input name=t><br>\n";$s=$ENV{"QUERY_STRING"};open(D,"d");@d=<D>;unless($s
eq""){($x,$a)=split("=",$s);
$a=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;
chomp($a);unless($a eq""){open(X,"date|");$x=<X>;open(D,">data");$x.=$a.
"<br>\n";print D "$x@d";}}print"$x@d";
0841デフォルトの名無しさん
NGNG漏れもちょっとやってみた。データファイルはa。
#!/usr/bin/perl
$_=$ENV{QUERY_STRING};y/&=/\0\0/;s/%(..)/pack H2,$1/eg;s/\n/<br>/g;y/+/ /;s/</
</g;s/>/>/;s/&//g;print"Content-type:text/html\n\n<html><body>";open
O,'>>a';%h=split/\0/;print O"$h{a}\t$h{b}\n"if$_;close O;open I,a;while(<I>){s
/\t|$/<br>/g;s/^/$. 名前:/;print}print"<form>名前<input value='名無しさん'name=
a><br><textarea name=b></textarea><input type=submit></form><br></body></html>"
0842デフォルトの名無しさん
NGNGその昔、WebProg板で開発された物。
#!/usr/bin/perl
%f=map{tr/+/ /;s/%(..)/pack"H2",$1/eg;s/</</g;s/>/>/g;s/"/"/g;$_}
split/[&=]/,$ENV{QUERY_STRING};$f{n}||='名無し';open F,"+<bbs.dat";flock F,2;
@e=<F>;if($f{m}){seek F,0,0;print F @e=("$f{n}:$f{m}<br>\n",@e)[0..99]}
print qq{content-type:text/html\n\n<title>BBS</title><h1>BBS</h1><form
action="bbs.cgi"><p>名前<input name=n value="$f{n}"><br>記事<input name=m
size=50><br><input type=submit></p></form><hr><p>@e</p><hr>};
0843
NGNG7行なんてとても無理です。というわけで16行。
16行なんて邪道だと思いますが、短くできるところがあったら教えてください。
敵の動きの深いループ文を何とかしたいけど・・・
あとルーチン化できると思うけど、できたとしても5行くらいしか短くならないなぁ・・・
#--- packman.pl ---#
$w="#";$d=".";$s=" ";$p="P";$e="E";$o=$w x10;$m=$d x8;$b="$o\n";for($c=1;$c<=8
;$c++){$b="$b$w$m$w\n";}$b="$b$o\n";$y=0;$c=0;$l=12;$lc=19;P:while($b=~
/[$d]+/og){substr($b,$l,1,$p);substr($b,$lc,1,$e);print$b;print"YOU:$y\n";
print"COM:$c\n";substr($b,$l,1,$s);substr($b,$lc,1,$s);$m=<>;chop($m);if($m eq
"1"){$l=$l-1;$i=substr($b,$l,1);if($i eq$w){$l=$l+1;}}elsif($m eq"2"){if($l<=
86){$l=$l+11;}}elsif($m eq"3"){if($l>=20){$l=$l-11;}}elsif($m eq"4"){$l=$l+1;
$i=substr($b,$l,1);if($i eq$w){$l=$l-1;}}elsif($m eq"e"){last P;}$i=substr($b,
$l,1);if($i eq$d){$y=$y+1;}elsif($i eq$e){last P;}$r=int(rand(4));if($r<=2){$v
=$lc-1;$i=substr($b,$v,1);if($i eq$d){$lc=$v;}else{$v=$lc+1;$i=substr($b,$v,1)
;if($i eq$d){$lc=$v;}else{$v=$lc-11;$i=substr($b,$v,1);if($i eq$d){$lc=$v;}
else{$lc=$lc+11;$i=substr($b,$lc,1);if($i ne$d){$lc=$lc-11;$r=3;}}}}}if($r==3)
{$m=int(rand(6));if($m>=4){$lc=$lc-1;$i=substr($b,$lc,1);if($i eq$w){$lc=$lc+2
;}}elsif($m<=3&&$m>=2){if($lc>=86){$lc=$lc-11;}else{$lc=$lc+11;}}elsif($m==1){
if($lc<=19){$lc=$lc+11;}else{$lc=$lc-11;}}elsif($m==0){$lc=$lc+1;$i=substr($b,
$lc,1);if($i eq$w){$lc=$lc-2;}}}$i=substr($b,$lc,1);if($i eq$d){$c=$c+1;}elsif
($i eq$p){last P;}}
########################################
操作方法
1:左、2:下、3:上、4:右、e:終わる
で、敵に当たったら終わり。
########################################
0844デフォルトの名無しさん
NGNG$w="#";$d=".";$s=" ";$o=$w x10;$m=$d x8;$b="$o\n";for($c=0;$c<8;$c++){$b.="$w".
"$m$w\n";}$b.="$o\n";$y=$c=0;P:while($b=~/[$d]+/og){substr($b,$l=12,1,"P");
substr($b,$k=19,1,"E");print$b;print"YOU:$y\n";print"COM:$c\n";substr($b,$l,1,
$s);substr($b,$k,1,$s);$m=<>;chop$m;if($m==1){$i=substr($b,--$l,1);$l++if($i eq
$w);}if($m==2){$l+=11if($l<87);}if($m==3){$l-=11if($l>19);}if($m==4){$i=substr(
$b,++$l,1);$l--if($i eq$w);}last P if($m eq"e");$i=substr($b,$l,1);$y++if($i eq
$d);last P if($i eq"E");$r=int(rand(4));if($r<3){if(substr($b,$v=$k-1,1)eq$d){
$k=$v;}else{if(substr($b,$v=$k+1,1)eq$d){$k=$v;}else{if(substr($b,$v=$k-11,1)eq
$d){$k=$v;}else{if(substr($b,$k+=11,1)ne$d){$k-=11;$r=3;}}}}}if($r==3){$m=int(
rand(6));if($m>=4){$i=substr($b,--$k,1);$k+=2if($i eq$w);}elsif($m<=3&&$m>=2){
if($k>=86){$k-=11;}else{$k+=11;}}elsif($m==1){if($k<=19){$k+=11;}else{$k-=11;}}
elsif($m==0){$i=substr($b,++$k,1);$k-=2if($i eq$w);}}$i=substr($b,$k,1);$c++if(
$i eq$d);last P if($i eq"P");}
0845デフォルトの名無しさん
NGNG$w="#";$d=".";$s=" ";$o=$w x10;$m=$d x8;$b="$o\n";for($c=0;$c<8;$c++){$b.="$w".
"$m$w\n";}$b.="$o\n";$y=$c=0;$l=12;$k=19;P:while($b=~/[$d]+/og){substr($b,$l,1,
"P");substr($b,$k,1,"E");print$b;print"YOU:$y\n";print"COM:$c\n";substr($b,$l,1
,$s);substr($b,$k,1,$s);$m=<>;chop$m;if($m==1){$i=substr($b,--$l,1);$l++if($i
eq$w);}if($m==2){$l+=11if($l<87);}if($m==3){$l-=11if($l>19);}if($m==4){$i=
substr($b,++$l,1);$l--if($i eq$w);}last P if($m eq"e");$i=substr($b,$l,1);$y++
if($i eq$d);last P if($i eq"E");$r=int(rand(4));if($r<3){if(substr($b,$v=$k-1,1
)eq$d){$k=$v;}else{if(substr($b,$v=$k+1,1)eq$d){$k=$v;}else{if(substr($b,$v=$k-
11,1)eq$d){$k=$v;}else{if(substr($b,$k+=11,1)ne$d){$k-=11;$r=3;}}}}}if($r==3){
$m=int(rand(6));if($m>=4){$i=substr($b,--$k,1);$k+=2if($i eq$w);}elsif($m<=3&&
$m>=2){if($k>=86){$k-=11;}else{$k+=11;}}elsif($m==1){if($k<=19){$k+=11;}else{$k
-=11;}}elsif($m==0){$i=substr($b,++$k,1);$k-=2if($i eq$w);}}$i=substr($b,$k,1);
$c++if($i eq$d);last P if($i eq"P");}
0846現在10行
NGNGsub v{substr$b,$_[0],1}sub u{substr$b,$_[0],1,$_[1]}@f=(sub{exit},sub{$i=v--$l;
$l++if"#"eq$i},sub{$l+=11if$l<87},sub{$l-=11if$l>19},sub{$i=v++$l;$l--if"#"eq$i
});$o="#"x10;$m="."x8;$b="$o\n".("#$m#\n"x8)."$o\n";$y=$c=0;$l=12;$k=19;while(
$b=~/[.]+/g){u$l,"P";u$k,"E";print"${b}YOU:$y\nCOM:$c\n";u$l," ";u$k," ";$f[<>%
5]();$i=v$l;$y++if"."eq$i;exit if"E"eq$i;$r=int rand 4;if($r<3){if("."eq v$v=$k
-1){$k=$v}else{if("."eq v$v=$k+1){$k=$v}else{if("."eq v$v=$k-11){$k=$v}else{if(
"."eq v$k+=11){$k-=11;$r=3}}}}}if($r==3){$m=int rand 6;if($m>3){$i=v--$k;$k+=2
if("#"eq$i)}elsif($m>1){if($k>85){$k-=11}else{$k+=11}}elsif($m==1){if($k<20){$k
+=11}else{$k-=11}}elsif($m==0){$i=v++$k;$k-=2if"#"eq$i}}$i=v$k;$c++if"."eq $i;
exit if"P"eq$i}
0847デフォルトの名無しさん
NGNG$w='#';$d='.';$s=' ';$p='P';$e='E';$o=$w x10;$m=$d x8;$b="$o\n".("$w$m$w\n" x8)
."$o\n";$y=$c=0;$l=12;$k=19;while($b=~/[$d]+/){t($l,$p);t($k,$e);print$b."YOU:".
"$y\nCOM:$c\n";t($l,$s);t($k,$s);chop($m=<>);$l+=u(--$l)eq$w if$m==1;$l+=$l<87?
11:0if$m==2;$l-=$l>19?11:0if$m==3;$l-=u(++$l)eq$w if$m==4;exit if$m eq'e';$i=u(
$l);$y++if$i eq$d;exit if$i eq$e;if(int rand 4!=3){if(u($k-1)eq$d){$k--;}elsif(u
($k+1)eq$d){$k++;}elsif(u($k-11)eq$d){$k-=11;}elsif(u($k+11)eq$d){$k+=11;}}else{
$m=int rand 6;$k-=u(++$k)eq$w?2:0if$m==0;$k+=$k<20?11:-11if$m==1;$k+=$k>85?-11:
11if$m==2||$m==3;$k+=u(--$k)eq$w?2:0if$m>=4;}$i=u($k);$c++if$i eq$d;exit if$i eq
$p;}sub u{substr$b,$_[0],1;}sub t{substr$b,$_[0],1,$_[1]}
0848↑文字数間違えた(鬱)
NGNG$w='#';$d='.';$s=' ';$p='P';$e='E';$o=$w x10;$m=$d x8;$b="$o\n".("$w$m$w\n" x8)
."$o\n";$y=$c=0;$l=12;$k=19;while($b=~/[$d]+/){t($l,$p);t($k,$e);print$b."YOU:"
."$y\nCOM:$c\n";t($l,$s);t($k,$s);chop($m=<>);$l+=u(--$l)eq$w if$m==1;$l+=$l<87
?11:0if$m==2;$l-=$l>19?11:0if$m==3;$l-=u(++$l)eq$w if$m==4;exit if$m eq'e';$i=u
($l);$y++if$i eq$d;exit if$i eq$e;if(int rand 4!=3){if(u($k-1)eq$d){$k--;}elsif
(u($k+1)eq$d){$k++;}elsif(u($k-11)eq$d){$k-=11;}elsif(u($k+11)eq$d){$k+=11;}}
else{$m=int rand 6;$k-=u(++$k)eq$w?2:0if$m==0;$k+=$k<20?11:-11if$m==1;$k+=$k>85
?-11:11if$m==2||$m==3;$k+=u(--$k)eq$w?2:0if$m>=4;}$i=u($k);$c++if$i eq$d;exit
if$i eq$p;}sub u{substr$b,$_[0],1;}sub t{substr$b,$_[0],1,$_[1]}
0849846
NGNGあと>>846でしちゃったエンバグも潰した
sub v{substr$b,$_[0],1}sub u{substr$b,$_[0],1,$_[1]}$o="#"x10;$m="."x8;$y=$c=0;
@f=map{eval"sub{$_}"}qw/exit $i=v--$l;$l++if"#"eq$i $l+=11if$l<87 $l-=11if$l>19
$i=v++$l;$l--if"#"eq$i/;$b="$o\n".("#$m#\n"x8)."$o\n";$l=12;$k=19;while($b=~/\.
/x){u$l,"P";u$k,"E";print"${b}YOU:$y\nCOM:$c\n";u$l," ";u$k," ";$f[<>%5]();$i=v
$l;$y++if"."eq$i;exit if"E"eq$i;if((int rand 4)<3and("."eq v$v=$k-1or"."eq v$v=
$k+1or"."eq v$v=$k-11or"."eq v$v=$k+11)){$k=$v;}else{$d=(1,-11,11,11,-1,-1)[int
rand 6];$k+=v($k+$d)eq"#"?-$d:$d;}$i=v$k;$c++if"."eq $i;exit if"P"eq$i}
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNG私も JS にて参加しようかな。
0852846
NGNGでも表示と終了判定のタイミングを変えたので遊びやすくなった。
sub v{substr$b,$v=$_[0],1}sub u{substr$b,$_[0],1,$_[1]}$y=$c=0;$l=12;$k=19;@n=(
-1,11,-11,1,1,-11);$o="#"x10;$m="."x8;$b="$o\n".("#$m#\n"x8)."$o\n";while(){u$l
,"P";u$k,"E";print"${b}YOU:$y\nCOM:$c\n";exit if$l==$k or$b!~/\./;u$l," ";$m=<>
%5;exit if!$m;$l=$v if"#"ne v$l+$n[$m-1];$y++if"."eq v$l;u$k," ";next if$l==$k;
if((int rand 4)<3and("."eq v$k-1or"."eq v$k+1or"."eq v$k-11or"."eq v$k+11)){$k=
$v;}else{$d=$n[int rand 6];$k+=v($k+$d)eq"#"?-$d:$d;}$c++if"."eq v$k;}
0853任意たん
NGNGヘタレなので20byte縮めるのがやっとです。
sub v{substr$b,$v=$_[0],1}sub u{substr$b,$_[0],1,$_[1]}$y=$c=0;$l=12;$k=19;@n=(
-1,11,-11,1,1,-11);$o='#'x10 ."\n";$m='.'x8;$b=$o.("#$m#\n"x8).$o;while(){u$l,
'P';u$k,'E';print"${b}YOU:$y\nCOM:$c\n";exit if$l==$k||$b!~/\./;u$l,' ';$m=<>%5
||exit;$l=$v if'#'ne v$l+$n[$m-1];$y++if'.'eq v$l;u$k,' ';$l==$k&&next;$c++if v
((int rand 4)<3&&('.'eq v$k-1or'.'eq v$k+1or'.'eq v$k-11or'.'eq v$k+11)?($k=$v)
:($k+=v($k+($d=$n[int rand 6]))eq'#'?-$d:$d))eq'.'}
2行目勿体ない。
0854デフォルトの名無しさん
NGNG端から見てるとすごそうだけど、実は全然すごくない罠
by過去参加者
0855デフォルトの名無しさん
NGNG参加者なのに?
わちきは、もう感激だらけですよ。
「もうだめだ縮まらない」ってときにその解法が見える瞬間や、
「ほら」と解を出されたときなんか。
0856デフォルトの名無しさん
NGNGsub v{substr$b,$v=$_[0],1}sub u{substr$b,$_[0],1,$_[1]}sub f{'.'eq v$_[0]}$y=$c
=0;$l=12;$k=19;@n=(-1,11,-11,1,1,-11);$o='#'x10;$m='.'x8;$b="$o\n".("#$m#\n"x8)
."$o\n";while(){u$l,'P';u$k,'E';print"${b}YOU:$y\nCOM:$c\n";exit if$l==$k||$b!
~/\./;u$l,' ';exit if!($m=<>%5);$l=$v if'#'ne v$l+$n[$m-1];$y++if f$l;u$k,' ';
next if$l==$k;$c++if f($k=int rand 4<3&&(f$k-1||f$k+1||f$k-11||f$k+11)?$v:$k+(v
($k+($d=$n[int rand 6]))eq'#'?-$d:$d));}
0857846
NGNGもうやめようっと… ヽ(`Д´)ノ
sub u{@b[$l,$k]=@_}sub v{$b[$v=$_[0]]}sub w{'.'eq&v}$y=$c=0;$l=12;$k=19;@n=(-1,
11,-11,1,1,-11);$o="#"x10 ."\n";$m="."x8;@b=split"",$o.("#$m#\n"x8).$o;while(){
u"P","E";print($b=join("",@b)."YOU:$y\nCOM:$c\n");exit if$l==$k||$b!~/\./;u" ",
" ";$m=<>%5||exit;$y++if'#'ne v($l+$n[$m-1])&&w$l=$v;w($k=int rand 4<3&&(w$k-1
or 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}
0858デフォルトの名無しさん
NGNG#includeでどうしても改行しないといけないから。
あ、そうだ。プログラムを他のファイルに書いて、それをインクルードするってのはどうだ?1行で済むぞ(ワラ
.cファイルをインクルードするのはよくないけど。
0859デフォルトの名無しさん
NGNGインクルードしなくてもいい例は過去に出てるだろ
0860デフォルトの名無しさん
NGNG標準ライブラリを使えないじゃん・・・・
0861デフォルトの名無しさん
NGNG#include 含めると6行以下になってきますが、
その制限によって多言語よりもすごいプログラムが出現するのだと思われ
正直ハフマン符号や、range encoder を6行+1で作る人がいるとは思わなんだ
0862デフォルトの名無しさん
NGNGプロトタイプを自分で書くんだよ。
>>537にある
0863デフォルトの名無しさん
NGNGなるほど。
なんちゅう荒技だ。
荒技を使わないとできないことだろうけど。
0864843
NGNGうわっ!すごいレス。
ちょっとがんばってみたけど、
僕の実力はまだまだこんなものです。
みなさんありがとうございました。
すごく勉強になりました。
0866853
NGNGやっぱりマップを配列にしたのね。同じ事考えてた。
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}
5 行できたよー。
0867デフォルトの名無しさん
NGNGhttp://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;}}
0868デフォルトの名無しさん
NGNG知ってる奴がいたら教えてくれ。
上のソースで「i>4」となっている所って、16バイトの配列の添字に1ビット分しか
使用していないみたいなんだけど、どーして? i>>4 の typo ?
0869857
NGNG試したんだけど自分の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}
0870デフォルトの名無しさん
NGNGsub 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}
0871デフォルトの名無しさん
NGNG$a=$b?$c:-$c; # $bが真のとき $a=$c, $bが偽のとき $a=-$c
こういうロジック部分を1byteでも縮めて書けないですかね?
0872869
NGNGそれだとオリジナルプログラムの意味が違ってきちゃう ヽ(`Д´)ノ
> 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)
0874デフォルトの名無しさん
NGNGそういう局所的な短縮ができる例はあまり無いだろ
0875デフォルトの名無しさん
NGNGPrivate 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バイト。よくあるゲームです。
鬱だ死のう
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNGopen(A,"+<a.log");$a=<A>;++$a;seek(A,0,0);print A $a;
print"Content-type: text/html\n\n";print $a;exit;
もとが短いから
0878デフォルトの名無しさん
NGNG0879853
NGNG操作方法は上のと一緒。
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----
#######################
#..........#..........#
#.###.####.#.####.###.#
#.....................#
#.###.#.#######.#.###.#
#.....#....#....#.....#
#####.#### # ####.#####
#.# #.#
#####.# ####### #.#####
. # # .
#####.# ####### #.#####
#.# #.#
#####.# ####### #.#####
#..........#..........#
#.###.####.#.####.###.#
#...#.............#...#
###.#.#.#######.#.#.###
#.....#....#....#.....#
#.########.#.########.#
#.....................#
#######################
0880853
NGNGhttp://boobar.hoops.ne.jp/pacmaso.tar.gz
まだ余裕あるんで、パワーエサ付けるなり敵のルーチンいぢるなり、
他言語でやるなり、よろ。
0881SYN ◆mMJ0UaoA
NGNG#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]);}
0882デフォルトの名無しさん
NGNG小手先の技で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]);}
0883デフォルトの名無しさん
NGNGおいおい、本当に縮めるつもりがあるのか?
7行になったところを見たいだけちゃうんかと・・・
0885853
NGNGパワーエサ(つうかただの無敵)と上下通り抜け付けて 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
0886デフォルトの名無しさん
NGNG#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]));}
0888デフォルトの名無しさん
NGNG全然ちぢまねえよマジで
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNG0894S
NGNG現在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>
0895S ◆Q14CxNhI
NGNG0896S ◆Q14CxNhI
NGNG遊び方:
リターンキーで1カラムずつ停止、中央を揃えてください
0897S ◆Q14CxNhI
NGNGついでにちょっと縮めました。
<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>
0898デフォルトの名無しさん
NGNG一列目が揃ったけど、結果は「残念」でした。報告。
0899S ◆Q14CxNhI
NGNG現在判定しているのは、真ん中の列だけです。
全列を対象とした方が良いですかね?
0900S ◆Q14CxNhI
NGNGテストプレイのときは、setTimeout(Y,99) を 300 くらいにしてみてください。
0901S ◆Q14CxNhI
NGNG15,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>
0902デフォルトの名無しさん
NGNG>>920の人、このスレの名作をまとめてね
0903デフォルトの名無しさん
NGNG選定に当たっては、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
0904デフォルトの名無しさん
NGNG使い方: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);}
0905853
NGNGhttp://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}
この辺が限界かな?
0906デフォルトの名無しさん
NGNGをを、お疲れ。懐かしいね。
マインスイーパや砂嵐が無いんじゃない?
0907903
NGNGあるいは、投票と考えればよいかな?
0908904
NGNG※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("");}
-------------------------------------------------------------------------------
0909デフォルトの名無しさん
NGNG[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
0910ヨ?リ^
NGNG[ラスタスクロール] >>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
0911デフォルトの名無しさん
NGNG[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
0912デフォルトの名無しさん
NGNG910は新スレ立てるそうです
0913デフォルトの名無しさん
NGNGそれまでに誰かテンプレートまとめて。
0914デフォルトの名無しさん
NGNGありがとう、長くて探すきしなかったけどこれで一発だ。
#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で展開。
外部ライブラリに頼る時点でちょっと弱いかな。
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNG始めのほうのC++のやつが見れん。
だれかコンパイルしたやつくれ〜。
つーかC++なのかも分からん。
とにかく実行してみたい。
お願いします。
_
┌─┴┴─┐
│ 良 ス レ │
└─┬┬─┘
││
゛゛'゛'゛
0918デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1018840143/
0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNG恐れ多く、申し訳ないけど、指摘させてください。。
オセロって先手●では???
0923デフォルトの名無しさん
NGNGttp://www.othello.org/nakaji/lesson/lesson/rulej.html
うむ。
0924デフォルトの名無しさん
NGNG画面を白黒反転すれば解決!w
0925デフォルトの名無しさん
NGNGソースの○●を●○に変えれば解決?
0926デフォルトの名無しさん
NGNGルールを変えれば解決・・・
0927デフォルトの名無しさん
NGNG全組み合わせを探し出し、できれば表示する。
ルール
正方形が5つ集まってできたコマが
12種類(5つの正方形を組み合わせて出きる全通りです)あります。
これを6*10マスに収まるように並べる並べ方をしらべます。
ちなみに組み合わせは全部で2339通りあります。
もちろんコードが短ければ短いほど、前途売りの検出が速ければ速いほど イイ! ってかんじで。
0928デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1018840143/
0929三村
NGNG0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG0934hage
NGNGpart1が良スレ過ぎたので、part2が糞スレに見える。
と、愚痴ってみるテスト。
0936デフォルトの名無しさん
NGNGトリッキーすれも part2 無くして終わったし、さびしいね
7行part3 も作るだけ作ってみれば、ネタはあとから来るんじゃないかな、
と期待してみる
0938936
NGNG同じく。モジュールを集めるのには、必ずしも賛成できません。
DCT や CRC のような単品でも十分実用(あるいは縮めが面白そう)ならばいいけど、
JPEG の全工程をモジュール化しても、それって意味あるのだろうかと。
お前単に長いプログラムを分割して持ってきただけじゃないかと、小一時間・・・
0939デフォルトの名無しさん
NGNG去年の夏頃読んでたんだけど、無くなったのかと思ってた。
0940デフォルトの名無しさん
NGNG旧スレをageるのはどうかと・・・
0941デフォルトの名無しさん
NGNG去年の夏?! ちゃんと続きも読んでおけよ。
七行プログラミング part2
http://pc.2ch.net/test/read.cgi/tech/1018840143/
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNGというわけで、>>1000の人は芸術的な顔を書いて下さい
0946デフォルトの名無しさん
NGNGこれは、芸術ですか? 爆発して、顔がありますが?
0947デフォルトの名無しさん
NGNG1000じゃないからだめーーー
0948デフォルトの名無しさん
NGNGこっちはまたーりと dat 落ちかな
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG良スレが読めなくなっても1000取りしたいかい?
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNG0955プディング ◆sBTiERL2
NGNGバイオとかNECとかのキーボードの上についてるボタンはキーコードを吐き出しますか?
どうも読み取れません。
0956プディング ◆sBTiERL2
NGNG│WinMXツアー. │ ┃ ┃
│(株)プディング. │ ┣━━━━━━━━━━━┫
└───────┤ ┃ ┃
│ ∧ ∧ .┃┏━┓ ┏━┓┃=
│(・∀・) ’ ┗┛●┗━━━━━┛●┗┛
⊂ ∪
___/\__
/ \
| では参りませう! |
\_______/
0957デフォルトの名無しさん
NGNGCheck out.
0958デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1018840143/
0959デフォルトの名無しさん
NGNGといってみただけ
0960デフォルトの名無しさん
NGNG20 print "Baka";
30 goto 20
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG> Part3誕生したけど、激しく荒れ模様
さっき見たら、まともになってきた模様。ソースが出てくると、厨房は口はさめなくなるから...。
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNG0970保守ついで
NGNG同意。
if ( ソースの出が悪い && 休日祭日週末 )
{
printf("厨房を生産します。\n");
make_CHUBO(300); //無駄に使うレス数
}
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。