java パスカルの三角形 - 簡単なルールから作成してみた。
2007/07/13
java
確率とかの本ででてきたので、ちょっとためしてました。
シナリオ:
パスカルの三角形を10段まで表示してください。
パスカルの三角形とは、パスカルの三角形 - Wikipediaです。
簡単なルールは、
この三角形の作り方は単純なルールに基づいている。まず最上段に1を配置する。それより下の行はその位置の右上の数と左上の数の和を配置する。例えば、5段目の左から2番目には、左上の1と右上の3の合計である4が入る...パスカルの三角形 - Wikipedia
ルールがわかればプログラムに落とすのはなんとなくできますね。
結果です。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
コードはjavaです。
package pascal;
public class Test {
public static void main(String[] args) {
a();
}
public static void a() {
int[] n = new int[1];
n[0] = 1;
for (int i = 0; i < 11; i++) {
print(n);
n = n(n);
}
}
public static int[] n(int[] n) {
int[] is = new int[n.length + 1];
is[0] = n[0];
for (int i = 1; i < n.length; i++) {
is[i] = n[i - 1] + n[i];
}
is[is.length - 1] = 1;
return is;
}
static void print(int[] is) {
for (int i : is) {
System.out.print(i + " ");
}
System.out.println();
}
}
public class Test {
public static void main(String[] args) {
a();
}
public static void a() {
int[] n = new int[1];
n[0] = 1;
for (int i = 0; i < 11; i++) {
print(n);
n = n(n);
}
}
public static int[] n(int[] n) {
int[] is = new int[n.length + 1];
is[0] = n[0];
for (int i = 1; i < n.length; i++) {
is[i] = n[i - 1] + n[i];
}
is[is.length - 1] = 1;
return is;
}
static void print(int[] is) {
for (int i : is) {
System.out.print(i + " ");
}
System.out.println();
}
}
: