実際に罫線で書いてみる。
┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃
┃┣┫┃┃┃┃┃┣┫┣┫┃┃┃┃┃┣┫┃
┣┫┣┫┃┃┃┃┣┫┣┫┣┫┃┣┫┃┣┫
┃┃┃┃┃┃┃┃┣┫┃┃┃┃┃┃┃┃┣┫
┣┫┣┫┣┫┣┫┣┫┣┫┣┫┣┫┣┫┣┫
┃┃┃┣┫┃┃┃┃┃┣┫┃┣┫┃┃┣┫┃
┃┃┃┃┣┫┃┃┃┣┫┃┃┃┃┃┣┫┃┃
┃┣┫┃┃┃┣┫┃┃┃┃┃┣┫┃┃┣┫┃
┣┫┣┫┃┃┣┫┃┃┃┣┫┣┫┃┃┃┃┃
┣┫┃┃┃┃┃┣┫┃┃┃┃┃┃┃┃┣┫┃
書いてみて分かるのは、
「┣┫」と「┃」
の二種類の文字列の組み合わせだけで構成されているということ。
Kotlinで。
val n = 20
val l = 10
repeat(l) {
val ch = (0..n/2).shuffled().first()
val ci = n - (ch * 2)
val h = List(ch) { "┣┫" }
val i = List(ci) { "┃" }
val a = h.plus(i).shuffled()
println(a.joinToString(""))
}
一つの「きまりごと」を発見するとコードは劇的に短くなる。
分岐がないコードはスッキリする。