我是船井创研数码有限公司的 Yomogi。谢谢你。
最近,我了解了 Zundokokiyoshi。似乎几年前它很流行,所以迟到很高兴,但我尝试了仅使用 Bash 函数(内置命令等)的 Zundokokiyoshi。
1 #!/bin/bash
2
3 readonly z="ズン"
4 readonly d="ドコ"
5 readonly k="キ☆ヨ☆シ"
6
7 list=""
8 c=0
9
10 zd(){
11 [ $((${RANDOM} % 2)) -eq 0 ] && echo -n ${z} && return 0 || echo -n ${d} && return 1
12 }
13
14 zdk(){
15 while [ "${list}" != "dzzzz" ]
16 do
17 zd; [ $? -eq 0 ] && list="z${list}" || list="d${list}"
18 list="${list::5}"
19 ((c++))
20 done
21 echo ${k}
22 echo $c
23 }
24
25 zdk
如果有人知道在 Qiita 的程序中添加行号的好方法,请告诉我。以上是
cat -n zdk.sh。直到第 9 行是 shebangs 和变量赋值。
在第 10-12 行的 zd 函数中,Bash 变量获取RANDOM的偶数奇数判断,如果是偶数粪并返回0,如果是奇数在哪里并返回 1。${RANDOM}每次被引用时都会返回 0 到 32767 之间的任何整数。第 14-23 行的 zdk 函数调用了该 zd 函数。循环第 15-20 行,直到
list变量变为dzzzz。
如果在第 17 行调用了 zd 函数,返回值为 0粪为输出,将z添加到list的开头。如果返回值为 1,则添加d。list第 18 行的变量Bash 参数扩展使用${parameter:offset:length}提取前 5 个字符。在附近尊尊多科尊多科如果输出list,则值为dzdzz。参数扩展很容易切入,所以我把顺序颠倒了。
第 19 行计算您完成 Zundoko 的次数。我做 Zundoko 多少次?Ki☆Yo☆Shi我想知道我是否可以输出,所以我决定数数。高兴地ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss如果退出循环后可以在第21行输出
whileKi☆Yo☆Shi将输出顺便尊多科它还打印试验次数。这是一个执行示例。
$ ./zdk.sh ドコズンドコドコドコズンドコズンズンズンドコドコズンドコドコドコドコドコドコドコドコズンズンズンズンドコキ☆ヨ☆シ! 26
现在,“如果你有兴趣,你应该试试。”我无法抗拒魔鬼的低语,所以我尝试运行 zdk.sh 大约 1,000,000 次。
$ for((i=1;i<=1000001;i++)); do ./zdk.sh | tail -1; done > zdk_cnt.txt如果您打开另一个终端并查看
tail -f zdk_cnt.txt,您可以看到数字的数量,但数字流动的速度如此之快,以至于您无法阅读它们。惊人的两位数清!似乎达到了同时,创建一个 Zundokokiyoshi
Awkone-liner。
Awkワンライナー正在建设中...创作完成。我在
watch wc -l zdk_cnt.txt关注进度,但似乎 Zundokokiyoshi 脚本的 Bash 版本已经执行了大约 450,000 次。还是一半。我想将这篇文章保存为草稿并开始创建文章的Awk版本。
Awkワンライナー文章正在建设中...我创建了一篇文章。 Zundoko试用进度约为750,000次。我等不及了。我想暂时发表这篇文章,稍后再添加总数。
ToDo:追加 1,000,000 次试验的汇总结果
参考文章
- LISP 上的 Zundokokiyoshi
- Zundokokiyoshi的概要
- Qiita 的“Zundokokiyoshi”标签
- Bash 参考手册
感谢您一直陪伴我们直到最后。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308627573.html