Averages/Simple moving average: Difference between revisions

Added Kotlin
(Added FreeBASIC)
(Added Kotlin)
Line 2,043:
1 1.5 2 2.5 3 3.8 4.2 4.2 3.8 3
</lang>
 
=={{header|Kotlin}}==
<lang scala>// version 1.0.6
 
fun initMovingAverage(p: Int): (Double) -> Double {
if (p < 1) throw IllegalArgumentException("Period must be a positive integer")
val list = mutableListOf<Double>()
return {
list.add(it)
if (list.size > p) list.removeAt(0)
list.average()
}
}
 
fun main(args: Array<String>) {
val sma4 = initMovingAverage(4)
val sma5 = initMovingAverage(5)
val numbers = listOf(1.0, 2.0, 3.0, 4.0, 5.0, 5.0, 4.0, 3.0, 2.0, 1.0)
println("num\tsma4\tsma5\n")
for (number in numbers) println("${number}\t${sma4(number)}\t${sma5(number)}")
}</lang>
 
{{out}}
<pre>
num sma4 sma5
 
1.0 1.0 1.0
2.0 1.5 1.5
3.0 2.0 2.0
4.0 2.5 2.5
5.0 3.5 3.0
5.0 4.25 3.8
4.0 4.5 4.2
3.0 4.25 4.2
2.0 3.5 3.8
1.0 2.5 3.0
</pre>
 
=={{header|Lasso}}==
9,492

edits