我应该对python 3.7代码进行哪些更改才能在2.7中运行

时间:2020-01-21 14:39:20

标签: python

我遇到了这个Google挑战,我已经解决了(我认为),但是我无法使其在2.7.13中运行;

挑战

作为Lambda指挥官的私人助理,您已获得了配置LAMBCHOP世界末日设备的轴向定向齿轮的任务。它应该非常简单-只需添加齿轮以创建适当的旋转比即可。但是问题在于,由于LAMBCHOP的布局以及支撑它的梁和管道的复杂系统,将支撑齿轮的销钉固定在适当的位置。

LAMBCHOP的工程师为您提供了清单,用于标识沿不同支撑梁的桩钉位置。您需要在每个挂钉上放置一个齿轮(否则,这些齿轮会与空置的挂钉发生碰撞)。工程师备有大量各种尺寸的齿轮,因此您可以选择半径1以上的任何尺寸的齿轮。您的目标是建立一个系统,无论方向如何,最后一个齿轮的旋转速度都是第一个齿轮的两倍(每分钟转数或rpm)。每个齿轮(最后一个齿轮除外)都接触并向右旋转下一个销钉上的齿轮。

给出一个名为pegs的不同正整数的列表,代表每个钉沿支撑梁的位置,编写一个函数answer(pegs),如果有解决方案,则返回两个正整数a和b的列表,分别表示为了实现上述目标,最简单形式的第一齿轮半径的分子和分母为半径= a / b。 a / b之比应大于或等于1。并非所有支持配置都必须能够创建适当的旋转比,因此,如果无法完成任务,则功能answer(pegs)应返回列表[-1, -1]。

例如,如果将销钉放置在[4,30,50],则第一个齿轮的半径为12,第二个齿轮的半径为14,最后一个齿轮的半径为6。因此,最后一个齿轮的旋转速度将是第一个齿轮的两倍。在这种情况下,钉子应为[4,30,50],答案(pegs)应返回[12,1]。

列表钉将按升序排列,并且将包含至少2个且不超过20个不同的正整数,且均在1到10000之间(含1和10000)。

我对问题的解决方案,但是google不接受答案;

def solution(pegs):
    for a in range(1, dist + 1):
        for b in range(1, a + 1):
            prev_peg = pegs[0]
            ratio = a / float(b)
            radius = ratio
            for peg in pegs[1:]:
                next_peg = peg - prev_peg - radius
                radius = next_peg
                prev_peg = peg
                if peg == pegs[-1] and next_peg > 0:
                    if ratio / next_peg == 2:
                        return [a, b]

我在stackoverflow上发现了这个Google foobar gearing_up_for_destruction,解决方案与我的非常不同,与我给出的答案相符。

我正在Python 3.7中运行它,但是该解决方案的确需要在2.7.13中提供,我对2.7不太熟悉,因为我多年前就不再使用2.7。我没有考虑任何明显的差异吗?

0 个答案:

没有答案
相关问题