Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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
Php 当值x与模3的值y相比正好大于1时进行测试_Php_Modulo_Modular Arithmetic - Fatal编程技术网

Php 当值x与模3的值y相比正好大于1时进行测试

Php 当值x与模3的值y相比正好大于1时进行测试,php,modulo,modular-arithmetic,Php,Modulo,Modular Arithmetic,在模意义上(mod 3),如何检查x比y大1(超前) 这是当x=0和y=2,当x=1,y=0和当x=2,y=1时 我尝试过这样的测试: php -a php > $x = 0; php > $y = 2; php > echo ($x - $y) % 3; -2 php > $x = 1; php > $y = 0; php > echo ($x - $y) % 3; 1 php > $x = 2; php > $y = 1; php > e

在模意义上(mod 3),如何检查x比y大1(超前)

这是当x=0和y=2,当x=1,y=0和当x=2,y=1时

我尝试过这样的测试:

php -a
php > $x = 0;
php > $y = 2;
php > echo ($x - $y) % 3;
-2
php > $x = 1;
php > $y = 0;
php > echo ($x - $y) % 3;
1
php > $x = 2;
php > $y = 1;
php > echo ($x - $y) % 3;
1
对于x=0和y=2的情况,它不起作用。我如何计算它,使$x在模意义上比$y“超前”1

为什么您使用0表示
x
,使用2表示
y
?(对不起,我不是一个爱哭的人。)

虽然你的情况已经很清楚了,但当
0<2
明显时,
x
会比
y
领先1位(至少对我来说)是没有意义的

我们知道,语句
(0-2)%3
应该是
-2
,因为mod是3,
0-2
是-2,所以结果是-2

数学有时会有一些不合逻辑的感觉(在我看来),所以值得注意的是0根本不在2之前(在编程变量的意义上)

实际上,为了回答你的计算问题,你可以用
x=0
y=-1
作为你的变量,按照你语句的逻辑,然后两个变量都增加1,结果仍然相同


证明:


首先,我将解释我对以下句子的理解:

在模意义上(mod 3),如何检查x比y大1(超前)

根据提供的示例,我假设您的意思是,如果将1添加到$y,我们取$y的mod 3,我们将得到$x的mod 3

考虑到这一点,我们可以编写以下代码,如果$x比$y“超前”1,witch将返回true。(我希望你能将这个例子抽象为你所面临的任何情况):

如果您想要一个更通用的函数版本,具有任意的差异,您可以使用它(它应该适用于正差异和负差异):

(($x-$y)%3==1)你所说的“模意义上的y中的较大者”到底是什么意思?请分享算法预期输出的详细信息
function check($x, $y, $mod) {
   return $x % $mod == ($y + 1) % $mod;
}
//$x = 0 and $y = 2
echo check(0,2,3); //returns true

//$x = 1 and $y = 0
echo check(1,0,3); //returns true

//$x = 2 and $y = 1
echo check(2,1,3); //returns true

//$x = 0 and $y = 1
echo check(0,1,3); //returns false because $x is 2 "ahead" of $y
function check($x, $y, $mod, $diff) {
   return $x % $mod == ($y + $diff) % $mod;
}