RosettaCodeData/Task/Range-expansion/BBC-BASIC/range-expansion.basic

24 lines
637 B
Plaintext

PRINT FNrangeexpand("-6,-3--1,3-5,7-11,14,15,17-20")
END
DEF FNrangeexpand(r$)
LOCAL i%, j%, k%, t$
REPEAT
i% = INSTR(r$, "-", i%+1)
IF i% THEN
j% = i%
WHILE MID$(r$,j%-1,1)<>"," AND j%<>1
j% -= 1
ENDWHILE
IF i%>j% IF MID$(r$,j%,i%-j%)<>STRING$(i%-j%," ") THEN
t$ = ""
FOR k% = VALMID$(r$,j%) TO VALMID$(r$,i%+1)-1
t$ += STR$(k%) + ","
NEXT
r$ = LEFT$(r$,j%-1) + t$ + MID$(r$,i%+1)
i% = j% + LEN(t$) + 2
ENDIF
ENDIF
UNTIL i% = 0
= r$