Psycho-Logic

Psychology, Programming, and more...?

Python3 DAY5:paizaスキルチェック「AボタンとBボタン」

今回挑戦した問題は
「標準入力で渡される A,B から、Aの分だけマスを進み(座標+1) B の分だけ戻る(座標-1)場合の座標位置を出力する」
というもの。
こちらはキャンペーン(Amazonギフト券プレゼント)の問題のようです。

f:id:Mantra:20170213161445p:plain

 

回答までにかかった時間は、なんと3分50秒!さらに1発正解!
すごい成長、したのか単に問題が簡単だったのかは分かりませんが、ともかくいいタイムであることは間違いないですね。
 

最初に考えたコード

 

input_lines = input()
move = input_lines.split(" ")
out = 0
print*1 - int(move[1]))

(がっつりネタバレだけど、キャンペーン終わるまで誰も見なければ時効じゃないかなぁ〜…) 

(便宜なのか、4行目の一部が自動的に置き換えられていてページ最下部に記載されています。)


2行目のmove変数で、input()で受け取った A B の値を分割してリストとして格納します。
3行目の out = 0 は出力する値を入れるための器として 0 と定義します。
 
最後に4行目の print*2 - int(move[1])) です。
out変数に前進する値 A の入っている move[1] を足します。
(input()で受け取ったものはそのままではstr型なので、int()でint型に変換)
そして、そこから後退する値Bを引けば完成です。
 
実際には out + int(move[0]) をカッコで囲う必要はないのですが、こちらのほうがリーダビリティが高いと判断しました。
 
今回は初学者による解説という需要のなさそうなものになってしまいましたが、嬉しかったのでつい記事にしてしまいました。
ふと思ったのが、
 
「なんだかプログラミングは料理に似ているな」
 
ということです。
目指すべきものは一緒でも、変数名や空白、アルゴリズム、リーダビリティの意識などが個人によってかなり異なるのではないかと。
同じ料理でも調理プロセスや使用食材、調味料、作る量に「美味しさ」の定義まで人それぞれなので、そういった点が類似しているなと思いました。
特に、「自分なり」をいかに「相手にとっても良いもの」に仕上げるか、という点が似ていないでしょうか。
(抽象化すれば何事も一般化できてしまうのですが・・・)

*1:out + int(move[0]

*2:out + int(move[0]