Skip to content
This repository has been archived by the owner on Jun 10, 2022. It is now read-only.

SHELTER-ZONE/Coder_Cert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SHELTER ZONE | Coder 語言認證

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

老守衛給出的代碼中寫入了所有鎖的資料與內部方法,而你只需要幫助貝利找出每個鎖的解鎖密鑰就好。 LockSolver這個類別當中存有開鎖的內部邏輯,你必須將LockSolver實例化之後才能使用。 你需要寫出一個solve函數,用於計算鎖的解鎖密鑰。run方法與solve函數的關係就好比鎖頭與鑰匙,把solve函數傳入run方法之後,run方法將會使用solve函數來計算出每個鎖的密鑰,前5組鎖會有錯誤提示。 當你確認十組密鑰都沒錯的時候,將伺服器的創立日期20180627(請使用字串型態)傳入getPassword方法並呼叫,它將會回傳一組最終密鑰,得到該密鑰後在#🔰coder認證頻道輸入at<語言> <密鑰>驗證你的答案。

門鎖會把十組數字(0≤N<10^19)(長度≥2)分別使用字串型態傳入solve函數的第一個變數(token)。 為了能找出每個鎖的解鎖密鑰,你必須依照下面的邏輯撰寫solve函數:

  1. 將token的每個數字相加後,記錄結果。
  2. 將token的第一個數字與倒數第二個數字相加後,記錄結果。
  3. 呼叫encrypt方法,傳入整數形態的原始token後,記錄得到的結果。
  4. 將以上(1,2,3)步驟得到的結果全部相加之後,這將會是你的答案。
  5. 如果第4步驟得出的答案超過674361,你必須將它減上78763。
  6. 以字串型態回傳運算出的結果。

執行LockSolver的run方法,傳入你完成的solve函數,沒有出現錯誤提示之後再使用getPassword方法就能得到最終密鑰了。(記得先將LockSolver實例化)

路過的勇者示範了解開一個鎖的過程,他的token為12345

  1. 1+2+3+4+5 = 15
  2. 1+4 = 5
  3. 呼叫encrypt傳入12345,回傳值2333
  4. 15+5+2333 = 2353
  5. 由於2353小於674361,答案保持不變
  6. 回傳字串型態的2353

最低版本要求

語言 最低版本
Python 3.0
JavaScript ES6
C++ 11
C# 8 (.NET Core)
Kotlin 1.3