1 | initial version |

From @rburing's answer... slightly modified since taking coefficients in the polynomial ring somehow only gives the non-zero coefficients:

```
t = var('t')
R = ZZ[t]
def is_unimodal(p):
coeffs = [R(p).constant_coefficient()]
for i in range(1,p.degree(t)+1):
coeffs = coeffs + [SR(p).coefficient(t^i)]
max_coeff_idx = max(range(len(coeffs)), key=lambda i: coeffs[i])
return all(coeffs[i] <= coeffs[i+1] for i in range(max_coeff_idx)) and \
all(coeffs[i] >= coeffs[i+1] for i in range(max_coeff_idx, len(coeffs) - 1))
```

2 | No.2 Revision |

From @rburing's answer... slightly modified since taking coefficients in the polynomial ring somehow only gives the non-zero coefficients:

```
t = var('t')
R = ZZ[t]
def is_unimodal(p):
coeffs = [R(p).constant_coefficient()]
for i in range(1,p.degree(t)+1):
coeffs = coeffs + [SR(p).coefficient(t^i)]
max_coeff_idx = max(range(len(coeffs)), key=lambda i: coeffs[i])
return all(coeffs[i] <= coeffs[i+1] for i in range(max_coeff_idx)) and \
all(coeffs[i] >= coeffs[i+1] for i in range(max_coeff_idx, len(coeffs) - 1))
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.