問題について
問題文はそのままここに書いてはいけない、(英文でした)自分なりの日本語を書います。 Q.カエルはとある場所に行きたい。カエルは現在X地点にいて、Y以上の地点に行きたい。カエルはジャンプ(移動)するたびにD動く。初めてのCodilityで苦戦したこと
問題はすぐに理解できたので自分の開発環境でプログラムを書いて無事正しい答えにたどり着いたのですが、なぜかCodilityでの環境では異なる値が出力されるので何時間も悩んだ。自分の環境ではまずループ使った方法でやってみたんですけど、Codilityでの環境ではなぜかSolution関数が1度しか呼ばれないのが自分の開発環境とCodilityで出力される値が異なる原因だった。
何故か関数が一度しか呼ばれないので、多分パフォーマンスの観点から呼び出し回数が制限がされているのだろうと予想して、やっぱり関数を何度も呼び出すのはパフォーマンス的にまずいのかと思って、指定されているSolution関数の呼び出しを一回だけにしてその中でループさせると無事に正しい値が出力されたが、新たに問題が発生した。
パフォーマンステストの存在
ループを使ったプログラムを提出すると、スコアは44%でした。 詳細を見ると、Correctness testsに関しては全問正解。 しかし、Performance testsに関しては「TIMEOUT ERROR 」 という結果が出ていました。 やっぱりループ使うのはパフォーマンス的にまずかったなぁ、、、って思って、再チャレンジしました。答えはここには書きませんが、ループしないで答えを出す書き方をしました。計算の部分は一行のプログラムでできました。
結果
出力結果とパフォーマンスで100点出ました。 点数の仕組みを見たら、様々な値を自分が書いたプログラムに代入して、どのパターンでも正しい値が出力されるプログラムかどうかで点数は変わるので、どの値を入れられても正しい出力が出るようなプログラムを書いて、パフォーマンスの良いプログラムを書ければ100点になると思います。
ちなみに、他にも提出をストップされる原因がありました。