Benford's law: Difference between revisions

Kotlin version
(Added Elixir)
(Kotlin version)
Line 1,277:
9 0.045 0.0457575
</pre>
 
=={{header|Kotlin}}==
<lang scala>package benford
 
import java.math.BigInteger
 
interface NumberGenerator {
val numbers: Array<BigInteger>
}
 
class Benford(val ng: NumberGenerator) {
override fun toString() = str
 
private val firstDigits = IntArray(9)
private val count= ng.numbers.size()
private val str: String
 
init {
for (n in ng.numbers)
firstDigits[n.toString().substring(0, 1).toInt() - 1]++
val result = StringBuilder()
for (i in firstDigits.indices) {
result.append(i + 1).append('\t').append(firstDigits[i] / count.toDouble())
result.append('\t').append(Math.log10(1 + 1.0 / (i + 1))).append('\n')
}
str = result.toString()
}
}
 
object FibonacciGenerator : NumberGenerator {
override val numbers: Array<BigInteger> by lazy {
val fib = Array<BigInteger>(1000, { BigInteger.ONE })
for (i in 2..fib.size() - 1)
fib[i] = fib[i - 2].add(fib[i - 1])
fib
}
}
 
fun main(a: Array<String>) = println(Benford(FibonacciGenerator))</lang>
 
=={{header|Liberty BASIC}}==
Line 1,332 ⟶ 1,371:
9 0.045 0.046
</pre>
 
=={{header|Lua}}==
<lang lua>actual = {}
Anonymous user