提出 #54356459


ソースコード 拡げる

N = int(input())

pattern = [["#", "#", "#"], ["#", ".", "#"], ["#", "#", "#"]]

pattern_dict = {1: pattern}


def make_level(K):
    if K == 1:
        return pattern

    if K in pattern_dict:
        return pattern_dict[K]

    mini_mat = make_level(K - 1)
    mat = [["-" for _ in range(3**K)] for _ in range(3**K)]

    for i in range(3 ** (K - 1)):
        for j in range(3 ** (K - 1)):
            val = mini_mat[i][j]
            if val == "#":
                for k in range(3):
                    for ll in range(3):
                        mat[i * 3 + k][j * 3 + ll] = mini_mat[k][ll]
            else:
                for k in range(3):
                    for ll in range(3):
                        mat[i * 3 + k][j * 3 + ll] = "."

    pattern_dict[K] = mat

    return mat


if N == 0:
    print("#")
    exit()

for i in range(N):
    make_level(i + 1)

    if i == N - 1:
        mat = pattern_dict[i + 1]
        for j in range(3**N):
            print(*mat[j], sep="")

提出情報

提出日時
問題 C - Sierpinski carpet
ユーザ Raki
言語 Python (CPython 3.11.4)
得点 250
コード長 1035 Byte
結果 AC
実行時間 166 ms
メモリ 14248 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 250 / 250
結果
AC × 2
AC × 9
セット名 テストケース
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt
ケース名 結果 実行時間 メモリ
example_00.txt AC 9 ms 8936 KiB
example_01.txt AC 10 ms 8948 KiB
test_00.txt AC 27 ms 9864 KiB
test_01.txt AC 9 ms 8912 KiB
test_02.txt AC 12 ms 9064 KiB
test_03.txt AC 9 ms 8948 KiB
test_04.txt AC 10 ms 9004 KiB
test_05.txt AC 166 ms 14248 KiB
test_06.txt AC 9 ms 9020 KiB