LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2777|回复: 21

请一位象棋爱好者来用awk和sed与我对弈

[复制链接]
发表于 2008-5-3 01:15:07 | 显示全部楼层 |阅读模式
车马象仕将仕象马车
+++++++++
+泡+++++泡+
卒+卒+卒+卒+卒
+++++++++
楚河        汉界
+++++++++
兵+兵+兵+兵+兵
+炮+++++炮+
+++++++++
車馬相士帅士相馬車

对弈方法:各自在终端上用sed或awk对棋盘文件作试验, 在贴子中要先写出sed或awk表达式,每个表达式的式样都不能重复!并把表达式运行后的棋盘贴出来,无sed或awk表达式出招无效。
 楼主| 发表于 2008-5-3 03:14:15 | 显示全部楼层
我先来, 我选上方:
sed -e 's/马/+/' -e '/泡/s/+/马/2'

车+象仕将仕象马车
+++++++++
+泡马++++泡+
卒+卒+卒+卒+卒
+++++++++
楚河     汉界
+++++++++
兵+兵+兵+兵+兵
+炮+++++炮+
+++++++++
車馬相士帅士相馬車
回复 支持 反对

使用道具 举报

发表于 2008-5-3 11:22:24 | 显示全部楼层
Post by coxswain;1845041
车马象仕将仕象马车
+++++++++
+泡+++++泡+
+++++++++
卒+卒+卒+卒+卒
+++++++++
楚河        汉界
+++++++++
兵+兵+兵+兵+兵
+++++++++
+炮+++++炮+
+++++++++
車馬相士帅士相馬車

对弈方法:各自在终端上用sed或awk对棋盘文件作试验, 在贴子中要先写出sed或awk表达式,每个表达式的式样都不能重复!并把表达式运行后的棋盘贴出来,无sed或awk表达式出招无效。


lz 你太……
每个表达式的式样都不能重复,有些难呀,哈哈
让我想到了 perl 里那个著名的问题: 用不同的方法实现 $a + 1
最简单的一个表达式你又用了,本想和你走一步,现在还不会了,哈哈,等哪天我想到的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-3 12:29:05 | 显示全部楼层
Post by whitelilis;1845129
lz 你太……
每个表达式的式样都不能重复,有些难呀,哈哈
让我想到了 perl 里那个著名的问题: 用不同的方法实现 $a + 1
最简单的一个表达式你又用了,本想和你走一步,现在还不会了,哈哈,等哪天我想到的

我自己都觉得此贴似乎有点无聊,@^@。。。。。。。
连棋盘都打错了,哈哈。。。。。改过来了啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-3 14:13:56 | 显示全部楼层
鉴于汉字编码情况复杂,在各种终端显示效果不同,不便于使用命令,所以将棋盘修改了一下,除了  sed和awk 以外,也可以用其它的bash命令。
sed -e 's/y/+/' -e '/c/s/+/y/2'

z+xwkwxyz
+++++++++
+cy++++c+
a+a+a+a+a
+++++++++

+++++++++
2+2+2+2+2
+3+++++3+
+++++++++
987656789
回复 支持 反对

使用道具 举报

发表于 2008-5-3 16:26:40 | 显示全部楼层
Post by coxswain;1845198
鉴于汉字编码情况复杂,在各种终端显示效果不同,不便于使用命令,所以将棋盘修改了一下,除了  sed和awk 以外,也可以用其它的bash命令。
sed -e 's/y/+/' -e '/c/s/+/y/2'

z+xwkwxyz
+++++++++
+cy++++c+
a+a+a+a+a
+++++++++

+++++++++
2+2+2+2+2
+3+++++3+
+++++++++
987656789
haha,我是菜鸟,写的很繁~

sed 's/\(.\)/\1 /g' xiangqi | awk '{if ( NR==7 ) {print $1 $2 2 $4 $5 $6 $7 $8 $9} else if (NR==8) {print $1 $2 "+" $4 $5 $6 $7 $8 $9} else {print $1 $2 $3 $4 $5 $6 $7 $8 $9} }'


z+xwkwxyz
+++++++++
+cy++++c+
a+a+a+a+a
+++++++++

++2++++++
2+++2+2+2
+3+++++3+
+++++++++
987656789
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-3 16:42:38 | 显示全部楼层
简化一下好吗,要是这么繁琐就没意思了,限制在30个字符以内。
回复 支持 反对

使用道具 举报

发表于 2008-5-3 21:46:48 | 显示全部楼层
都是高手啊:)
回复 支持 反对

使用道具 举报

发表于 2008-5-5 13:48:46 | 显示全部楼层
泡改一下吧,应该是炮,其他怎么写我没意见
回复 支持 反对

使用道具 举报

发表于 2008-5-5 14:06:00 | 显示全部楼层
lz太牛了,呵呵,不过建议还是不要写成xyz 123的形式,还是用汉字比较直观,
编码的问题应该没关系吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表