LoginSignup
1
2

More than 3 years have passed since last update.

紙を42回折ると月に届くのか Swift + Xcode Playground で調べる

Posted at

紙を42回折ると月に到達するという話がある

オチとしては、「42回も紙を折ることはできない」という話だった気がする。

地球から月への距離は

月 - Wikipedia

地球中心から月の中心までの平均距離は38万4,403km(約1.3光秒)であり、地球の赤道半径の約60.27倍である。

iOS には Units and Measurement という仕組みがある

単位変換が簡単にできそう。

Units and Measurement | Apple Developer Documentation

Label numeric quantities with physical dimensions to allow locale-aware formatting and conversion between related units.

紙を何回折ると月に届くのか調べるプログラムを Swift で書く

紙の厚さを 0.08mm と仮定。

import UIKit

// 地球と月との距離 38万4403キロメートル
let dist = Measurement(value: 384403, unit: UnitLength.kilometers)

// 紙の厚さは0.08ミリメートル
let paperThickness = Measurement(value: 0.08, unit: UnitLength.millimeters)

// 厚さを基準であるメートルに変換
var thickness = paperThickness.converted(to: UnitLength.meters)

// とりあえず100回ぐらい折ってみようか
for i in 0..<100 {

    if thickness.value >= 1000.0 {
        // キロメートルに変換して出力
        print("\(i)回目: \(thickness.converted(to: UnitLength.kilometers))")
    } else if thickness.value >= 1.0 {
        // メートルのまま出力
        print("\(i)回目: \(thickness)")
    } else if thickness.value >= 0.01 {
        // センチメートルに変換して出力
        print("\(i)回目: \(thickness.converted(to: UnitLength.centimeters))")
    } else {
        // ミリメートルに変換して出力
        print("\(i)回目: \(thickness.converted(to: UnitLength.millimeters))")
    }

    // 地球と月との距離を超えたら終了
    if thickness >= dist {
        print("\(paperThickness)の厚さの紙を\(i)回折ると月に到達することがわかった。")
        break
    }

    // 厚さを2倍にする
    thickness = thickness * 2
}

実行結果

0.08 mmの厚さの紙を43回折ると月に到達することがわかった。

xcode-swift-playground.png

0回目: 0.08 mm
1回目: 0.16 mm
2回目: 0.32 mm
3回目: 0.64 mm
4回目: 1.28 mm
5回目: 2.56 mm
6回目: 5.12 mm
7回目: 1.024 cm
8回目: 2.048 cm
9回目: 4.096 cm
10回目: 8.192 cm
11回目: 16.384 cm
12回目: 32.768 cm
13回目: 65.536 cm
14回目: 1.31072 m
15回目: 2.62144 m
16回目: 5.24288 m
17回目: 10.48576 m
18回目: 20.97152 m
19回目: 41.94304 m
20回目: 83.88608 m
21回目: 167.77216 m
22回目: 335.54432 m
23回目: 671.08864 m
24回目: 1.34217728 km
25回目: 2.68435456 km
26回目: 5.36870912 km
27回目: 10.73741824 km
28回目: 21.47483648 km
29回目: 42.94967296 km
30回目: 85.89934592 km
31回目: 171.79869184 km
32回目: 343.59738368 km
33回目: 687.19476736 km
34回目: 1374.38953472 km
35回目: 2748.77906944 km
36回目: 5497.55813888 km
37回目: 10995.11627776 km
38回目: 21990.23255552 km
39回目: 43980.46511104 km
40回目: 87960.93022208 km
41回目: 175921.86044416 km
42回目: 351843.72088832 km
43回目: 703687.44177664 km
0.08 mmの厚さの紙を43回折ると月に到達することがわかった。

今回の動作確認環境

  • Xcode 10.3

参考資料

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2