ほとんどのエンジニアには解けるパズル３を解けませんでした

# 解く問題

[【パズル３】ほとんどのエンジニアには解けるパズル３ - ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記](http://tango-ruby.hatenablog.com/entry/2016/01/10/125615)
[Challenge3](http://challenge-your-limits3.herokuapp.com/)

# 背景

[下位20%のダメなエンジニアにだけ解けないパズルを解いた - Qiita](https://qiita.com/riekure/items/45a91498b98b7111dcb4)の続編です。

# 自分ルール

curlコマンドに関してはググってもよい。
解答を記載しているようなページは参照しない。

# 最初に結果から

アイスランドの緯度、経度がわからず、正解までたどり着けませんでした…

# 解答

```
$ curl http://challenge-your-limits3.herokuapp.com/call/my/lovely/APIs
{"message":"Let's get started! (1) Input whole numbers into '/input/is/:x' You can do it as much as you want.  (2) Guess what is formula from the outcomes.  (3) Put your formula into 'formula/is/:answer' e.g. 'formula/is/x+3' Good luck!"}
```

さぁ始めよう！
(1).```/input/is/:x```に整数を入力してみて。何回でも入力できるよ。
(2).結果から式を予想してみて。
(3).答えは```formula/is/x+3```のように、answerを書き換えてね。

みたいなことを言われました。
:xにいろいろ入れて、curlを叩いてみます。

```
$ curl http://challenge-your-limits3.herokuapp.com/input/is/1
{"output":6}
```
```
$ curl http://challenge-your-limits3.herokuapp.com/input/is/2
{"output":7,"clue":"URL encoding"}
```
```
$ curl http://challenge-your-limits3.herokuapp.com/input/is/3
{"output":8}
```
```
$ curl http://challenge-your-limits3.herokuapp.com/input/is/4
{"output":9,"clue":"URL encoding"}
```
```
$ curl http://challenge-your-limits3.herokuapp.com/input/is/5
{"output":10}
```

「5を加算しているだけだけかぁ、x+5だな！」となりました。
というわけで、

```
$ curl http://challenge-your-limits3.herokuapp.com/formula/is/x+5
{"error":"Nope. Keep trying. clue === http://bit.ly/1UwaCkv"}
```

エラーしました。
URLエンコーディングすればいいかと思い、+をエンコーディングしてみます。

```
$ curl http://challenge-your-limits3.herokuapp.com/formula/is/x%2B5
{"error":"Nope. Keep trying. clue === http://bit.ly/1UwaCkv"}
```

結果変わらず。
だめでした。
xを大文字にすればイケるのでは？？と思いましたが、

```
$ curl http://challenge-your-limits3.herokuapp.com/formula/is/X%2B5
{"error":"It should be 'x'. Not 'X' Ok?"}
```

気のせいでした。
30分くらい悩んでいましたが、```input/is/20```をたたいたときに、25ではなく**5**になりました。
あ、除算してる…余りかこれ…と閃き、

```
$ curl http://challenge-your-limits3.herokuapp.com/formula/is/x%2520%2b5
{"message":"Good Job!! === Please register your lovely profile as /challengers"}
```

x%20+5という数式になりました。
xを20で割った余りに5を加算する。という意味です。
そうすると、```/challengers```でプロフィールを登録してください。というメッセージになりました。

前回、前々回と同様にusernameとemailを入力して、上記のURLでcurlをたたきます。

```
$ curl -X POST -d 'username=riekure&email=qwertyuio@fuga.com' http://challenge-your-limits3.herokuapp.com/challengers
{"message":"Thanks for your registration! Let's go to '/welcome/to/Iceland'","id":5438,"username":"riekure","email":"qwertyuio@fuga.com","password":"RWTqD76EBZa3xQs1","latitude":139.692,"longitude":35.6895,"created_at":"2019-02-20T01:20:23.
```

次たたくURLとid、passwordなどなど返ってきました。
username:passwordを付与して、curlをたたきます。
これも前回、前々回とだいたい同じ。

```
$ curl -u riekure:RWTqD76EBZa3xQs1 http://challenge-your-limits3.herokuapp.com/welcome/to/Iceland
{"error":"uh-oh. Sorry. This page can only be accessed within Iceland. You're accessing from Tokyo JP. Only from Iceland is allowed. You wanna know why? Just ask 'why/Iceland'"}
```

Icelandからしかアクセスできないらしいです。
何故か知りたいならば、```why/Iceland```を叩けばよさそうです。

```
$ curl -u riekure:RWTqD76EBZa3xQs1 http://challenge-your-limits3.herokuapp.com/why/Iceland
{"message":"Iceland is here === http://bit.ly/1OM90Vx  You know? There is NO NEED to use Iceland VPN. You can update your location from PATCH '/challengers/:id' Don't be so serious!"}
```

Iceland VPNは必要ないよ。locationをPATCHでアップデートできる。らしいです。
curlはさっぱり分からないのでググりました。
[curlでPATCH動詞を使用する方法 - コードログ](https://codeday.me/jp/qa/20190103/110379.html)
```--request PATCH```をつければいいらしいので、とりあえず叩きます。

```
$ curl -u riekure:RWTqD76EBZa3xQs1 --request PATCH http://challenge-your-limits3.herokuapp.com/challengers/5438
{"message":"Do you know how to set your location as Iceland? Check this out === http://bit.ly/1O82eUE"}
```

アイスランドがどこか分からないなら、ここをチェックしようとURLがありました。
ただ、これが謎の企業？のページに飛ばされて、緯度／経度がさっぱり分からんです。
Wikipediaみて緯度／経度を調べて、ヤケクソで緯度／経度をPATCHしようと試みます。

```
$ curl -u riekure:RWTqD76EBZa3xQs1 --request PATCH --header 'Content-Type: application/json' --data '{"latitude": 64.08,"longitude": -21.56}' http://challenge-your-limits3.herokuapp.com/challengers/5438
```

お？何も返ってこないから上手くいった？？
というわけで、もう一度```welcome/to/Iceland```を叩きます。

```
$ curl -u riekure:RWTqD76EBZa3xQs1 http://challenge-your-limits3.herokuapp.com/welcome/to/Iceland
{"error":"uh-oh. Sorry. This page can only be accessed within Iceland. You're accessing from Tokyo JP. Only from Iceland is allowed. You wanna know why? Just ask 'why/Iceland'"}
```

はい。何も変わりませんでした。
そこから、いろいろと緯度／経度変えたり、header変えて叩きましたが変わらず……

合計して半日くらい格闘しましたが諦めました…

# 終わりに

解けなかった、他の方がまとめてくれていた答えを見ました。

[下位10%のダメなエンジニアシリーズ](https://yaasita.github.io/2016/01/25/dame-engineer/)

アプローチは合っていました。
悔しい……。