免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

ChinaUnix技术实践之四----Shell编程大赛! [复制链接]

论坛徽章:
0
81 [报告]
发表于 2011-05-26 22:22 |只看该作者
最后一题如果用shell的话肯定慢得很,大家可以看附件里的规则,或这里
[quote]http://www.itiyu.com/project/chess/331/rule.htm
[/quote],如果我没算错的话,所有可能的禁手共有165种,每种禁手要判断的点都在10个以上,而且禁手在棋盘中的位置不定,简单点,算160个,那么每一步的计算量就是:165*10*160=264000,即使算法再好,用shell也快不起来
gobang.zip (27.82 KB, 下载次数: 62)

论坛徽章:
0
82 [报告]
发表于 2011-05-26 22:42 |只看该作者
占个位置

论坛徽章:
1
2015年亚洲杯之巴勒斯坦
日期:2015-03-12 11:11:33
83 [报告]
发表于 2011-05-27 13:01 |只看该作者
1.# ls -d */
只会一个

论坛徽章:
0
84 [报告]
发表于 2011-05-27 17:29 |只看该作者
只为瞻仰大牛而来。火速围观

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
85 [报告]
发表于 2011-05-29 15:14 |只看该作者
本帖最后由 hq8318 于 2011-05-31 22:49 编辑

先做几题,其它再补上。

问题1:
用最简洁的命令列出当前目录下的一级子目录,可以不包含隐藏目录(目录名以.开头的目录)

1) ls -l | grep ^d
2) echo */
3) ls -F | grep /
4)ls -l |grep ^d |awk '{printf $8"\t"}'
5)ls -l | awk '/^d/{print $8}'
大家给出了很多种做法,总结一下大概有以上5种,1~3会在目录名后有个“/”;4~5长些,无“/”,命令中'$8'看情况,有时是'$9'。
增加简略通用的一种:
6)ls -l | awk '/^d/{print $NF}'

问题2:
GNU sed 提供了-i选项,为什么有人说sed -i 并不象 ed 一样真正的编辑文件?(提示:观察文件改变前后的inode)

根据测试,sed -i处理文件,inode有变化,而ed不会,所以sed -i并不是编辑原文件的。

问题3:
用shell写一个cgi脚本,提供一个简单的webmail介面,将本地的一个文件通过web服务器发送到指定的邮箱


问题4:
awk -F'' 与 awk -F '' 一样吗?

不一样。awk -F''会被shell当作awk -F,故报错;awk -F '' 被认为分隔符是'',作用成为:无分隔符,输出第一个字符。

问题5:
这条语句有什么作用?
sed -if /script/scr.sedcc test.txt

  “-if”与“-i -f”不同,“-if”是插入并备份。语句可分成两部分,“sed -i /script/”匹配"script"字符串,插入后面的内容;“scr.sedcc”s是替换命令,后面c是分隔符,相当于s/r.sed//,“.”是元字符--除换行外任意字符。
  整条语句相当于“sed -if /script/s/r.sed// test.txt”,备份文件,加上f后缀:test.txtf;查找有"script"字符串的一行,将“r.sed”删除。

问题6:
#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"
是如何执行的?与"#!/usr/local/bin/tclsh"相比,它有什么优点?

第一行说明用sh解析执行脚本;第二行是注释,跳过;第三行指明用tclsh重新解析脚本:第二行末有“\”, 所以三行都是注释,变成脚本后面的内容由tclsh解析。

问题7:
#!/bin/sed -f"  shebang 后可有其它字符吗?为什么?

不可以,有其它字符,会当成文件名。

问题8:
GNU awk的$1=$1到底有什么作用?$0=$0呢?

测试如下:(awk的分隔符缺省是空格)
sh-3.00# v='1 2 3:a:b:c'
sh-3.00# echo $v|awk '{FS=":";print $1,NF}'
1 3
sh-3.00# echo $v|awk '{FS=":";$0=$0;print $1,NF}'
1 2 3 4
sh-3.00# echo $v|awk '{OFS=":";print $0,NF}'
1 2 3:a:b:c:3
sh-3.00# echo $v|awk '{OFS=":";$1=$1;print $0,NF}'
1:2:3:a:b:c:3
可以看到,
$1=$1使输出分隔符OFS起作用,而NF不变;$0=$0则对分隔符FS起作用,并且NF改变。

问题9:
写一个shell脚本,输出CU现有的版面和相应版主,并统计有多少个版面及多少个版主。


问题10:
人机五子棋。原始规则(无禁手),最好加上标准规则,三手交换(即黑下第二手之后白可以提出交换),五手两打,黑三三禁手,黑四四禁手,黑长连禁手(超过5个子相连),逢五无禁手。白无禁手,长连也算胜。关键在于人机对下。

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
86 [报告]
发表于 2011-05-30 00:12 |只看该作者
先做几题,其它再补上。

问题1:
用最简洁的命令列出当前目录下的一级子目录,可以不包含隐藏目录(目录 ...
hq8318 发表于 2011-05-29 15:14



   

继续加油!

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
87 [报告]
发表于 2011-05-30 00:12 |只看该作者
最后一题如果用shell的话肯定慢得很,大家可以看附件里的规则,或这里
,如果我没算错的话,所有可能 ...
demornov 发表于 2011-05-26 22:22 [/quote]


论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
88 [报告]
发表于 2011-05-30 11:27 |只看该作者
不要简单地回答对或错,最好解释一下为什么。

论坛徽章:
0
89 [报告]
发表于 2011-05-30 14:17 |只看该作者
我就不参与了,跟大家学习学习~~第一层都没练成~

论坛徽章:
0
90 [报告]
发表于 2011-05-30 14:58 |只看该作者
waker
Shell_HAT
cjaizss
blackold

每个大赛评委团成员都应发个第十题的答案 要不没资格做评审
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP