【发布时间】:2019-03-25 01:58:10
【问题描述】:
我目前正在开发一个简单的程序,以在两次迭代中逐渐随机地可视化一个字符串。现在我已经设法进行了第一次迭代,但我不确定如何进行第二次迭代。如果有人可以提供任何示例或建议,我将不胜感激。我的代码如下所示:
let s = "Hello playground"
let factor = 0.25
let factor2 = 0.45
var n = s.filter({ $0 != " " }).count // # of non-space characters
var m = lrint(factor * Double(n)) // # of characters to display
let t = String(s.map { c -> Character in
if c == " " {
// Preserve space
return " "
} else if Int.random(in: 0..<n) < m {
// Replace
m -= 1
n -= 1
return c
} else {
// Keep
n -= 1
return "_"
}
})
print(t) // h_l__ _l_______d
为了澄清,我想在第二次迭代中使用 factor2 来打印在 t 顶部随机添加字母的东西,看起来像这样 h_l_o pl_g_____d。
【问题讨论】:
-
那个代码looks familiar :)
-
哈哈,我希望如此 :),我认为它很适合这个目的,而且很干净。