Jump to content

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,490

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.