LoginSignup
9
3

More than 1 year has passed since last update.

Awkワンライナーでズンドコキヨシ

Posted at

株式会社船井総研デジタルのよもぎたと申します。よろしくお願いいたします。

最近ズンドコキヨシというものを知り、Bashの機能のみでそれを実現しました。ふとどのくらいズンドコしたらキヨシ!に到達できるのだろう?と気になり、100万1回ループさせて待ち時間が発生しました。
そこで、Awkワンライナー版のズンドコキヨシを作成しました。使用したのはGNU AwkでVersionは次の通りです。

$ awk --version
GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.1.0, GNU MP 6.2.1)
Copyright (C) 1989, 1991-2020 Free Software Foundation.

作成したワンライナーと実行結果は次の通りです。

$ awk 'BEGIN{srand();list=""; while(list!="dzzzz"){if(rand()<0.5){zd="z"; printf("%s","ズン");}else{zd="d"; printf("%s","ドコ");} list=substr(zd list,1,5);} printf("キ☆ヨ☆シ\n")}'
ドコズンズンドコズンドコズンズンドコズンドコドコズンズンドコズンドコズンドコズンズンドコズンズンドコズンズンズンドコドコドコドコドコズンドコドコズンドコズンドコズンドコドコドコズンズンズンドコドコズンズンドコドコズンズンズンドコズンドコズンズンドコドコドコズンズンドコズンドコズンドコドコドコドコズンズンドコズンドコズンズンドコズンドコドコズンズンズンドコズンドコズンズンズンズンドコキ☆ヨ☆シ

ロジックは基本Bash版と同じです。違うのは次のような点でしょうか。

  • Awkはrand()関数を使うのに先にsrand()関数で乱数生成器を初期化してやる必要があります。
  • rand()関数が返してくれるのは0から1までの実数なので、0.5をズンドコボーダーにしました。
  • AWk版はズンドコ試行回数を数えるのはやめました。

すべてをBEGIN{}に入れてしまったのですが、printf("キ☆ヨ☆シ\n");END{}に入れてもよかったかもしれません。ていうか、本来終わりの処理だし…と考えちゃいますが、ワンライナーでそこまで気にすることもないですかね。

100万1回ループさせてるBash版ズンドコ試行は現在60万回程度の進捗です。集計まで記事にしていると始業に間に合いそうにありません。終業後にやるしかないでしょうか。

終業後の時間に趣味をやる時間があるというのに困惑しなくなってきました。社畜ぶりが弱まってきたなと思います。良い傾向です。本当に転職してよかったです。

趣味がズンドコ試行というのはどうなんだ、という問題はありますが。

朝起きて始業(在宅勤務)前にこんなことをしていて、今日は一日頭の中でズンドコズンドコ繰り返されそうです。

参考にした記事

最後までお付き合いいただきありがとうございました。

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3