In this GinortS problem, You are given a string S that contains alphanumeric characters only. Your task is to sort the string S in the following manner that All sorted lowercase letters are ahead of uppercase letters. All sorted uppercase letters are ahead of digits. All sorted odd digits are ahead of sorted even digits.
Problem solution in Python 2 programming.
def f(ch): res = ord(ch) if 65 <= res <= 90: res += 100 elif res <= 57: res += 200 if res % 2 == 0: res += 10 return res S = raw_input().strip() print reduce(lambda x,y: x + y, sorted(S, key=f), '')
Problem solution in Python 3 programming.
def f(c): code = 0 if c.isupper(): code = 10 ** 3 elif c.isdigit(): code = 10 ** 6 if ord(c) % 2 == 0: code = 10 ** 9 return code + ord(c) print(*sorted(input(), key=lambda c: f(c)), sep='')
Problem solution in pypy programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT from string import ascii_lowercase, ascii_uppercase, ascii_letters sortkey = ascii_letters + "1357902468" print reduce(lambda x,y: x+y, sorted(raw_input(),key=sortkey.index))
Problem solution in pypy3 programming.
# Enter your code here. Read input from STDIN. Print output to STDOUT s = sorted(input()) lower = list(filter(lambda x: x.islower(),s)) upper = list(filter(lambda x: x.isupper(),s)) odd = list(filter(lambda x: x.isdigit() and int(x)%2 ==1, s)) even = list (filter(lambda x: x.isdigit() and int(x)%2 ==0,s)) print(*(lower + upper+odd+even), sep = "")