iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
自我挑戰組

程式設計師大冒險系列 第 24

[24/150]10409 - Die Game圖解題目(下集)

  • 分享至 

  • xImage
  •  

在紙上解題特別有靈感,電腦只是執行工具。

大綱

  • 更正啟事
  • 程式碼
  • 總結

更正啟事

很抱歉昨天對於題目理解有誤,input的數字代表翻轉次數,而非面朝上數字。


10409 - Die Game

有一些bug,待修改。
但是邏輯是對的,debug只錯最後一題。


def test(fun):
    if(fun=="inp"):
        return 1
    if(fun=="die"):
        return 1
    if(fun=="newa"):
        return 1

測試函數用來關掉監測輸出

import sys

def inp():
    #遊戲數值
    global ew,ns
    #讀取處理
    nuca=sys.stdin.readline()
    nuca=int(nuca)
    while(nuca!=0):#如果數字為0遊戲結束
        ew=0
        ns=0
        for i in range(nuca):
            st=sys.stdin.readline()
            st=st.replace("\n","")
            if(test("inp")):print(st)
            die(st)
        if(test("inp")):print("ew=",ew,"ns=",ns)
        newa(ew,ns)
        if(test("inp")):print("="*6)  
        #讀取下題測資
        nuca=sys.stdin.readline()
        nuca=int(nuca)

讀取函數

def die(st):
    global ew,ns
    if(st=="north"):
        ns+=1
        if(test("die")):print("ns=",ns)
    elif(st=="south"):
        ns-=1
        if(test("die")):print("ns=",ns)
    elif(st=="east"):
        ew-=1
        if(test("die")):print("ew=",ew)
    else:
        ew+=1
        if(test("die")):print("ew=",ew)

判斷旋轉方向,並且進行統計。
例:往左翻三次:往右翻一次,等於往左翻二次。

def newa(lr,td):
#有沒有發現tdst[1],tdst[3]==lrst[1],lrst[3]
    tdst=[2,1,5,6]
    lrst=[3,1,4,6]
    netd=[]
    nelr=[]
    if(test("die")):print(lr,td)
    #先處理上下翻轉
    for i in range(4):
        td=td%4
        netd.append(tdst[td])
        td+=1
    if(test("die")):print("td=",netd)
    #上下翻轉處理完,橫排數字也會做變動
    lrst[1],lrst[3]=netd[1],netd[3]
    #後處理左右翻轉
    for j in range(4):
        lr=lr%4
        nelr.append(lrst[lr])
        lr+=1
    if(test("die")):print("lr=",nelr)
    print(nelr[1])
    
inp()

先處理上下翻轉,或左右翻轉,順序不重要。
重要的是,中間要有數字變動。


總結

測試函數個別做開關,方便測試哪個階段出問題。
但是全開全關有點麻煩,目前在思考如何製作總開關。
文章有點長,感謝撥冗閱讀


上一篇
[23/150]10409 - Die Game圖解題目(上集)
下一篇
[25/150]UVa10057 - 圖解說明(上集)
系列文
程式設計師大冒險115
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言