In [1]:
versioninfo()
Julia Version 1.3.0
Commit 46ce4d7933 (2019-11-26 06:09 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, skylake)

ズンドコキヨシ

In [2]:
function zundokochannel()
    Channel{String}(32) do channel
        i = 1
        while i > 0
            zd, i = rand([("ズン", i + 1), ("ドコ", +(i<5))])
            put!(channel, zd)
        end
        put!(channel, "キ・ヨ・シ!")
    end
end
Out[2]:
zundokochannel (generic function with 1 method)
In [3]:
for cw in zundokochannel()
    print(cw)
end
ズンズンズンドコズンドコドコズンズンドコズンドコズンズンズンドコドコズンズンズンズンドコキ・ヨ・シ!
In [4]:
collect(zundokochannel())
Out[4]:
32-element Array{String,1}:
 "ズン"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "ドコ"    
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 ⋮       
 "ズン"    
 "ドコ"    
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "キ・ヨ・シ!"

ズンドコキヨシ(厳密版)

In [5]:
function zundokostrictchannel()
    Channel{String}(32) do channel
        i = 1
        while i > 0
            zd, i = rand([("ズン", i + 1), ("ドコ", +(i!=5))])
            put!(channel, zd)
        end
        put!(channel, "キ・ヨ・シ!")
    end
end
Out[5]:
zundokostrictchannel (generic function with 1 method)
In [6]:
for cw in zundokostrictchannel()
    print(cw)
end
ズンドコドコズンドコドコドコズンドコズンドコドコズンズンドコドコドコズンドコドコズンドコドコドコドコズンドコズンドコズンズンドコズンドコドコドコドコドコズンズンズンドコズンズンズンズンドコキ・ヨ・シ!
In [7]:
collect(zundokostrictchannel())
Out[7]:
102-element Array{String,1}:
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 ⋮       
 "ドコ"    
 "ドコ"    
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "キ・ヨ・シ!"
In [ ]: