68
\$\begingroup\$

I'm honestly surprised that this hasn't been done already. If you can find an existing thread, by all means mark this as a duplicate or let me know.

Input

Your input is in the form of any positive integer greater than or equal to 1.

Output

You must output the sum of all integers between and including 1 and the number input.

Example

 In: 5
     1+2+3+4+5 = 15
Out: 15

OEIS A000217 — Triangular numbers: a(n) = binomial(n+1,2) = n(n+1)/2 = 0 + 1 + 2 + ... + n.

Leaderboard

Run the code snippet below to view a leaderboard for this question's answers. (Thanks to programmer5000 and steenbergh for suggesting this, and Martin Ender for creating it.)

var QUESTION_ID=133109,OVERRIDE_USER=69148;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>

\$\endgroup\$
  • 5
    \$\begingroup\$ Closely related \$\endgroup\$ – FryAmTheEggman Jul 18 '17 at 20:36
  • \$\begingroup\$ @FryAmTheEggman Sorry - had a bit of a brain fart there. I see what you mean. \$\endgroup\$ – GarethPW Jul 18 '17 at 20:45
  • 2
    \$\begingroup\$ @Aaron you got ninja'd by Husk, which was just posted with a 1 byte solution \$\endgroup\$ – Skidsdev Jul 18 '17 at 21:35
  • 7
    \$\begingroup\$ I suggest a stack snippet. \$\endgroup\$ – programmer5000 Jul 19 '17 at 11:42
  • 1
    \$\begingroup\$ Related: minecraftforum.net/forums/off-topic/… \$\endgroup\$ – Jerry Jeremiah Jul 27 '17 at 12:20

160 Answers 160

1
\$\begingroup\$

Kona - 8 bytes

{+/!x+1}

Explanation:

 +/      Add together
   !      All numbers less than...
    x+1   The input plus 1

Alternative answer - 8 bytes:

{+/x,!x}

 +/      Add together
   x      The input
    ,     Joined to
     !     All the numbers less than...
      x    The input
| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ If you dont need it to be a function you can do +/!1+ for 5 bytes. \$\endgroup\$ – streetster Aug 10 '17 at 14:12
1
\$\begingroup\$

Emojicode, 50 bytes

🐖🔢➡️🚂🍇🍎➗✖🐕➕🐕1 2🍉

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

4, 40 bytes

3.70060101002000120300026040230503045054

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Braingolf, 1 byte

Q

Try it online!

1-indexed (ie 7 returns 0-6 summed)

Braingolf, 3 bytes

U&+

Try it online!

U - range, &+ - sum.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Cubically, 19 bytes

R3U1F1$:1/1+7*7/0%6

How it works:

R3U1F1              Set the top face to 2
      $             Get the first input as a number
       :1/1+7       Set the notepad to the input + 1
             *7     Multiply the notepad by the input
               /0   Divide the notepad by 2
                 %6 Output the notepad as a number
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

MY, 4 bytes

Wow, MY is actually capable of something!

𝕫iΣ↵

Try it online!

Explanation (hex/cp):

1A/𝕫 - push input as an integer
49/i - pop a; push [1 .. a]
53/Σ - pop a; push sum(a)
27/↵ - pop a; print(a) (with newline)
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Pyth, 11 9 bytes

VQ=+ZhN)Z

Explanation:

VQ       For N in range(0, Input)
=+ZhN)   Set Z to Z + 1 + N, suppress output and close function call
Z        Output Z

Try it online!

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Beat you by 7 bytes \$\endgroup\$ – Tornado547 Dec 11 '17 at 16:38
  • \$\begingroup\$ @Tornado547 I know, but that answers been taken. This is just a unique way of doing it. 2 bytes: sS. \$\endgroup\$ – Stan Strum Dec 11 '17 at 16:39
1
\$\begingroup\$

,,,, 6 bytes

::×+2÷

Try it online!

Explanation:

::     Duplicates the input twice
  ×    Pops off top two values and muliples them
   +   Adds the two values together. (Thus far it's basically n*n+n)
    2÷ Divides by 2
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Add++, 15 9 bytes

D,f,@,Rb+

Try it online!

ಠ_ಠ I forgot about functions. And then I forgot about the range command

How it works

D,f,@,    - Create a monadic function called f (one argument)
      R   - Generate a range from 1 to n
       b+ - Reduce that range by addition (sum)
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Recursiva, 3 bytes

sBa

Try it online!

Recursiva, 5 bytes

H*a;a

Try it online!

Recursive solution:

Recursiva, 12 bytes

=a0:0!+a#~a$

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Pyth - 2 Bytes

sS

Explanation:

sSQ Q added implicitly to resolve arity
s   sum of
 S  integers from one to
  Q input
 
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

SNOBOL4 (CSNOBOL4), 62 40 38 bytes

 N =INPUT
 OUTPUT =N * (N + 1) / 2
END

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Alumin, 9 bytes

jqdhcpfaf

Try it online!

Explanation

jqdhcpfaf
j          numeric input
 q   p     whlie TOS > 0
  d        duplicate TOS
   hc      subtract 1
      f f  fold over...
       a   ... addition 
| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ @Riker shoot lol done \$\endgroup\$ – Conor O'Brien Dec 17 '17 at 21:06
1
\$\begingroup\$

Kotlin, 13 bytes

{it*(it+1)/2}

Beautified

{
    it * (it + 1) / 2
}

Test

var f: (Int) -> Unit =
{it*(it+1)/2}

fun main(args: Array<String>) {
    println(f(5))
}

TIO

TryItOnline

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

brainfuck, 14 bytes

,[[>+<<.>-]>-]

Try it online!

Takes input as character code, outputs as unary null bytes

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Japt -x, 3 1 bytes

ò

Explanation:

ò     Range [0...Input]
-x    Sum

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Phooey, 10 bytes

&.@+1*/2$i

Try it online!

Explanation

&.@+1*/2$i
&.            write input to the tape
  @           push same input to the stack
   +1         increment tape value
     *        multiply tape value by popped stack value
      /2      divide it by 2
        $i    output as integer
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Whitespace, 71 bytes

[S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve][S N
S _Duplicate][N
S S N
_Create_Label_LOOP][S N
T   _Swap][S S S T  N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][N
T   S S N
_If_0_Jump_to_Label_PRINT_AND_EXIT][S N
S _Duplicate][S T   S S T   S N
_Copy_2nd][T    S S S _Add][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT_AND_EXIT][S N
N
_Discard_top][T N
S T _Print_as_integer]

Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.

Try it online (with raw spaces, tabs and new-lines only).

Example run: input = 3

Command   Explanation                     Stack        Heap   STDIN  STDOUT  STDERR

SSSN      Push 0                          [0]
SNS       Duplicate 0                     [0,0]
TNTT      Read STDIN as integer           [0]          {0:3}  3
TTT       Retrieve input from heap 0      [3]          {0:3}
SNS       Duplicate 3                     [3,3]        {0:3}
NSSN      Create Label_LOOP               [3,3]        {0:3}
 SNT      Swap top two                    [3,3]        {0:3}
 SSSTN    Push 1                          [3,3,1]      {0:3}
 TSST     Subtract (3-1)                  [3,2]        {0:3}
 SNS      Duplicate 2                     [3,2,2]      {0:3}
 NTSSN    If 0: Jump to Label_EXIT        [3,2]        {0:3}
 SNS      Duplicate 2                     [3,2,2]      {0:3}
 STSSTSN  Copy (0-indexed) 2nd (3)        [3,2,2,3]    {0:3}
 TSSS     Add (2+3)                       [3,2,5]      {0:3}
 NSNN     Jump to Label_LOOP              [3,2,5]      {0:3}
 
 SNT      Swap top two                    [3,5,2]      {0:3}
 SSSTN    Push 1                          [3,5,2,1]    {0:3}
 TSST     Subtract (2-1)                  [3,5,1]      {0:3}
 SNS      Duplicate 1                     [3,5,1,1]    {0:3}
 NTSSN    If 0: Jump to Label_EXIT        [3,5,1]      {0:3}
 SNS      Duplicate 1                     [3,5,1,1]    {0:3}
 STSSTSN  Copy (0-indexed) 2nd (5)        [3,5,1,1,5]  {0:3}
 TSSS     Add (1+5)                       [3,5,1,6]    {0:3}
 NSNN     Jump to Label_LOOP              [3,5,1,6]    {0:3}

 SNT      Swap top two                    [3,5,6,1]    {0:3}
 SSSTN    Push 1                          [3,5,6,1,1]  {0:3}
 TSST     Subtract (1-1)                  [3,5,6,0]    {0:3}
 SNS      Duplicate 0                     [3,5,6,0,0]  {0:3}
 NTSSN    If 0: Jump to Label_EXIT        [3,5,6,0]    {0:3}
NSSSN     Create Label_EXIT               [3,5,6,0]    {0:3}
 SNS      Discard top                     [3,5,6]      {0:3}
 TNST     Print top (6) to STDOUT as int  [3,5]        {0:3}         6
                                                                              error

Program stops with an error: No exit found. (Although I could add three trailing newlines NNN to get rid of that error.)

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Ahead, 6 bytes

IEK+O@

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

@yBASIC, 10 bytes

?_*_+_>>!.

Input should be in _ (No input methods exist)

Explanation

N(N+1) can be rewritten as N*N+N. Dividing by 2 would then require parentheses, but a left shift can be used instead. !. is the same as !0.0 (logical not of 0), which is 1.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

MathGolf, 2 bytes

╒Σ

Try it online!

Pretty much exactly the sum (Σ) of the range from 1 to input (╒)

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Gol><>, 7 bytes

I:P*2,h

Courtesy of JoKing

Try it online!

8 bytes

I::*+2,h

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Go, 29 bytes

A function literal which uses the closed form, \$ \frac n2(n+1) \$.

func(n int)int{return-~n*n/2}

Try it online!

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Symbolic Python, 14 bytes

_*=-~_*_/(_+_)

Try it online!

This basically evaluates to \$ \frac{ n^2 (n-1)}{2n} = \frac{ n (n-1)}{2}\$, which is the usual form for triangular numbers.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Shakespeare Programming Language, 154 bytes

(Whitespace added for readability)

S.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]
Ajax:
Listen tothy.
You is the quotient betweenthe product ofyou the sum ofyou a cat a big cat.
Open heart

Try it online!

Simple, just does n(n+1)/2.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Charcoal, 5 bytes

IΣ…·N

Try it online!

Explanation:

 Σ        The sum of
  …·N     the inclusive range from 0 to input
I          converted to a string

I tried to make it with the formula \$\frac{x(x+1)}{2}\$ but it took more characters.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Keg, 2 bytes (SBCS)

Ï⅀

TIO

Keg, 5 bytes (SBCS)

Ï∑+).

Explanation:

Ï#    Range from input to 0. The 0 will not affect the summation.
 ∑+#  Apply all stack: add.
   )# We have to complete the braces if we want to output as an integer.
    .#Output as an integer

TIO

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ That's available on the github interpreter and theoretically, it should work. \$\endgroup\$ – Lyxal Oct 13 '19 at 1:13
  • \$\begingroup\$ -1 byte using the -hr flag \$\endgroup\$ – Lyxal Dec 6 '19 at 20:43
1
\$\begingroup\$

Clojure - 19 bytes

#(apply +(range %))

Boring answer is boring...

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

C (gcc), 19 bytes

#define f(n)n*-~n/2

Try it online!

C (gcc), 15 bytes

f(n){n*=-~n/2;}

-5 bytes thanks to ceilingcat!

Try it online!

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ @ceilingcat Huh. How does that work? \$\endgroup\$ – S.S. Anne Jan 10 at 12:26
  • \$\begingroup\$ @JL2210 It's abusing the way GCC compiles the code without optimizations. \$\endgroup\$ – NieDzejkob Jan 11 at 14:37
0
\$\begingroup\$

Tcl, 36 bytes

time {incr s [incr n]} $argv;puts $s

Try it online!

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.