Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Javascript 伪编码辅助_Javascript_Algorithm_Data Structures_Logic_Pseudocode - Fatal编程技术网

Javascript 伪编码辅助

Javascript 伪编码辅助,javascript,algorithm,data-structures,logic,pseudocode,Javascript,Algorithm,Data Structures,Logic,Pseudocode,来自viking code学校工程原理预科课程: 10个朋友围着桌子坐成一圈,决定玩一个新游戏。在这本书中,他们从1数到100。第一个人说1,第二个人说2,依此类推。。。但有几个陷阱: 每当这个数字可以被7整除时,它们就会切换方向。所以第六个人会说6,第七个人会说7,然后第六个人会说8。 当数字可以被11整除时,他们跳过下一个人 伪代码一个程序,将确定哪个玩家说100。 一个人是如何开始理解这个逻辑的 我所做的是创建一个for循环到100,内部有一个变量跟踪方向,另一个变量跟踪当前玩家。我在循环

来自viking code学校工程原理预科课程:

10个朋友围着桌子坐成一圈,决定玩一个新游戏。在这本书中,他们从1数到100。第一个人说1,第二个人说2,依此类推。。。但有几个陷阱:

每当这个数字可以被7整除时,它们就会切换方向。所以第六个人会说6,第七个人会说7,然后第六个人会说8。 当数字可以被11整除时,他们跳过下一个人

伪代码一个程序,将确定哪个玩家说100。
一个人是如何开始理解这个逻辑的

我所做的是创建一个for循环到100,内部有一个变量跟踪方向,另一个变量跟踪当前玩家。我在循环中使用if语句来决定是切换方向,还是当前播放器递增或递减

这是我最后得到的结果,它不漂亮,但应该有用:

int curPlayer = 1;
int direction = 1;

for(int i = 1; i <= 100; i++)
{
    if(i % 7 == 0 && direction == 1)
    {
        direction = 0;
    }
    else if(i % 7 == 0)
    {
        direction = 1;
    }

    if(i % 11 == 0 && direction == 1)
    {
        curPlayer++;
    }
    else if(i % 11 == 0)
    {
        curPlayer--;
    }

    if(direction == 1)
    {
        curPlayer++;
    }
    else
    {
        curPlayer--;
    }

    if(curPlayer > 10)
    {
        curPlayer = curPlayer - 10;
    }
    else if(curPlayer < 1)
    {
        curPlayer = curPlayer + 10;
    }
}

return curPlayer;

通常在编程中,选择合适的数据结构可以大大简化解决特定问题的算法。你的问题可以用一个简单的方法优雅地解决。因为有十个朋友坐在一个圆圈里,我们将他们放入链接列表中,如下所示:

                   next   +-------+   next
               +--------->|       |----------+
               |          |   1   |          |
               |       +--|       |<--+      v
           +-------+   |  +-------+   |  +-------+
           |       |   |              |  |       |
       +-->|  10   |<--+ prev    prev +--|   2   |---+
       |   |       |                     |       |   |
  next |   +-------+                     +-------+   | next
       |       |                             ^       v
   +-------+   | prev                   prev |   +-------+
   |       |   |                             |   |       |
   |   9   |<--+                             +---|   3   |
   |       |                                     |       |
   +-------+                                     +-------+
     ^   |                                         ^   |
next |   | prev                               prev |   | next
     |   v                                         |   v
   +-------+                                     +-------+
   |       |                                     |       |
   |   8   |---+                             +-->|   4   |
   |       |   |                             |   |       |
   +-------+   | prev                   prev |   +-------+
       ^       v                             |       |
  next |   +-------+                     +-------+   | next
       |   |       |                     |       |   |
       +---|   7   |--+ prev    prev +-->|   5   |<--+
           |       |  |              |   |       |
           +-------+  |   +-------+  |   +-------+
               ^      +-->|       |--+       |
               |          |   6   |          |
               +----------|       |<---------+
                   next   +-------+   next
综上所述,答案是1:

var firstFriend=toList[1,2,3,4,5,6,7,8,9,10]; var answer=forward1,firstFriend; 警惕性回答; 函数Nodeprev,数据,下一步{ this.prev=prev; 这个数据=数据; this.next=next; } 函数tolistaray{ var length=array.length; 如果长度===0,则抛出新的Errorempty数组; var root=new Nodenull,数组[0],null,node=root,i=1; 而i}您可以运行该算法,直到达到100。或者,为10个人算出一次,然后返回答案,这仅仅是一个数字。@SimeonVisser你如何为10个人算出一次,然后返回答案,这仅仅是一个数字?@AaditMShah:如果总是10个人,并且算法总是相同的,那么你可以在纸/记事本上算出,然后返回答案,不需要代码,只要返回n;。你能很快地把它转换成伪代码吗?另外,当计数可以被11整除时,curPlayer是否应该增加2,因为下一个人被跳过了?我也很难理解为什么,如果这个数字可以被7整除,并且方向=1,那么将方向设置为0。此外,这是否涉及可被11和7整除的数字,在这种情况下,方向颠倒,跳过下一个人?此外,for循环是否应继续到100?当计数可被11整除时,curPlayer首先递增或递减1,但在ifdirection==1时,curPlayer再次递增或递减,总计递减或递增2。方向表示圆的方向,因此如果i可被7整除,则方向需要切换为0或1,这取决于它已经位于的位置。由于它同时通过两个if语句,所以可以同时被11和7整除。循环从0到99,也就是100,正如1到100是100。我意识到我没有考虑到只有10名玩家,我正在进行一些编辑。如果你所做的只是通过删除if语句周围的括号并用单词替换符号,让你的程序读起来更像英语,那么这不是真正的伪代码。伪代码应该比实际代码本身更具描述性,更易于理解。伪代码是用于解决问题的算法的描述,而代码是问题的解决方案。伪代码中没有任何地方解释过算法。读者被迫通过阅读代码来理解算法。仅仅给出代码并说这是伪代码是不够的。Explain@AaditMShah你能展示一个你所描述的伪代码的例子,一个链接到一个例子吗?我学习它只是为了让人们更容易理解代码,通过去掉电脑阅读所需的细节。我知道我可以
我已经解释了变量,而不是仅仅说明变量,但这似乎是多余的,并且不是解释算法的意思。谢谢不是为了让死后的东西复活,但我在将近一年后回来研究这个问题,我必须说,这是一个奇妙的解决方案。当时对我来说没有任何意义,但花时间研究数据结构,我自己也无法想出更好的解决方案!
                   next   +-------+   next
               +--------->|       |----------+
               |          |   1   |          |
               |       +--|       |<--+      v
           +-------+   |  +-------+   |  +-------+
           |       |   |              |  |       |
       +-->|  10   |<--+ prev    prev +--|   2   |---+
       |   |       |                     |       |   |
  next |   +-------+                     +-------+   | next
       |       |                             ^       v
   +-------+   | prev                   prev |   +-------+
   |       |   |                             |   |       |
   |   9   |<--+                             +---|   3   |
   |       |                                     |       |
   +-------+                                     +-------+
     ^   |                                         ^   |
next |   | prev                               prev |   | next
     |   v                                         |   v
   +-------+                                     +-------+
   |       |                                     |       |
   |   8   |---+                             +-->|   4   |
   |       |   |                             |   |       |
   +-------+   | prev                   prev |   +-------+
       ^       v                             |       |
  next |   +-------+                     +-------+   | next
       |   |       |                     |       |   |
       +---|   7   |--+ prev    prev +-->|   5   |<--+
           |       |  |              |   |       |
           +-------+  |   +-------+  |   +-------+
               ^      +-->|       |--+       |
               |          |   6   |          |
               +----------|       |<---------+
                   next   +-------+   next