上面就是一段网红搞笑的AI代码。
在Julia中有两个知识点:
1、readline(): 获得输入的字符串
2、replace():替代函数,用法如下:
replace(s::AbstractString, pat=>r; [count::Integer])
julia> replace("Python is a programming language.", "Python" => "Julia")
"Julia is a programming language."
julia> replace("The quick foxes run quickly.", "quick" => "slow", count=1)
"The slow foxes run quickly."
julia> replace(["吗?","在"],"吗?"=>"","?"=>"","?"=>"")
2-element Array{String,1}:
""
"在"
julia> A =["吗?"=>"","?"=>"","?"=>""]
3-element Array{Pair{String,String},1}:
"吗?" => ""
"?" => ""
"?" => ""
julia> replace(["吗?","在"],A...)
2-element Array{String,1}:
""
"在"
因此,如果用Julia来写 ( 感谢水牛兄的支持!):
方案一: replace 套合
while true
input =readline();
println(replace(replace(replace(input,"吗"=>""),"?"=>"!"),"?"=>"!"))
end
如果你还要更省一点:
while true
println(replace(replace(replace(readline(),"吗"=>""),"?"=>"!"),"?"=>"!"))
end
但还不算优雅。不知还有没有其它简洁优雅的写法?
方案二:global
while true
a = readline()
_dict=["吗"=>"","?"=>"!","?"=>"!"]
for element in _dict
global a =replace(a,element)
end
println(a)
end
思考一下:为什么要在循还中写一个global?
方案三:最优雅的写法
while true
_dict=["吗"=>"","?"=>"!","?"=>"!"]
reduce(replace,_dict,init=readline())
end
方案四:用split,join,replace结合起来,也可以写出第四种写法。
whlie true
_dict=["吗"=>"","?"=>"!","?"=>"!"]
join(replace(split(readline(),""),_dict...))
end