Euclidean rhythm: Difference between revisions

Content added Content deleted
(Add Kotlin implementation)
(Add Go implementation)
Line 54: Line 54:
<pre>
<pre>
10010010
10010010
</pre>

=={{header|Go}}==
{{trans|Java}}
<syntaxhighlight lang="Go">
package main

import (
"fmt"
"math"
)

func main() {
result := generateSequence(5, 13)
fmt.Println(result) // Should print 1001010010100
}

func generateSequence(k int, n int) string {
var s [][]int

for i := 0; i < n; i++ {
var innerList []int
if i < k {
innerList = append(innerList, 1)
} else {
innerList = append(innerList, 0)
}
s = append(s, innerList)
}

d := n - k
n = int(math.Max(float64(k), float64(d)))
k = int(math.Min(float64(k), float64(d)))
z := d

for z > 0 || k > 1 {
for i := 0; i < k; i++ {
s[i] = append(s[i], s[len(s)-1-i]...)
}
s = s[:len(s)-k]
z -= k
d = n - k
n = int(math.Max(float64(k), float64(d)))
k = int(math.Min(float64(k), float64(d)))
}

var result string
for _, sublist := range s {
for _, item := range sublist {
result += fmt.Sprintf("%d", item)
}
}
return result
}
</syntaxhighlight>
{{out}}
<pre>
1001010010100

</pre>
</pre>