Loops/Continue
You are encouraged to solve this task according to the task description, using any language you may know.
1, 2, 3, 4, 5 6, 7, 8, 9, 10
Try to achieve the result by forcing the next iteration within the loop upon a specific condition, if your language allows it.
[edit] Ada
Ada has no continue reserved word, nor does it need one. The continue reserved word is only syntactic sugar for operations that can be achieved without it as in the following example.
with Ada.Text_Io; use Ada.Text_Io;
procedure Loop_Continue is
begin
for I in 1..10 loop
Put(Integer'Image(I));
if I mod 5 = 0 then
New_Line;
else
Put(",");
end if;
end loop;
end Loop_Continue;
[edit] Aikido
foreach i 1..10 {
print (i)
if ((i % 5) == 0) {
println()
continue
}
print (", ")
}
[edit] ALGOL 68
ALGOL 68 has no continue reserved word, nor does it need one. The continue reserved word is only syntactic sugar for operations that can be achieved without it as in the following example:
FOR i FROM 1 TO 10 DO
print ((i,
IF i MOD 5 = 0 THEN
new line
ELSE
","
FI
))
OD
Output:
+1, +2, +3, +4, +5
+6, +7, +8, +9, +10
[edit] AutoHotkey
Loop, 10 {
Delimiter := (A_Index = 5) || (A_Index = 10) ? "`n":", "
Index .= A_Index . Delimiter
}
MsgBox %Index%
[edit] AWK
BEGIN {
for(i=1; i <= 10; i++) {
printf("%d", i)
if ( i % 5 == 0 ) {
continue
}
printf(", ")
}
}
[edit] BBC BASIC
BBC BASIC doesn't have a 'continue' statement so the remainder of the loop must be made conditional.
FOR i% = 1 TO 10
PRINT ; i% ;
IF i% MOD 5 = 0 PRINT ELSE PRINT ", ";
NEXT
[edit] bc
Requires a bc with the print and continue statements. POSIX bc has not these statements.
for (i = 1; i <= 10; i++) {
print i
if (i % 5) {
print ", "
continue
}
print "\n"
}
quit
[edit] C
for(int i = 1;i <= 10; i++){
printf("%d", i);
if(i % 5 == 0){
printf("\n");
continue;
}
printf(", ");
}
[edit] C++
for(int i = 1;i <= 10; i++){
cout << i;
if(i % 5 == 0){
cout << endl;
continue;
}
cout << ", ";
}
[edit] C#
using System;
class Program {
static void Main(string[] args) {
for (int i = 1; i <= 10; i++) {
Console.Write(i);
if (i % 5 == 0) {
Console.WriteLine();
continue;
}
Console.Write(", ");
}
}
}
[edit] Clojure
Clojure doesn't have a continue keyword. It has a recur keyword, although I prefer to work with ranges in this case.
(doseq
[n (range 1 11)]
(do
(print n)
(if (= (rem n 5) 0) (print "\n") (print ", "))))
[edit] ColdFusion
Remove the leading space from the line break tag.
<cfscript>
for( i = 1; i <= 10; i++ )
{
writeOutput( i );
if( 0 == i % 5 )
{
writeOutput( "< br />" );
continue;
}
writeOutput( "," );
}
</cfscript>
[edit] Common Lisp
Common Lisp doesn't have a continue keyword, but the do iteration construct does use an implicit tagbody, so it's easy to go to any label. Four solutions follow. The first pushes the conditional (whether to print a comma and a space or a newline) into the format string. The second uses the implicit tagbody and go. The third is a do loop with conditionals outside of the output functions.
(do ((i 1 (1+ i))) ((> i 10))
(format t "~a~:[, ~;~%~]" i (zerop (mod i 5))))
(do ((i 1 (1+ i))) ((> i 10))
(write i)
(when (zerop (mod i 5))
(terpri)
(go end))
(write-string ", ")
end)
(do ((i 1 (1+ i))) ((> i 10))
(write i)
(if (zerop (mod i 5))
(terpri)
(write-string ", ")))
These use the loop iteration form, which does not contain an implicit tagbody (though one could be explicitly included). The first uses an explicit condition to omit the rest of the loop; the second uses block/return-from to obtain the effect of skipping the rest of the code in the block which makes up the entire loop body.
(loop for i from 1 to 10
do (write i)
if (zerop (mod i 5)) do (terpri)
else do (write-string ", "))
(loop for i from 1 to 10 do
(block continue
(write i)
(when (zerop (mod i 5))
(terpri)
(return-from continue))
(write-string ", ")))
[edit] D
import std.stdio;
void main() {
foreach (i; 1 .. 11) {
write(i);
if (i % 5 == 0) {
writeln();
continue;
}
write(", ");
}
}
- Output:
1, 2, 3, 4, 5 6, 7, 8, 9, 10
[edit] dc
The four commands # n J M are special to OpenBSD dc. The # command starts a comment. The n command prints a number without a newline.
1 si # i = 1
[2Q]sA # A = code to break loop
[[, ]P 1J]sB # B = code to print comma, continue loop
[
li n # print i
li 5 % 0 !=B # call B if i % 5
[
]P # print newline
M # mark from calling B
li 1 + si # i += 1
li 10!<C # continue loop if 10 >= i
]sC li 10!<C # enter loop if 10 >= i
This program uses J and M to force the next iteration of a loop. The nJ command breaks n levels of brackets (like nQ does so), but then skips to the next M command. One can place M at the end of the iteration.
[edit] Delphi
program DoLoop(output);
var
i: integer;
begin
for i := 1 to 10 do
begin
write(i);
if i mod 5 = 0 then
begin
writeln;
continue;
end;
write(', ');
end;
end.
Output:
1, 2, 3, 4, 5 6, 7, 8, 9, 10
[edit] DWScript
var i : Integer;
for i := 1 to 10 do begin
Print(i);
if i mod 5 = 0 then begin
PrintLn('');
continue;
end;
Print(', ');
end;
[edit] Ela
[edit] Direct Approach
open console imperative
loop n | n > 10 = ()
| else = rec write (show n) f `seq` loop (n+1)
where f | n % 5 == 0 = "\r\n"
| else = ", "
loop 1
Function rec creates a cyclic version of a given function, it is defined in imperative module as 'rec f x = f x `seq` rec f' where 'seq' is a sequencing operator.
[edit] Using list
open console imperative
loop [] = ()
loop (x::xs) = rec (write << show) x c `seq` loop xs
where c | x % 5 == 0 = "\r\n"
| else = ", "
loop [1..10]
This version is more generic and can work for any given range of values.
[edit] Erlang
%% Implemented by Arjun Sunel
-module(continue).
-export([main/0, for_loop/1]).
main() ->
for_loop(1).
for_loop(N) when N /= 5 , N <10 ->
io:format("~p, ",[N] ),
for_loop(N+1);
for_loop(N) when N >=10->
if N=:=10 ->
io:format("~p\n",[N] )
end;
for_loop(N) ->
if N=:=5 ->
io:format("~p\n",[N] ),
for_loop(N+1)
end.
- Output:
1, 2, 3, 4, 5 6, 7, 8, 9, 10 ok
[edit] Euphoria
include std\console.e --only for any_key to make running command window easier on windows
for i = 1 to 10 do
if remainder(i,5) = 0 then
printf(1, "%d\n", i)
else
printf(1,"%d, ", i)
continue
end if
end for
any_key()
Version without newline after 10 below.
include std\console.e --only for any_key to make running command window easier on windows
for i = 1 to 10 do
if remainder(i,5) = 0 then
switch i do
case 10 then
printf(1,"%d ",i)
break --new to euphoria 4.0.0+
case else
printf(1,"%d\n", i)
end switch
else
printf(1,"%d, ", i)
continue --new to euphoria 4.0.0+
end if
end for
any_key()
[edit] Factor
There is no built-in continue in Factor.
1 10 [a,b] [
[ number>string write ]
[ 5 mod 0 = "\n" ", " ? write ] bi
] each
[edit] Fantom
While and for loops support continue to jump back to begin the next iteration of the loop.
class LoopsContinue
{
public static Void main ()
{
for (Int i := 1; i <= 10; ++i)
{
Env.cur.out.print (i)
if (i % 5 == 0)
{
Env.cur.out.printLine ("")
continue
}
Env.cur.out.print (", ")
}
Env.cur.out.printLine ("")
}
}
[edit] Forth
Although this code solves the task, there is no portable equivalent to "continue" for either DO-LOOPs or BEGIN loops.
: main
11 1 do
i dup 1 r.
5 mod 0= if cr else [char] , emit space then
loop ;
[edit] Fortran
do i = 1, 10
write(*, '(I0)', advance='no') i
if ( mod(i, 5) == 0 ) then
write(*,*)
cycle
end if
write(*, '(A)', advance='no') ', '
end do
C WARNING: This program is not valid ANSI FORTRAN 77 code. It uses
C one nonstandard character on the line labelled 5001. Many F77
C compilers should be okay with it, but it is *not* standard.
C
C It is also worth noting that FORTRAN 77 uses the command CONTINUE,
C but not in the semantic, looping sense of the word. In FORTRAN,
C CONTINUE means "do absolutely nothing." It is a placeholder. If
C anything, it means "continue to the next line."
C
C Python does the same thing with `pass`; C and its family of
C languages, with `{/* do nothing */}`. Write CONTINUE when you need
C to write something but have nothing to write.
C
C This page on Rosetta Code is about a very different "continue"
C statement that tells a loop to go back to the beginning. In
C FORTRAN, we use (you guessed it!) a GOTO to accomplish this.
PROGRAM CONTINUELOOP
INTEGER I
DO 10 I = 1, 10
C Is it five or ten?
IF (MOD(I, 5) .EQ. 0) THEN
C If it is, write a newline and no comma.
WRITE (*,5000) I
C Continue the loop; that is, skip to the end of the loop.
GOTO 10
ENDIF
C Write I with a comma and no newline.
WRITE (*,5001) I
C Again, in this case, CONTINUE is completely unrelated to the
C semantic, looping sense of the word.
10 CONTINUE
STOP
C This will print an integer and a newline (no comma).
5000 FORMAT (I3)
C Standard FORTRAN 77 is completely incapable of completing a
C WRITE statement without printing a newline. If you want to print
C five integers in standard code, you have to do something like
C this:
C
C FORMAT (I3, ',', I3, ',', I3, ',', I3, ',', I3)
C
C Writing `1, 2, 3, 4, 5` and then `6, 7, 8, 9, 10` to that format
C would produce the following two lines:
C
C 1, 2, 3, 4, 5
C 6, 7, 8, 9, 10
C
C However, this code exists to demonstrate continuing a FORTRAN 77
C loop and not to demonstrate how to get around its rigidity about
C newlines.
C
C The dollar sign at the end of the format is a nonstandard
C character. It tells the compiler not to print a newline. If you
C are actually using FORTRAN 77, you should figure out what your
C particular compiler accepts. If you are actually using Fortran
C 90 or later, you should replace this line with the commented
C line that follows it.
5001 FORMAT (I3, ',', $)
C5001 FORMAT (I3, ',', ADVANCE='NO')
END
[edit] GAP
for i in [1 .. 11] do
if RemInt(i, 5) = 0 then
Print(i, "\n");
continue;
fi;
Print(i, ", ");
od;
# 1, 2, 3, 4, 5
# 6, 7, 8, 9, 10
[edit] GML
for(i = 1; i <= 10; i += 1)
{
show_message(string(i))
i += 1
if(i <= 10)
continue
}
[edit] Go
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
fmt.Printf("%d", i)
if i%5 == 0 {
fmt.Printf("\n")
continue
}
fmt.Printf(", ")
}
}
Output:
1, 2, 3, 4, 5 6, 7, 8, 9, 10
[edit] Groovy
for (i in 1..10) {
print i
if (i % 5 == 0) {
println ()
continue
}
print ', '
}
[edit] Haskell
As a functional language, it is not idiomatic to have true loops - recursion is used instead. Below is one of many possible implementations of the task. The below code uses a guard (| symbol) to compose functions differently for the two alternative output paths, instead of using continue like in an imperative language.
import Control.Monad (forM)
main = forM [1..10] out
where
out x | x `mod` 5 == 0 = print x
| otherwise = (putStr . (++", ") . show) x
[edit] HicEst
DO i = 1, 10
IF( MOD(i, 5) == 1 ) THEN
WRITE(Format="i3") i
ELSE
WRITE(APPend, Format=" ',', i3 ") i
ENDIF
ENDDO
[edit] Icon and Unicon
The following code demonstrates the use of 'next' (the reserved word for 'continue'):
procedure main()
every writes(x := 1 to 10) do {
if x % 5 = 0 then {
write()
next
}
writes(", ")
}
end
However, the output sequence can be written without 'next' and far more succinctly as:
every writes(x := 1 to 10, if x % 5 = 0 then "\n" else ", ")
[edit] J
J is array-oriented, so there is very little need for loops. For example, one could satisfy this task this way:
_2}."1'lq<, >'8!:2>:i.2 5
J does support loops for those times they can't be avoided (just like many languages support gotos for those time they can't be avoided).
3 : 0 ] 10
z=.''
for_i. 1 + i.y do.
z =. z , ": i
if. 0 = 5 | i do.
z 1!:2 ]2
z =. ''
continue.
end.
z =. z , ', '
end.
i.0 0
)
Though it's rare to see J code like this.
[edit] Java
for(int i = 1;i <= 10; i++){
System.out.print(i);
if(i % 5 == 0){
System.out.println();
continue;
}
System.out.print(", ");
}
[edit] JavaScript
Using the print() function from Rhino or SpiderMonkey.
var output = "";
for (var i = 1; i <= 10; i++) {
output += i;
if (i % 5 == 0) {
print(output);
output = "";
continue;
}
output += ", ";
}
[edit] Liberty BASIC
for i =1 to 10
if i mod 5 <>0 then print i; ", "; else print i
next i
end
[edit] Lisaac
1.to 10 do { i : INTEGER;
i.print;
(i % 5 = 0).if { '\n'.print; } else { ','.print; };
};
[edit] Lua
for i = 1, 10 do
io.write( i )
if i % 5 == 0 then
io.write( "\n" )
else
io.write( ", " )
end
end
[edit] Maple
for i from 1 to 10 do
printf( "%d", i );
if irem( i, 5 ) = 0 then
printf( "\n" );
next
end if;
printf( ", " )
end do:
This can also be done as follows, but without the use of "next".
for i to 10 do
printf( "%d%s", i, `if`( irem( i, 5 ) = 0, "\n", ", " ) )
end do:
[edit] Mathematica
tmp = "";
For[i = 1, i <= 10, i++,
tmp = tmp <> ToString[i];
If[Mod[i, 5] == 0,
tmp = tmp <> "\n";
,
tmp = tmp <> ", ";
];
];
Print[tmp]
[edit] MATLAB / Octave
Loops are considered slow in Matlab and Octave, it is preferable to vectorize the code.
disp([1:5; 6:10])
or
disp(reshape([1:10],5,2)')
A non-vectorized version of the code is shown below in Octave
for i = 1:10
printf(' %2d', i);
if ( mod(i, 5) == 0 )
printf('\n');
continue
end
end
[edit] Maxima
/* There is no "continue" in Maxima, the easiest is using a "if" instead */
block(
[s: ""],
for n thru 10 do (
s: sconcat(s, n),
if mod(n, 5) = 0 then (
ldisp(s),
s: ""
) else (
s: sconcat(s, ", ")
)
)
)$
[edit] MAXScript
for i in 1 to 10 do
(
format "%" i
if mod i 5 == 0 then
(
format "\n"
continue
) continue
format ", "
)
Insert non-formatted text here
[edit] Metafont
Metafont has no a continue (or similar) keyword. As the Ada solution, we can complete the task just with conditional.
string s; s := "";
for i = 1 step 1 until 10:
if i mod 5 = 0:
s := s & decimal i & char10;
else:
s := s & decimal i & ", "
fi; endfor
message s;
end
Since message append always a newline at the end, we need to build a string and output it at the end, instead of writing the output step by step.
Note: mod is not a built in; like TeX, "bare Metafont" is rather primitive, and normally a set of basic macros is preloaded to make it more usable; in particular mod is defined as
primarydef x mod y = (x-y*floor(x/y)) enddef;
[edit] Modula-3
Modula-3 defines the keyword RETURN as an exception, but when it is used with no arguments it works just like continue in C.
Note, however, that RETURN only works inside a procedure or a function procedure; use EXIT otherwise.
Module code and imports are omitted.
FOR i := 1 TO 10 DO
IO.PutInt(i);
IF i MOD 5 = 0 THEN
IO.Put("\n");
RETURN;
END;
IO.Put(", ");
END;
[edit] MOO
s = "";
for i in [1..10]
s += tostr(i);
if (i % 5 == 0)
player:tell(s);
s = "";
continue;
endif
s += ", ";
endfor
[edit] Nemerle
using System;
using System.Console;
using Nemerle.Imperative;
module Continue
{
Main() : void
{
foreach (i in [1 .. 10])
{
Write(i);
when (i % 5 == 0) {WriteLine(); continue;}
Write(", ");
}
}
}
[edit] NetRexx
/* NetRexx */
options replace format comments java crossref savelog symbols nobinary
say
say 'Loops/Continue'
nul = '\-'
loop i_ = 1 to 10
say i_.right(2) || nul
if i_ // 5 = 0 then do
say
iterate i_
end
say ', ' || nul
end i_
[edit] OCaml
There is no continue statement for for loops in OCaml, but it is possible to achieve the same effect with an exception.
# for i = 1 to 10 do
try
print_int i;
if (i mod 5) = 0 then raise Exit;
print_string ", "
with Exit ->
print_newline()
done
;;
1, 2, 3, 4, 5
6, 7, 8, 9, 10
- : unit = ()
Though even if the continue statement does not exist, it is possible to add it with camlp4.
[edit] Octave
v = "";
for i = 1:10
v = sprintf("%s%d", v, i);
if ( mod(i, 5) == 0 )
disp(v)
v = "";
continue
endif
v = sprintf("%s, ", v);
endfor
[edit] Oz
By using the "continue" feature of the for-loop, we bind C to a nullary procedure which, when invoked, immediately goes on to the next iteration of the loop.
for I in 1..10 continue:C do
{System.print I}
if I mod 5 == 0 then
{System.printInfo "\n"}
{C}
end
{System.printInfo ", "}
end
[edit] PARI/GP
for(n=1,10,
print1(n);
if(n%5 == 0, print();continue);
print1(", ")
)
[edit] Pascal
See Delphi
[edit] Perl
foreach (1..10) {
print $_;
if ($_ % 5 == 0) {
print "\n";
next;
}
print ', ';
}
It is also possible to use a goto statement to jump over the iterative code section for a particular loop:
foreach (1..10) {
print $_;
if ($_ % 5 == 0) {
print "\n";
goto MYLABEL;
}
print ', ';
MYLABEL:
}
[edit] Perl 6
for 1 .. 10 {
.print;
if $_ %% 5 {
print "\n";
next;
}
print ', ';
}
or without using a loop:
$_.join(", ").say for [1..5], [6..10];
[edit] PHP
for ($i = 1; $i <= 10; $i++) {
echo $i;
if ($i % 5 == 0) {
echo "\n";
continue;
}
echo ', ';
}
[edit] PicoLisp
PicoLisp doesn't have an explicit 'continue' functionality. It can always be emulated with a conditional expression.
(for I 10
(print I)
(if (=0 (% I 5))
(prinl)
(prin ", ") ) )
[edit] Pike
int main(){
for(int i = 1; i <= 10; i++){
write(sprintf("%d",i));
if(i % 5 == 0){
write("\n");
continue;
}
write(", ");
}
}
[edit] PL/I
loop:
do i = 1 to 10;
put edit (i) (f(3));
if mod(i,5) = 0 then do; put skip; iterate loop; end;
put edit (', ') (a);
end;
[edit] Pop11
lvars i;
for i from 1 to 10 do
printf(i, '%p');
if i rem 5 = 0 then
printf('\n');
nextloop;
endif;
printf(', ')
endfor;
[edit] PowerShell
for ($i = 1; $i -le 10; $i++) {
Write-Host -NoNewline $i
if ($i % 5 -eq 0) {
Write-Host
continue
}
Write-Host -NoNewline ", "
}
[edit] PureBasic
OpenConsole()
For i.i = 1 To 10
Print(Str(i))
If i % 5 = 0
PrintN("")
Continue
EndIf
Print(",")
Next
Repeat: Until Inkey() <> ""
[edit] Python
for i in xrange(1,11):
if i % 5 == 0:
print i
continue
print i, ",",
[edit] R
for(i in 1:10)
{
cat(i)
if(i %% 5 == 0)
{
cat("\n")
next
}
cat(", ")
}
[edit] Racket
It is possible to skip loop iterations in Racket, but an explicit continue construct is rarely used:
#lang racket
;; Idiomatic way
(for ([i (in-range 1 11)])
(if (= (remainder i 5) 0)
(printf "~a~n" i)
(printf "~a, " i)))
;; Forces a skip, but not idiomatic because
;; the logic is less obvious
(for ([i (in-range 1 11)]
#:unless (and (= (remainder i 5) 0)
(printf "~a~n" i)))
(printf "~a, " i))
[edit] REBOL
rebol [
Title: "Loop/Continue"
Author: oofoe
Date: 2010-01-05
URL: http://rosettacode.org/wiki/Loop/Continue
]
; REBOL does not provide a 'continue' word for loop constructs,
; however, you may not even miss it:
print "One liner (compare to ALGOL 68 solution):"
repeat i 10 [prin rejoin [i either 0 = mod i 5 [crlf][", "]]]
print [crlf "Port of ADA solution:"]
for i 1 10 1 [
prin i
either 0 = mod i 5 [
prin newline
][
prin ", "
]
]
Output:
One liner (compare to ALGOL 68 solution): 1, 2, 3, 4, 5 6, 7, 8, 9, 10 Port of ADA solution: 1, 2, 3, 4, 5 6, 7, 8, 9, 10
[edit] REXX
/*REXX program to illustrate DO loop with an ITERATE (continue). */
do j=1 to 10
call charout , j", "
if j//5==0 then do
say
iterate
end
end /*j*/
[edit] Ruby
for i in 1..10 do
print i
if i % 5 == 0 then
puts
next
end
print ', '
end
The "for" look could be written like this:
(1..10).each do |i| ...
1.upto(10) do |i| ...
10.times do |n| i=n+1; ...
Without meeting the criteria (showing loop continuation), this task could be written as:
1.upto(10) {|i| print "%d%s" % [i, i%5==0 ? "\n" : ", "]}
[edit] Run BASIC
for i = 1 to 10
if i mod 5 <> 0 then print i;", "; else print i
next i
[edit] Salmon
iterate (x; [1...10])
{
print(x);
if (x % 5 == 0)
{
print("\n");
continue;
};
print(", ");
};
[edit] Sather
There's no continue! in Sather. The code solve the task without forcing a new iteration.
class MAIN is
main is
i:INT;
loop i := 1.upto!(10);
#OUT + i;
if i%5 = 0 then
#OUT + "\n";
else
#OUT + ", ";
end;
end;
end;
end;
[edit] Scala
Scala doesn't have a continue keyword. if could be used here.
for(i <- 1 to 10) {
print(i)
if (i%5==0) println() else print(", ")
}
[edit] Scheme
(define (loop i)
(if (> i 10) 'done
(begin
(display i)
(cond ((zero? (modulo i 5))
(newline) (loop (+ 1 i)))
(else (display ", ")
(loop (+ 1 i)))))))
[edit] Suneido
ob = Object()
for (i = 1; i <= 10; ++i)
{
ob.Add(i)
if i is 5
{
Print(ob.Join(','))
ob = Object()
}
}
Print(ob.Join(','))
Output:
1,2,3,4,5
6,7,8,9,10
ok
[edit] Tcl
for {set i 1} {$i <= 10} {incr i} {
puts -nonewline $i
if {$i % 5 == 0} {
puts ""
continue
}
puts -nonewline ", "
}
[edit] TI-89 BASIC
count()
Prgm
""→s
For i,1,10
s&string(i)→s
If mod(i,5)=0 Then
Disp s
""→s
Cycle
EndIf
s&", "→s
EndFor
EndPrgm
Ti-89 lacks support for multi-argument display command or controlling the print position so that one can print several data on the same line. The display command (Disp) only accepts one argument and prints it on a single line (causing a line a feed at the end, so that the next Disp command will print in the next line). The solution is appending data to a string (s), using the concatenator operator (&), by converting numbers to strings, and then printing the string at the end of the line.
[edit] TUSCRIPT
$$ MODE TUSCRIPT
numbers=""
LOOP n=1,10
numbers=APPEND (numbers,", ",n)
rest=n%5
IF (rest!=0) CYCLE
PRINT numbers
numbers=""
ENDLOOP
Output:
1, 2, 3, 4, 5 6, 7, 8, 9, 10
[edit] UnixPipes
yes \ | cat -n | head -n 10 | xargs -n 5 echo | tr ' ' ,
[edit] UNIX Shell
Z=1
while (( Z<=10 )); do
echo -e "$Z\c"
if (( Z % 5 != 0 )); then
echo -e ", \c"
else
echo -e ""
fi
(( Z++ ))
done
for ((i=1;i<=10;i++)); do
echo -n $i
if [ $((i%5)) -eq 0 ]; then
echo
continue
fi
echo -n ", "
done
[edit] Vedit macro language
for (#1 = 1; #1 <= 10; #1++) {
Num_Type(#1, LEFT+NOCR)
if (#1 % 5 == 0) {
Type_Newline
Continue
}
Message(", ")
}
[edit] Visual Basic .NET
For i = 1 To 10
Console.Write(i)
If i Mod 5 = 0 Then
Console.WriteLine()
Else
Console.Write(", ")
End If
Next
[edit] XPL0
Like Ada and ALGOL there's no 'continue' command. The task is solved very simply anyway. The commands 'int' and 'rem' are shown spelled out here. Only the first three characters of a command are required.
code CrLf=9, IntOut=11, Text=12;
integer N;
for N:= 1 to 10 do
[IntOut(0, N); if remainder(N/5) \#0\ then Text(0, ", ") else CrLf(0)]
Output:
1, 2, 3, 4, 5 6, 7, 8, 9, 10
- Programming Tasks
- Iteration
- Ada
- Aikido
- ALGOL 68
- AutoHotkey
- AWK
- BBC BASIC
- Bc
- C
- C++
- C sharp
- Clojure
- ColdFusion
- Common Lisp
- D
- Dc
- Delphi
- DWScript
- Ela
- Erlang
- Euphoria
- Factor
- Fantom
- Forth
- Fortran
- GAP
- GML
- Go
- Groovy
- Haskell
- HicEst
- Icon
- Unicon
- J
- Java
- JavaScript
- Liberty BASIC
- Lisaac
- Lua
- Maple
- Mathematica
- MATLAB
- Octave
- Maxima
- MAXScript
- Metafont
- Modula-3
- MOO
- Nemerle
- NetRexx
- OCaml
- Oz
- PARI/GP
- Pascal
- Perl
- Perl 6
- PHP
- PicoLisp
- Pike
- PL/I
- Pop11
- PowerShell
- PureBasic
- Python
- R
- Racket
- REBOL
- REXX
- Ruby
- Run BASIC
- Salmon
- Sather
- Scala
- Scheme
- Suneido
- Tcl
- TI-89 BASIC
- TUSCRIPT
- UnixPipes
- UNIX Shell
- Vedit macro language
- Visual Basic .NET
- XPL0
- GUISS/Omit
- M4/Omit
- Loop modifiers