R解决黑客挑战

use*_*622 7 r

我想解决这个挑战.我喜欢的语言是R.我不确定如何接收输入.在hackerrank编码窗口,它说

"# Enter your code here. Read input from STDIN. Print output to STDOUT"
Run Code Online (Sandbox Code Playgroud)

到目前为止,我习惯通过使用来接收输入

v1 <- readline("Enter two integers: ")
Run Code Online (Sandbox Code Playgroud)

我该如何收到hackerrank的输入?我试图看到解决的例子,但找不到任何已解决的例子.


更新1

下面的代码在R中工作.唯一的问题是步数和键盘输入不提供球值.我们必须在第1行和第2行手动更新它们.我如何在解决方案下获得更新,以便它适用于hackerrank?

steps=4
ball_numbers=c(1,2,2,2)
d=as.data.frame(c(0,1))

    for (i in (1:(length(ball_numbers)-1)))
    {
      assign(x = paste("A", i, sep = ""),value = c(0,1))
      e <- as.data.frame(get(paste("A", i, sep = "")))
      colnames(e) <- paste("A", i, sep="")
      d <- merge(d,e)
}


d=as.matrix(t(d))
answer=sum(ball_numbers %*% d)/ncol(d)
Run Code Online (Sandbox Code Playgroud)

UPDATE2

下面的代码产生正确答案

# Enter your code here. Read input from STDIN. Print output to STDOUT
nums <- read.table("/dev/stdin", sep=" ");
nums <- as.matrix(as.data.frame(t(nums)))

steps=nums[1]
ball_numbers=nums[2:length(nums)]
d=as.data.frame(c(0,1))

for (i in (1:(length(ball_numbers)-1)))
{
    assign(paste("A", i, sep = ""),value = c(0,1))
    e <- as.data.frame(get(paste("A", i, sep = "")))
    colnames(e) <- paste("A", i, sep="")
    d <- merge(d,e)
}


d=as.matrix(t(d))
#answer=as.numeric(format(round(sum(ball_numbers %*% d)/ncol(d),1),nsmall=1))
answer = print(format(sum(ball_numbers %*% d)/ncol(d),nsmall=1, digits = 1), quote = F)
write.table(as.numeric(answer), sep = "", append=T, row.names = F, col.names = F,quote = FALSE,)
Run Code Online (Sandbox Code Playgroud)

我低于输出

[1] 2.0
2
Run Code Online (Sandbox Code Playgroud)

这与下面的预期输出不同.如何修改我的代码以获得正确的输出格式

2.0
Run Code Online (Sandbox Code Playgroud)

scr*_*les 16

看看"热身".

data <- suppressWarnings(read.table("stdin", sep=" "));
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

data <- suppressWarnings(readLines(file("stdin")))
Run Code Online (Sandbox Code Playgroud)

另请参阅hackerrank中的此页面


Vij*_*P R 6

我在hackerrank中阅读R中的输入时遇到了类似的问题.然后使用我使用的readLines:

input<-file('stdin', 'r')
x <- readLines(input, n=1)
Run Code Online (Sandbox Code Playgroud)

如果您再次想要读取其他数据,请使用相同的方法:

y <- readLines(input, n=1)
Run Code Online (Sandbox Code Playgroud)