私は(HWではなく)自分でプログラミングについて読んでいます。1つの演習では、パスカルの三角形をRでプログラミングしました。最初のアイデアは、リストを作成してから追加することでしたが、うまくいきませんでした。それから、ベクトルから始めて、最後にそれからリストを作成することを考えました。それから、マトリックスを作成し、最後にそれからリストを作成することを考えました。
これにアプローチする方法がわからない。
ヒントはありますか?
ありがとう
私は(HWではなく)自分でプログラミングについて読んでいます。1つの演習では、パスカルの三角形をRでプログラミングしました。最初のアイデアは、リストを作成してから追加することでしたが、うまくいきませんでした。それから、ベクトルから始めて、最後にそれからリストを作成することを考えました。それから、マトリックスを作成し、最後にそれからリストを作成することを考えました。
これにアプローチする方法がわからない。
ヒントはありますか?
ありがとう
ロゼッタコードには1つの解決策があります:
pascalTriangle <- function(h) {
for(i in 0:(h-1)) {
s <- ""
for(k in 0:(h-i)) s <- paste(s, " ", sep="")
for(j in 0:i) {
s <- paste(s, sprintf("%3d ", choose(i, j)), sep="")
}
print(s)
}
}
自分で開発する場合は、これをリストに格納します。これは、可変長の行を処理するための最も自然なデータ構造だからです。ただし、その決定を行う前に、ユースケースを明確にする必要があります。データが生成された後、データの分析を行うつもりですか?
編集:
これは、ループを減らして結果をリストとして保存するように書き直されたRosettaソリューションです。
pascalTriangle <- function(h) {
lapply(0:h, function(i) choose(i, 0:i))
}
パスカルの三角形のプロパティを使用する:
x <- 1
print(x)
for (i in 1:10) { x <- c(0, x) + c(x, 0); print(x) }
このコードは非常に高速だと思います。