Atcoder Regular Contest 081のD問題をPythonで書いてみた

D - Coloring Dominoes

 

Xパターン(縦2×横1)が3通り

Yパターン(縦1×横2)が6通り

 

上が一番左における(配列0番目)、それぞれの場合の数。

 

次に、

Xの色を固定した場合、Xー>Xは2パターン。X->Yも2パターン。

Yの色を固定した場合、Y->Xは1パターン。Y→Yは3パターン。

 

あとはこれをコードに落とし込むだけ。

 

INF = 10**9+7
# n = int(input())
# s1 = list(input())
# s2 = list(input())

def calc_patterns_tnk(n, s1, s2):

if len(s1) != len(s2):
print("error!")

way = 1
pattern = 0
i = 0

while i <= n-1:
if s1[i] == s2[i]:
i += 1
way *= (3 - pattern)
pattern = 1
else:
i += 2
if pattern == 1:
way *= 2
elif pattern == 2:
way *= 3
else:
way *= 6
pattern = 2

return way % INF


print(calc_patterns_tnk(3, 'aab', 'ccb'))  # -> 6
print(calc_patterns_tnk(1, 'Z', 'Z'))  # -> 3
print(calc_patterns_tnk(52, 'RvvttdWIyyPPQFFZZssffEEkkaSSDKqcibbeYrhAljCCGGJppHHn', 'RLLwwdWIxxNNQUUXXVVMMooBBaggDKqcimmeYrhAljOOTTJuuzzn'))  # -> 958681902

はじめの一歩(はじめまして)

せっかく機械学習やらPyhtonを勉強しているので、何か書いていこうと思う。

 

プロフから。

タイ在住のプログラマで基本は生産管理システムとか、財務周りのシステムやっています。

ただ、仕事ではあまりコードをゴリゴリ書く機会がないので、半日曜プログラマ化してる。

最近、python機械学習を勉強中。

ハマったきっかけは、coursera.org/のAndrew Na先生のMachine Learing講座から。

 

趣味は、料理と麻雀、あとはちょっとゴルフします。

 

短文が多いと思いますが、どうかよろしくお願いします。