プログラマ脳を鍛える数学パズル 07
プログラマ脳を鍛える数学パズル シンプルで高速なコードが書けるようになる70問
- 作者: 増井敏克
- 出版社/メーカー: 翔泳社
- 発売日: 2015/10/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
1964/10/10 から 2020/7/25 までの日付を
- 8 桁整数に直す
- 二進数に変換する
- 前後の並びを反転する
- 数字に戻す
この時 4 の結果と 1 が一致する日付を探す…というもの
これは多分日付ライブラリの使い方を問う問題
from datetime import date, timedelta current_date = date(1964, 10, 10) end_date = date(2020, 7, 25) while end_date > current_date: date_int = int(current_date.strftime('%Y%m%d')) str_bin = bin(date_int)[2:] reverse = str_bin[::-1] if str_bin == reverse: # 二進数で回文すれば同じ日付やろ print(current_date) current_date = current_date + timedelta(days = 1)
date
の関数が何使うか分からなかったので、help(date)
すると、ドキュメントが現れる。
これは関数のドキュメントコメントなのだけど、インタラクティブシェルでこれが見れるのは Python ならでは。
あと、使い方に迷ったら REPL(Read Eval Print Loop. 読み取ってその場で解釈して print するループ。要するにシェルみたいに書いたその場で実行する環境)できるのも強い。
ちなみに Java は 10 から確か使えたはず。Scala は言うに及ばず、Ruby/PHP なんかもこれができる。というかVM持ってるような言語は大体できる。
ちょっと調べて見たら IGCC なんて C/C++ 用 REPL があった…公式言語仕様じゃないけどマジか…