Java 带for循环的R字谜

Java 带for循环的R字谜,java,r,Java,R,我有以下任务要解决:从1到100,我有100个门。我让10个人一个接一个地进入那排门。门最初是打开的。 第一个人每五次开门一次;;5, 10, 15, 20...100 第二个人每十次开门一次;10, 20, 30 40, 100 第三人每15次开门一次;15,30 45... 100 这种模式一直持续到最后一个人打开第50和100扇门(第50扇门) 每个人都经过后,哪些门是关着的?它应该输出门的具体数量(例如,5,70,75,96100) 我已经用Java解决了这个问题,下面显示了我的代码。我

我有以下任务要解决:从1到100,我有100个门。我让10个人一个接一个地进入那排门。门最初是打开的。 第一个人每五次开门一次;;5, 10, 15, 20...100 第二个人每十次开门一次;10, 20, 30 40, 100 第三人每15次开门一次;15,30 45... 100 这种模式一直持续到最后一个人打开第50和100扇门(第50扇门)

每个人都经过后,哪些门是关着的?它应该输出门的具体数量(例如,5,70,75,96100)


我已经用Java解决了这个问题,下面显示了我的代码。我现在试图在R中解决它,但我在for循环中遇到了问题,我没有得到正确的答案(我必须使用for循环语句)。有人对如何解决这个问题有什么建议吗

enter code here

int personer = 10;
        boolean[] doorOpen = new boolean [100];
        int startPosition;

for(int start = 5; start < 51; start +=5) {


            for(int i = start-1; i < doorOpen.length;  i = i + start) {

                if ( doorOpen [i] == false ) {
                    doorOpen[i] = true;
                    //System.out.println("endret d¯r nr: " + (i+1) + "  --------  " +" D¯r lukket : " + doorOpen[i] );

                } else {
                    doorOpen[i] = false;
                    //System.out.println("endret d¯r nr: " + (i+1) + "  --------  " +" D¯r lukket : " + doorOpen[i] );
                }
            }
            System.out.println();


        } 
for (int i = 0; i < doorOpen.length; i++) {

             if(doorOpen[i] == true) {
                 System.out.print((i+1) + "  ");
             }
         }  

    } // main slutt
在此处输入代码
内部人员=10;
布尔值[]门打开=新布尔值[100];
int起始位置;
用于(int start=5;start<51;start+=5){
用于(int i=start-1;i
我的R代码如下所示:

enter code here


door_game <- function(total_doors=100,passes=10) {
doors <- rep(FALSE,total_doors)

for ....


return (which(doors==true))

door_game()
在此处输入代码

door_game您可以使用outer操作符来计算每个人将打开哪些门,如果这些门不限于100扇门的话。(想想乘法表)


下面是如何使用循环来实现这一点:

number_of_persons <- 10
total_doors <- 100
open_doors <- seq(5,number_of_persons*5,5)

opened_result <- NULL
for (i in open_doors){
  opened <- seq(i,total_doors,i)
  opened_result <- unique(c(opened_result,opened))
}

not_opened <- setdiff(1:total_doors,opened_result)

numberofpersons“但是我在for循环方面有问题”=>具体是什么问题?我不知道如何创建它。我只知道如何创建它,如果它与一门跳跃。在这种情况下,它是5。我在R方面的经验有限。@Meg回路在R中不是最优的。最好的解决方案通常是矢量化的。谢谢!如果我把它抄进去,我就得不到任何答案。缺少什么?数据在我们创建的对象中。如果您在控制台中键入
not_opened
,然后按go,您应该会看到未打开的门。@Meg将您的预期回报添加到问题中。您提供了一个所需结果的示例,但它毫无意义。5号门将首先打开。正确答案应该是:5、20、45、55、60、65、70、75、85、90、95、,100@Meg但是2号人开门#10,为什么不在里面?
setdiff(1:100,no_limit[no_limit<=100])
 [1]  1  2  3  4  6  7  8  9 11 12 13 14 16 17 18 19 21 22 23 24 26 27 28 29 31 32 33 34 36 37 38 39 41 42 43 44 46 47 48 49 51 52 53 54 56 57 58 59 61
[50] 62 63 64 66 67 68 69 71 72 73 74 76 77 78 79 81 82 83 84 86 87 88 89 91 92 93 94 96 97 98 99
c(1:100)[1:100%%5!=0]
 [1]  1  2  3  4  6  7  8  9 11 12 13 14 16 17 18 19 21 22 23 24 26 27 28 29 31 32 33 34 36 37 38 39 41 42 43 44 46 47 48 49 51 52 53 54 56 57 58 59 61
[50] 62 63 64 66 67 68 69 71 72 73 74 76 77 78 79 81 82 83 84 86 87 88 89 91 92 93 94 96 97 98 99
number_of_persons <- 10
total_doors <- 100
open_doors <- seq(5,number_of_persons*5,5)

opened_result <- NULL
for (i in open_doors){
  opened <- seq(i,total_doors,i)
  opened_result <- unique(c(opened_result,opened))
}

not_opened <- setdiff(1:total_doors,opened_result)