素晴らしいものだぞ
(●3○) エェー
3 :
デフォルトの名無しさん:04/06/23 17:37
>>1は2進数だけで作成されたデータです。
まだ未完成なので放置してください。
中島&松島?
そういえばオセロチャンピオンがスパコンとやってまったく歯が立たなかった
ときの一言
オセロチャンピオン「神のような強さだった!」
6 :
デフォルトの名無しさん:04/06/23 17:45
オセロは2進数で出来ています。
●=0
○=1
>>1 オリバーパーカーとオーソンウェルズのどっちに近いのをつくるのかね?
>>5 枝刈りとかケチな事言わずに
全手検索くらいしそうだもんな。
終末まで予見するのは神かも試練。
10 :
デフォルトの名無しさん:04/06/23 18:11
This is kusosure!!
●●○○●
●○○●●
●●○○●
○●○●○
●●○○●
11でも10101010でもすきなのをどうぞ。
>>6には1ビットとは書いてない。
オセロ板のデータ構造はどうするんだ。
状態は3つか。 白、黒、空。
>>14 もう一つ、盤面外というのもあった方がいいかも。
はみ出るの
('A`)(゚∀゚)
(゚∀゚)('A`)
----------------------------
('A`)(゚∀゚)
(゚∀゚)('A`)(゚∀゚)
----------------------------
('A`)(゚∀゚)
('A`)('A`)('A`)
>16
4444444444
4000000004
4000000004
4000000004
4000210004
4000120004
4000000004
4000000004
4000000004
4444444444
とかすると挟む判定がやりやすいのだ
>>18 その都度判断するのはめんどくさいんで、テーブルでやるのが良し。
15年ほど前、森田オセロのソースコードが書籍になったことがあったな。
http://pc.2ch.net/tech/kako/984/984182993.html 337 名前:トリッキーの1 投稿日:2001/08/21(火) 23:55
面白い題材が上がっていたので復帰します(笑) 7行オセロ、人間対無能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;}
もはやインデントを揃えた位では元のコードが読めなくなってしまっていますが、
もしコメント付き変数名まとものバージョンを欲しい方がいれば上げます。
338 名前:トリッキーの1投稿日:2001/08/21(火) 23:58
人間の入力は、「X軸 Y軸」と半角で入力します。
置けない場所を指定した場合は再度入力してください。
X=55などの変な入力をチェックしていないので、即クラッシュします。
両者置けなくなったらプログラム終了です。自分で数えてください。
もっとも、このコンピュータは激弱ですので負けようがないとおもいますが(笑
22 :
デフォルトの名無しさん:04/07/08 19:38
#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;
}