Sparkline in unicode: Difference between revisions
Content added Content deleted
(Added Wren) |
|||
Line 2,461: | Line 2,461: | ||
Series: 1.5, 0.5 3.5, 2.5 5.5, 4.5 7.5, 6.5 |
Series: 1.5, 0.5 3.5, 2.5 5.5, 4.5 7.5, 6.5 |
||
Sparkline: ▂▁▄▃▆▅█▇ |
Sparkline: ▂▁▄▃▆▅█▇ |
||
</pre> |
|||
=={{header|Wren}}== |
|||
{{trans|Go}} |
|||
{{libheader|Wren-pattern}} |
|||
<lang ecmascript>import "io" for Stdin, Stdout |
|||
import "/pattern" for Pattern |
|||
var p = Pattern.new("[,+1/s|+1/s,|+1/s|,]") |
|||
var spark = Fn.new { |s0| |
|||
var ss = p.splitAll(s0) |
|||
var n = ss.count |
|||
var vs = List.filled(n, 0) |
|||
var min = 1/0 |
|||
var max = -min |
|||
var i = 0 |
|||
for (s in ss) { |
|||
var v = Num.fromString(s) |
|||
if (v.isNan || v.isInfinity) Fiber.abort("Infinities and NaN not supported.") |
|||
if (v < min) min = v |
|||
if (v > max) max = v |
|||
vs[i] = v |
|||
i = i + 1 |
|||
} |
|||
var sp |
|||
if (min == max) { |
|||
sp = "▄" * n |
|||
} else { |
|||
var rs = List.filled(n, null) |
|||
var f = 8 / (max - min) |
|||
var j = 0 |
|||
for (v in vs) { |
|||
var i = (f * (v - min)).floor |
|||
if (i > 7) i = 7 |
|||
rs[j] = String.fromCodePoint(0x2581 + i) |
|||
j = j + 1 |
|||
} |
|||
sp = rs.join() |
|||
} |
|||
return [sp, n, min, max] |
|||
} |
|||
while (true) { |
|||
System.print("Numbers please separated by spaces/commas or just press return to quit:") |
|||
Stdout.flush() |
|||
var numbers = Stdin.readLine().trim() |
|||
if (numbers == "") break |
|||
var res = spark.call(numbers) |
|||
var s = res[0] |
|||
var n = res[1] |
|||
var min = res[2] |
|||
var max = res[3] |
|||
if (n == 1) { |
|||
System.print("1 value = %(min)") |
|||
} else { |
|||
System.print("%(n) values. Min: %(min) Max: %(max)") |
|||
} |
|||
System.print(s) |
|||
System.print() |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 |
|||
15 values. Min: 1 Max: 8 |
|||
▁▂▃▄▅▆▇█▇▆▅▄▃▂▁ |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
1.5, 0.5 3.5, 2.5 5.5, 4.5 7.5, 6.5 |
|||
8 values. Min: 0.5 Max: 7.5 |
|||
▂▁▄▃▆▅█▇ |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|||
24 values. Min: 1 Max: 24 |
|||
▁▁▁▂▂▂▃▃▃▄▄▄▅▅▅▆▆▆▇▇▇███ |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
0 -.09 -.11 -.69 -.71 -.8 |
|||
6 values. Min: -0.8 Max: 0 |
|||
██▇▂▁▁ |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
3 3 3 |
|||
3 values. Min: 3 Max: 3 |
|||
▄▄▄ |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
1e99 |
|||
1 value = 1e+99 |
|||
▄ |
|||
Numbers please separated by spaces/commas or just press return to quit: |
|||
</pre> |
</pre> |
||