Challenges

Reddit challenges in python language.

Files Code and Result

challenge1_easy

challenge2_easy

challenge3_easy

challenge4_easy

challenge5_easy

challenge6_easy

challenge7_easy

challenge8_easy

challenge9_easy

challenge10_easy

challenge11.easy

challenge12_easy

challenge13_easy

challenge14_easy

challenge15_easy

challenge16_easy

challenge17_easy

challenge18_easy

challenge19_easy

challenge20_easy

challenge21_easy

challenge22_easy

challenge23_easy

challenge25_easy

challenge26_easy

challenge27_easy

challenge28_easy

challenge29_easy

challenge30_easy

challenge31_easy

challenge32_easy

challenge33_easy

challenge34_easy

challenge35_easy

challenge36_easy

challenge37_easy

challenge38_easy

challenge39_easy

challenge40_easy

challenge41_easy

challenge42_easy

challenge44_easy

challenge45_easy

challenge46_easy

challenge47_easy

challenge48_easy

challenge49_easy

challenge50_easy

challenge51_easy

challenge52_easy

challenge53_easy

challenge54_easy

challenge55_easy

challenge56_easy

challenge57_easy

challenge58_easy

challenge59_easy

challenge60_easy

challenge61_easy

challenge62_easy

challenge63_easy

challenge64_easy

challenge65_easy

challenge66_Dev

challenge66_easy

challenge67_easy

challenge68_easy

challenge69_easy

challenge69_easyBonus

challenge70_easy

challenge71_easy.py

challenge72_easy

challenge73_easy

challenge74_easy

challenge76_easy

challenge77_easy

challenge79_easy

challenge80_easyone

challenge82_easy

challenge83_easy

challenge84_easy

challenge85_easy

challenge85_easybonus

challenge86_easy

challenge87_easy

challenge88_easy

challenge88_easybonus

challenge89_easy

challenge91_easy

challenge92_easy

challenge93_easy

challenge94_easy

challenge95_easy

challenge96_easy

challenge97_easy

challenge98_easy

challenge99_easy

challenge100_easy

challenge100_easybonus

challenge101_easy

challenge101_easybonus

challenge102_easy

challenge103_easy

challenge104_easy

challenge105_easy

challenge106_easy

challenge107_easy

challenge108_easy

challenge109_easy

challenge110_easy

challenge111_easy2

challenge112_easy

challenge113_easy

challenge114_easy

challenge115_easy

challenge116_easy

challenge119_easy

challenge130_easy

challenge143_easy

challenge146_easy

challenge148_easy

challenge149_easy

challenge153_easy

challenge154_easy

challenge158_easy

challenge158_easybonus

challenge159_easy

challenge160_easy

challenge169_easy

challenge169_easybonus

challenge172_easy

challenge174_easy

challenge175_easy

challenge177_easy

challenge180_easy

challenge181_easy

challenge185_easy

challenge192_easy

challenge193_easy

challenge197_easy

challenge198_easy

challenge199_easy

challenge201_easy

challenge202_easy

challenge203_easy

challenge204_easy

challenge204_easyBonus

challenge205_easy

challenge205_easyBonu

challenge206_easy

challenge208_easy

challenge210_easy

challenge211_easy

challenge212_easy

challenge212_easybonus

challenge213_easy

challenge214_easy

challenge215_easy

challenge216_easy

challenge217_easy

challenge218_easy

challenge218_easyBonus1

challenge218_easyBunus2

challenge219_easy

challenge220_easy.py

challenge221_easy

challenge221_easy

challenge222_easy

challenge222_easy.py

challenge223_easy

challenge226_easy

challenge226_easy

challenge228_easy.py

challenge228_easydev

challenge229_easy

challenge229_easybonus.py

challenge232_easy

challenge232_easy

challenge232_easybonus

challenge232_easybonus

challenge234_easy

challenge234_easybonus

challenge235_easy

challenge236_easy

challenge237_easy

challenge238_easy

challenge238_easybonus

challenge239_easy

challenge240_easy

challenge242_easy

challenge242_easy

challenge242_easyBonus

challenge243_easy

challenge245_easy

challenge245_easyBonus

challenge246_easy

challenge247_easy

challenge249_easy

challenge252_easy

challenge254_easy

challenge255_easy

challenge270_easy

challenge284_easy

challenge286_easy

challenge287_easy

challenge288_easy

challenge290_easy

challenge290_easybonus

challenge291_easy

challenge291_easybonus

challenge205_easyBonu

'''
Of course, not all users will want to read a Month Day, Year format. To fix this, allow your
program to receive hints on how to format the dates, by accepting a date format as a third parameter, for example:

    2015-07-01 2015-07-04 DMY
    2016-03-01 2016-05-05 YDM
    2022-09-05 2023-09-04 YMD

would produce:

    1st - 4th July
    2016, 1st March - 5th May
    2022, September 5th - 2023, September 4th

You only need to handle date format strings DMY, MDY, YMD and YDM.

'''

import re
import datetime
from datetime import date

date_format = []
date_store = []


def suffix(strng):
    if strng.endswith('1'):
        addition = 'st'
    elif strng.endswith('2') and not strng.endswith('1'):
        addition = 'nd'
    elif strng == '13':
        addition = 'th'
    elif strng.endswith('3'):
        addition = 'rd'
    else:
        addition = 'th'
    return addition


def dmy(a, b, c, d, e, f, g, h, i):
    # print out appropriate format

    if (c == str(i) and f == str(i)) and (b == e):
        print("{0}{1}{2}{3}{4}".format(a, '-', d, e, ' '))
    elif c == str(i) and f == str(i):
        print("{0}{1}{2}{3}{4}".format(a, '-', d, e, ' '))
    elif g == h:
        print('{0}{1}{2)'.format(a, b, c))
    elif c == f and b == e:
        print('{0}{4}{3}{5}{1}{5}{2}'.format(a, b, c, d, '-', ' '))
    elif c == f:
        print('{0}{6}{1}{2}{5}{3}{4}'.format(c, a, b, d, e, ' -', ','))
    elif c == str(i):
        print('{0}{1}{2}{3}{4}'.format(a, b, ' - ', d, e))
    else:
        print('{0}{8}{1}{2}{3}{7}{4}{8}{1}{5}{6}'.format(c, ' ', b, a, f, e, d, '- ', ','))



def ydm(a, b, c, d, e, f, g, h, i):
    # print out appropriate format
    if c == str(i) and f == str(i):
        print("{0}{1}{2}{3}{4}".format(a, '-', d, e, ' '))
    elif g == h and b == e:
        print('{0}{5}{a}{4}{2}{3}'.format(c, a, d, b, ' - ', ','))
    elif g == h:
        print('{0}{1}{2)'.format(a, b, c))
    elif c == f and b == e:
        print('{2}{5}{0}{4}{1}3{5}{1}'.format(a, b, c, d, '-', ' ', ''))
    elif c == f:
        print('{0}{6}{1}{2}{5}{3}{4}'.format(c, a, b, d, e, ' -', ','))
    elif c == str(i):
        print('{0}{1}{2}{3}{4}'.format(a, b, '- ', d, f))
    else:
        print('{0}{8}{1}{2}{3}{7}{4}{8}{1}{5}{6}'.format(c, ' ', b, a, f, e, d, '- ', ','))


def ymd(a, b, c, d, e, f, g, h, i):
    # print out appropriate format
    if c == str(i) and f == str(i):
        print("{0}{1}{2}{3}{4}".format(a, '-', d, e, ' '))
    elif g == h and b == e:
        print('{0}{5}{a}{4}{2}{3}'.format(c, a, d, b, ' - ', ','))
    elif g == h:
        print('{0}{1}{2)'.format(a, b, c))
    elif c == f and b == e:
        print('{2}{6}{5}{1}{0}{4}{3}'.format(a, b, c, d, '-', ' '))
    elif c == f:
        print('{0}{6}{1}{2}{5}{3}{4}'.format(c, a, b, d, e, ' -', ','))
    elif c == str(i):
        print('{0}{1}{2}{3}{4}'.format(b, a, '- ', e, d))
    else:
        print('{0}{8}{1}{2}{3}{7}{4}{8}{1}{5}{6}'.format(c, ' ', b, a, f, e, d, '- ', ','))



if __name__ == '__main__':


    candidates = """2015-07-01 2015-07-04 DMY
        2016-03-01 2016-05-05 YDM
        2022-09-05 2023-09-04 YMD"""

    # extract print format codes
    codes = re.findall('(YDM|YMD|DMY)', candidates)


    # string of candidates  to list
    candidates = list(candidates.split())

    # calculate this year for comparison
    now = datetime.datetime.now().year

    # extract year, month, and day from each pairs of candidates
    count = 0
    while count < len(candidates) - 3:
        for value in candidates:
            if value.isalpha():
                date_format.append(value)
                continue
            value = re.findall('\d+', value)
            year = int(value[0])
            month = int(value[1])
            day = int(value[2])

            z = datetime.date(year, month, day)

            # convert to readable date
            nice_z = date.strftime(z, '%#B, %#d, %Y')

            # split into 'words'
            nice_z = nice_z.split()

            # leading zeros to go
            nice_z[1] = nice_z[1].strip(',')
            nice_z[1] = str(int(nice_z[1]))

            # commas to go
            stripped_nice_z = ''
            for x in nice_z:
                x = x.strip(',')
                stripped_nice_z = stripped_nice_z + x + ' '
            stripped_nice_z = stripped_nice_z.split()

            # add suffix
            add_suffix = suffix(stripped_nice_z[1])

            suffixed_nice_z = stripped_nice_z[0] + ' ' + stripped_nice_z[1] + add_suffix + ' ' + stripped_nice_z[2]
            count += 1

            # place in date_store list
            date_store.append(suffixed_nice_z)
            count += 1


    # extract in pairs from date_store and convert to readable year, month, days
    y = 0
    for x in range(0, len(date_store), 2):
        first = date_store[x]
        second = date_store[x + 1]
        day = re.findall('\s\w+\s', date_store[x])
        day = day[0]
        month = re.findall('^\w+', date_store[x])
        month = month[0]
        year = re.findall('\w+$', date_store[x])
        year = year[0]
        day2 = re.findall('\s\w+\s', date_store[x + 1])
        day2 = day2[0]
        month2 = re.findall('^\w+', date_store[x + 1])
        month2 = month2[0]
        year2 = re.findall('\w+$', date_store[x + 1])
        year2 = year2[0]
        if codes[y] == 'DMY':
            dmy(day, month, year, day2, month2, year2, first, second, now)
        elif codes[y] == 'YDM':
            ydm(day, month, year, day2, month2, year2, first, second, now)
        else:
            ymd(day, month, year, day2, month2, year2, first, second, now)
        y += 1

Result

 1st - 4th  JULY 2015
 1st - 5th MAY 
2022, SEPTEMBER 5th - 2023, SEPTEMBER 4th