算法习题---4-3黑白棋(UVa220)
一:题目
系统提示当前旗手W/B(白/黑)下子,例如W下子,那么W下的位置必须是夹住黑色棋子的位置才可以。
夹住方式:横向、竖向、斜向
注意落子后将夹住的黑棋吞噬变为白棋
(一)题目详解
.棋盘以数组表示,“W”表示白子,“B”表示黑子,“-”表示空格
.棋盘大小8行8列
(二)样例输入
2 //第一行是游戏局数
-------- //开始输入棋盘
--------
--------
---WB---
---BW---
--------
--------
--------
W //棋盘后,直接输入当前旗手
L //L是提示命令,如果当前有位置可以下子,则提示(3,5) (4,6) (5,3) (6,4) <前面是可以走的坐标>,如果没有位置可以走,提示No legal move. 则轮到对方黑棋下子。
M35 //M是下子命令,35表示落子在3行5列,落子后显示当前棋盘剩余棋子数 Black - 1 White - 4
L
Q //Q是退出命令,退出时将当前棋盘数据打印
WWWWB---
WWWB----
WWB-----
WB------
--------
--------
--------
--------
B
L
M25
L
Q
(三)样例输出
(,) (,) (,) (,) //对于L提示命令
Black - White - 4 //对于M35落子命令,提示棋盘当前棋子数
(,) (,) (,) //对于L提示命令
-------- //对于Q退出命令,打印棋盘
--------
----W---
---WW---
---BW---
--------
--------
--------
No legal move.
Black - White -
(,)
WWWWB---
WWWWW---
WWB-----
WB------
--------
--------
--------
--------
二:代码实现
(一)第一版本:400+行,但是解析详细
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> #define N 8 char QP[N+][N+]; //棋盘信息
char player; //旗手信息
char OP; //对手信息 bool Oper[]; //获取操作数据
信息获取和展示
//获取棋盘信息、旗手信息
void getQPInfo()
{
//获取棋盘信息
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
scanf("%c", &QP[i][j]);
getchar();
}
//获取旗手信息、对手信息
scanf("%c", &player);
while (player=='\n')
scanf("%c", &player); player == 'W' ? OP = 'B' : OP = 'W';
getchar();
} //打印棋盘信息
void showQPInfo()
{
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
printf("%c", QP[i][j]);
printf("\n");
}
} //打印可以走的步数
void printDataOper()
{
for (int i = ; i <= ; i++)
if (Oper[i])
printf("(%d,%d) ", i / , i % );
printf("\n");
} //打印棋子数目
void printNumber()
{
int w = , b = ;
for (int i = ; i <= N; i++)
for (int j = ; j <= N; j++)
if (QP[i][j] == 'W')
w++;
else if (QP[i][j] == 'B')
b++; printf("Black - %d White - %d\n", b, w);
} //交换旗手位置
void ExchangePlayer()
{
if (player == 'W')
{
player = 'B';
OP = 'W';
}
else
{
player = 'W';
OP = 'B';
}
}
若是落子后,将夹住的对方棋子同化《版本二简化》
void dealAllOP(int n, int m)
{
//判断四周是否有对手棋子
int x, y; //先判断左上
x = n-, y = m-;
if (x >= && y >= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x >= && y >= )
{
x--;
y--;
}
if (x >= && y >= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n - , y = m - ;
while (x >= && y >= &&QP[x][y]!='-')
{
QP[x][y] = player;
x--;
y--;
}
}
} //再判断上方
x = n-, y = m;
if (x >= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x >= )
{
x--;
}
if (x >= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n - , y = m;
while (x >= && QP[x][y] != '-')
{
QP[x][y] = player;
x--;
}
}
} //再判断右上
x = n - , y = m + ;
if (x >= && y<= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x >= && y <= )
{
x--;
y++;
}
if (x >= && y <= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n - , y = m + ;
while (x >= && y <= && QP[x][y] != '-')
{
QP[x][y] = player;
x--;
y++;
}
}
} //再判断左
y = m - ,x=n;
if (y >= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&y >= )
{
y--;
}
if (y>= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
y = m - , x = n;
while (y >= && QP[x][y] != '-')
{
QP[x][y] = player;
y--;
}
}
} //再判断右
x = n, y = m+;
if (y <= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&y <= )
{
y++;
}
if (y <= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n, y = m + ;
while (y <= && QP[x][y] != '-')
{
QP[x][y] = player;
y++;
}
}
} //再判断左下
x = n + , y = m - ;
if (x <= && y >= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x <= && y >= )
{
x++;
y--;
}
if (x <= && y >= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n + , y = m - ;
while (x <= && y >= && QP[x][y] != '-')
{
QP[x][y] = player;
x++;
y--;
}
}
} //再判断下
x = n + , y = m;
if (x <= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x <= )
{
x++;
}
if (x <= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n + , y = m;
while (x <= && QP[x][y] != '-')
{
QP[x][y] = player;
x++;
}
}
} //再判断右下
x = n + , y = m + ;
if (x <= && y <= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x <= && y <= )
{
x++;
y++;
}
if (x <= && y <= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n + , y = m + ;
while (x <= && y <= && QP[x][y] != '-')
{
QP[x][y] = player;
x++;
y++;
}
}
}
}
判断对方棋子四周8个方向是否可以落子《版本二简化》
bool judgePlayAtSite(int n,int m)
{
bool flag = false;
int x, y; //先判断左上
x = n, y = m;
if ((x - ) >= && (y - ) >= && QP[x - ][y - ] == '-')
{
//可以落子,判断是否合理
while (QP[x][y]==OP&&x<=&&y<=)
{
x++;
y++;
}
if (x <= && y <= &&QP[x][y] == player) //位置合理 落子合理
{
Oper[(n-) * + m-] = true;
flag = true;
}
} //再判断上方
x = n, y = m;
if ((x - ) >= && QP[x - ][y] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP&&x <= )
x++;
if (x <= && QP[x][y] == player) //位置合理 落子合理
{
Oper[(n - ) * + m] = true;
flag = true;
}
} //再判断右上
x = n, y = m;
if ((x - ) >= && (y + ) <= && QP[x - ][y + ] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP&&x <= && y >= )
{
x++;
y--;
}
if (x <= && y >= && QP[x][y] == player) //位置合理 落子合理
{
Oper[(n-) * + m+] = true;
flag = true;
}
} //再判断左
x = n, y = m;
if ((y - ) >= && QP[x][y - ] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP && y <= )
{
y++;
}
if (y <= && QP[x][y] == player) //位置合理 落子合理
{
Oper[n * + m-] = true;
flag = true;
}
} //再判断右
x = n, y = m;
if ((y + ) <= && QP[x][y + ] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP && y >= )
{
y--;
}
if (y >= && QP[x][y] == player) //位置合理 落子合理
{
Oper[n * + m+] = true;
flag = true;
}
} //再判断左下
x = n, y = m;
if ((x + ) <= && (y - ) >= && QP[x + ][y - ] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP&&x >= && y <= )
{
x--;
y++;
}
if (x >= && y <= && QP[x][y] == player) //位置合理 落子合理
{
Oper[(n+) * + m-] = true;
flag = true;
}
} //再判断下
x = n, y = m;
if ((x + ) <= && QP[x + ][y] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP&&x >= )
{
x--;
}
if (x >= && QP[x][y] == player) //位置合理 落子合理
{
Oper[(n+) * + m] = true;
flag = true;
}
} //再判断右下
x = n, y = m;
if ((x + ) <= && (y + ) <= && QP[x + ][y + ] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP&&x >= && y >= )
{
x--;
y--;
}
if (x >= && y >= && QP[x][y] == player) //位置合理 落子合理
{
Oper[(n+) * + m+] = true;
flag = true;
}
} return flag;
}
判断是否当前旗手是否可以落子
bool judgeRunPlayer()
{
//初始化步操作
bool flag = false;
memset(Oper, false, sizeof(Oper)); //循环棋盘,找到对方棋子,判断对方棋子四周是否可以落子
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
{
if (QP[i][j] == OP) //判断四周是否可以落子
if (judgePlayAtSite(i, j))
flag = true;
}
} //如果步数无效,则调换对手
if (flag == false)
ExchangePlayer();
return flag;
}
处理命令
void dealCommand()
{
char comm;
int x, y, temp;
while ()
{
scanf("%c", &comm);
switch (comm)
{
case 'M': //落子
scanf("%d", &temp);
x = temp / ;
y = temp % ;
//开始处理棋盘信息
QP[x][y] = player;
dealAllOP(x, y);
ExchangePlayer();
printNumber(); //输出棋盘棋子数
break;
case 'L': //提示信息
//先判断当前旗手是否可以落子
if (judgeRunPlayer()) //打印数据
printDataOper();
else
printf("No legal move.\n");
break;
case 'Q': //退出游戏、打印棋盘
showQPInfo();
printf("\n");
getchar();
return;
}
getchar();
}
}
主函数
int main()
{
FILE* fp = freopen("data3.in", "r", stdin);
freopen("data3.out", "w", stdout);
int num; scanf("%d", &num);
getchar(); while (num--)
{
getQPInfo();
dealCommand();
} freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
return ;
}
(二)第二版本:200+行,对两处函数进行了修改,含空行和注释
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> #define N 8 char QP[N+][N+]; //棋盘信息
char player; //旗手信息
char OP; //对手信息 bool Oper[]; //获取操作数据 //8个方向 左上、上、右上、左、右、左下、下、右下
int x_dir[] = { -, -, -, , , , , };
int y_dir[] = { -, , , -, , -, , }; //获取棋盘信息、旗手信息
void getQPInfo()
{
//获取棋盘信息
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
scanf("%c", &QP[i][j]);
getchar();
}
//获取旗手信息、对手信息
scanf("%c", &player);
while (player=='\n')
scanf("%c", &player); player == 'W' ? OP = 'B' : OP = 'W';
getchar();
}
//打印棋盘信息
void showQPInfo()
{
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
printf("%c", QP[i][j]);
printf("\n");
}
}
//打印可以走的步数
void printDataOper()
{
for (int i = ; i <= ; i++)
if (Oper[i])
printf("(%d,%d) ", i / , i % );
printf("\n");
}
//打印棋子数目
void printNumber()
{
int w = , b = ;
for (int i = ; i <= N; i++)
for (int j = ; j <= N; j++)
if (QP[i][j] == 'W')
w++;
else if (QP[i][j] == 'B')
b++; printf("Black - %d White - %d\n", b, w);
}
//交换旗手位置
void ExchangePlayer()
{
if (player == 'W')
{
player = 'B';
OP = 'W';
}
else
{
player = 'W';
OP = 'B';
}
}
//判断对方四周是否可以落子
bool judgePlayAtSite(int n, int m)
{
bool flag = false;
int x, y; for (int i = ; i < ; i++) //循环8个方向
{
x = n, y = m;
if ((x + x_dir[i]) >= && (x + x_dir[i]) <= && (y + y_dir[i]) >= && (y + y_dir[i]) <= && QP[x + x_dir[i]][y + y_dir[i]] == '-')
{
//可以落子,判断是否合理
while (QP[x][y] == OP&&x <= && x >= && y <= && y >= )
{
x -= x_dir[i];
y -= y_dir[i];
}
if (x <= && x >= && y <= && y >= && QP[x][y] == player) //位置合理 落子合理
{
Oper[(n + x_dir[i]) * + m + y_dir[i]] = true;
flag = true;
}
}
} return flag;
}
//将当前落子后的棋子夹住的棋子吞噬
void dealAllOP(int n, int m)
{
//判断四周是否有对手棋子
int x, y; for (int i = ; i < ; i++)
{
x = n + x_dir[i], y = m + y_dir[i];
if (x >= && x <= && y >= && y <= && QP[x][y] == OP)
{
//夹住对手
while (QP[x][y] == OP&&x >= && x <= && y >= && y <= )
{
x += x_dir[i];
y += y_dir[i];
}
if (x >= && x <= && y >= && y <= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n + x_dir[i], y = m + y_dir[i];
while (x >= && x <= && y >= && y <= && QP[x][y] != '-')
{
QP[x][y] = player;
x += x_dir[i];
y += y_dir[i];
}
}
}
}
}
//判断是否当前旗手是否可以落子
bool judgeRunPlayer()
{
//初始化步操作
bool flag = false;
memset(Oper, false, sizeof(Oper)); //循环棋盘,找到对方棋子,判断对方棋子四周是否可以落子
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
{
if (QP[i][j] == OP) //判断四周是否可以落子
if (judgePlayAtSite(i, j))
flag = true;
}
} //如果步数无效,则调换对手
if (flag == false)
ExchangePlayer();
return flag;
}
//处理命令
void dealCommand()
{
char comm;
int x, y, temp;
while ()
{
scanf("%c", &comm);
switch (comm)
{
case 'M': //落子
scanf("%d", &temp);
x = temp / ;
y = temp % ;
//开始处理棋盘信息
QP[x][y] = player;
dealAllOP(x, y);
ExchangePlayer();
printNumber(); //输出棋盘棋子数
break;
case 'L': //提示信息
//先判断当前旗手是否可以落子
if (judgeRunPlayer()) //打印数据
printDataOper();
else
printf("No legal move.\n");
break;
case 'Q': //退出游戏、打印棋盘
showQPInfo();
printf("\n");
getchar();
return;
}
getchar();
}
}
//主函数
void main()
{
FILE* fp = freopen("data3.in", "r", stdin);
freopen("data3.out", "w", stdout);
int num;
scanf("%d", &num);
getchar(); while (num--)
{
getQPInfo();
dealCommand();
} freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
}
(三)第三版本:100+行,同网上其他形式,去掉注释,进行空行缩减,语句简写
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 8
char QP[N+][N+]; //棋盘信息
char player; //旗手信息
char OP; //对手信息
bool Oper[]; //获取操作数据
int x_dir[] = { -, -, -, , , , , };
int y_dir[] = { -, , , -, , -, , };
void getQPInfo()
{
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
scanf("%c", &QP[i][j]);
getchar();
}
scanf("%c", &player);
while (player == '\n') scanf("%c", &player);
player == 'W' ? OP = 'B' : OP = 'W';
getchar();
}
void showQPInfo()
{
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
printf("%c", QP[i][j]);
printf("\n");
}
}
void printDataOper()
{
for (int i = ; i <= ; i++)
if (Oper[i]) printf("(%d,%d) ", i / , i % );
printf("\n");
}
void printNumber()
{
int w = , b = ;
for (int i = ; i <= N; i++)
for (int j = ; j <= N; j++)
if (QP[i][j] == 'W') w++;
else if (QP[i][j] == 'B') b++;
printf("Black - %d White - %d\n", b, w);
}
void ExchangePlayer()
{
if (player == 'W') player = 'B', OP = 'W';
else player = 'W', OP = 'B';
}
bool judgePlayAtSite(int n, int m)
{
bool flag = false;
int x, y;
for (int i = ; i < ; i++) //循环8个方向
{
x = n, y = m;
if ((x + x_dir[i]) >= && (x + x_dir[i]) <= && (y + y_dir[i]) >= && (y + y_dir[i]) <= && QP[x + x_dir[i]][y + y_dir[i]] == '-')
{
while (QP[x][y] == OP&&x <= && x >= && y <= && y >= )
x -= x_dir[i],y -= y_dir[i];
if (x <= && x >= && y <= && y >= && QP[x][y] == player) //位置合理 落子合理
Oper[(n + x_dir[i]) * + m + y_dir[i]] = true,flag = true;
}
}
return flag;
}
void dealAllOP(int n, int m)
{
int x, y;
for (int i = ; i < ; i++)
{
x = n + x_dir[i], y = m + y_dir[i];
if (x >= && x <= && y >= && y <= && QP[x][y] == OP)
{
while (QP[x][y] == OP&&x >= && x <= && y >= && y <= )
x += x_dir[i],y += y_dir[i];
if (x >= && x <= && y >= && y <= && QP[x][y] == player) //对面也是自己棋子,成功夹住,可以吞噬
{
x = n + x_dir[i], y = m + y_dir[i];
while (x >= && x <= && y >= && y <= && QP[x][y] != '-')
QP[x][y] = player,x += x_dir[i],y += y_dir[i];
}
}
}
}
bool judgeRunPlayer()
{
bool flag = false;
memset(Oper, false, sizeof(Oper));
for (int i = ; i <= N; i++)
{
for (int j = ; j <= N; j++)
if (QP[i][j] == OP) //判断四周是否可以落子
if (judgePlayAtSite(i, j)) flag = true;
}
if (flag == false) ExchangePlayer();
return flag;
}
void dealCommand()
{
char comm;
int x, y, temp;
while ()
{
scanf("%c", &comm);
switch (comm)
{
case 'M': //落子
scanf("%d", &temp);
x = temp / , y = temp % ;
QP[x][y] = player;
dealAllOP(x, y);
ExchangePlayer();
printNumber(); //输出棋盘棋子数
break;
case 'L': //提示信息
if (judgeRunPlayer()) printDataOper();//打印数据
else printf("No legal move.\n");
break;
case 'Q': //退出游戏、打印棋盘
showQPInfo();
printf("\n");
getchar();
return;
}
getchar();
}
}
void main()
{
FILE* fp = freopen("data3.in", "r", stdin);
freopen("data3.out", "w", stdout);
int num;
scanf("%d", &num);
getchar();
while (num--)
{
getQPInfo();
dealCommand();
}
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
}
没必要看
算法习题---4-3黑白棋(UVa220)的更多相关文章
- 51nod 1368:黑白棋 二分图最大匹配
1368 黑白棋 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 取消关注 有一个N*M的棋盘(1<=N,M< ...
- 用Dart写的黑白棋游戏
2013年11月,Dart语言1.0稳定版SDK发布,普天同庆.从此,网页编程不再纠结了. 在我看来,Dart语法简直就是C#的升级版,太像了.之所以喜欢Ruby的一个重要理由是支持mixin功能,而 ...
- [CareerCup] 8.8 Othello Game 黑白棋游戏
8.8 Othello is played as follows: Each Othello piece is white on one side and black on the other. Wh ...
- 黑白棋游戏 (codevs 2743)题解
[问题描述] 黑白棋游戏的棋盘由4×4方格阵列构成.棋盘的每一方格中放有1枚棋子,共有8枚白棋子和8枚黑棋子.这16枚棋子的每一种放置方案都构成一个游戏状态.在棋盘上拥有1条公共边的2个方格称为相邻方 ...
- bzoj 2281 [Sdoi2011]黑白棋(博弈+组合计数)
黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色 ...
- C#黑白棋制作~
前些天自己复习一下C#语言 做了个黑白棋,望大家看一下,可能有些bug嘿嘿 链接如下 http://files.cnblogs.com/files/flyingjun/%E9%BB%91%E7%99% ...
- 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
Description 黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是 ...
- [SDOI2011]黑白棋
Description 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 ...
- C++ 黑白棋AI minimax+alphabeta剪枝
没事写着玩玩,通过debian上的黑白棋测试,搜了10层,打hard应该问题不大 #include <cstdio> #include <cstring> using name ...
- 【算法习题】数组中任意2个(3个)数的和为sum的组合
题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...
随机推荐
- 使用redis事物解决stringRedisTemplate.setIfAbsent()并设置过期时间遇到的问题
spring-date-redis版本:1.6.2场景:在使用setIfAbsent(key,value)时,想对key设置一个过期时间,同时需要用到setIfAbsent的返回值来指定之后的流程,所 ...
- linux网络编程之system v信号量(二)
今天迎来元旦假期的最后一天了,过得好快~昨天跟小伙伴们在军都滑雪陪儿爽,虽说上了两回中级道都摔得异常的惨烈,但是在初级道上学习"s"转弯还是有一些小心得,可以在要往高手迈进的前提, ...
- eclipse中JDK环境的搭建
现在就可以用记事本开发java程序了,但是eclipse是一款java开发不可缺少的IDE,并且安装简单,下面说一下步骤,首先下载eclipse, 官网下载链接:http://www.eclipse. ...
- Selenium(十四)处理登录框的验证码
对于 web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测 ...
- grafna如何用新的dashbord覆盖旧的dashbord
方式一.import一个和之前不一样的名字,然后删除旧的方式二.浏览器json页面复制粘贴,覆盖旧的dashbord 1.记录旧dashbord的var参数,从旧dashbord的json页面复制全部 ...
- 使用jQuery快速高效制作网页交互特效---JavaScript对象及初始面向对象
一.JavaScript中的基本数据类型 number(数值类型) string(字符串类型) boolean(布尔类型) null(空类型) undefined(未定义类型) ...
- Python-sokect 示例
server: #coding=utf-8 import socket _sokect =socket.socket() #创建sokect _host =socket.gethostname() # ...
- 学习了武沛齐讲的Day10-完
int 整形 int 将字符串转换为数字 x.bit_length() ===== 当前数字的二进制,至少用n位表示 str 字符串 x.capitalize()== ...
- mongodb mongod.lock文件及oplog文件
在mongodb的启动时,在数据目录下,会生成一个mongod.lock文件.如果在正常退出时,会清除这个mongod.lock文件,若要是异常退出,在下次启动的时候,会禁止启动,从而保留一份干净的一 ...
- RS-232串口通信简介
1969年,美国电子工业协会将RS-232定为串行通信接口的电器标准,该标准定义了数据终端设备DTE(Date Teriminal Equipment)与数据通信设备DCE(Data Communic ...