Bob is a theoretical coder - he doesn't write code, but comes up with theories, formulas and algorithm ideas. You are his secretary, and he has tasked you with writing the code for his newest project - a method for making the short form of a word. Write a function ```shortForm```(C# ```ShortForm```, Python ```short_form```) that takes a string and returns it converted into short form using the rule: Remove all vowels, except for those that are the first or last letter. Do not count 'y' as a vowel, and ignore case. Also note, the string given will not have any spaces; only one word, and only Roman letters. 

Example:
```
shortForm("assault");
short_form("assault")
ShortForm("assault");
// should return "asslt"
```

 
Also, FYI: I got all the words with no vowels from 
https://en.wikipedia.org/wiki/English_words_without_vowels

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def short_form(s):
	

Solutions:
from re import *

def short_form(s):
	return sub('(?<!^)[aeiou](?=.)', '', s, flags=I)


import re

def short_form(s):
	regex = re.compile('(?!^)[aeiou](?!$)', re.I)
	return re.sub(regex, '', s)


def short_form(s):
	return s[0] + ''.join((x for x in s[1:-1] if x not in 'aeiouAEIOU')) + s[-1]


from re import sub

def short_form(s):
	return sub('(?!^)[aeiouAEIOU](?!$)', '', s)


from re import compile
from functools import partial
short_form = partial(compile('(?i)(?<!^)[aeiou](?!$)').sub, '')


def short_form(s):
	return ''.join((c for (i, c) in enumerate(s) if c.lower() not in 'aeiou' or (i == 0 or i == len(s) - 1)))


def short_form(s):
	n = len(s)
	return ''.join((c for (i, c) in enumerate(s) if c not in 'aeiouAEIOU' or (i == 0 or i == n - 1)))


import re

def short_form(s):
	return s[0] + re.sub('[aeiou]', '', s[1:-1], flags=re.I) + s[-1]