CodeFights Python 编程实训

  • 1.螺旋矩阵

    一个n*n的矩阵,其元素大小是从1-n*n,矩阵右下角是1,其数字顺序呈逆时针方向。
    例:

    1
    n=3
    createSpiralMatrix(n) = [[5, 4, 3],
                            [6, 9, 2],
                            [7, 8, 1]]
    

    代码如下:

        def createSpiralMatrix(n):
            dirs = [(-1, 0), (0, -1), (1, 0), (0, 1)]
            curDir = 0
            curPos = (n - 1, n - 1)
            res = [[0 for x in range(n)]for y in range(n)]
    
            for i in range(1, n * n + 1):
                res[curPos[0]][curPos[1]] = i
                nextPos = curPos[0] + dirs[curDir][0], curPos[1] + dirs[curDir][1]
                if not (0 <= nextPos[0] < n and
                    0 <= nextPos[1] < n and
                    res[nextPos[0]][nextPos[1]] == 0):
                curDir = (curDir + 1) % 4
                nextPos = curPos[0] + dirs[curDir][0], curPos[1] + dirs[curDir][1]
                curPos = nextPos
    
            return res

  • 2.生成一个凸起形的二维列表

    例如:

    2
    n=3
    constructShell(n) = [[0],
                         [0, 0],
                         [0, 0, 0],
                         [0, 0],
                         [0]]
    

    代码示例:

        def constructShell(n):
            return [[0]*(i+1) if i<n else [0]*(2*n-i-1) for i in range(2*n-1)]    

  • 3.字符转化成字母对应的顺序数字并求和

    例如,输入

        word='good'
    

    因为g,o,d在字母数序表中的顺序分别是7,15,4,则其结果就等于:7+15+15+4=41,即,

    wordPower(word)=41
    

    代码如下:

        def wordPower(word):
            num = dict([(x,ord(x)-ord('a')+1) for x in word])
            return sum([num[ch] for ch in word])

    主要是用到了dict()ord()函数,ord()函数是将字符转换成ASCII码值,dict()是构造dictonary对象1

  • 4.酷数不同和的个数
    给两个列表b判断其元素可以组成几组”酷数“,返回这些”酷数“不同和的个数.
    ”酷数“是,乘积除以和余数为零的数.即i*j%(i+j)==0的一组数(i,j)
    例如,

    1
    a=[4,5,6,7,8]
    b=[8,9,10,11,12]
    

    (4,12),(6,12),(8,8)是三对“酷数”,它们的和分别是16,18,16,所以不同和的个数就是2,即coolPairs(a,b)=2,代码如下,

        def coolPairs(a, b):
            uniqueSums = {x+y for x in a for y in b if x*y%(x+y)==0}
            return len(uniqueSums)

    其中,uniqueSumssets类型2,其中元素是有序唯一的。


  • 5.乘积表
    写一个函数multiplicationTable(n)实现以下功能给定一个正整数n,其输出为:

    2
    multiplicationTable(n) = [[1, 2,  3,  4,  5 ], 
                              [2, 4,  6,  8,  10], 
                              [3, 6,  9,  12, 15], 
                              [4, 8,  12, 16, 20], 
                              [5, 10, 15, 20, 25]]
    

    其代码为:

        def multiplicationTable(n):
            return [[(x+1)*(1+y) for x in range(n)] for y in range(n) ]

    主要是列表表达式的应用.


Refer

1 http://www.runoob.com/python/python-func-dict.html
2 https://docs.python.org/2/library/sets.html
3 题目来自于:https://codefights.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值