Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
64
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

「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

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
64
Help us understand the problem. What are the problem?