Hofstadter Figure-Figure sequences: Difference between revisions

Content added Content deleted
(rearranges in order of the language.)
(Kotlin version)
Line 1,122:
</pre>
 
=={{header|MathematicaKotlin}} ==
Translated from Java.
<lang scala>package hofstadter
 
fun ffr(n: Int) = get(n, 0)[n - 1]
 
fun ffs(n: Int) = get(0, n)[n - 1]
 
internal fun get(rlistSize: Int, slistSize: Int): List<Int> {
val rlist = arrayListOf(1, 3, 7)
val slist = arrayListOf(2, 4, 5, 6)
val list = if (rlistSize > 0) rlist else slist
val targetSize = if (rlistSize > 0) rlistSize else slistSize
 
while (list.size() > targetSize)
list.remove(list.size() - 1)
while (list.size() < targetSize) {
val lastIndex = rlist.lastIndex
val lastr = rlist[lastIndex]
val r = lastr + slist[lastIndex]
rlist += r
var s = lastr + 1
while (s < r && list.size() < targetSize)
slist += s++
}
return list
}
 
fun main(args: Array<String>) {
print("R():")
1..10 forEach { print(" " + ffr(it)) }
println()
 
val first40R = 1..40 map { ffr(it) }
val first960S = 1..960 map { ffs(it) }
for (n in 1..1000)
if (n in first40R == n in first960S)
println("Integer $n either in both or neither set")
println("Done")
}</lang>
 
=={{header|Mathematica}} ==
 
1. Create two functions named ffr and ffs that when given n return R(n) or S(n) respectively.