首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数学Javascript计算

数学Javascript计算
EN

Stack Overflow用户
提问于 2015-04-17 22:09:06
回答 1查看 62关注 0票数 0

我有一个数字列表,如下所示:

代码语言:javascript
运行
复制
1,2,3,4,5,6,7,8

如何使用javascript搜索以下方程式的答案,而不重复输入两次数字

代码语言:javascript
运行
复制
() - () = 1  
() + () = 9  
() - () = 2  
() + () = 7  

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-04-18 00:16:43

您可以尝试使用暴力方法来解决问题。

制作一个包含4个项目的数组。

每一项都是其中一个方程的所有解。

方程的解是满足方程的一组数字。

你最终得到了第一个方程的7个解,第二个方程4个,第三个方程6个,第四个方程3个。

所有可能的组合都是7 * 4 * 6 * 3 = 504

检查第一个方程的每个解以及秒数的所有解,依此类推……...with四个嵌套的for循环。确认没有两次使用数字。

问题没有解决方案

这是一把小提琴

https://jsfiddle.net/vxg9o78t/1/

以下是代码

代码语言:javascript
运行
复制
solve();

function solve()
{
    // solutions

    var s =
        [    
            [
                [2,1],[3,2],[4,3],[5,4],[6,5],[7,6],[8,7]
            ],
            [
                [8,1],[7,2],[6,3],[5,4]
            ],
            [
                [3,1],[4,2],[5,3],[6,4],[7,5],[8,6]
            ],
            [
                [6,1],[5,2],[4,3]
            ]
        ];

    // counters

    var i0,i1,i2,i3;

    var n0 = s[0].length,
        n1 = s[1].length,    
        n2 = s[2].length,    
        n3 = s[3].length;    

    // configuration check

    var a,
        found,
        j,
        foundn;

    // check every combination of valid solutions

    foundn = 0;

    for( i0=0; i0<n0; i0++ )
    {
        for( i1=0; i1<n1; i1++ )
        {
            for( i2=0; i2<n2; i2++ )
            {
                for( i3=0; i3<n3; i3++ )
                {
                    // the array a is used to check how many times
                    // each number is used. Item nr. 0 is unused.

                    a = [0,0,0,0,0,0,0,0,0];
                    a[s[0][i0][0]]++;
                    a[s[0][i0][1]]++;
                    a[s[1][i1][0]]++;
                    a[s[1][i1][1]]++;
                    a[s[2][i2][0]]++;
                    a[s[2][i2][1]]++;
                    a[s[3][i3][0]]++;
                    a[s[3][i3][1]]++;
                    found = true;
                    for( j=1; j<=8; j++ )
                    {
                        if( a[j] > 1 )
                        {
                            found = false;
                            break;
                        }
                    }
                    if( found )
                    {
                        console.log( s[0][i0][0] + ' ' +
                                     s[0][i0][1] + ' ' + 
                                     s[1][i1][0] + ' ' + 
                                     s[1][i1][1] + ' ' + 
                                     s[2][i2][0] + ' ' + 
                                     s[2][i2][1] + ' ' + 
                                     s[3][i3][0] + ' ' + 
                                     s[3][i3][1] );
                        foundn++;
                    }
                }    
            }   
        }    
    }

    console.log( 'found ' + foundn + ' configurations' );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29701591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档