## Instructions

You are provided with a function of the form f(x) = axⁿ, that consists of a single term only and 'a' and 'n' are integers, e.g f(x) = 3x², f(x) = 5 etc.

Your task is to create a function that takes f(x) as the argument and returns the result of differentiating the function, that is, the derivative.

If f(x)=axn f(x) = ax^nf(x)=ax

n

, then f′(x)=naxn−1 f^{\prime}(x) = nax^{n-1}f

′

(x)=nax

n−1

Input is a string, for example "5x^4". The function f(x) consists of a single term only. Variable is denoted by x.

Output should be a string, for example "20x^3".

**Examples**

"3x^2" => "6x"

"-5x^3" => "-15x^2"

"6x^-2" => "-12x^-3"

"5x" => "5"

"-x" => "-1"

"42" => "0"

## My solution:

```
function differentiate(f) {
if(!f.includes('x')) return "0"
if(f == 'x') return "1"
if(f == '-x') return "-1"
if(!f.includes('^')) return f.replace('x', '')
f=f.split('^')
if(f[0] == 'x' || f[0] == '-x') f[0]=f[0].replace('x','1')
f[0] = f[0].replace('x','')
let exponent = +f[1]
let base = +f[0]
let newExponent = +f[1] - 1
let newBase = exponent*base
if(newExponent == 1) return newBase + 'x'
if(newBase == -1) return '-x^' + newExponent
if(newBase == 1) return 'x^' + newExponent
return newBase + 'x^' + newExponent
}
```

## Explanation

First I used some conditionals for especific inputs, if the function doesn't includes an "x" it is just a number like "42", so the result should be 0

if(!f.includes('x')) return "0"

If it is just "x" it'll return 1, and if it is "-x" it'll return -1

if(f == '-x') return "-1"

And if it doesn't includes a "^" it'll return the function but without the x, so if I have "6x" it'll return "6"

if(!f.includes('^')) return f.replace('x', '')

After that I splitted in the "^" and I used a conditional to see that if in the first element that is the base before the "^" I have only a "x" or a "-x" those are equal to 1 or -1, so I replaced "x" for 1 and "-x" for -1

f=f.split('^')

if(f[0] == 'x' || f[0] == '-x') f[0]=f[0].replace('x','1')

__For example: x^2 --> [1, 2]__

If not, I'll just eliminate the "x" replacing it to an empty string

f[0] = f[0].replace('x','')

After that using the array that I splitted, I declarated the exponent and the base, after that I created the newExponent resting 1 to the exponent and the newBase multiplying the base for the exponent.

let exponent = +f[1]

let base = +f[0]

let newExponent = +f[1] - 1

let newBase = exponent*base

Then I used some conditionals to return the last results, if the newExponent is 1, it should return the newBase and x, because if it is elevated to 1 it remains the same, if the newBase is equal to -1, it'll return "-x" and the newExponent, and if it is 1 it'll return "x" and the newExponent, and if any of this contions is true it'll return the newBase + 'x^' + newExponent.

if(newExponent == 1) return newBase + 'x'

if(newBase == -1) return '-x^' + newExponent

if(newBase == 1) return 'x^' + newExponent

return newBase + 'x^' + newExponent

**What do you think about this solution? 👇🤔**

## Top comments (0)