Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的逻辑有什么问题吗?在可分性中不可分的问题?_Python_Arrays_Python 3.x_Dictionary - Fatal编程技术网

Python 我的逻辑有什么问题吗?在可分性中不可分的问题?

Python 我的逻辑有什么问题吗?在可分性中不可分的问题?,python,arrays,python-3.x,dictionary,Python,Arrays,Python 3.x,Dictionary,我试图解决关于可数不可分性的问题,下面是我的解决方案。我的总分只有55%。我的逻辑是计算数组中元素的所有除数,然后从数组的总长度中减去它们,得到每个元素的非除数数 此问题来自Codibility的课程部分,可在第11课下的链接中查看: 首先,让我们编写一个简单的函数来正确地解决问题,即使可能效率低下: def basic_sol(B): return [ len([d for d in B if b % d != 0]) for b in B ] 然后,让我们运行一个测试,看看是否可以找

我试图解决关于可数不可分性的问题,下面是我的解决方案。我的总分只有55%。我的逻辑是计算数组中元素的所有除数,然后从数组的总长度中减去它们,得到每个元素的非除数数

此问题来自Codibility的课程部分,可在第11课下的链接中查看:


首先,让我们编写一个简单的函数来正确地解决问题,即使可能效率低下:

def basic_sol(B):
  return [ len([d for d in B if b % d != 0]) for b in B ]
然后,让我们运行一个测试,看看是否可以找到一些错误案例:

TRIALS=100
LENGTH=2
MAX_NUM=100
for trial in range(TRIALS):
  B = [ random.randint(1, MAX_NUM) for j in range(LENGTH) ]

  my_sol = solution(B)
  correct_sol = basic_sol(B)

  if(my_sol != correct_sol):
    print(B)
    print(my_sol)
    print(correct_sol)
    break
这会很快产生一些结果:

Problem [63, 21]
My solution [1, 1]
Correct solution [0, 1]
因为63可以被它自己和21整除,所以列表中不整除它的项数应该是零,但程序返回1

现在,您的工作是获取这个测试用例,在您的程序中运行它,并找出它被错误处理的原因



另外,问问自己,你的解决方案比给出的一行解决方案的效率高多少。似乎两者都是O(n^2)。也许这里有一种更有效的方法来处理问题?

首先,让我们编写一个简单的函数来正确地解决问题,如果可能效率低下:

def basic_sol(B):
  return [ len([d for d in B if b % d != 0]) for b in B ]
然后,让我们运行一个测试,看看是否可以找到一些错误案例:

TRIALS=100
LENGTH=2
MAX_NUM=100
for trial in range(TRIALS):
  B = [ random.randint(1, MAX_NUM) for j in range(LENGTH) ]

  my_sol = solution(B)
  correct_sol = basic_sol(B)

  if(my_sol != correct_sol):
    print(B)
    print(my_sol)
    print(correct_sol)
    break
这会很快产生一些结果:

Problem [63, 21]
My solution [1, 1]
Correct solution [0, 1]
因为63可以被它自己和21整除,所以列表中不整除它的项数应该是零,但程序返回1

现在,您的工作是获取这个测试用例,在您的程序中运行它,并找出它被错误处理的原因



另外,问问自己,你的解决方案比给出的一行解决方案的效率高多少。似乎两者都是O(n^2)。也许这里有一种更有效的方法来处理问题?

代码与您期望的有什么不同?请给出一个例子。好吧,它没有通过1个正确性测试和3个可编译性性能测试,但由于测试用例是隐藏的,我无法在我的逻辑中找到缺陷。不幸的是,出于同样的原因,没有可复制的示例。代码与您期望的有什么不同?请给出一个例子。好吧,它没有通过1个正确性测试和3个可编译性性能测试,但由于测试用例是隐藏的,我无法在我的逻辑中找到缺陷。不幸的是,出于同样的原因,没有可复制的示例。谢谢!让我用这种方法试试,我检查可编码性的第一件事是虚拟解(O(n^2)),它也得到55%。我认为重点是以某种方式使用Erathostene的筛子来获得更有效的算法。谢谢!让我用这种方法试试,我检查可编码性的第一件事是虚拟解(O(n^2)),它也得到55%。我认为重点是以某种方式使用Erathostene的筛子来获得更有效的算法。