# Finding powers of (x+1)

It appears to me that this has been before in all languages except dart...

Referenced in order btw, any improvements, any tips, any feed back would be appreciated...

// The Goal: raise (x + 1) to a power and get a list of strings output

final int power = 6; //determines which power
final String firstVar = "y"; //
final int secondNumber = 1;

void main() {
//reference first

List<List<double>> pyrmide = [
[1], // anything to the power of zero is one
[1,1]]; // needs [1,1] to work properly

//reference second

for(int i = 1; i < power // this builds the pyrmide
; i += 1) {
List<double> nextLayer = [1,1]; // outside numbers

for(int j = 0; j < (pyrmide.length - 1); // finds inside numbers
j += 1) {
nextLayer
.insert(j + 1,
pyrmide[i][j] + pyrmide[i][j + 1] // finds number from the above layers
);
}

}

List<String> output = []; // will output something similar to ["x^2", "2x", "1"]

//reference third

for(int k = 0; // k finds the power of secondvar
k < pyrmide.length; k += 1) {
int l = power - k; // finds the power of firstvar

if (l != 0 && k != 0) // don't want x^0 or 1x^power
{
output.add("${(pyrmide[power][k]*secondNumber).toString()}$firstVar^${l.toString()}"); } else if (l == 0) { output.add("${(pyrmide[power][k] * secondNumber).toString()}");
} else if (k == 0) {
output.add("$firstVar^$l");
}
}

print(output);
}

/* it turns that pyrmides predicts powers of (x+1)
power of zero: 1
power of one: 1,1 (x + 1)
power of two: 1, 2, 1 (x^2 + 2x + 1)
*/

/* write the pyrmide down, the outside numbers are always one
you only have to find 1 inside number for the power of 2, 2 inside numbers for power of 3, so on
*/

/* every term in any power of (x + 1) will always have its sum of the powers inside of it equal the power you raised (x + 1) to get to it*/
$$$$
`