Help us understand the problem. What is going on with this article?

「1から100の偶数の和を求めるワンライナー」まとめ

2019年8月11日頃にTwitterで「1から100の偶数の和を求める方法」(ワンライナー)が話題になったので
各言語ごとにまとめてみました。

私の独断と偏見ですが
「2550を直接出力するもの」「公式を使って総和を計算するもの」は
除外しています。
あくまでそれぞれのプログラミング言語の特色が現れるものをまとめたいと考えています。

以前あったズンドコきよしのまとめみたいなノリです。
https://qiita.com/shunsugai@github/items/971a15461de29563bf90

編集リクエスト歓迎です。
新しいワンライナーはコメント欄ではなく編集リクエストにて追加していただけると助かります!

---
8/15 11:30
コメント欄を取り込み&新たにツイートを拾いました。
---

発端のツイート

Python

上の改良版

result = sum(i for i in range(1, 101) if i % 2 == 0)

Haskell

C

LISP

PHP

C#

---
コメント欄より
C#のLINQでWhere使わないバージョンです。

var sum = Enumerable.Range(1, 100).Sum(x => x % 2 == 0 ? x : 0);

F#

Clojure

Ruby

Scala

PureScript

Swift

Julia

Perl

bash

1から100までの偶数の和もBashならたったの1行で書ける

echo {2..100..2}+ 0 | bc

とてもシンプルですね。Bashなら複雑なコードもシンプルに。

そう、Bashならね

---
コメント欄より
seq コマンドには -s オプションがありますので、

$ seq -s+ 2 2 100 | bc

と書けます。また、bc コマンドの代わりに bash の arithmetic expansion を使って、

$ echo $(($(seq -s+ 2 2 100)))

とする事もできます。

Java

標準のみで算出

jshell> IntStream.rangeClosed(1,100).filter(i->i%2==0).sum();
$5 ==> 2550

ライブラリを使わずに書いてみました。
(jshell(Java9以降)で実行するということで…)
java
int result = java.util.stream.IntStream.rangeClosed(1, 100).filter(i -> i % 2 == 0).sum();

Smalltalk

Elixir

Excel

---
コメント欄より
Excel/Power BIにおけるPower Queryでも何通りかできますね。(^^;

List.Sum(List.Generate(()=>2,each _<=100,each _+2))

あとは、

List.Sum(List.Numbers(2,100/2,2))

とかですね。
---

---

行列積を使ったバージョン

=MMULT(MOD(COLUMN(B1:CW1),2),ROW(A1:A100))

JavaScript

---
コメント欄より
JavaScriptは
[...Array(100).keys()].reduce((s,v) => ++v % 2 ? s:s + v,0)
のほうがちょっと短い?
---

再帰関数を使ったバージョン

(f=(x,y)=>(y<=100?f(x+(y%2?0:y),++y):x))(0,0);

Dart

Rust

R

コメント欄より
-----
Rなら。
sum(seq(2,100,2))
----

elm

コメント欄より

List.range 1 100 |> List.filter (\x -> modBy 2 x == 0) |> List.sum

VBA

Kotlin

コメント欄より
1から100までの偶数の和もKotlinならたったの1行で書ける

val result = (1..100).filter { it % 2 == 0 }.sum()

(filterとsumは標準ライブラリーの関数なのでデフォルトでインポートされるkotlin.collectionsパッケージの関数なのでimportなしで使えます。)

とてもシンプルですね。Kotlinなら複雑なコードもシンプルに。

そう、Kotlinならね
---

SQL

PowerShell

HSP

Vim script

exe 'echo ' . join(range(2, 101, 2), '+')

" vim 8以上、偶数の判定も行う版
exe 'echo ' . join(filter(range(101), {i, v -> v % 2 == 0}), '+')

Groovy

Go

for i, N, result := 1, 100 + 2, 0; i <= N; i++ { if i == N { fmt.Println(result) } else { result += (i + 1) & 1 * i } }

ref: https://qiita.com/noobow/items/28cd77968815f329ca77#comment-324899874e91ab0ea091

Delphi

DOS

コマンドプロンプト
set s=0 & for /l %a in (0,2,100) do set /a s = s + %a

J

奇数の項をゼロに置き換えて総和を求める

+/(2&|0:^:["_1])>:i.100

偶数の項だけ選び出して総和を求める

+/(#~[:-.2&|)>:i.100

偶数の項に1、奇数の項に0を掛けてから総和を求める

+/(*[:-.2&|)>:i.100

jq

noobow
製造業のユーザー系なSIerで働いていますが、製造系ではなく基盤よりの仕事をしています。 趣味で本邦航空機材一覧サイト「JA-Fleet」 https://ja-fleet.noobow.me/ をASP.NET Coreで作って運営してます。 仕事はJava、趣味は.NETです。 Qiitaの記事はメモ程度なことが多いです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした