匹配整数

时间:2015-09-07 10:19:30

标签: logic

我有一个查询。我有两个整数范围,例如100-500和600-800。这就是他们的样子:

范围1

start_range = 100
end_range = 500

范围2

start_range_new = 600
end_range_new = 800

我想要一个方法逻辑,我可以在其中匹配两个范围(范围1和范围2),这样这两个范围是完全排他的,这意味着这两个范围不相交。

如果两个范围相交,则将局部变量设为true,如果不是,则局部变量应为false

3 个答案:

答案 0 :(得分:8)

如果您使用Rails(或ActiveSupport),则可以使用Range#overlaps?方法:

# Compare two ranges and see if they overlap each other
# overlaps?(1..5, 4..6) # => true
# overlaps?(1..5, 7..9) # => false
def overlaps?(one, another)
  one.cover?(other.first) || other.cover?(one.first)
end

如果您不想使用ActiveSupport,可以将其自己实现为辅助功能:

echo \kartik\widgets\Select2::widget([
                                'attribute' => 'pembuatSoal_id',
                                'model' => $model,
                                'data' => array_merge(["" => ""], \yii\helpers\ArrayHelper::map(\app\models\ViewUsernameGuru::find()->all(), "uname", "nama")),
                                'options' => ['placeholder' => 'Pilih Guru...', 'id' => 'guru-id', 'class' => "form-control"],
                                'pluginOptions' => [
                                    'allowClear' => true,
                                    'theme' => \kartik\widgets\Select2::THEME_BOOTSTRAP
                                ],
                            ]);

答案 1 :(得分:4)

variable = !((start_range_new > end_range) || (start_range > end_range_new))

答案 2 :(得分:0)

a = (0..20)
b = (15..30)

def exclusive?(x,y)
    return x.first > y.last || x.last < y.first
end

exclusive?(a,b) //False