LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: KornLee

考考你?[关于数组]

[复制链接]
 楼主| 发表于 2003-9-10 23:23:36 | 显示全部楼层
最初由 wanglej 发表
perl只用几行就够了

如方便,贴出来 ;)
也好让兄弟们学习,OK?!
 楼主| 发表于 2003-9-10 23:52:06 | 显示全部楼层
呵呵~~~,有人的话离题啦~~~:beat(玩笑)

再出道题目:
将汉字人名按拼音顺序排序?(a-z)如:
文件aaa有如下内容(任意):
请把 是 而 发 人 个的 要 他 欧是 片 爱 是 的 发 个 没是发发 那 从
排序成:
爱 从 的 而 发 发 个 个的 没是发发 那 欧是 片 请把 人 是 是 他 要

这题我暂时不公布答案啦~~~ ;)
发表于 2003-9-11 14:34:57 | 显示全部楼层

不好意思,我才做好第一道:)

#!/usr/bin/perl
@no1=('aa', 'bb', 'cc');
@no2=('de', 'aa', 'ab', 'cd', 'cc', 'dd');
%seen=();
foreach (@no1) {
$seen{$_}=1;
}
@inter=grep($seen{$_}, @no2);
print "Same is: @inter\n";

%seen=();
foreach (@no2) {
$seen{$_}=1;
}
@diff=grep(! $seen{$_}, @no1);
print "@diff\n";
 楼主| 发表于 2003-9-11 15:35:53 | 显示全部楼层

回复: 不好意思,我才做好第一道:)

最初由 seablue 发表
............
print "@diff\n";

不错!;)
发表于 2003-9-11 19:32:50 | 显示全部楼层
哈哈,开始用 perl 了,我也用 python

  1. $ cat comparray.py
  2. #!/usr/bin/env python
  3. a=('a', 'b', 'c', 'd', 'e')
  4. b=('a', 'f', 'c', 'g', 'w', 'e')
  5. print 'a:', a
  6. print 'b:', b
  7. print '两个数组相同的元素是:'
  8. for i in filter(lambda x: x in a, b):
  9.     print i,
  10. print
  11. print '数组a中存在而数组b中不存在的元素是:'
  12. for i in filter(lambda x: x not in b, a):
  13.     print i,
  14. print
  15. $ chmod +x comparray.py
  16. $ ./comparray.py
  17. a: ('a', 'b', 'c', 'd', 'e')
  18. b: ('a', 'f', 'c', 'g', 'w', 'e')
  19. 两个数组相同的元素是:
  20. a c e
  21. 数组a中存在而数组b中不存在的元素是:
  22. b d
复制代码
 楼主| 发表于 2003-9-11 19:54:19 | 显示全部楼层
idkey兄果然厉害 :2cool
第二题感觉如何? :cool:应该难度不大吧~~,
发表于 2003-9-11 20:18:28 | 显示全部楼层

你们用什么语言写的

为什么不用c啊?
发表于 2003-9-11 20:54:48 | 显示全部楼层
有什么厉害的,只不过刚好会点 shell 和 python 而已,小打小闹可以,再高级一点的就不会了。

  1. $ cat aaa
  2. 是 而 发 人 个的 要 他 欧是 片 爱 是 的 发 个 没是发发 那 从
  3. $ cat cnsort.py
  4. #!/usr/bin/env python
  5. cn = open('aaa').read().split()
  6. cn.sort()
  7. for i in cn: print i,
  8. $ chmod +x cnsort.py
  9. $ ./cnsort.py
  10. 爱 从 的 而 发 发 个 个的 没是发发 那 欧是 片 人 是 是 他 要
复制代码
发表于 2003-9-11 21:00:59 | 显示全部楼层
$ cat aaa
是 而 发 人 个的 要 他 欧是 片 爱 是 的 发 个 没是发发 那 从
$ echo `cat aaa | tr ' ' '\n' | LC_ALL=C sort`
爱 从 的 而 发 发 个 个的 没是发发 那 欧是 片 人 是 是 他 要
 楼主| 发表于 2003-9-11 23:04:19 | 显示全部楼层
呵呵~~,我是这样解决的,烦琐些!
  1. [/home/javalee/myshell]cat bjc
  2. #!/bin/ksh
  3. set -A arg 请把 是 而 发 人 个的 要 他 欧是 片 爱 是 的 发 个 没是发发 那 从
  4. echo oldarg: ${arg[*]}
  5. newarg=$(for i in ${arg[*]};do
  6. echo -n "$i=";echo $i|od -c|awk '{print $2}'
  7. done|sort -n -t"=" -k 2|cut -f1 -d=|tr '\n' ' ')
  8. echo newarg:$newarg
  9. [/home/javalee/myshell]bjc
  10. oldarg: 请把 是 而 发 人 个的 要 他 欧是 片 爱 是 的 发 个 没是发发 那 从
  11. newarg: 爱 从 的 而 发 发 个 个的 没是发发 那 欧是 片 请把 人 是 是 他 要
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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