In this Kata, you will be given a string and your task will be to return a list of ints detailing the count of uppercase letters, lowercase, numbers and special characters, as follows.

```Haskell
Solve("*'&ABCDabcde12345") = [4,5,5,3]. 
--the order is: uppercase letters, lowercase, numbers and special characters.
```

More examples in the test cases. 

Good luck!

Difficulty: introductory

Starter code:

def solve(s):
	

Solutions:
def solve(s):
  uc, lc, num, sp = 0, 0, 0, 0
  for ch in s:
    if ch.isupper(): uc += 1
    elif ch.islower(): lc += 1
    elif ch.isdigit(): num += 1
    else: sp += 1
  return [uc, lc, num, sp]

import re
def solve(s):
    return [len(re.findall(i,s)) for i in ('[A-Z]','[a-z]','\d','[^a-zA-Z0-9]')]


def solve(s):
    res = [0, 0, 0, 0]
    for c in s:
        i = 0 if c.isupper() else 1 if c.islower() else 2 if c.isdigit() else 3
        res[i] += 1
    return res

from string import ascii_lowercase, ascii_uppercase, digits, punctuation


def solve(s):
    return [
        len([q for q in s if q in ascii_uppercase]),
        len([q for q in s if q in ascii_lowercase]),
        len([q for q in s if q in digits]),
        len([q for q in s if q in punctuation])
    ]

def solve(s):
    lst = [0, 0, 0, 0]
    for char in s:
        if char.isupper():
            lst[0] += 1
        elif char.islower():
            lst[1] += 1
        elif char.isdigit():
            lst[2] += 1
        else:
            lst[3] += 1
    return lst

def solve(s):
    upper, lower, digit, other = 0, 0, 0, 0
    
    for c in s:
        if   c.isupper(): upper += 1
        elif c.islower(): lower += 1
        elif c.isdigit(): digit += 1
        else:             other += 1
    
    return [upper, lower, digit, other]

def solve(s):
    fs = [str.isupper, str.islower, str.isdigit]
    res = [0, 0, 0, 0]
    for c in s:
        res[next((i for i, f in enumerate(fs) if f(c)), -1)] += 1
    return res

def solve(s):
    r = [0] * 4
    for e in s:
        r[0 if e.isupper() else 1 if e.islower() else 2 if e.isdigit() else 3] += 1
    return r

def solve(s):
    others = [
        sum(x.isupper() for x in s),
        sum(x.islower() for x in s),
        sum(x.isnumeric() for x in s)
    ]
    return others + [len(s) - sum(others)]

import re
def solve(s):
    uppercase = len(re.findall('[A-Z]', s))
    lowercase = len(re.findall('[a-z]', s))
    numbers = len(re.findall('[0-9]', s))
    special = len(re.findall('[^A-Za-z0-9]', s))
    return [uppercase, lowercase, numbers, special]