Isograms 非模式词

Isograms

Isograms,也称为 "非模式词",是一个逻辑学术语,指没有重复字母的单词或短语。

等分词可以作为密码中的密钥,因为相同长度的等分词序列可以在符号之间进行简单的一对一映射。

PATHFINDERDUMBWAITERBLACKHORSE这样的10个字母的等值线通常被销售人员使用,这些产品的零售价格通常是协商的,如二手车、珠宝或古董。

例如,使用PATHFINDER密码,P代表1,A代表2,以此类推。一件售价为1200美元的物品的价格标签也可能带有加密字母FRR,写在标签的背面或底部。熟悉PATHFINDER密码的销售人员会知道,该商品的原始成本是500美元。
(来源:维基)

任务

完成这些功能,以便用所提供的等值键对输入的数字/代码进行编码/解码。注意:键是不分大小写的(可以是大写或小写)。

对于输入,你应该接受整数或字符串格式的数字(编码函数),或一个字符串(解码函数)。

将结果作为一个大写的字符串返回。

如果提供的输入和/或键不正确,是空的或丢失的,返回 "键或输入不正确!

例子


 500, "pathfinder" --> "frr" 
"500", "pathfinder" --> "frr"
"frr", "pathfinder" --> "500"

 500, "PATHFIND" --> "不正确的键或输入!" 
 500, "PATHFINDEE" --> "不正确的键或输入!" 
"LOL", "PATHFINDER" --> "不正确的键或输入!"

请看样本测试中的一些更多的例子。

def isogram_encode(input=None, key=None):
    try:
        assert input and len(key) == len(set(key)) == 10
        trans = dict(zip('1234567890', key.upper()))
        return ''.join([trans[d] for d in str(input)])
    except:
        return 'Incorrect key or input!'

def isogram_decode(input=None, key=None):
    try:
        assert input and len(key) == len(set(key)) == 10
        trans = dict(zip(key.upper(), '1234567890'))
        return ''.join([trans[c] for c in input.upper()])
    except:
        return'Incorrect key or input!'

技巧多多!

本文由mdnice多平台发布

你可能感兴趣的:(Isograms 非模式词)