#Java 8, 202 176 174 173 bytes
Java 8,
#Java 8, 202 176 174 173 bytes
Java 8, 202 176 174 173 bytes
#Java 8, 202 176 174174 173 bytes
a->{String r="";int j=a.length;for(int i:a)r+=i==0*j--?"":"+"+i+(j<1?"":j<2?"x":"x^"+j);return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("([+-]\\D)1x","$1x");} a->{ // Method with String-array parameter and String return-type String r=""; // Result-String, starting empty int j=a.length; // Power-integer, starting at the size of the input-array for(int i:a) // Loop over the array r+=i==0 // If the current item is 0 *j--? // (And decrease `j` by 1 at the same time) "" // Append the result with nothing : // Else: "+" // Append the result with a "+", +i // and the current item, +(j<1? // +If `j` is 0: "" // Append nothing more :j<2? // Else-if `j` is 1: "x" // Append "x" : // Else: "x^"+j); // Append "x^" and `j` return r.isEmpty()? // If `r` is still empty "0" // Return "0" : // Else: r.substring(1) // Return the result minus the leading "+", .replace("+-","-") // and change all occurrences of "+-" to "-", .replaceAll("([+-]\\D)1x","$1x");} // and all occurrences of "1x" to "x" #Java 8, 202 176 174 bytes
a->{String r="";int j=a.length;for(int i:a)r+=i==0*j--?"":"+"+i+(j<1?"":j<2?"x":"x^"+j);return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("([+-])1x","$1x");} a->{ // Method with String-array parameter and String return-type String r=""; // Result-String, starting empty int j=a.length; // Power-integer, starting at the size of the input-array for(int i:a) // Loop over the array r+=i==0 // If the current item is 0 *j--? // (And decrease `j` by 1 at the same time) "" // Append the result with nothing : // Else: "+" // Append the result with a "+", +i // and the current item, +(j<1? // +If `j` is 0: "" // Append nothing more :j<2? // Else-if `j` is 1: "x" // Append "x" : // Else: "x^"+j); // Append "x^" and `j` return r.isEmpty()? // If `r` is still empty "0" // Return "0" : // Else: r.substring(1) // Return the result minus the leading "+", .replace("+-","-") // and change all occurrences of "+-" to "-", .replaceAll("([+-])1x","$1x");} // and all occurrences of "1x" to "x" #Java 8, 202 176 174 173 bytes
a->{String r="";int j=a.length;for(int i:a)r+=i==0*j--?"":"+"+i+(j<1?"":j<2?"x":"x^"+j);return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("(\\D)1x","$1x");} a->{ // Method with String-array parameter and String return-type String r=""; // Result-String, starting empty int j=a.length; // Power-integer, starting at the size of the input-array for(int i:a) // Loop over the array r+=i==0 // If the current item is 0 *j--? // (And decrease `j` by 1 at the same time) "" // Append the result with nothing : // Else: "+" // Append the result with a "+", +i // and the current item, +(j<1? // +If `j` is 0: "" // Append nothing more :j<2? // Else-if `j` is 1: "x" // Append "x" : // Else: "x^"+j); // Append "x^" and `j` return r.isEmpty()? // If `r` is still empty "0" // Return "0" : // Else: r.substring(1) // Return the result minus the leading "+", .replace("+-","-") // and change all occurrences of "+-" to "-", .replaceAll("(\\D)1x","$1x");} // and all occurrences of "1x" to "x" #Java 8, 202202 176 174 bytes
a->{String r="";forr="";int j=a.length;for(int i=a.length,j=0;ii:a)r+=i==0*j-->0;j++)r=a[i].equals("0")?r"":a[i]+"+"+i+(j<1?"":j<2?"x":"x^"+j)+"+"+r;return;return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("([\\[+-\\+]])1x","$1x").replaceAll(".$","");} Can definitely be golfed some more..
- 26 bytes thanks to @Nevay.
a->{ // Method with String-array parameter and String return-type String r=""; // Result-String, starting empty for(int i=aj=a.length,j=0;i-->0;j++) length; // Power-integer, starting at the size of the input-array for(int i:a) // Loop over the array, r+=i==0 // where `i` goes backwards, and `j` forwards r=a[i].equals("0")? // If the `i`'thcurrent item is 0 r *j--? // Leave(And `r`decrease the`j` same by 1 at the same time) : "" // Else, changeAppend `r`the to: result with nothing a[i] : // The `i`'th itemElse: +(j<1? "+" // IfAppend `j`the isresult 0with (firsta iteration)"+", "" +i // and Appendthe nothingcurrent item, :j<2+(j<1? // Else if+If `j` is 1 (second iteration)0: "x" "" // Append "x" Append nothing :more :j<2? // Else-if (`j` is 2 or larger)1: "x^"+j) "x" // Append "x^" withAppend `j`"x" +"+" : // Append a "+"Else: +r; "x^"+j); // And append theAppend previous"x^" `r`and `j` return r.isEmpty()? // If `r` is still empty "0" // Return "0" : // Else: r.substring(1) // Else: Return the result minus the leading "+", r .replace("+-","-") // Changeand change all occurrences of "+-" to "-", .replaceAll("([\\[+-\\+]])1x","$1x");} // Alland all occurrences of "1x" to "x" .replaceAll(".$","");} // And remove the trailing "+" #Java 8, 202 bytes
a->{String r="";for(int i=a.length,j=0;i-->0;j++)r=a[i].equals("0")?r:a[i]+(j<1?"":j<2?"x":"x^"+j)+"+"+r;return r.isEmpty()?"0":r.replace("+-","-").replaceAll("([\\-\\+])1x","$1x").replaceAll(".$","");} Can definitely be golfed some more..
a->{ // Method with String-array parameter and String return-type String r=""; // Result-String, starting empty for(int i=a.length,j=0;i-->0;j++) // Loop over the array, // where `i` goes backwards, and `j` forwards r=a[i].equals("0")? // If the `i`'th item is 0 r // Leave `r` the same : // Else, change `r` to: a[i] // The `i`'th item +(j<1? // If `j` is 0 (first iteration) "" // Append nothing :j<2? // Else if `j` is 1 (second iteration) "x" // Append "x" : // Else (`j` is 2 or larger): "x^"+j) // Append "x^" with `j` +"+" // Append a "+" +r; // And append the previous `r` return r.isEmpty()? // If `r` is still empty "0" // Return "0" : // Else: r.replace("+-","-") // Change all occurrences of "+-" to "-" .replaceAll("([\\-\\+])1x","$1x") // All occurrences of "1x" to "x" .replaceAll(".$","");} // And remove the trailing "+" #Java 8, 202 176 174 bytes
a->{String r="";int j=a.length;for(int i:a)r+=i==0*j--?"":"+"+i+(j<1?"":j<2?"x":"x^"+j);return r.isEmpty()?"0":r.substring(1).replace("+-","-").replaceAll("([+-])1x","$1x");} - 26 bytes thanks to @Nevay.
a->{ // Method with String-array parameter and String return-type String r=""; // Result-String, starting empty int j=a.length; // Power-integer, starting at the size of the input-array for(int i:a) // Loop over the array r+=i==0 // If the current item is 0 *j--? // (And decrease `j` by 1 at the same time) "" // Append the result with nothing : // Else: "+" // Append the result with a "+", +i // and the current item, +(j<1? // +If `j` is 0: "" // Append nothing more :j<2? // Else-if `j` is 1: "x" // Append "x" : // Else: "x^"+j); // Append "x^" and `j` return r.isEmpty()? // If `r` is still empty "0" // Return "0" : // Else: r.substring(1) // Return the result minus the leading "+", .replace("+-","-") // and change all occurrences of "+-" to "-", .replaceAll("([+-])1x","$1x");} // and all occurrences of "1x" to "x" Loading