85
\$\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\$
10
  • 5
    \$\begingroup\$ Closely related \$\endgroup\$ Commented Jul 18, 2017 at 20:36
  • \$\begingroup\$ @FryAmTheEggman Sorry - had a bit of a brain fart there. I see what you mean. \$\endgroup\$
    – Gareth
    Commented Jul 18, 2017 at 20:45
  • 2
    \$\begingroup\$ @Aaron you got ninja'd by Husk, which was just posted with a 1 byte solution \$\endgroup\$
    – Mayube
    Commented Jul 18, 2017 at 21:35
  • 7
    \$\begingroup\$ I suggest a stack snippet. \$\endgroup\$
    – user58826
    Commented Jul 19, 2017 at 11:42
  • 1
    \$\begingroup\$ Related: minecraftforum.net/forums/off-topic/… \$\endgroup\$ Commented Jul 27, 2017 at 12:20

222 Answers 222

1
4 5
6
7 8
1
\$\begingroup\$

MashedPotatoes, 144 bytes

synchronized
(0.0f){casestd::ignoreof{_->usestrictqw/nullptr/;}goto++i;(formatt"WHILE$ARGV<$[SETLOCAL*read-eval*WEND")procFS{`uniq-c`}{s/()//g}}

MashedPotatoes isn't available on TIO, so here's the Esolangs page for reference.

https://esolangs.org/wiki/MashedPotatoes

The annotated code below might not make sense without reading about the quirky language syntax first, but here goes...

synchronized
(0.0f) {

Sets the value of Label0 to 2 (the line number where the ( appears. Important for register rotation expression later.

case std::ignore of { _ -> use strict qw/nullptr/; }

Read an integer from STDIN into register ^A.

goto ++i;

Shift the registers, meaning ^A -> ^C -> ^E, to move the input to ^C.

(format t "

Loops while the contents of ^C are greater than 0.

WHILE $ARGV < $[ SETLOCAL *read-eval* WEND

Adds the value of ^C to register ^E.

")

End of loop, automatically decrements ^C.

proc FS {`uniq -c`} { s/()//g }

Prints the contents of ^E.

}

Just closing the synchronized statement to end the program cleanly

\$\endgroup\$
1
\$\begingroup\$

MAWP, 8 bytes

@!1+*2$:

Try it!

Old solution that manually loops through integers:

MAWP, 13 bytes

`0@[!\+/1-]`:

Try it!

\$\endgroup\$
1
\$\begingroup\$

<>^v, 8 bytes

,≈)*2?/;

Explanation

,≈)*2?/;

,         Read number from stdin
 ≈        Duplicate top of stack
  )       Increment top of stack
   *      Multiply top element of stack by second element of stack
    2     Push 2
     ?    Swap top two elements of stack
      /   Divide top element of stack by second element of stack
       ;  Print top of stack

run online

\$\endgroup\$
1
\$\begingroup\$

Python 3, 26 bytes

lambda n:sum(range(1,n+1))

Try it online!

Bewildered this isn't here yet.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ It isn't here because it's much longer than the optimal lambda n:n*-~n/2 \$\endgroup\$
    – pxeger
    Commented Dec 10, 2021 at 20:25
  • \$\begingroup\$ I've posted an alternative 19-byter, but it's not as short as @pxeger's solution \$\endgroup\$ Commented Oct 26, 2022 at 6:41
1
\$\begingroup\$

APOL, 18 bytes

v(0);ⅎ(⧣ ∆(0 ∈));⁰

\$\endgroup\$
1
\$\begingroup\$

Factor + math.unicode, 12 bytes

[ [1,b] Σ ]

Try it online!

Posting this here because the other Factor answer is incorrect.

\$\endgroup\$
1
\$\begingroup\$

J-uby, 7 bytes

:+|:sum

Try it online!

\$\endgroup\$
1
\$\begingroup\$

Mornington Crescent, 1136 bytes

I was surprised not to find an answer here already -- I thought we MC programmers had scoured the simpler challenges pretty clean.

Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Parsons Green
Take District Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take Circle Line to Aldgate
Take Circle Line to Aldgate
Take Metropolitan Line to Chalfont & Latimer
Take Metropolitan Line to Aldgate
Take Circle Line to Hammersmith
Take Circle Line to Aldgate
Take Circle Line to Aldgate
Take Metropolitan Line to Chalfont & Latimer
Take Metropolitan Line to Aldgate
Take Circle Line to Aldgate
Take Circle Line to Victoria
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Bank
Take Circle Line to Victoria
Take District Line to Turnham Green
Take District Line to Hammersmith
Take District Line to Turnham Green
Take District Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take District Line to Upminster
Take District Line to Bank
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

Try it online!

Summary of the program:

1. Parse integer from string using Parsons Green and store in Bank
(as far as I know, MC only supports string input)
2. Find bitwise negation of integer using Notting Hill Gate
3. Multiply integer by its bitwise negation using Chalfont & Latimer and store in Victoria
4. Calculate 1 by dividing the input integer by itself using Cannon Street
5. Retrieve stored value from Victoria and bitwise shift right by 1 using Turnham Green
6. Find bitwise negation of result using Notting Hill Gate
7. Add 1 to result using Upminster
8. Output the result via Mornington Crescent
\$\endgroup\$
1
\$\begingroup\$

Prolog (SWI), 18 bytes

N+R:-R is\N* -N/2.

Try it online!

Simple application of the formula

\$\endgroup\$
1
\$\begingroup\$

Python 3, 32 19 bytes

lambda z:z*(z+1)//2

-13 bytes because lambdas are small
-6 bytes due to a rereading.
-2 bytes thanks to @oeuf

\$\endgroup\$
4
  • \$\begingroup\$ -2 bytes \$\endgroup\$
    – oeuf
    Commented Apr 23, 2022 at 5:38
  • \$\begingroup\$ I see. Is the newline counted? \$\endgroup\$ Commented Apr 25, 2022 at 11:12
  • \$\begingroup\$ @py3programmer yes \$\endgroup\$
    – oeuf
    Commented Apr 25, 2022 at 13:52
  • \$\begingroup\$ ok then, so i've updated it \$\endgroup\$ Commented Apr 26, 2022 at 16:07
1
\$\begingroup\$

Thunno +, 2 bytes

(actually \$ 2 \log_{256}(96) \approx \$ 1.65 bytes but that doesn't show up on the leaderboard)

RS

Attempt This Online!

Thunno, \$ 4 \log_{256}(96) \approx \$ 3.29 bytes

R1+S

Attempt This Online!

or

1+RS

Attempt This Online!

Explanations

RS  # Implicit input
    # The + flag pushes input+1
R   # Push range(0, input+1)
 S  # Sum this list
    # Implicit output
R1+S  # Implicit input
R     # Push range(0, input)
 1+   # Add one to each
   S  # Sum this list
      # Implicit output
1+RS  # Implicit input
1+    # Add one to the input
  R   # Push range(0, input+1)
   S  # Sum this list
      # Implicit output
\$\endgroup\$
1
\$\begingroup\$

TacO, 8 bytes

@+%i
  i

A very simple solution. Iterates from 1 to the first argument, returning the index at each step, then sums the stack. Implicitly output.

@    ; Program Entry
+    ; Sum the result of
 %i  ; Loop from 1 to input
  i  ; Passed value of the loop

Try it online!

\$\endgroup\$
1
\$\begingroup\$

PowerShell, 22 bytes

1.."$args"-join'+'|iex

Try it online!

\$\endgroup\$
1
1
\$\begingroup\$

Thunno 2 S, 1 byte

R

Attempt This Online!

Thunno 2, 2 bytes

RS

Attempt This Online!

Pretty simple.

\$\endgroup\$
1
\$\begingroup\$

Vyxal Rs, 0 bytes

Or 2 bytes depending on whether you count the flags here.


Try it Online!

Vyxal has useful flags.

\$\endgroup\$
2
1
\$\begingroup\$

Ly, 3 bytes

R&+

Try it online!

A literal interpretation of the contest here...

R    - generate a range of numbers from 0 to "N" (from STDIN)
 &+  - sum the stack
     - print the stack as numeric values by default
\$\endgroup\$
1
\$\begingroup\$

Swift, 39 28 bytes

var s={(1...$0).reduce(0,+)}

Fairly self-explanatory.

\$\endgroup\$
1
\$\begingroup\$

Uiua, 15 bytes

/+⇡+1parse&sc

Folds an array from 0 to the input number parsed as an integer.

Uiua Pad

\$\endgroup\$
1
\$\begingroup\$

Scratch, 31 bytes

Try it here

define(n
say(((n)*((n)+(1)))/(2

enter image description here

\$\endgroup\$
0
\$\begingroup\$

Tcl, 36 bytes

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

Try it online!

\$\endgroup\$
0
\$\begingroup\$

Tcl, 29 bytes

puts [expr $argv*($argv+1)/2]

Try it online!

\$\endgroup\$
3
  • 1
    \$\begingroup\$ If you've got two Tcl answers, you should probably put them in one answer. \$\endgroup\$ Commented Jul 19, 2017 at 0:24
  • \$\begingroup\$ @numbermaniac I have three. \$\endgroup\$
    – sergiol
    Commented Jul 19, 2017 at 0:29
  • 6
    \$\begingroup\$ Ah. It's probably better to put them all in one answer, then. \$\endgroup\$ Commented Jul 19, 2017 at 1:08
0
\$\begingroup\$

QBIC, 10 bytes

?(:+1)/2*a

This prints (input+1) divided by 2 times input. Looping through all numbers from 1 to n is one byte longer:

[:|p=p+a]?p
\$\endgroup\$
0
\$\begingroup\$

Pyke, 2 bytes

Ss

Try it online!

Showing off Pyke's roots in being inspired by Pyth, the function map is exactly the same, only ran as a stack rather than a tree.

S  -  range(1, input+1)
 s - sum(^)
\$\endgroup\$
0
\$\begingroup\$

Scala, 12 bytes

Gauss sum (12 bytes):

n=>n*(n+1)/2

Naive version (14 bytes):

n=>1.to(n).sum
\$\endgroup\$
0
\$\begingroup\$

Clojure, 28 bytes

#(apply + (range 1 (inc %)))
\$\endgroup\$
0
\$\begingroup\$

Clojure, 16 bytes

#(/(*(inc %)%)2)
\$\endgroup\$
0
\$\begingroup\$

Groovy, 11 bytes

{it*++it/2}

Try it online!


The input is not modified by rules of Groovy clsures.

\$\endgroup\$
0
\$\begingroup\$

PHP, 35 34 32 25 bytes

<?=$argv[1]*++$argv[1]/2;

Run from the command line, with the input as a parameter.

\$\endgroup\$
1
  • \$\begingroup\$ Save 6 bytes with $argn and -F \$\endgroup\$
    – Titus
    Commented Jul 26, 2017 at 11:34
0
\$\begingroup\$

Fortran 95, 58 bytes

function l(n)
i=1
l=1
do while(i<n)
i=i+1
l=l+i
end do
end

Try it online!

\$\endgroup\$
0
\$\begingroup\$

Dyvil, 12 bytes

n=>n*(n+1)/2

The operator rules force me to use either parentheses or spaces. Uses the Gauss method, and is also a Scala polyglot.

Usage:

let f: int -> int = n=>n*(n+1)/2

print f(5)  // 15
print f(10) // 45
\$\endgroup\$
1
4 5
6
7 8

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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