Range extraction: Difference between revisions

Added a rather large COBOL solution. Corrected PL/I, R and REXX lang tags.
(Added COBOL solution.)
(Added a rather large COBOL solution. Corrected PL/I, R and REXX lang tags.)
Line 2,001:
 
=={{header|PL/I}}==
<lang pli>/* Modified 19 November 2011 to meet requirement that there be at */
<lang PL/I>
/* Modified 19 November 2011 to meet requirement that there be at */
/* least 3 items in a run. */
range_extraction: /* 17 August 2010 */
Line 2,049 ⟶ 2,048:
c, d = ',';
end;
end range_extraction;</lang>
 
</lang>
OUTPUT 17/8/2010:
<lang>
Line 2,303 ⟶ 2,302:
=={{header|R}}==
 
<lang rrsplus>extract.range = function(v)
{r = c(1, which(diff(v) != 1) + 1, length(v) + 1)
# 'r' holds the index of the start of each run of sequential
Line 2,340 ⟶ 2,339:
===version 1===
This REXX version isn't limited to integers.
<lang rexx>/*REXX program creates a range extraction from a list of integers. */
old=0 1 2 4 6 7 8 11 12 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 38 39
w=words(old) /*number of integers in the list.*/
Line 2,360 ⟶ 2,359:
say 'new:' new /*display new list of numbers. */
/*stick a fork in it, we're done.*/</lang>
 
'''output'''
{{out}}
<pre>
old: 0 1 2 4 6 7 8 11 12 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 38 39
Line 2,368:
===version 1a===
The REXX version is the same as above, but doesn't modify a '''DO''' loop's index ('''j''').
<lang rexx>/*REXX program creates a range extraction from a list of integers. */
old=0 1 2 4 6 7 8 11 12 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 35 36 37 38 39
w=words(old); j=0 /*number of integers in the list.*/
Line 2,388:
say 'new:' new /*display new list of numbers. */
/*stick a fork in it, we're done.*/</lang>
'''outputOutput''' is the same as above.
 
===version 2===
Anonymous user