emojinを用いてNewton法で√2の近似値を求めてみた


:::note warn
2024/6/29日に再度[emojin Playground](https://emojin.itsu.dev/)へ行ってみたところ、while文と代入が追加されていたので、ちゃんとしたNewton法を実装してみました。その節は[こちら](#629追記ちゃんと実装してみた)。
:::


# 目次
[1.ここで使う知識](#ここで使う知識)
[2.Newton法を実装してみたよん](#実際にnewton法を実装してみたよ)

ついこの前、Twitterで[emojin](https://emojin.itsu.dev/)という絵文字で書くプログラミング言語があるというtweetが流れてきたので、せっかくなのでNewton法を実装してみることにした。

# ここで使う知識
emojinでは数字も絵文字で表現する。例えば1は```1️⃣```、10は```1️⃣0️⃣```といった具合だ。
変数を宣言し、代入するには```🔖hoge🫵huga⛔️```で行う。なお、どうやら宣言をしないで普通に代入（？）するのはできないらしく、後述するfor文で回そうとしたときにはエラーを吐かれた。以下エラーコードとソースコード。

```
🔖🥺🫵0️⃣.0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣1️⃣⛔️

🔖🥴🫵2️⃣⛔️
🔖😇🫵1️⃣0️⃣⛔️


♻️👽🌀0️⃣➰1️⃣0️⃣0️⃣0️⃣🔜
    🤔🥴➖😇⚖️👉🥺💫🥴➖😇👈⚖️🥺🔜
        😇🫵🥴⛔️
        🥴🫵🥴➖🥴➗2️⃣⛔️
    🔚
🔚

📢🥴⛔️
```

```shell
[文] 行 9, 列 9：予期しないトークンです。繰り返し構文、条件分岐構文、出力構文、代入構文のいずれかが必要です（2）
```

```
🔖🥺🫵0️⃣.0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣1️⃣⛔️

🔖🥴🫵2️⃣⛔️
🔖😇🫵1️⃣0️⃣⛔️


♻️👽🌀0️⃣➰1️⃣0️⃣0️⃣0️⃣🔜
    🤔🥴➖😇⚖️👉🥺💫🥴➖😇👈⚖️🥺🔜
        🔖😇🫵🥴⛔️
        🔖🥴🫵🥴➖🥴➗2️⃣⛔️
    🔚
🔚

📢🥴⛔️
```

```shell
[実行時エラー] 行 9, 列 10：変数 😇 はすでに存在します
```

また、while文を使用しなかったのは、while文がそもそも用意されてなさそうだったからである（私の確認不足でもしかしたらあるかも（？））。
また、for文は次の様に書くことができる。以下は、1から100までの数を出力するプログラムである。

```:1から100までの数を出力するemojinスクリプト
♻️👽🌀1️⃣➰1️⃣0️⃣1️⃣🔜
    📢👽⛔️
🔚
```

```shell: 実行結果
1
2
3
...(略)
100
```

# 実際にNewton法を実装してみたよ
for文が使えなかったので、for文で書くべきところを全部手で書くという地獄に陥った。
```: Newton法を行うemojinスクリプト
🔖👽🫵2️⃣⛔️

🔖🥴🫵2️⃣⛔️

🔖🥴🥴🫵🥴➖🥴➗👽➕1️⃣➗🥴⛔️

🔖🥴🥴🥴🫵🥴🥴➖🥴🥴➗👽➕1️⃣➗🥴🥴⛔️

🔖🥴🥴🥴🥴🫵🥴🥴🥴➖🥴🥴🥴➗👽➕1️⃣➗🥴🥴🥴⛔️

🔖🥴🥴🥴🥴🥴🫵🥴🥴🥴🥴➖🥴🥴🥴🥴➗👽➕1️⃣➗🥴🥴🥴🥴⛔️

🔖🥴🥴🥴🥴🥴🥴🫵🥴🥴🥴🥴🥴➖🥴🥴🥴🥴🥴➗👽➕1️⃣➗🥴🥴🥴🥴🥴⛔️

📢🥴🥴🥴🥴🥴🥴⛔️
```

実行結果
```shell
1.414213562373095
```

できた。v(￣Д￣)v ｲｴｲ

# 6/29追記、ちゃんと実装してみた！！！
今日（2024/6/29）、もう一度見てみたらwhile文と代入ができるようになったので、ちゃんとしたNewton法を実装してみました。

```
🔖🥺🫵0️⃣.0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣1️⃣⛔️

🔖🥴🫵2️⃣⛔️
🔖😇🫵1️⃣0️⃣⛔️


🔁🥴➖😇👈🥺💫😇➖🥴👈🥺🔜
    😇🫵🥴⛔️
    🥴🫵🥴➖🥴➗2️⃣➕1️⃣➗🥴⛔️
🔚

📢🥴⛔️

```

```shell: 実行結果
1.414213562373095
```

これを利用して、$\sqrt{2}$から$\sqrt{100}$までをNewton法で近似してみました。

```
🔖🥺🫵0️⃣.0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣0️⃣1️⃣⛔️

🔖🥴⛔️
🔖😇⛔️

♻️👽🌀2️⃣➰1️⃣0️⃣1️⃣🔜
    🥴🫵5️⃣⛔️
    😇🫵1️⃣0️⃣⛔️

    🔁🥴➖😇👈🥺💫😇➖🥴👈🥺🔜
        😇🫵🥴⛔️
        🥴🫵🥴➖🥴➗👽➕1️⃣➗🥴⛔️
    🔚
    📢🥴⛔️
🔚

```

```shell: 実行結果
1.414213562373095
1.7320508075688799
2.0000000000000067
2.2360679774998022
2.449489742783195
2.6457513110646094
2.8284271247462156
3.000000000000031
3.1622776601684146
3.316624790355437
3.464101615137801
3.6055512754640446
3.7416573867739937
3.8729833462074743
4.000000000000068
4.123105625617732
4.24264068711936
4.358898943540752
4.472135954999666
4.5825756949559295
4.690415759823531
4.795831523312818
4.898979485566464
5
5.099019513592667
5.196152422706512
5.291502622129058
5.38516480713437
5.477225575051525
5.567764362829878
5.656854249492229
5.744562646537867
5.830951894845135
5.916079783099459
5.999999999999832
6.082762530298043
6.16441400296879
6.244997998398224
6.324555320336566
6.403124237432648
6.480740698407664
6.557438524301806
6.633249580710589
6.708203932499142
6.782329983125056
6.855654600400816
6.928203230275284
6.999999999999758
7.071067811865229
7.141428428542609
7.2111025509277225
7.280109889280257
7.348469228349268
7.416198487095404
7.483314773547607
7.549834435270469
7.615773105863632
7.681145747868319
7.74596669241455
7.810249675906367
7.874007874011519
7.937253933193465
7.9999999999997
8.062257748298238
8.12403840463566
8.18535277187212
8.246211251235005
8.306623862917744
8.366600265340413
8.426149773176022
8.48528137423824
8.544003745317168
8.60232526704225
8.660254037844018
8.717797887080964
8.774964387391785
8.831760866327496
8.888194417315205
8.944271909998772
8.999999999999622
9.055385138137023
9.110433579143933
9.165151389911252
9.219544457292496
9.273618495495269
9.32737905308842
9.380831519646419
9.43398113205622
9.486832980504724
9.539392014169039
9.591663046625017
9.6436507609925
9.695359714832243
9.746794344808528
9.79795897113222
9.848857801795669
9.89949493661119
9.949874371065759
9.99999999999954
```

できた。v(￣Д￣)v ｲｴｲv(￣Д￣)v ｲｴｲ