Sturmian word: Difference between revisions

Content added Content deleted
(Added Phix)
(Added Wren)
Line 112: Line 112:
# 01001010010010100101001001010010
# 01001010010010100101001001010010
</syntaxhighlight>
</syntaxhighlight>

=={{header|Wren}}==
{{trans|Python}}
{{libheader|Wren-assert}}
For rational numbers m / n:
<syntaxhighlight lang="wren">import "./assert" for Assert

var SturmianWord = Fn.new { |m, n|
if (m > n) return SturmianWord.call(n, m).reduce("") { |acc, c|
return acc + (c == "0" ? "1" : "0")
}
var sturmian = ""
var k = 1
while (k * m % n != 0) {
var currFloor = (k * m / n).floor
var prevFloor = ((k - 1) * m / n).floor
sturmian = sturmian + (prevFloor == currFloor ? "0" : "10")
k = k + 1
}
return sturmian
}

var fibWord = Fn.new { |n|
var sn1 = "0"
var sn = "01"
for (i in 2..n) {
var tmp = sn
sn = sn + sn1
sn1 = tmp
}
return sn
}

var fib = fibWord.call(10)
var sturmian = SturmianWord.call(13, 21)
Assert.equal(fib[0...sturmian.count], sturmian)
System.print(sturmian)</syntaxhighlight>

{{out}}
<pre>
01001010010010100101001001010010
</pre>