SHELTER ZONE | Coder 語言認證

最近,邪惡的綠茶大魔王將城堡裡一間刻有藍黃蛇形紋的殿堂鎖起來了。 門上有10道鎖,貝利的好朋友——善良小兔和小貓發現這些鎖大同小异。 端詳之際,貝利看见門下有10個若隱若現且各不相同的數字,覺得這些數字是解開鎖的關鍵,便轉身向守衛求助。 年老的烏龜守衛印證了貝利的猜想,它幫助貝利推算出了鎖的邏輯,並將它們寫在一張紙上。它告訴貝利,在這10個鎖中,只有前5個會在提供錯誤答案時發出紅色的光芒,而另外5個則不會有任何動靜。 拿著老守衛給他的紙,貝利鑽研了幾天後仍束手無策,你能幫助他進入大殿嗎?

老守衛給出的代碼中寫入了所有鎖的資料與內部方法,而你只需要幫助貝利解開鎖裡的邏輯就好。 LockSolver這個類存有鎖的資料,你要先實例化(初始化)這個類才能讓它準備好解開鎖。 run方法需要傳入你寫出來的函數物件(不要呼叫!),前5個鎖將會有錯誤反饋。 最後getPassword方法傳入伺服器創立日期20180627(字符串),並會返回一串密碼文字,得到該密碼後在#🔰coder認證頻道輸入at<語言> <答案>即可。

鎖的對應數字(0≤n<10^50)會作為字符串傳入token作為solve函數的第一個參數。要解開鎖裡的邏輯,你需要使用以下邏輯完成solve函數:

  1. 將token裡每個數字相加,並記錄結果。
  2. 取token的第一個數字與最後第二個數字的和,並記錄結果。
  3. 呼叫encrypt方法,傳入整數形態的token,並記錄結果。
  4. 得到以上步驟(1,2,3)所有結果的和,這將會是你的答案。
  5. 如果你獲得的答案超過674361,則需要將它與78763相減。
  6. 使用字符串形态返回獲得的結果。 之後依序執行LockSolver的run和getPassword方法就能得到答案了。(記得先實例化)

路過的勇者示範了解開一個鎖的過程,他示範的鎖的對應數字為12345:

  1. 1+2+3+4+5 = 15
  2. 1+4 = 5
  3. 呼叫encrypt得到2333
  4. 15+5+2333 = 2353
  5. 由於2353小於674361,答案保持不變
  6. 返回'2353'