パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Pythonで7セグメントのパターンマッチング問題を異次元級の解き方で解いてみる

2024-07-09 | CodinGame

問題は7セグメントの時計を普通の数字に変換するというもの

7セグメントとは4から6行目のような数字表現で家電によく使われてます

 

いちいち数字一つずつ比較するのが面倒なので

0000から9999までの7セグメント数字を作って問題の文字列とヒットしたら答えるという解き方

よくよく考えたら2359まででよかったとか、

無駄な数値まわしていないとかヒットしたらブレイクとか、いろんな所と度外視してます

 

<プログラムの解説>

1 関数 7セグメントの数字nのl行目を返します

2 関数 問題の7セグメントの間にある:を取って詰めます

3 関数 ひと桁の数字にゼロ埋めをして二桁にします

4-6 7セグメントの文字列のデータ

8 3行の7セグメントの時間を間の:を取ってつなげます

10 さあ0から9999までの旅の始まりです

11 作った数字を行ごとに入れる器

12-14 数値ひと桁ずつ3行作成

15 作った数値が問題の数値と同じなら

16 その数値を答えます

 

答えても9999までの旅は続けます

なんて面倒なことをしても一問あたりの時間0.07秒ほどでした

 

異次元級というのは誇大なので訂正します

 

<別解>

思いついたので作成

1 関数 文字列Sからスタート位置PからL文字ずつ幅wで3行ほど取ってきます

7 問題の7セグメント情報を取得

9 数値の7セグメント文字列をキーにした辞書を作ります

11 問題から4つの数字の7セグメントを抜き出し辞書から数字(文字列)にします

12 解答の数字(文字列)の間に:入れて表示

 

一問あたりの時間0.0003秒未満でした


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。