Hofstadter Figure-Figure sequences: Difference between revisions
Content added Content deleted
(rearranges in order of the language.) |
(Kotlin version) |
||
Line 1,122: | Line 1,122: | ||
</pre> |
</pre> |
||
=={{header| |
=={{header|Kotlin}} == |
||
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. |
1. Create two functions named ffr and ffs that when given n return R(n) or S(n) respectively. |