鐵人賽有篇程式碼美學,看完後讓我驚覺前面註解太囉嗦,要是著用程式碼去表達。之後會再多注意註解使用,簡短但是清楚表達。
學習資料處理,將資料做布林處理。
建議熟悉split()、list、dict、print
如果有辦法把第一列轉換成第二列,這題就解的開。
• c: finger 2∼4, 7∼10
"c":[0, 1, 1, 1, 0, 0, 1, 1, 1, 1]
按鍵處理儲存非常長一串,很怕上傳評判發生錯誤。
import sys
global note
note={"c":[0, 1, 1, 1, 0, 0, 1, 1, 1, 1],"d":[0, 1, 1, 1, 0, 0, 1, 1, 1, 0],"e":[0, 1, 1, 1, 0, 0, 1, 1, 0, 0],"f":[0, 1, 1, 1, 0, 0, 1, 0, 0, 0],"g":[0, 1, 1, 1, 0, 0, 0, 0, 0, 0],"a":[0, 1, 1, 0, 0, 0, 0, 0, 0, 0],"b":[0, 1, 0, 0, 0, 0, 0, 0, 0, 0],"C":[0, 0, 1, 0, 0, 0, 0, 0, 0, 0],"D":[1, 1, 1, 1, 0, 0, 1, 1, 1, 0],"E":[1, 1, 1, 1, 0, 0, 1, 1, 0, 0],"F":[1, 1, 1, 1, 0, 0, 1, 0, 0, 0],"G":[1, 1, 1, 1, 0, 0, 0, 0, 0, 0],"A":[1, 1, 1, 0, 0, 0, 0, 0, 0, 0],"B":[1, 1, 0, 0, 0, 0, 0, 0, 0, 0]}
#測試函式運作
def test(fun):
if(0):
return 1
if(fun=="inp"):
return 0
if(fun=="sax"):
return 1
note非常長一串
#讀取函式
def inp():
nuca=sys.stdin.readline()
nuca=int(nuca)
for cai in range(nuca):
st=sys.stdin.readline().replace("\n","")
if(test("inp")):print(st)
sax(st)
這邊很簡單
def sax(ca):
#now表現在音符、nemu表下一個音符
global note
sumu=[0]*10
nemu=[0]*10
#按鍵次數計算
for cai in range(len(ca)):#總音符
now=nemu
nemu=note[ca[cai]]
for mui in range(10):
if((now[mui]==0)&(nemu[mui]==1)):#跟上一個音符做比較
sumu[mui]+=1
print(sumu)
inp()
現在音符和下一個音符做比較。
只要按鍵處理好,剩下的就解決了。
先寫資料處理程式,上篇有提到如何寫。
之後複製結果,貼上去以後,刪掉原本的程式。
可以不刪但是浪費時間和記憶體,考試有限制處理時間3秒內。
所以建議部分資料可以做預處理。
鐵人賽剩二天,明天寫週反省跟月反省,最後一天寫鐵人賽心得。
感謝撥冗閱讀。