Foobar-测试用例未通过-无序逃生

问题描述 投票:-3回答:2

0/10测试用例通过。

这里是挑战说明:

((为了保持格式美观-我将说明放入粘贴容器中)挑战说明链接:https://pastebin.com/UQM4Hip9

这是我的试用代码-PYTHON-(通过了0/10个测试用例)

from math import factorial
from collections import Counter
from fractions import gcd

def cycle_count(c, n):
    cc=factorial(n)
    for a, b in Counter(c).items():
        cc//=(a**b)*factorial(b)
    return cc        

def cycle_partitions(n, i=1):
    yield [n]
    for i in range(i, n//2 + 1):
        for p in cycle_partitions(n-i, i):
            yield [i] + p

def solution(w, h, s):    
    grid=0
    for cpw in cycle_partitions(w):
        for cph in cycle_partitions(h):            
            m=cycle_count(cpw, w)*cycle_count(cph, h)
            grid+=m*(s**sum([sum([gcd(i, j) for i in cpw]) for j in cph]))

    return grid//(factorial(w)*factorial(h))

print(solution(2, 2, 2)) #Outputs 7

此代码在我的计算机上的python编译器中有效,但在foobar挑战中不起作用?

我会失去准确性吗?

python math factorial fractions
2个回答
0
投票

@@ Joachim Lusiardi,您的解决方案无效。停止垃圾邮件堆栈溢出。

报告此用户:@Joachim Lusiardi

您可以在此处提交报告:https://meta.stackexchange.com/contact

Foobar - Test cases not passing - Disorderly escape - 2


0
投票

不帮助

只是一个猜测:函数返回值的类型错误? str vs. int?

改进的答案

首先对“值的类型”进行更详细的说明:

在python中,如果不必声明类型,则也会键入值。例如:

>>> i = 7
>>> s = '7'
>>> print(i, s, type(i), type(s), i == s)
7 7 <class 'int'> <class 'str'> False

我不知道应用于代码的确切测试,但是通常这些测试涉及使用==进行的相等测试。如果期望值的类型与返回的那些值不匹配,则相等失败。也许Elegant ways to support equivalence ("equality") in Python classes会有所帮助。

挑战的指令(请参阅pastebin)也明确提到了预期的返回类型:返回的值必须是字符串(请参阅第41/47行)。

此外,该指令还指出,应该“编写一个函数答案(w,h,s)”(第6行)。发布的解决方案实现功能solution

© www.soinside.com 2019 - 2024. All rights reserved.