流石uyさん・・・格が違ったでござる^^;;;
348 :
uy:2012/01/19(木) 18:35:34.73
>>347 >>319はたったの1行で
RubyをLispのように使える
injectとevalを悪用してRubyの関数を呼べるようにしてある
それに引き換え
>>345 これはなんすかwwww
powを自作って
え。。。。?何がしたいの
マジで意味がわからない
そのpoowは普通のpowwwwよりもリファクタリングされてんのそれ?速度速いの?
本当にゴミだな
少しは見習ってほしい
名前欄にuyとあるのは荒らしなので今後はNGネームに指定した。
>>319 これって末尾再帰じゃないよね?
実用しないだろうから問題にはならないけれど、いつかスタックオーバーフローしそう。
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. SEVENPRO.
000003 DATA DIVISION.
000004 WORKING-STORAGE SECTION.
000005 01 HELLO PIC X(12) VALUE "HELLO WORLD!".
000006 PROCEDURE DIVISION.
000007 STOP RUN.
000008*どうしろってんだよ
わざわざ変数宣言しなくてもいいのにww
そりゃだって普通に書いたらDISPLAYで終わっちまうじゃないすか
転
ttps://gist.github.com/1672254 Binary Tetris - 140byt.es
A simplified variant of the classic tetris game done in less that 140 bytes of JavaScript.
Source
function(a,b,c,d,e){return d+=c,
e=a|b<<d,d<0|a&b<<d&&(a=e=
parseInt((a|b<<c).toString(d=32)
.replace(/v/,""),d),b=new Date%2?1:3),
[a,b,d,e]}
NES GameGeineコード<=>アドレス?比較:値 変換。とりあえず8行
#!/usr/bin/perl -p
$G=APZLGITYEOXUKSVN;$H='[0-9A-F]';if(/^[$G]{8}/){for(split(//,$G)){$G{$_}=$i++}
for(split(//)){push(@_,$G{$_})}$_=sprintf("%04X?%02X-%02X\n",($_[3]&7)<<12|($_[
4]&8)<<8|($_[5]&7)<<8|($_[1]&8)<<4|($_[2]&7)<<4|$_[3]&8|$_[4]&7|0x8000,($_[6]&8
)<<4|($_[7]&7)<<4|$_[5]&8|$_[6]&7,($_[0]&8)<<4|($_[1]&7)<<4|$_[0]&7|$_[7]&8)}
elsif(/^($H{4})[?:]($H{2})-($H{2})/i){for(split(//,$G)){push(@G,$_)}($a,$k,$v)=
(hex($1),hex($2),hex($3));@_=($v&7|($v
>>4)&8,($v
>>4)&7|($a
>>4)&8,($a
>>4)&7|8,(
$a
>>12)|$a&8,$a&7|($a
>>8)&8,($a
>>8)&7|$k&8,$k&7|($k
>>4)&8,($k
>>4)&7|$v&8);
$_='';for$a(@_){$_.=$G[$a]};$_.=$/}else{$_=''}
>>355 入出力サンプルもPerl4も無いので動作未確認。Perl5 で -wc は通る。
#!/usr/bin/perl -n
@H=APZLGITYEOXUKSVN=~/./g;$"='';$H='[0-9A-F]{2}';if(/^[@H]{8}/){@G{@H}=(0..16);
push(@_,@G{/./g});printf("%04X?%02X-%02X\n",($_[3]&7)<<12|($_[4]&8)<<8|($_[5]&7
)<<8|($_[1]&8)<<4|($_[2]&7)<<4|$_[3]&8|$_[4]&7|32768,($_[6]&8)<<4|($_[7]&7)<<4|
$_[5]&8|$_[6]&7,($_[0]&8)<<4|($_[1]&7)<<4|$_[0]&7|$_[7]&8)}elsif(/^($H$H)[?:]($
H)-($H)/i){push(@G,@H);$a=hex($1);$k=hex($2);$v=hex($3);print@G[$v&7|($v
>>4)&8,
($v
>>4)&7|($a
>>4)&8,($a
>>4)&7|8,($a
>>12)|$a&8,$a&7|($a
>>8)&8,($a
>>8)&7|$k&8,$k&
7|($k
>>4)&8,($k
>>4)&7|$v&8],$/}
そのコードとやらはどんなフォーマット?
perl4対応: /〜/ の間に改行があるとparse errorになる。@_ に値が含まれている。
fccode.html の結果と比較して、Geanyコード生成の4文字目が違って来ていたので対応。
もちろん perl5 (5.10.1)でも動作確認した。
#!/usr/bin/perl -n
@H=APZLGITYEOXUKSVN=~/./g;$H='[0-9A-F]{2}';if(/^[@H]{8}/){@G{@H}=(0..16);@_=@G{
/./g};printf("%04X?%02X-%02X\n",($_[3]&7)<<12|($_[4]&8)<<8|($_[5]&7)<<8|($_[1]&
8)<<4|($_[2]&7)<<4|$_[3]&8|$_[4]&7|32768,($_[6]&8)<<4|($_[7]&7)<<4|$_[5]&8|$_[6
]&7,($_[0]&8)<<4|($_[1]&7)<<4|$_[0]&7|$_[7]&8)}elsif(/^($H$H)[?:]($H)-($H)/){$a
=hex($1);$k=hex($2);$v=hex($3);print@H[$v&7|($v
>>4)&8,($v
>>4)&7|($a
>>4)&8,($a>>
4)&7|8,($a
>>12)&7|$a&8,$a&7|($a
>>8)&8,($a
>>8)&7|$k&8,$k&7|($k
>>4)&8,($k
>>4)&7|
$v&8],$/}
360 :
デフォルトの名無しさん:2012/03/28(水) 11:12:27.38
FONTX2形式と .hex の変換。
.hex や .bit は
http://openlab.ring.gr.jp/efont/ のビットマップフォントのソースで使われる形式
----------^ fntx2hex.pl ( date:112-03-28 time:11:09 ) ------< cut here
#!/usr/bin/perl
die" file?"if$#ARGV<0;$_=shift;open(_)||die"open? $_";binmode _;read(_,$_,6);$m
=FONTX2;die"$m?"if!/^$m$/;read(_,$_,11);($n,$w,$h,$t)=unpack(A8C3,$_);$b=$h*($w
+7
>>3);$p=$w<9?C:n;sub G{for$e($_[0]..$_[1]){read(_,$_,$b);next if/^\0+$/;$_=
unpack('H*',$_);y/a-f/A-F/;printf"%04X:$_\t# ".pack($p,$e).$/,$e}}print"$w $h
";if($t){read(_,$_,1);for(1..ord){read(_,$_,4);($s,$e)=unpack('v2',$_);push(@S,
$s);$E{$s}=$e}for$s(@S){&G($s,$E{$s})}}else{&G(0,255)}close _
----------$ fntx2hex.pl ( lines:7 ) ------------------------< cut here
----------^ hex2fntx.pl ( date:112-03-28 time:11:10 ) ------< cut here
#!/usr/bin/perl
$_=<>;/^(\d+)\s+(\d+)/;$s=pack(C3,$1,$h=$2,$t=$1>8);$H='[0-9A-F]';while(<>){
$G{hex($1)}=pack('H*',$2)if/^($H{4}):($H+)/}print FONTX2.pack(A8,$ARGV[0]).$s;
if($t){sub V{$_.=pack(v,@_)}for$s(@_=sort(keys(%G))){next if++$p==$s;&V($p-1)if
$p>1;&V($p=$s)}&V($p);print pack(C,length
>>2).$_;for(@_){print$G{$_}}}else{for(
0..255){print$G{$_}||"\0"x$h}}
----------$ hex2fntx.pl ( lines:6 ) ------------------------< cut here
おまけ: hex -> bit
----------^ hex2bit.pl ( date:112-03-28 time:11:14 ) -------< cut here
#!/usr/bin/perl
$_=<>;($pxlsz_x,$pxlsz_y)=/^(\d+)\s+(\d+)/?($1,$2):(16,16);
while(<>){next if!s/:([0-9A-F]+)//;print"$`<<$'";$G=pack('H*',$1);
$width=$pxlsz_x; $line_bytes=($width+7)
>>3;
for($y=0,$p=0;$y<$pxlsz_y;++$y){
$_=unpack('B*',substr($G,$p,$line_bytes));$p+=$line_bytes;
tr/01/.@/;print substr($_,0,$width).$/}
print$/}
----------$ hex2bit.pl ( lines:8 ) -------------------------< cut here
361 :
デフォルトの名無しさん:2012/04/26(木) 08:17:39.23
七行的にperlコードを詰め込むスクリプト。DOS perl4 対応。
#!/usr/bin/perl
$N=80;sub E{s/^((\\$s|[^$s])*$s){$e}[c-x]*//;$T.=$&}sub O{if($c+($l=length$T)>=
$N){print$/;$c=0}elsif($S){print" ";++$l}print$T;$c+=$l;$W=$T=~/\w$/?1:0}while(
<>){last if/^__END__/;if(/^#!/){print;next}s/\s*$//;while(length){last if/^#/;
next if s/^\s+//;$S=0;&O if';'eq$T&&!/^}/;if(s/^;//){$T=$&;next}if(s|^[/"']||){
$T=$s=$&;$e=1;&E}elsif(s@^\$([\d\W/]|\w+|#\w+)@@||s/^[!=]~//||s/^(\W)\1?=?//){
$T=$&}elsif('$'ne$T&&s/^([sym]|tr)([^=}\w\s])//){$e='m'eq$1?1:2;$T=$1.($s=$+);
$T=~s/^tr$/y/;$s=~s/|/\\$&/;&E;$S=$W}else{s/^\w+:?//;$T=$&;$S=$W}&O}}print$/
詰め込みスクリプト修正
/ が // になってしまったり、正規表現かの判定を修正
ファイルテスト演算子 -X の途中で改行しないようにした
#!/usr/bin/perl
$N=80;sub E{s/^((\\$s|[^$s])*$s){$e}[c-x]*//;$T.=$&}sub R{$T&&$T!~/^[\$\d]/}sub
O{if($c+$S+($l=length$T)>=$N){print$/;$c=0}elsif($S){print" ";++$l}print$T;$c+=
$l;$W=$T=~/\w$/}while(<>){last if/^__END__/;if(/^#!/){print;next}s/\s*$//;while
(length){last if/^#/;next if s/^\s+//;$e=1;$S=0;&O if';'eq$T&&!/^}/;if(s/^;//){
$T=$&;next}if(&R&&s!^/!!||s/^["']//){$T=$s=$&;&E}elsif(s@^\$([\d\W/]|#?\w+)@@||
s/^([!=]~|-\w|(\W)\+?=?)//){$T=$&}elsif(&R&&s/^([sym]|tr)(\W)//){$e+='m'ne$1;$T
=$1.($s=$+);$s=~s/|/\\$&/;&E;$S=$W}else{s/^\w+:?//;$T=$&;$S=$W}&O}}print$/
#include<stdio.h> /* 七行正規表現マッチャ ".*^$"のみ対応. */
#define R return /* 再帰降下アルゴリズム自体はカーニハンとパイクのもの */
typedef char*x;typedef int n;char z=0;n m(x r,x t){if(*r==94)R h(r+1,t);do{if(h
(r,t))R 1;}while(*t++-z);R 0;}n h(x r,x t){if(*r==z)R 1;if(r[1]==42)R s(*r,r+2,
t);if(*r==36&&r[1]==z)R*t==z;R*t-z&&(*r==46||*r==*t)?h(r+1,t+1):0;}n s(n c,x r,
x t){do{if(h(r,t))R 1;}while(*t-z&&(*t++==c||c==46));R 0;}n main(n c,x*v){puts(
c-3?"Usage: ./7regex pattern string":(c=m(v[1],v[2]))?"Match":"No match");R!c;}
364 :
363:2012/05/04(金) 03:20:51.76
余計なchar z=0が残ってた。
#include<stdio.h> /* 七行正規表現マッチャ ".*^$"のみ対応. */
#define R return /* 再帰降下アルゴリズム自体はカーニハンとパイクのもの */
typedef char*x;typedef int n;n m(x r,x t){if(*r==94)R h(r+1,t);do{if(h(r,t))R 1
;}while(*t++);R 0;}n h(x r,x t){if(!*r)R 1;if(r[1]==42)R s(*r,r+2,t);if(*r==36
&&!r[1])R!*t;R*t&&(*r==46||*r==*t)?h(r+1,t+1):0;}n s(n c,x r,x t){do{if(h(r,t))
R 1;}while(*t&&(*t++==c||c==46));R 0;}n main(n c,x*v){puts(c-3?"Usage: ./7rege"
"x pattern string\nSupports '.*^$'.":(c=m(v[1],v[2]))?"Match":"No match");R!c;}
365 :
デフォルトの名無しさん:2012/05/28(月) 11:08:44.97
uuencode/uudecode perl4対応。
./uu.pl -e <ファイル名> → 標準出力にエンコード結果
./uu.pl <入力ファイル> → 入力ファイル内で指定のファイル名に出力
#!/usr/bin/perl
if($ARGV[0]eq'-e'){shift;$_=$ARGV[0];printf"begin %o $_\n",((stat)[2]&511||420)
;sub E{$j=64if!$j;print pack('C*',32+$j,@_).$E}$E=$/;$/=undef;for(split(//,<>))
{$d=$d<<8|ord;$i+=8;while($i>5){$c=($d>>($i-=6))&63;$c=64if!$c;push(@_,$c+32)}
next if++$j<45;&E;$j=0;@_=()}$E="\n`\nend\n";&E;exit}while(<>){if(@_){if(/^end/
){close _;chmod@_;@_=();next}$d=0;$i=0;for(split(//,substr($_,1))){$d=$d<<6|((-
32+ord)&63);next if($i+=6)<8;print _ pack(C,$d>>($i-=8))}next}s/\r?\n$//;next
if!/^begin (\d+)/;@_=(eval"0$1",$');open(_,">$'")||die;binmode _}
366 :
デフォルトの名無しさん:2012/06/28(木) 15:39:49.43
IPSパッチ充てる
#!/usr/bin/perl
if($#ARGV!=2){print"Usage: $0 ORG IPS NEW\n";exit}($I,$P,$O)=@ARGV;open P;
binmode P;read(P,$_,5);/^PATCH$/||die;open(I)||die;open(STDOUT,">$O")||die if$O
;binmode I;binmode STDOUT;$S=16384;sub C{if(($l-=tell I)>0){while($l>$S){read(I
,$_,$S);print;$l-=$S}read(I,$_,$l);print}}sub L{read(P,$_,2);$l=unpack(n,$_)}
while(read(P,$_,3)&&!/^EOF$/){$l=unpack(N,"\0$_");&C;if(&L){read(P,$_,$l)}else{
&L;$_=getc(P)x$l}seek(I,length,1);print}$l=-s I;&C;close P;close I
367 :
デフォルトの名無しさん:2012/07/03(火) 15:12:34.44
IPSパッチ充て、改良
* オフセット値が EOF と同値の時でも、動くように eof() で判定
* DOS版Perl4で 長い連長圧縮(RLE)でも正しく出力するように修正
#!/usr/bin/perl
if($#ARGV!=2){print"Usage: $0 ORG IPS NEW\n";exit}($I,$P,$O)=@ARGV;open P;
binmode P;read(P,$_,5);/^PATCH$/||die;open(I)||die;open(STDOUT,">$O")||die if$O
;binmode I;binmode STDOUT;$S=16384;sub C{if(($l-=tell I)>0){while($l>$S){read(I
,$_,$S);print;$l-=$S}read(I,$_,$l);print}}sub L{read(P,$_,2);$l=unpack(n,$_)}
while(read(P,$_,3)&&!eof(P)){$l=unpack(N,"\0$_");&C;if(&L){read(P,$_,$l)}else{&
L;$C=getc(P);$s=$l;while($s>$S){print$C x$S;$s-=$S}$_=$C x$s}seek(I,$l,1);print
}if(!/^EOF$/){print STDERR"not EOF:$_\n"}$l=-s I;&C;close P;close I
perlばかりだな・・・
そもそもの発端がperlだったからねえ
perl 7行でDVDのデコード(?)だっけ。
371 :
デフォルトの名無しさん:2012/07/16(月) 20:47:10.30
標準出力にWAVを吐くプログラム。
.wavファイルにリダイレクトしてお楽しみください。
#include <stdio.h>
#define L (8000*8)
#define F(i) ((i)*(((i)
>>8|(i)
>>16)&((i)
>>1)&((i)<<2)))
main(){int i=0;char*p,b[L];for(p=b;i<L;i++)*p++=F(i);printf("RIFF");for(i=0;i<4
;)putchar((L-8)>>i++*8&255);fwrite("WAVEfmt \x10\0\0\0\1\0\1\0\x40\x1f\0\0"
"\x40\x1f\0\0\1\0\x8\0data",32,1,stdout);for(i=0;i<4;)putchar(L>>i++*8&255);
for(i=0;i<L;)putchar(b[i++]);}
372 :
デフォルトの名無しさん:2012/07/27(金) 13:25:49.95
IPS差分作成
#!/usr/bin/perl
if($#ARGV<1){print"Usage: $0 OLD NEW >IPS\n";exit}($O,$N,$o)=@ARGV;open(O)&&
open(N)||die;binmode O;binmode N;open(STDOUT,">$o")if$o;binmode STDOUT;print
"PATCH";sub P{return if!($l=length);$c=substr($_,0,1);$l=pack('n',$l);$r=$c;$r
=~s/^[.?+*(){}\[\]|\/\\^\$]/\\$&/;print substr(pack(N,$o),1),/^$r{4,}$/?
"\0\0$l$c":"$l$_"}read(O,$a,-s O);read(N,$n,-s N);for($i=0;$i<-s N;++$i){if(
substr($a,$i,1)ne($c=substr($n,$i,1))){$o=$i if!length;$_.=$c;if(($l=length)>=
0xffff){&P;$_=''}}else{&P;$_=''}}&P;print"EOF";close O;close N;close STDERR
IPSファイル・ダンプ
#!/usr/bin/perl
open(STDIN,$_)if$_=pop@ARGV;binmode STDIN;sub G{$i=pop@_;$_='';while($i--){$_.=
getc}$_}sub N{$n=unpack(n,&G(2))}&G(5);if(!/^PATCH$/){print"not IPS\n";exit}
while(!eof(STDIN)){&G(3);last if/^EOF$/;print unpack('H*',$_).' ';if(!&N){&N;
print unpack('H*',getc).' x '.$n.$/;next}print$n,' ',unpack('H*',&G($n)),$/}
373 :
uy:2012/07/29(日) 01:34:56.02
あんまし全体読む気はないけど
{print"not IPS\n";exit} とか
{puts"not IPS";exit} でいいんじゃねえの
あと
>close O;close N;close STDERR
closeしまくってるけど、ショートコーディングにcloseとか必要なの?
あとやたらIF文使ってるけど、そんくらい演算子で書き換えろよ
else使うとかまずありえねーわ
>for($i=0;$i<-s N;++$i){if(
とか
$i=0 って本当にここで0初期化必要だったの?
どこかの適当なメソッドで戻り値0返してる奴あるんじゃねえの?
くだらねーソースあげんなカス
あとさぁ最後に
0xffff は
4**8 だろボケが
374 :
デフォルトの名無しさん:2012/07/31(火) 11:30:57.46
.ips バイナリ差分ファイル作成 改良:
#!/usr/bin/perl
if($#ARGV<1){print"Usage: $0 OLD NEW >IPS\n";exit}($O,$N,$o)=@ARGV;open(O)&&
open(N)||die;binmode O;binmode N;open(STDOUT,">$o")if$o;binmode STDOUT;print
"PATCH";sub P{return if!($l=length);$c=pack('n',$l);print substr(pack(N,$o),1),
$r>3&&$r==$l?"\0\0$c$s":"$c$_";$r=0}read(O,$a,-s O);read(N,$n,-s N);while($i++<
-s N){if(substr($a,$i,1)ne($c=substr($n,$i,1))){$o=$i,$s=$c if!length;$_.=$c;$r
++if$s eq$c;next if($l=length)<65535}&P;$_=''}&P;print"EOF"
puts は C の関数かと。perlの標準には無いみたい。
4**8 = 65536 = 0x10000 なんですけど。。。
綺麗に書きなおしたバージョンとかも見せてくれると未熟な俺も勉強になるんだが
つ Perl::Tidy
初めて来たけどめっちゃ過疎ってるね。4年て
まあ、板自体というかにちゃん自体が過疎ってるからねぇ
みんなどこいってんの?
見守られることも無く
640×360(16:9)か480×360(4:3)
HDなら1280x720にするのが無難
元が1920x1080ならそのままでいいだろ
別に自分から解像度を下げてUPする必要はない
訂正、960x720ね
382 :
デフォルトの名無しさん:2013/05/27(月) 17:27:36.47
保守
383 :
デフォルトの名無しさん:2013/09/04(水) 10:12:02.57
sudo halt
てst
nCr表示、n,rの上限は999999
#include<stdio.h>
#include<stdlib.h>
int r,n,i,a[999999];int main(int c,char**v){if(c>2&&(n=atoi(v[1]))>=(r=atoi(v[2
]))&&r>0)for(--*a;*a<n-r;puts("")){for(c=0>*a;i>0&&a[i]>=n-r+i;)c=i--;for(++a[i
];c&&i+1<r;i++)a[i+1]=a[i]+1;for(c=0;c<r;)printf("%d ",a[c++]);}return 0;}
SJIS/JIS/EUC/UTF8用の改行変換
exec src dst n
nが0ならCR、2ならCR+LF、3ならLF
#include<stdio.h>
FILE*r,*w;int t,d;f(){d=d&&!fprintf(w,"\r\0\r\n"+t);}main(c,v)char**v;{if(c>3&&
(r=fopen(v[1],"rb"))&&(w=fopen(v[2],"wb")))for(t=*v[3]-48;~(c=fgetc(r));)c-13&&
c-10?f(),fputc(c,w):(d&c/6&&f(),d+=c/6);f();r&&fclose(r);return w&&fclose(w);}
ごめん、何言っているのか分からない。
漢字コード(エンコーディング)と改行文字に何の関係があるんだ?
UTF-16
>>386にUTF16対応追加(CPUとエンディアンが違うBOM無しUTF16は非対応)
exec src dst n uでUTF16、u省略なら386互換
#include<stdio.h>
FILE*r,*w;short t,d,e,u,z,x;o(){u?fwrite(&z,1,2,w):fputc(z,w);}f(i){for(i=d?t:1
;d="\r\0\r\n"[i++];o())z=d<<e*u*8;}main(c,v)char**v;{if(c>3&&(r=fopen(v[1],"rb"
))&&(w=fopen(v[2],"wb")))for(u=c>4,t=*v[3]-48;u?fread(&x,1,2,r):~(x=fgetc(r));c
-13&&c-10?f(),o(z=x):(d&c/6&&f(),d+=c/6))c=u?e=e||~x==1,z=e?255&x
>>8|x<<8:x:x;f
();r&&fclose(r);return w&&fclose(w);}
C/C++コメント抽出フィルタ
UTF-16だと動かないけど仕方ないよねw
#include<stdio.h>
char*p,b[999999];int t,s,d;FILE*r;main(c,v)char**v;{if(c>1?r=fopen(v[1],"r"):0)
for(p=b;fgets(p,b-p+999999,r);){for(;c=*p;)*p++*=c-13&&c-10;if(!*b||*--p-92){
for(p=b;c=*p++;)if(t)c-42||*p-47||(puts("*/"),t=!p++),t&&putchar(c);else if(s)s
*=c!=s,c-92||*p&&p++;else switch(c){case 47:if(*p==47)for(puts(p-1);*++p;);t=*p
==42?printf("/*",p++):0;break;case 39:case 34:s=c;}t&&puts(""),p=b;}}return 0;}
>>390の修正版
#include<stdio.h>
char*p,b[999999];int t,s,d;FILE*r;main(c,v)char**v;{if(c>1?r=fopen(v[1],"r"):0)
for(p=b;fgets(p,b-p+999999,r);){for(;*p&&*p-13&&*p-10;)p++;*p=0;if(!*b||*--p-92
){for(p=b;c=*p++;)if(t)c-42||*p-47||(puts("*/"),t=!p++),t&&putchar(c);else if(s
)s*=c!=s,c-92||*p&&p++;else switch(c){case 47:if(*p==47)for(puts(p-1);*++p;);t=
*p==42?printf("/*",p++):0;break;case 39:case 34:s=c;}t&&puts(""),p=b;}}return r
&&fclose(r);}
削ってる途中でバグってたorz
直したら7行目に逝ったので省略してたfcloseを復活
アスペ全開か
消えろカス
394 :
デフォルトの名無しさん:2014/11/21(金) 21:07:08.76 ID:cD0Ytuxe
オセロを作ったので投下。前にあったのより短い
#include <stdio.h>
int b[82],x,X,Y,t,a,i,j,f,p,d[]={-9,-8,1,10,9,8,-1,-10};void C(){a=0;if(b[X]==3
)for(i=8;i--;){for(j=0,Y=X+d[i];b[Y%81]==!t;Y+=d[i])j++;if(j&&b[Y%81]==t)for(;j
--+2;Y-=d[i],a++)f?b[Y]=t:0;}}void main(){ for(X=82;X--;p=b[X]=X%9&&X>8?X-40&&
X-50?X-41&&X-49?3:0:1:2);for(;p;x=f=0){for(X=8;X++<81;printf(" %c","O@\n-"[b[X]
]))C(),a?x=X:0;x?Y=0,t?X=x:scanf("%d%d",&X,&Y),f=X+=Y*9,C(),t=a?p=2,t:!t:(puts(
"PASS"),p--);t=!t;}}
ターン表示ありバージョン
#include <stdio.h>
int b[83],x,X,Y,t,a,i,j,f,p,d[]={-9,-8,1,10,9,8,-1,-10};void C(){a=0;if(b[X]==3
)for(i=8;i--;){for(j=0,Y=X+d[i];b[Y%81]==!t;Y+=d[i])j++;if(j&&b[Y%81]==t)for(;j
--+2;Y-=d[i],a++)f?b[Y]=t:0;}}void main(){for(X=82;X--;p=b[X]=X%9&&X>8?X-40&&X-
50?X-41&&X-49?3:0:1:2);for(;p;x=f=0){b[82]=t;for(X=7;X++<82;printf(" %c",
"O@\n-"[b[X]]))C(),a?x=X:0;x?Y=0,t?X=x:scanf("%d%d",&X,&Y),f=X+=Y*9,C(),t=a?p=2
,t:!t:(puts("PASS"),p--);t=!t;}}
なんて美しくないスレだ
ベーマガの昔から詰め込みプログラミングというのはそういうものだに