This site is supported by donations to The OEIS Foundation.

Template:Loop

From OeisWiki
Jump to: navigation, search

The {{loop}} OEIS Wiki formatting and function template repeatedly calls the named template (for which all arguments except the first must have default values) with its first argument ranging from offset to offset + (count - 1). If count is zero then the specified template (default is n) is not called. You may specify a separator string (default is empty string.) Note that this is not really a loop, but a bunch of repeated conditionals. To have real loops, we would need a MediaWiki extension such as Extension:Loops.

Usage

{{loop|nonnegative integer count|integer offset|name of template to call (default is n)|separator string (default is empty string)}}

Valid input

  • 1st argument: nonnegative integer count in [0..512] (required)
  • 2 nd argument: integer offset (required)
  • 3 rd argument: name of template to call (default is n) (Cf. template {{n}}, which simply returns its first argument)
  • 4th argument: separator string (default is empty string)

Examples

Examples with valid input

:<span style="font-size: 11px;">{&nbsp;{{loop|64|0|n|,&nbsp;}},&nbsp;...&nbsp;}</span>

gives

{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, ... }
Code Result
{{loop|0|10}}
{{loop|1|10}} 10
{{loop|2|10}} 1011
{{loop|5|10}} 1011121314
{{loop|5|10|n}} 1011121314
{{loop|5|10|n|,&nbsp;}} 10, 11, 12, 13, 14
{{loop|31|-15|Fibonacci|,&nbsp;}} 610, -377, 233, -144, 89, -55, 34, -21, 13, -8, 5, -3, 2, -1, 1, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610
{{loop|31|-15|Lucas|,&nbsp;}} -1364, 843, -521, 322, -199, 123, -76, 47, -29, 18, -11, 7, -4, 3, -1, 2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364
{{loop|10|1|repeat|&nbsp;&nbsp;}} ∗  ∗∗  ∗∗∗  ∗∗∗∗  ∗∗∗∗∗  ∗∗∗∗∗∗  ∗∗∗∗∗∗∗  ∗∗∗∗∗∗∗∗  ∗∗∗∗∗∗∗∗∗  ∗∗∗∗∗∗∗∗∗∗

and

:{{loop|10|1|repeat|{{nl}}}} or :{{loop|10|1|repeat|<br />}}

gives


∗∗
∗∗∗
∗∗∗∗
∗∗∗∗∗
∗∗∗∗∗∗
∗∗∗∗∗∗∗
∗∗∗∗∗∗∗∗
∗∗∗∗∗∗∗∗∗
∗∗∗∗∗∗∗∗∗∗

and

:{{loop|10|1|repeat|{{nl|2}}}}

gives

∗<{{Expansion depth limit exceeded| div = div

| p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗∗∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗∗∗∗∗∗<{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}><{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }} class="error">An error occurred!</{{Expansion depth limit exceeded| div = div | p = p | span = span | #default = strong }}>∗∗∗∗∗∗∗∗∗∗

And now for larger loop counts

:<span style="font-size: 11px;">{&nbsp;{{loop|300|-150|n|,&nbsp;}},&nbsp;...&nbsp;}</span>

gives

{ -150, -149, -148, -147, -146, -145, -144, -143, -142, -141, -140, -139, -138, -137, -136, -135, -134, -133, -132, -131, -130, -129, -128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, ... }

and

:<span style="font-size: 11px;">{&nbsp;{{loop|512|0|n|,&nbsp;}},&nbsp;...&nbsp;}</span>

gives

{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, ... }

Examples with invalid input

Code Result
{{loop|-1|10}} Loop error: First argument (count) must be a nonnegative integer in [0..512]
{{loop|513|10}} Loop error: First argument (count) must be a nonnegative integer in [0..512]
{{loop|4097|10}} Loop error: First argument (count) must be a nonnegative integer in [0..512]
{{loop|a|10}} Loop error: First argument (count) must be a nonnegative integer in [0..512]
{{loop|3|b}} Loop error: Second argument (offset) must be an integer

Code

Code of {{loop}} function template


{{ifint| {{{1|not an integer}}}
| {{#ifexpr: ( {{{1}}} >= 0 ) and ( {{{1}}} <= 512 ) <!-- first argument is the count (0 to 512, forget prohibitive count of 4096) --> 
  | {{ifint| {{{2|not an integer}}} <!-- second argument is the offset -->
    | <!-- * third argument is the name of the template to call (default is n)
             (template for which all arguments except the first have default values)
           * fourth argument is the separator string (default is the empty string) --><!--           
-->{{#ifexpr:{{{1}}}>=001*64|{{~Loop~0|64|{{#expr: 001*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--      
-->{{#ifexpr:{{{1}}}>=002*64|{{{4|}}}{{~Loop~0|64|{{#expr: 002*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--
-->{{#ifexpr:{{{1}}}>=003*64|{{{4|}}}{{~Loop~0|64|{{#expr: 003*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--
-->{{#ifexpr:{{{1}}}>=004*64|{{{4|}}}{{~Loop~0|64|{{#expr: 004*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--  
-->{{#ifexpr:{{{1}}}>=005*64|{{{4|}}}{{~Loop~0|64|{{#expr: 005*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--
-->{{#ifexpr:{{{1}}}>=006*64|{{{4|}}}{{~Loop~0|64|{{#expr: 006*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--
-->{{#ifexpr:{{{1}}}>=007*64|{{{4|}}}{{~Loop~0|64|{{#expr: 007*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--
-->{{#ifexpr:{{{1}}}>=008*64|{{{4|}}}{{~Loop~0|64|{{#expr: 008*64 - 64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}}}<!--   
-->{{#ifexpr:({{{1}}}>=001*64) and (( {{{1}}} ) mod 64 != 0)|{{{4|}}}}}{{~Loop~0|{{#expr: ( {{{1}}} ) mod 64 }}|{{#expr: (floor ( ( {{{1}}} ) / 64))*64 + {{{2}}} }}|{{{3|n}}}|{{{4|}}}}}<!--
--> | {{error| Loop error: Second argument (offset) must be an integer }}
    }}
  | {{error| Loop error: First argument (count) must be a [[Nonnegative integers|nonnegative integer]] in [0..512] }}
  }}
| {{error| Loop error: First argument (count) must be a [[Nonnegative integers|nonnegative integer]] in [0..512] }}
}}

Code of {{~Loop~0}} core function template


{{ifint| {{{1|not an integer}}}
| {{#ifexpr: ( {{{1}}} >= 0 ) and ( {{{1}}} <= 64 ) <!-- first argument is the count --> 
  | {{ifint| {{{2|not an integer}}} <!-- second argument is the offset -->
    | <!-- * third argument is the name of the template to call (default is n)
             (template for which all arguments except the first have default values)
           * fourth argument is the separator string (default is the null string)            
-->{{#ifexpr:{{{1}}}>000|<!-- -->{{{{{3|n}}}|{{#expr: 000 + {{{2}}} }}}}}}<!--  
-->{{#ifexpr:{{{1}}}>001|{{{4|}}}{{{{{3|n}}}|{{#expr: 001 + {{{2}}} }}}}}}<!--
-->{{#ifexpr:{{{1}}}>002|{{{4|}}}{{{{{3|n}}}|{{#expr: 002 + {{{2}}} }}}}}}<!--
-->{{#ifexpr:{{{1}}}>003|{{{4|}}}{{{{{3|n}}}|{{#expr: 003 + {{{2}}} }}}}}}<!--

(...)

-->{{#ifexpr:{{{1}}}>060|{{{4|}}}{{{{{3|n}}}|{{#expr: 060 + {{{2}}} }}}}}}<!--
-->{{#ifexpr:{{{1}}}>061|{{{4|}}}{{{{{3|n}}}|{{#expr: 061 + {{{2}}} }}}}}}<!--
-->{{#ifexpr:{{{1}}}>062|{{{4|}}}{{{{{3|n}}}|{{#expr: 062 + {{{2}}} }}}}}}<!--
-->{{#ifexpr:{{{1}}}>063|{{{4|}}}{{{{{3|n}}}|{{#expr: 063 + {{{2}}} }}}}}}<!--
--> | {{error| ~Loop~0 error: Second argument (offset) must be an integer }}
    }}
  | {{error| ~Loop~0 error: First argument (count) must be a [[Nonnegative integers|nonnegative integer]] in [0..64] }}
  }}
| {{error| ~Loop~0 error: First argument (count) must be a [[Nonnegative integers|nonnegative integer]] in [0..64] }}
}}

See also