关卡地址
解决方案:
思路:
图中给出了字母的映射关系,通过规律来破解下面这段话:
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr’q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.
代码:
import helper
msg=helper.readFile(".\\Data\\001\\msg.txt")
url='map'
# ^^^^^^^^^^^^^^^^^^^^^^^^Solution 1^^^^^^^^^^^^^^^^^^^^^^^^
def getchar(inchar):
if inchar >= 'a' and inchar <= 'z':
tmp=ord(inchar)-ord('a')+2
return chr(tmp%26+ord('a'))
else:
return inchar
def translate(instr):
return ''.join(map(getchar,instr))
print(translate(msg))
print(translate(url))
# vvvvvvvvvvvvvvvvvvvvvvvvSolution 1vvvvvvvvvvvvvvvvvvvvvvvv
# ^^^^^^^^^^^^^^^^^^^^^^^^Solution 2^^^^^^^^^^^^^^^^^^^^^^^^
import string
table=str.maketrans(string.ascii_lowercase, string.ascii_lowercase[2:]+string.ascii_lowercase[:2])
print(msg.translate(table))
print(url.translate(table))
# vvvvvvvvvvvvvvvvvvvvvvvvSolution 2vvvvvvvvvvvvvvvvvvvvvvvv
PS src\static> python .\Code\Python\Challenge001.py
$msg=Get-Content ".\\Data\\001\\msg.txt"
$url='map'
function GetChar ([char]$ch) {
if($ch -ge 'a' -and $ch -le 'z'){
# [int][char]'a'=97
return [char](97+([int]$ch-97+2)%26)
}
return $ch
}
function Translate ([string]$instr) {
[char[]]$rst=New-Object char[] $instr.Length
for ($i = 0; $i -lt $instr.Length; $i++) {
$ch=GetChar($instr[$i])
$rst[$i]=$ch
}
return $rst -join ''
}
Translate($msg)
Translate($url)
PS src\static> .\Code\PowerShell\Challenge001.ps1
package main
import(
"fmt"
"strings"
)
func (c *Challenge) Challenge001() {
msg:=ReadFile(".\\Data\\001\\msg.txt")
url:="map"
fmt.Println(translate(msg))
fmt.Println(translate(url))
}
func getChar(r rune) rune {
// switch {
// case r >= 'a' && r <= 'z':
// return 'a' + (r-'a'+2)%26
// }
if (r >= 'a' && r <= 'z') {
return 'a' + (r-'a'+2)%26
}
return r
}
func translate(instr string) string {
return strings.Map(getChar, instr)
}
PS src\static> .\Code\Go\Challenge.exe -l 001