#49890: 測資5無法過(內附程式詳細註解)


linswater (linswater)

學校 : 國立武陵高級中學
編號 : 297974
來源 : [36.224.93.12]
最後登入時間 :
2025-10-05 16:14:00

#輸入測資--------------------------------------
r,c,m = list(map(int,input("").split()))
array = []
for i in range(r):
    array.append(list(map(int,input("").split())))
oper = list(map(int,input("").split()))
#函式區--------------------------------------
#翻轉--------------------------------------
def over(arr):
    return arr[:][::-1]
#旋轉兩次--------------------------------------
def turn_b(arr):
    arrayf1 = arr[:][::-1]
    for i in range(len(arrayf1)):
        arrayf1[i] = arrayf1[i][::-1]
    return arrayf1
#旋轉一次--------------------------------------
def turn_o(arr):
    arrayf2 = []
    for i in range(len(arr[0])):
        shelt = []
        for j in range(len(arr)-1,-1,-1):
            shelt.append(arr[j][i])
        arrayf2.append(shelt)
    return arrayf2
#跑操作內容-會看目前處理的操作和下一個操作是否相同,如果一樣都是翻轉,就不用動,如果一樣都是旋轉,就用turn_b函數。處理完就兩項都從oper刪除。
#                    如果和下一個操作不相同,就依照1或0,分別使用over和turn_o,再從oper刪除。
#這個迴圈會跑到oper剩下0或1項
while len(oper) > 1:
    if oper[0] == oper[1]:
        if oper[0] == 0:
            array = turn_b(array)
        oper.pop(0)
        oper.pop(0)
    else:
        if oper[0] == 0:
            array = turn_o(array)
        else:
            array = over(array)
        oper.pop(0)
#如果還剩下一項,就交由這塊處理
if len(oper) == 1:
    if oper[0] == 0:
        array = turn_o(array)
    else:
        array = over(array)
#結果輸出
print(len(array),len(array[0]))
for i in range(len(array)):
    print(" ".join(str(n) for n in array[i]))
 
 
測資5無法通過,測資又不公開,請各位大大幫忙,看看哪裡處了問題。謝謝