Range expansion: Difference between revisions

Added Dyalect programming language
(→‎{{header|Aime}}: (Slightly) incorrect.)
(Added Dyalect programming language)
Line 1,039:
{{out}}
<pre>[-6,-3,-2,-1,3,4,5,7,8,9,10,11,14,15,17,18,19,20]</pre>
 
=={{header|Dyalect}}==
 
{{trans|Go}}
 
<lang dyalect>func main() {
const input = "-6,-3--1,3-5,7-11,14,15,17-20"
 
print("range: \(input)")
var r = []
var last = 0
for part in input.split(',') {
var i = part.sub(1).indexOf('-')
if i == -1 {
var n = Integer(part)
if r.len() > 0 {
if last == n {
print("duplicate value: \(n)")
return
} else if last > n {
print("values not ordered: \(last) > \(n)")
return
}
}
r.add(n)
last = n
} else {
var n1 = Integer(part.sub(0, i+1))
var n2 = Integer(part.sub(i+2))
if n2 < n1+2 {
print("invalid range: \(part)")
return
}
if r.len() > 0 {
if last == n1 {
print("duplicate value: \(n1)")
return
} else if last > n1 {
print("values not ordered: \(last) > \(n1)")
return
}
}
for i in n1..n2 {
r.add(i)
}
last = n2
}
}
 
print("expanded: \(r)")
}
 
main()</lang>
 
{{out}}
 
<pre>range: -6,-3--1,3-5,7-11,14,15,17-20
expanded: [-6, -3, -2, -1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20]</pre>
 
=={{header|EchoLisp}}==
Anonymous user