練習程式解題的高中生程式解題系統(ZeroJudge)
最近發現一個不錯的線上程式解題網站,高中生程式解題系統。網站上有各種難度的題目,有適合新手的基礎題,想參加 APCS 考試或比賽的朋友也可從網站上找到相關的考古題和練習題,而且題目以中文撰寫,降低一般人理解題目的門檻。
彼得潘距離高中畢業也沒多久,接下來也來當個偽高中生,試試在高中生程式解題系統解出第一道題目。
解題系統支援的程式語言
目前解題系統只支援 C,C++,Java 和 Python。想練習 Swift 的朋友可參考題目後另外從 Xcode 練習。
連到高中生程式解題系統
註冊帳號
點選 Register 註冊帳號。
程式題目
網站上有各種難度的題目,點選 Problem 可進入問題頁面選擇有興趣的分類。
剛學會基礎程式語法的朋友可試試基礎題庫。
想參加 APCS 考試的朋友可直接搜尋 apcs。
開始解題吧
彼得潘喜歡柿子挑軟的吃,以下我們試試基礎題庫的 Eva 的回家作業
。
AI 解題
聽說 AI 滿會寫程式的,而且彼得潘有訂閱 GPT 4,既然錢都花了,不如請他解看看吧。如果他解不出來,下個月就把他 fire。
ps: 為了讓 AI 寫出新手容易看懂的解答,彼得潘請 AI 先不要使用 map function 和 List Comprehension。
用 python 寫出可以上傳到程式解題系統的程式,符合以下條件。
1. 用 input 讀取輸入的文字,將文字變成數字的 array 時使用 for loop,不要用到 map 和 List Comprehension。
2. 不要定義 function。
3. 將程式寫在 code block 裡。
Content
Eva的家庭作業裏有很多數列填空練習。填空練習的要求是:已知數列的前四項,填出第五項。因 為已經知道這些數列只可能是等差或等比數列,她決定寫一個程式來完成這些練習。
Input
第一行是數列的數目t(0 <= t <= 20)。 以下每行均包含四個整數,表示數列的前四項。 約定數列的前五項均為不大於105的自然數,等比數列的比值也是自然數。
Output
對輸入的每個數列,輸出它的前五項。
Sample Input #1
2
1 2 3 4
1 2 4 8
Sample Output #1
1 2 3 4 5
1 2 4 8 16
GPT 4 的回答。
t = int(input())
sequences = []
for _ in range(t):
seq = input().split()
num_seq = []
for s in seq:
num_seq.append(int(s))
sequences.append(num_seq)
for seq in sequences:
if seq[1] - seq[0] == seq[2] - seq[1]:
print(seq[0], seq[1], seq[2], seq[3], seq[3] + (seq[1] - seq[0]))
elif seq[1] // seq[0] == seq[2] // seq[1]:
print(seq[0], seq[1], seq[2], seq[3], seq[3] * (seq[1] // seq[0]))
測試執行
程式寫好後,我們在提交前最好先進行測試,測試 ok 後再提交,降低留下提交失敗記錄的機率。
點選題目下方的測試執行
。
輸入程式後,點選右下的測試執行
。
耶!看到表示成功解題的 AC 了。不過也別高興得太早,它只是針對剛剛測資框框的資料測試,所以它只代表框框裡的測資通過測試,不代表程式真的正確。
提交程式
想確認程式是否正確,必須提交程式,讓系統透過大量的測資驗證程式的正確性。
點選題目下方的 Solve it!
提交程式。
點選送出程式碼
。
耶!感謝 AI 的幫忙,彼得潘在 2023/5/2 於高中生程式解題系統成功解出第一道題目。
ps: 值得注意的,有些題目只有測試執行
的按鈕,沒有Solve it!
的按鈕,比方以下的兩光法師占卜術。