Google Code Jam Qualification Round 2012

本文介绍了作者参加Google Code Jam 2012资格赛的经历,分享了在Problem A、B、C中的解题思路和代码实现。在Problem A中,通过建立字母映射解决Googlerese到英语的转换;Problem B使用组合优化避免重复计数;Problem C利用字符串操作和集合避免数值对的重复计数,但Python效率低于C++。
摘要由CSDN通过智能技术生成

昨天是Google Code Jam的Qualification Round,我也参加了,可能是最近代码写的比较少,出了一些小错误,再加上觉得最后一题比较麻烦就放弃了,最后的了45分,貌似得分有20分就可以进入下一轮了。下面就来分享一下我的代码。

Problem A的题目叫Speaking in Tongues,题目大意是说Google有一种叫做Googlerese的语言,这种语言可以和英语相互转换,每种字母都有唯一的映射,可能是字母本身,也可能是其他字母。需要输入Googlerese语,然后转换成英语输出。

输入时在第一行输入一个数字,代表测试的次数,然后每一行是一句Googlerese语,可能由一个或多个'a'-'z'组成的单词组成,用空格分隔。输出时要采用“Case #n: english”这样的模板,n从1开始。为了防止题目过于简单,Google并没有提供所有字母之间的映射,而是提供了一个hint和一组sample。先根据hint和sample获取其中一部分映射:

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
sample_g = (
'ejp mysljylc kd kxveddknmc re jsicpdrysi',
'rbcpc ypc rtcsra dkh wyfrepkym veddknkmkrkcd',
'de kr kd eoya kw aej tysr re ujdr lkgc jv'
)
sample_e = (
'our language is impossible to understand',
'there are twenty six factorial possibilities',
'so it is okay if you want to just give up'
)

dic = {'a': 'y', 'o': 'e', 'z': 'q'}

for i in xrange(3):
    for j in xrange(len(sample_g[i])):
        if sample_g[i][j] not in dic:
            dic[sample_g[i][j]] = sample_e[i][j]

from pprint import pprint
pprint(dic)

这样就会得到:
{' ': ' ', 'a': 'y', 'b': 'h', 'c': 'e', 'd': 's', 'e': 'o', 'f': 'c', 'g': 'v', 'h': 'x', 'i': 'd', 'j': 'u', 'k': 'i', 'l': 'g', 'm': 'l', 'n': 'b', 'o': 'e', 'p': 'r', 'r': 't', 's': 'n', 't': 'w', 'u': 'j', 'v': 'p', 'w': 'f', 'x': 'm', 'y': 'a', 'z': 'q'}
然后你可以发现在key中没有'q',在value中没有z,根据题目,将这一对键/值对加入dictionary中

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值