Javascript 在php中使用数学

Javascript 在php中使用数学,javascript,php,jquery,math,Javascript,Php,Jquery,Math,编辑2:见下文。如果这可以通过javascript或jquery实现,我愿意走这条路 我正在做一个项目,到目前为止进展顺利,直到我遇到了数学难题 目前,我们通过反向工程从一个数字中手工计算出来,我们也知道答案(2114),但由于我们每个人的计算结果略有不同,有时需要花费相当长的时间,因为我们中的任何人都不擅长使用计算器,因此如果结果略有不同,我们最终的结果总是会有所不同。因此,需要一种能解决问题的方法。并将其添加到我们的内部网 任何解决这个问题的帮助都会很棒。谢谢 规则 获取590->4500之

编辑2:见下文。如果这可以通过javascript或jquery实现,我愿意走这条路

我正在做一个项目,到目前为止进展顺利,直到我遇到了数学难题

目前,我们通过反向工程从一个数字中手工计算出来,我们也知道答案(2114),但由于我们每个人的计算结果略有不同,有时需要花费相当长的时间,因为我们中的任何人都不擅长使用计算器,因此如果结果略有不同,我们最终的结果总是会有所不同。因此,需要一种能解决问题的方法。并将其添加到我们的内部网

任何解决这个问题的帮助都会很棒。谢谢 规则

获取590->4500之间的编号(间隙)

根据以下规则计算填充该间隙所需的面板和填充物的尺寸

面板必须=奇数

填充物(如需要)必须=偶数,且数量不得超过面板的1个

面板的最小尺寸=590 面板的最大尺寸=705

填充的最小尺寸=75 填充的最大尺寸=175

下面是我到目前为止所做的,这是我第13次尝试

编辑:这段代码“在一定程度上有效”,但是(差距)越大,我就越迷茫,代码就越长,看起来也越冗余。我觉得有一个方程,可以用两行来完成,但这里我写了几百行,只是来回的,最后遗漏了一些东西,或者是完全错了。是的,它所需要做的就是用尽可能少的嵌板和填充物(在尺寸指南内)填充一个间隙

我输入一个“宽度”,它将输出4个值;'嵌板宽度、嵌板数量、填充宽度、填充数量'

下面是我目前(第16次)的尝试,它在一定程度上起作用,但一旦数字开始超过3000或低于2000,一切似乎都大错特错

// input - 3 for adjustment
$new_width = 2515 - 3;

$un_cut = 740;

$max_size = 705;

$min_size = 640;

$infills_max = 175;
$infills_min = 75;

$cut_off = 0;

$gremain = 0;

$small_cut_off = 0;
$large_cut_off = 0;
$d1ginw = 0;
$d1ginqty = 0;

$infill_size = 0;


// see how many max size penls fit
$gpanels = floor($new_width / $max_size);
    // make sure odd number
    if ($gpanels < 3){
        // its cool
    } elseif ($gpanels % 2 == 0){
        $gpanels = $gpanels - 1;
    }

// get remainer
$gremain = floor($new_width - ($gpanels * $max_size));

// check if panels can be cut down alone or need infills
$infill_check = floor($gremain / ($infills_max - $infills_min));

    // make sure odd number
    if ($infill_check == $gpanels){
        if ($gpanels < 3){
            // all good
        } else {
            $infill_check = $infill_check - 1;
        }
    }

    if ($infill_check > $gpanels) {
        // needs infills
    } elseif ($infill_check < $gpanels) {
        // cut panels only
        $cut_off = $gremain / ($gpanels * 2);

        // make sure cut off not too small
        if ($cut_off < 10) {
            $small_cut_off = 0;
            $large_cut_off = $gremain / 2;
        } elseif ($cut_off > 65) {
            // need infills too
            $infill_qty = 1;

            $infill_size = $gremain * $infill_qty;

                if ($infill_size > $infills_max) {

                    $infill_qty = 2;

                    $infill_size = $gremain * $infill_qty;

                        if ($infill_size > $infills_max) {

                            // check how much over




                        }

                } elseif ($infill_size < $infills_min) {

                    // get remainder
                    $left_after_infill = $gremain - ($infills_min * $infill_qty);

                    $infill_qty = 1;
                    $infill_size = $infills_min;

                    $cut_off = $left_after_infill / $gpanels;

                    if ($cut_off < 10) {
                        $small_cut_off = 0;
                        $large_cut_off = $gremain_total / 2;
                    }

                }


        }

        $small_cut_off = $cut_off; // move
        $large_cut_off = $cut_off; // move

    }


if ($infill_size == 0) {$d1ginw = $infill_size;} else {$d1ginw = $infill_size + 35;}

$d1ginqty = $infill_qty;


$d1gsmlsize = floor(($un_cut - ($max_size + 35)) / 2 + $small_cut_off);
$d1glrgsize = floor(($un_cut - ($max_size - 5)) / 2 + $large_cut_off);

$d1gsmlqty = $gpanels - 1;
$d1glrgqty = 1;
//用于调整的输入-3
$new_width=2515-3;
$un_cut=740;
$max_size=705;
$min_size=640;
$infls_max=175;
$infls_min=75;
$cut_off=0;
$gremain=0;
$small\u cut\u off=0;
$large\u cut\u off=0;
$d1ginw=0;
$d1ginqty=0;
$infl_size=0;
//看看能装多少个最大尺寸的笔
$gpanels=地板($new\u width/$max\u size);
//确保奇数
如果($gpanels<3){
//很酷
}elseif($gpanels%2==0){
$gpanels=$gpanels-1;
}
//获得剩余
$gremain=地板($new_width-($gpanels*$max_size));
//检查面板是否可以单独切割或需要填充
$infill\u check=地板($gremain/($infills\u max-$infills\u min));
//确保奇数
如果($infl\u check==$gpanels){
如果($gpanels<3){
//一切都好
}否则{
$inull\u check=$inull\u check-1;
}
}
如果($infl\u check>$gpanels){
//需要填充
}elseif($infl_check<$gpanels){
//仅切割面板
$cut_off=$gremain/($gpanels*2);
//切掉的不要太小
如果($cut_off<10){
$small\u cut\u off=0;
$large\u cut\u off=$gremain/2;
}其他($cut_off>65){
//也需要填充
$infl\u数量=1;
$infl\u size=$gremain*$infl\u数量;
如果($infl\u size>$infls\u max){
$infl\u数量=2;
$infl\u size=$gremain*$infl\u数量;
如果($infl\u size>$infls\u max){
//查一下有多少钱
}
}elseif($infl\u size<$infls\u min){
//得到余数
填充后的$left\u=$gremain-($inulls\u min*$inull\u数量);
$infl\u数量=1;
$inull\u size=$inulls\u min;
$cut\u off=$left\u填充后/$gpanels;
如果($cut_off<10){
$small\u cut\u off=0;
$large_cut_off=$gremain_total/2;
}
}
}
$small\u cut\u off=$cut\u off;//移动
$large\u cut\u off=$cut\u off;//移动
}
如果($inull\u size==0){$d1ginw=$inull\u size;}否则{$d1ginw=$inull\u size+35;}
$d1ginqty=$infll\u数量;
$d1gsmlsize=地板($un_切割-($max_尺寸+35))/2+$small_切割);
$d1glrgsize=地板($un_切割-($max_尺寸-5))/2+$large_切割);
$d1gsmlqty=$gpanels-1;
$d1glrgqty=1;

您在上面向我们展示的代码有哪些具体问题?哪种计算方法不符合预期?中的on主题页面上显示“寻求调试帮助的问题”(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:如何创建问题。”您已经向我们展示了分配的规则,并转储了一堆代码,但是如果没有更具体的内容,我们就不知道去哪里查找。我也很难理解这个问题。哪些变量是输入的,哪些应该是输出的?我们只是想用尽可能多的嵌板和最少数量的填充物来填充任意间隙吗?输入变量是间隙,输出变量是嵌板/填充物的数量及其尺寸,但最终目标是用嵌板和填充物填充间隙。所有嵌板的尺寸应相同?所有填充物的尺寸应相同?给定一个宽度(
$new\u width
)您需要多个嵌板、嵌板的大小、填充的数量和填充的大小s.t.
$new\u width=$panel qty*$panels\u size+$infll\u qty*$infls\u size
?如果
$new\u width
=706,解决方案应该是什么?如果$new\u width=706,则$panel\u数量=1*$panel\u size=655+$infll\u数量=1*$infll\u size*50。保持较小的填充大小对我来说是最佳选择(没有更好的填充),但只要所有内容都在指定的规则内,就不完全需要。
width = panel-width * panel-quantity + infill-width * infill-quantity
// input - 3 for adjustment
$new_width = 2515 - 3;

$un_cut = 740;

$max_size = 705;

$min_size = 640;

$infills_max = 175;
$infills_min = 75;

$cut_off = 0;

$gremain = 0;

$small_cut_off = 0;
$large_cut_off = 0;
$d1ginw = 0;
$d1ginqty = 0;

$infill_size = 0;


// see how many max size penls fit
$gpanels = floor($new_width / $max_size);
    // make sure odd number
    if ($gpanels < 3){
        // its cool
    } elseif ($gpanels % 2 == 0){
        $gpanels = $gpanels - 1;
    }

// get remainer
$gremain = floor($new_width - ($gpanels * $max_size));

// check if panels can be cut down alone or need infills
$infill_check = floor($gremain / ($infills_max - $infills_min));

    // make sure odd number
    if ($infill_check == $gpanels){
        if ($gpanels < 3){
            // all good
        } else {
            $infill_check = $infill_check - 1;
        }
    }

    if ($infill_check > $gpanels) {
        // needs infills
    } elseif ($infill_check < $gpanels) {
        // cut panels only
        $cut_off = $gremain / ($gpanels * 2);

        // make sure cut off not too small
        if ($cut_off < 10) {
            $small_cut_off = 0;
            $large_cut_off = $gremain / 2;
        } elseif ($cut_off > 65) {
            // need infills too
            $infill_qty = 1;

            $infill_size = $gremain * $infill_qty;

                if ($infill_size > $infills_max) {

                    $infill_qty = 2;

                    $infill_size = $gremain * $infill_qty;

                        if ($infill_size > $infills_max) {

                            // check how much over




                        }

                } elseif ($infill_size < $infills_min) {

                    // get remainder
                    $left_after_infill = $gremain - ($infills_min * $infill_qty);

                    $infill_qty = 1;
                    $infill_size = $infills_min;

                    $cut_off = $left_after_infill / $gpanels;

                    if ($cut_off < 10) {
                        $small_cut_off = 0;
                        $large_cut_off = $gremain_total / 2;
                    }

                }


        }

        $small_cut_off = $cut_off; // move
        $large_cut_off = $cut_off; // move

    }


if ($infill_size == 0) {$d1ginw = $infill_size;} else {$d1ginw = $infill_size + 35;}

$d1ginqty = $infill_qty;


$d1gsmlsize = floor(($un_cut - ($max_size + 35)) / 2 + $small_cut_off);
$d1glrgsize = floor(($un_cut - ($max_size - 5)) / 2 + $large_cut_off);

$d1gsmlqty = $gpanels - 1;
$d1glrgqty = 1;