【问题标题】:Given the min and max of two ranges, is the second range contained in the first?给定两个范围的最小值和最大值,第二个范围是否包含在第一个范围内?
【发布时间】:2022-10-15 02:45:10
【问题描述】:

给定代表连续间隔的两个范围的最小值和最大值,我想知道第二个范围是否在第一个范围内。另请注意,此问题与 Python 的 range 函数无关。

请注意,我没有每个范围的开始和结束。我已经从上游收到了最小值和最大值。存在一些类似的问题,但它们不使用 min 和 max,并且不区分非严格与严格。我想要最简单的逻辑。尽管任何使用开始和结束的先前答案也可以工作,但它们会使用更复杂的逻辑,因此是不可取的。

举一个自然的例子,当一个人站立时,腰到膝盖的范围包含在从头到脚的较大范围内。但是,头到腰的范围不包含在脖子到膝盖的范围内。

更正式地说,这可以根据以下测试进行非严格或严格检查:

非严格:

def is_subrange(min1, max1, min2, max2):
    ...  # To be implemented.

assert is_subrange(2, 9, 5, 7) == True
assert is_subrange(2, 9, 1, 3) == False
assert is_subrange(2, 9, 7, 11) == False
assert is_subrange(2, 9, 1, 11) == False

assert is_subrange(2, 9, 6, 9) == True  # is not strict
assert is_subrange(2, 9, 2, 4) == True  # is not strict
assert is_subrange(2, 9, 2, 9) == True  # is not strict

严格的:

def is_strict_subrange(min1, max1, min2, max2):
    ...  # To be implemented.

assert is_strict_subrange(2, 9, 5, 7) == True  # is as is_subrange
assert is_strict_subrange(2, 9, 1, 3) == False  # is as is_subrange
assert is_strict_subrange(2, 9, 7, 11) == False  # is as is_subrange
assert is_strict_subrange(2, 9, 1, 11) == False  # is as is_subrange

assert is_strict_subrange(2, 9, 6, 9) == False  # is not as is_subrange
assert is_strict_subrange(2, 9, 2, 4) == False  # is not as is_subrange
assert is_strict_subrange(2, 9, 2, 9) == False  # is not as is_subrange

这些不起作用:

def is_subrange(min1, max1, min2, max2):
    return min1 <= min2 and max1 <= max2

def is_strict_subrange(min1, max1, min2, max2):
    return min1 < min2 and max1 < max2

【问题讨论】:

  • 开始/结束和最小/最大有什么区别?
  • 我不明白。 minstart 是同一事物的两个不同词,不是吗?
  • 我认为我们只是有语言问题。你能举一个他们不同的例子吗?
  • 开始/结束和最小/最大值之间存在差异的唯一情况是,如果您的范围内的步数不是 1。但是您的问题中没有包含这些步骤,所以我假设您的意思是 step=1。
  • 此外,python range() 对象不包括最终值。但这只是减1,不会影响子范围算法。而且您似乎不是在询问范围对象,您只是在提供端点。

标签: python range intervals ohlc


【解决方案1】:

这可能会有所帮助。

def is_subrange(min1, max1, min2, max2):
    return min1 <= min2 and max1 >= max2


def is_strict_subrange(min1, max1, min2, max2):
    return min1 < min2 and max1 > max2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多