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

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


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

标题: 考考你:1到999999999的阵列,如何用shell实现?


效果:
引用:
1+11+111+1111+11111+111111+1111111+11111111+111111111 = 123456789
2+22+222+2222+22222+222222+2222222+22222222+222222222 = 246913578
3+33+333+3333+33333+333333+3333333+33333333+333333333 = 370370367
4+44+444+4444+44444+444444+4444444+44444444+444444444 = 493827156
5+55+555+5555+55555+555555+5555555+55555555+555555555 = 617283945
6+66+666+6666+66666+666666+6666666+66666666+666666666 = 740740734
7+77+777+7777+77777+777777+7777777+77777777+777777777 = 864197523
8+88+888+8888+88888+888888+8888888+88888888+888888888 = 987654312
9+99+999+9999+99999+999999+9999999+99999999+999999999 = 1111111101
源贴见:
http://www.linuxsir.org/bbs/showthre...hreadid=108429
  KornLee 当前离线   回复时引用此帖
旧 04-05-14, 03:12 第 2 帖
zonzi
 
zonzi 的头像
 
 
注册会员  
  注册日期: Dec 2003
  我的住址: 上海
  帖子: 3,349
  精华: 3
 

太难,不会........







__________________
1)amd64 3000+, ati 9800 pro, 1G DDR, gentoo/windows xp, 19'samsung TFT
2)amd xp 1700+, nvidia geforce2, 512DDR ,pinnacle pctv, slackware/debian/windows xp 17'philips TFT
3)apple powerbook 15', G4 1.5Ghz, ati 9700-m, 1GB DDR, mac os x tiger(Darwin 8.2)
从98年开始使用linux
用遍所有主流linux,发现还是用slackware,debian,gentoo最爽
  zonzi 当前离线   回复时引用此帖
旧 04-05-14, 10:19 第 3 帖
yongjian
 
yongjian 的头像
 
 
★版☆主★  
  注册日期: May 2003
  我的住址: Linux
  帖子: 2,572
  精华: 9
 

代码:
#!/bin/sh exp="" for j in $(seq 9); do i=$j for k in $(seq 9);do j="$j"$i exp=$exp"$j+" done exp=$i"+"${exp%+*+} echo "${exp} = "$(($exp)) exp="" done
结果:
代码:
1+11+111+1111+11111+111111+1111111+11111111+111111111 = 123456789 2+22+222+2222+22222+222222+2222222+22222222+222222222 = 246913578 3+33+333+3333+33333+333333+3333333+33333333+333333333 = 370370367 4+44+444+4444+44444+444444+4444444+44444444+444444444 = 493827156 5+55+555+5555+55555+555555+5555555+55555555+555555555 = 617283945 6+66+666+6666+66666+666666+6666666+66666666+666666666 = 740740734 7+77+777+7777+77777+777777+7777777+77777777+777777777 = 864197523 8+88+888+8888+88888+888888+8888888+88888888+888888888 = 987654312 9+99+999+9999+99999+999999+9999999+99999999+999999999 = 1111111101







__________________
15" C2D MBP.
有简单的,不用复杂的!看到复杂的,尽量简单化!
Unix/Linux Philosophy: Be small! Be concentrated! One program does one thing and do it perfectly!
∞ years - 宇宙中最后的物质 Proton heat death. 之后,宇宙将以纯能量的形式永远存在。。。一切皆空
  yongjian 当前离线   回复时引用此帖
旧 04-05-14, 10:22 第 4 帖
yongjian
 
yongjian 的头像
 
 
★版☆主★  
  注册日期: May 2003
  我的住址: Linux
  帖子: 2,572
  精华: 9
 

上面是在Linux的bash下的code. 不知还有没有更简便的方法. 还有就是能用sed或awk做吗?
  yongjian 当前离线   回复时引用此帖
旧 04-05-14, 11:06 第 5 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 yongjian 发表
上面是在Linux的bash下的code. 不知还有没有更简便的方法. 还有就是能用sed或awk做吗?
PF~~~,awk应该可以的,
  KornLee 当前离线   回复时引用此帖
旧 04-05-14, 12:18 第 6 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

我也写了一个 ,望大家指教
代码:
/home/lee#cat _test #!/bin/ksh n=1;while ((n<=9));do m=0;p=0 while ((m<=8));do a=$(echo "$n*10^$m"|bc);((p+=a)); echo -n "$p+";((m+=1)) done|sed 's/+$/\ /' ((n+=1)) done|while read i;do echo -n "$i=";echo $i|bc done
引用:
/home/lee#ksh _test
1+11+111+1111+11111+111111+1111111+11111111+111111111=123456789
2+22+222+2222+22222+222222+2222222+22222222+222222222=246913578
3+33+333+3333+33333+333333+3333333+33333333+333333333=370370367
4+44+444+4444+44444+444444+4444444+44444444+444444444=493827156
5+55+555+5555+55555+555555+5555555+55555555+555555555=617283945
6+66+666+6666+66666+666666+6666666+66666666+666666666=740740734
7+77+777+7777+77777+777777+7777777+77777777+777777777=864197523
8+88+888+8888+88888+888888+8888888+88888888+888888888=987654312
9+99+999+9999+99999+999999+9999999+99999999+999999999=1111111101
  KornLee 当前离线   回复时引用此帖
旧 04-05-14, 12:55 第 7 帖
home_king
 
home_king 的头像
 
 
临时退役版主  
  注册日期: Mar 2003
  帖子: 2,759
  精华: 15
 

引用:
最初由 javalee 发表
PF~~~,awk应该可以的,
代码:
BEGIN{ FS="" } { for(i=1;i<=NF;i++) { pre=$i sum[$i]=$i printf("%d",pre) for(j=1;j<9;j++) { cur=pre*10+$i sum[$i]+=cur pre=cur printf("+%d",cur) if(j==8) printf("=%d\n",sum[$i]) } } }
echo "123456789" | awk -f awkscript







__________________
IBOX, a LiveCD distribution based on Gentoo, is fit for newbie.

IBOX brings to you:
- knoppix-style harddisk installation tool, by which you can install Gentoo in 20 minutes.
- hardware auto-configuration. You can run into X desktop directly.
- all-round software set, including OpenOffice, azureus.
- LiveCD-create-tools. Step-by-step, custom a LiveCD yourself with ease.

Any questions and feedbacks is welcome to home_king at 163 dot com

此帖于 04-05-14 13:05 被 home_king 编辑.
  home_king 当前离线   回复时引用此帖
旧 04-05-14, 20:34 第 8 帖
yongjian
 
yongjian 的头像
 
 
★版☆主★  
  注册日期: May 2003
  我的住址: Linux
  帖子: 2,572
  精华: 9
 

精彩!!!
  yongjian 当前离线   回复时引用此帖
旧 04-05-14, 21:49 第 9 帖
seablue
 
seablue 的头像
 
 
注册会员  
  注册日期: Apr 2003
  我的住址: 银河系
  帖子: 999
  精华: 3
 

exp这个东东我还真没见过, all of you!

如果进一步要求每行的值右边对齐的话,该如何实现呢?







__________________
linux中级用户

此帖于 04-05-14 21:51 被 seablue 编辑.
  seablue 当前离线   回复时引用此帖
旧 04-05-14, 23:38 第 10 帖
KanKer
 
KanKer 的头像
 
 
注册会员  
  注册日期: Jan 2003
  我的住址: 上海漂泊
  帖子: 391
  精华: 0
 

呵呵,挨个运行了一下,族长的代码最慢







__________________
MagicLinux 开发总部:
[url]http://www.magiclinux.org[/url]
MagicLinux 技术支持:
[url]http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewforum&f=17[/url]
  KanKer 当前离线   回复时引用此帖
旧 04-05-14, 23:51 第 11 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 seablue 发表
exp这个东东我还真没见过, all of you!

如果进一步要求每行的值右边对齐的话,该如何实现呢?
我的系统上也没有exp :(右对齐跟你用的perl脚本相似~
printf "%11.f\n"
  KornLee 当前离线   回复时引用此帖
旧 04-05-14, 23:53 第 12 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

引用:
最初由 KanKer 发表
呵呵,挨个运行了一下,族长的代码最慢
呵呵,能写出来我就已经很勉强了
  KornLee 当前离线   回复时引用此帖
旧 04-05-15, 04:46 第 13 帖
yongjian
 
yongjian 的头像
 
 
★版☆主★  
  注册日期: May 2003
  我的住址: Linux
  帖子: 2,572
  精华: 9
 

javalee兄你太谦虚了.
  yongjian 当前离线   回复时引用此帖
旧 04-05-15, 09:19 第 14 帖
home_king
 
home_king 的头像
 
 
临时退役版主  
  注册日期: Mar 2003
  帖子: 2,759
  精华: 15
 

嗯,其实效率问题涉及到具体工具的应用,我们关键要看它的算法。
ps:javalee老大最近很热心的说
  home_king 当前离线   回复时引用此帖
旧 05-02-22, 12:30 第 15 帖
linux_now
 
 
 
注册会员  
  注册日期: Dec 2004
  帖子: 613
  精华: 1
 

发错地方
  linux_now 当前离线   回复时引用此帖
发表新主题 回复


主题工具

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

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


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


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