免费注册 查看新帖 |

Chinaunix

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

[数值计算] 如何用Shell来实现一个精彩的算术例子??? [复制链接]

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
21 [报告]
发表于 2013-05-30 10:48 |只看该作者
本帖最后由 seesea2517 于 2013-05-30 10:48 编辑

不是难题,纯shell也轻松:
  1. [seesea@UC ~]$ for((i=1; i<=9; ++i)); do num=$(seq --separator= 1 $i); echo "$num * 8 + $i = $((num * 8 + i))"; done;
  2. 1 * 8 + 1 = 9
  3. 12 * 8 + 2 = 98
  4. 123 * 8 + 3 = 987
  5. 1234 * 8 + 4 = 9876
  6. 12345 * 8 + 5 = 98765
  7. 123456 * 8 + 6 = 987654
  8. 1234567 * 8 + 7 = 9876543
  9. 12345678 * 8 + 8 = 98765432
  10. 123456789 * 8 + 9 = 987654321

  11. [seesea@UC ~]$ for((i=1; i<=9; ++i)); do num=$(seq --separator= 1 $i); echo "$num * 8 + $((i+1)) = $((num * 9 + i+1))"; done;   
  12. 1 * 8 + 2 = 11
  13. 12 * 8 + 3 = 111
  14. 123 * 8 + 4 = 1111
  15. 1234 * 8 + 5 = 11111
  16. 12345 * 8 + 6 = 111111
  17. 123456 * 8 + 7 = 1111111
  18. 1234567 * 8 + 8 = 11111111
  19. 12345678 * 8 + 9 = 111111111
  20. 123456789 * 8 + 10 = 1111111111

  21. [seesea@UC ~]$ for((i=9; i>=2; --i)); do num=$(seq --separator= 9 -1 $i); echo "$num * 9 + $((i-2)) = $((num * 9 + i-2))"; done;
  22. 9 * 9 + 7 = 88
  23. 98 * 9 + 6 = 888
  24. 987 * 9 + 5 = 8888
  25. 9876 * 9 + 4 = 88888
  26. 98765 * 9 + 3 = 888888
  27. 987654 * 9 + 2 = 8888888
  28. 9876543 * 9 + 1 = 88888888
  29. 98765432 * 9 + 0 = 888888888

  30. [seesea@UC ~]$ for((i=1; i<=9; ++i)); do num=$(seq --separator= $i | sed 's/./1/g'); echo "$num * $num = $((num * num))"; done;     
  31. 1 * 1 = 1
  32. 11 * 11 = 121
  33. 111 * 111 = 12321
  34. 1111 * 1111 = 1234321
  35. 11111 * 11111 = 123454321
  36. 111111 * 111111 = 12345654321
  37. 1111111 * 1111111 = 1234567654321
  38. 11111111 * 11111111 = 123456787654321
  39. 111111111 * 111111111 = 12345678987654321

  40. # 或者用 yes 来做
  41. [seesea@UC ~]$ for((i=1; i<=9; ++i)); do num=$(yes 1 | head -$i | tr -d '\n'); echo "$num * $num = $((num * num))"; done;           
  42. 1 * 1 = 1
  43. 11 * 11 = 121
  44. 111 * 111 = 12321
  45. 1111 * 1111 = 1234321
  46. 11111 * 11111 = 123454321
  47. 111111 * 111111 = 12345654321
  48. 1111111 * 1111111 = 1234567654321
  49. 11111111 * 11111111 = 123456787654321
  50. 111111111 * 111111111 = 12345678987654321
复制代码

论坛徽章:
0
22 [报告]
发表于 2013-05-30 11:00 |只看该作者
回复 21# seesea2517


好吧,我慢慢的开始相信了--无名师心传中的“一行Shell万行C”了。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
23 [报告]
发表于 2013-05-30 11:09 |只看该作者
回复 22# UltimateSniper


    要把 seq yes tr head 等等类比成一个 C 库,其实相当于好多行 C 代码了。所以一行 shell 万行 C 还真是有可能的哈。

论坛徽章:
0
24 [报告]
发表于 2013-05-30 11:30 |只看该作者
回复 23# seesea2517


    跟着大神给的代码,把 seq 等命令的用法和一些技巧又学习了一遍。想问一点就是,这些技巧平时是怎么学来的哦?

    提示一点,在有些地方的算术出现了问题,比如说:1 * 8 + 2 = 11 、 12 * 8 + 3 = 111 ······

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
25 [报告]
发表于 2013-05-30 11:33 |只看该作者
回复 24# UltimateSniper


    这是手误,后面的计算和前面的提示内容不对应
也没什么,就是唯手熟尔啦。

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
26 [报告]
发表于 2013-05-30 13:38 |只看该作者
一行shell万行c,说的不错,呵呵~受教了

论坛徽章:
0
27 [报告]
发表于 2013-05-31 17:29 |只看该作者
回复 20# Shell_HAT


    十分感谢,才注意到这个回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP