LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 03-09-09, 01:05 第 1 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

标题: 考考你?^_^


现有两个数组a,b
a的内容为:a b c d e
b的内容为:a f c g w e
问题:
1,比较两个数组中都存在的元素?
2,找出a中有而b中没有的?
  KornLee 当前离线   回复时引用此帖
旧 03-09-09, 11:53 第 2 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

我先来吧~~
代码:
[/home/javalee/myshell]cat bj #!/bin/ksh # # set -A arg1 a b c d e set -A arg2 a f c g w e echo "数组arg1:"${arg1[*]}"\t":"个数":${#arg1[*]}"\n""数组arg2:"${arg2[*]}"\t":"个数":${#arg2[*]} for i in ${arg1[*]};do for j in ${arg2[*]};do echo $i $j done done>a$$ echo "两个数组相同的元素是:" same=$(awk '$1==$2 {print $1}' a$$) echo $same diff=$(awk '$1 != $2 {print $1}' a$$|uniq -d ) echo "数组a中存在而数组b中不存在的元素是:" echo $same $diff|tr ' ' '\n'|sort|uniq -u|tr '\n' ' ' echo "\n" rm a$$ [/home/javalee/myshell]bj 数组arg1:a b c d e :个数:5 数组arg2:a f c g w e :个数:6 两个数组相同的元素是: a c e 数组a中存在而数组b中不存在的元素是: b d [/home/javalee/myshell]
我的方法效率忒低下:(,希望兄弟们把你们写的帖出来,多多交流!
修改了一下,把生成两个临时文件改成一个啦,(那个多余:(),这样就不用那个tee,我想要比原来的要好些吧~~~

此帖于 03-09-09 18:44 被 KornLee 编辑.
  KornLee 当前离线   回复时引用此帖
旧 03-09-09, 14:47 第 3 帖
ravingboy
 
ravingboy 的头像
 
 
注册会员  
  注册日期: Apr 2003
  我的住址: SDU
  帖子: 52
  精华: 0
 

版主答案公布的太快了,大家还都没弄呢~~(虽然我不会~~呵呵)
  ravingboy 当前离线   回复时引用此帖
旧 03-09-09, 17:41 第 4 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 ravingboy 发表
版主答案公布的太快了,大家还都没弄呢~~(虽然我不会~~呵呵)
抛砖引玉嘛~~
  KornLee 当前离线   回复时引用此帖
旧 03-09-10, 09:06 第 5 帖
seazon
 
seazon 的头像
 
 
注册会员  
  注册日期: Jul 2003
  我的住址: 上海
  帖子: 78
  精华: 1
 

版主的源码中怎么有中文啊,如果要在shell 中输入,应该怎么做呢?







__________________
努力的小鸟一定能翱翔在浩瀚的天空。

相信自己,努力奋斗,一定能到达成功的颠峰!
  seazon 当前离线   回复时引用此帖
旧 03-09-10, 14:31 第 6 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 seazon 发表
版主的源码中怎么有中文啊,如果要在shell 中输入,应该怎么做呢?
在X下直接就可以输入的呀,如果是文本模式下就装个zhcon.(我的E文太差所以...)
  KornLee 当前离线   回复时引用此帖
旧 03-09-10, 15:42 第 7 帖
seazon
 
seazon 的头像
 
 
注册会员  
  注册日期: Jul 2003
  我的住址: 上海
  帖子: 78
  精华: 1
 

引用:
最初由 javalee 发表
在X下直接就可以输入的呀,如果是文本模式下就装个zhcon.(我的E文太差所以...)
版主啊!既然你提到zhcon,我有个问题,为什么我编译好后,系统会告诉我在某个位置少了几个文件(具体的我已经记不清了),不知道应该怎么解决啊!
  seazon 当前离线   回复时引用此帖
旧 03-09-10, 15:46 第 8 帖
lucida
 
 
 
注册会员  
  注册日期: Oct 2002
  我的住址: .:DRL:.
  帖子: 2,492
  精华: 9
 

我想出来的方法是sort之后写入文件,然后用diff
最后分析diff的结果
可能效率还要低下吧。呵呵







__________________
E6300@3.2G/P5B-D WiFi/2G RAM/1TB HDD/3540A/7900GT/E-MU 0404
Logitech S 510/MX Revolution/2407WFP/LaserJet 1020
go wild, go Gentoo
  lucida 当前离线   回复时引用此帖
旧 03-09-10, 16:31 第 9 帖
idkey
 
idkey 的头像
 
 
注册会员  
  注册日期: Sep 2002
  帖子: 366
  精华: 1
 

引用:
最初由 seazon 发表
版主啊!既然你提到zhcon,我有个问题,为什么我编译好后,系统会告诉我在某个位置少了几个文件(具体的我已经记不清了),不知道应该怎么解决啊!
恐怕是说少库文件吧!?象 libxxx.so.1这样的。如果是,首先确保你已经把文件安装到了正确的位置:用源码编译的话就是最后要以 root 身份执行 make install;其次,要确保更新了库文件记录的 cache:用 root 身份执行 /sbin/ldconfig。这样应该就可以了。
  idkey 当前离线   回复时引用此帖
旧 03-09-10, 20:22 第 10 帖
wanglej
 
 
 
注册会员  
  注册日期: Feb 2003
  帖子: 123
  精华: 0
 

perl只用几行就够了
  wanglej 当前离线   回复时引用此帖
旧 03-09-10, 23:23 第 11 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 wanglej 发表
perl只用几行就够了
如方便,贴出来
也好让兄弟们学习,OK?!
  KornLee 当前离线   回复时引用此帖
旧 03-09-10, 23:52 第 12 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

呵呵~~~,有人的话离题啦~~~(玩笑)

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

这题我暂时不公布答案啦~~~

此帖于 03-09-11 01:48 被 KornLee 编辑.
  KornLee 当前离线   回复时引用此帖
旧 03-09-11, 14:34 第 13 帖
seablue
 
seablue 的头像
 
 
注册会员  
  注册日期: Apr 2003
  我的住址: 银河系
  帖子: 999
  精华: 3
 

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


#!/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";
  seablue 当前离线   回复时引用此帖
旧 03-09-11, 15:35 第 14 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

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


引用:
最初由 seablue 发表
............
print "@diff\n"; [/b]
不错!
  KornLee 当前离线   回复时引用此帖
旧 03-09-11, 19:32 第 15 帖
idkey
 
idkey 的头像
 
 
注册会员  
  注册日期: Sep 2002
  帖子: 366
  精华: 1
 

哈哈,开始用 perl 了,我也用 python
代码:
$ cat comparray.py #!/usr/bin/env python a=('a', 'b', 'c', 'd', 'e') b=('a', 'f', 'c', 'g', 'w', 'e') print 'a:', a print 'b:', b print '两个数组相同的元素是:' for i in filter(lambda x: x in a, b): print i, print print '数组a中存在而数组b中不存在的元素是:' for i in filter(lambda x: x not in b, a): print i, print $ chmod +x comparray.py $ ./comparray.py a: ('a', 'b', 'c', 'd', 'e') b: ('a', 'f', 'c', 'g', 'w', 'e') 两个数组相同的元素是: a c e 数组a中存在而数组b中不存在的元素是: b d
  idkey 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:33


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org