Foobar - Тестовые случаи не пройдены - Беспорядочный побег - PullRequest
0 голосов
/ 22 февраля 2020

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 ??

Я теряю точность или что-то в этом роде?

Ответы [ 3 ]

1 голос
/ 08 мая 2020

Ваш тип возврата - целое число. Преобразуйте его в строку, и он будет работать.

return str(grid//(factorial(w)*factorial(h)))
1 голос
/ 22 февраля 2020

НЕ ПОЛЕЗНО

Просто предположение: неправильные типы возвращаемых значений функций? str vs. int?

Улучшенный ответ

Сначала более подробное объяснение вещи "тип значений":

В python, Значения также вводятся, если вам не нужно объявлять тип. Например:

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

Я не знаю точных тестов, которые применяются к коду, но обычно они включают в себя некоторый тест на равенство с ==. Если тип ожидаемого значения и возвращенного значения не совпадает, равенство не выполняется. Возможно, Элегантные способы поддержки эквивалентности ("равенство") в Python классах могут помочь.

В инструкции к вызову (см. Pastebin) также явно упоминаются ожидаемые типы возвращаемых данных: возвращаемый значения должны быть строковыми (см. строку 41/47).

Кроме того, в инструкции также указывается, что необходимо «написать ответ функции (w, h, s)» (строка 6). В опубликованном решении реализована функция solution.

0 голосов
/ 20 апреля 2020

Я тоже застрял на этой проблеме. Ошибка из-за несоответствия типов данных, т.е. ваша функция возвращает целое число, но вопрос, специально заданный для строки.

Обтекание оператора return в str () решит проблему.

...