First power of 2 that has leading decimal digits of 12: Difference between revisions

Added Wren
m (→‎{{header|Haskell}}: Added a partially desugared variant)
(Added Wren)
Line 1,462:
 
Same as before.
 
=={{header|Wren}}==
{{trans|Go}}
{{libheader|Wren-fmt}}
{{libheader|Wren-math}}
Just the first version which has turned out to be much quicker than the Go entry (around 37 seconds on the same machine). Frankly, I've no idea why.
<lang ecmascript>import "/fmt" for Fmt
import "/math" for Math
 
var ld10 = Math.ln2 / Math.ln10
 
var p = Fn.new { |L, n|
var i = L
var digits = 1
while (i >= 10) {
digits = digits * 10
i = (i/10).floor
}
var count = 0
i = 0
while (count < n) {
var e = Math.exp(Math.ln10 * (i * ld10).fraction)
if ((e * digits).truncate == L) count = count + 1
i = i + 1
}
return i - 1
}
 
var start = System.clock
var params = [ [12, 1] , [12, 2], [123, 45], [123, 12345], [123, 678910] ]
for (param in params) {
Fmt.print("p($d, $d) = $,d", param[0], param[1], p.call(param[0], param[1]))
}
 
System.print("\nTook %(System.clock - start) seconds.")</lang>
 
{{out}}
<pre>
p(12, 1) = 7
p(12, 2) = 80
p(123, 45) = 12,710
p(123, 12345) = 3,510,491
p(123, 678910) = 193,060,223
 
Took 27.851386 seconds.
</pre>
 
=={{header|zkl}}==
9,492

edits