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

challenge108_easy

'''
If you haven't gathered from the title, the challenge here is to go from
decimal notation -> scientific notation. For those that don't know,
scientific notation allows for a decimal less than ten, greater than
zero, and a power of ten to be multiplied.

For example: 239487 would be 2.39487 x 105

And .654 would be 6.54 x 10-1

Bonus Points:

    Have you program randomly generate the number that you will translate.

    Go both ways (i.e., given 0.935 x 103, output 935.)

Good luck, and have fun!
'''

def sign(s):
    negative = re.findall('-', s)
    if not negative:
        negative = ''
    else:
        negative = negative[0]
    return negative


def zero_cull(s):
    '''cull leading zeros'''
    if ',' in s:
        s = re.sub("\.|0+", "", s)
    else:
        s = re.sub('^0+', '', s)
    return s


def leading_digit(s):
    digit = re.findall('([1-9])', s)
    if digit == []:
        digit = 0
    else:
        digit = digit[0]
    return digit

def remainder_(s):
    remainder = re.findall('[\d](\d+)', s)
    if remainder == []:
        return ''
    return remainder[0]


def post_period_(s):
    if '.' in s:
        post_period = re.findall('([1-9]\d+)', s)
        post_period = post_period[0][1:]
    else:
        post_period = ''
    return post_period


def length_post_period(s):
    len_post_period = len(post_period)

    return len_post_period


def pre_period_(s):
    pre_period = re.findall('(\d+)[\.]', s)
    return pre_period


def length_pre_period(s):
    len_pre_period = len(pre_period_(s))
    return len_pre_period


def dec_1st_digit(s):
    ''' pull out the first value of
    a decimal value '''
    decimal_first_digit = re.findall('(^\d?)', s)
    decimal_first_digit = decimal_first_digit[0]
    return decimal_first_digit


def cull_trail_zeros(s):
    s = re.sub("0*$", "", s)
    return s


def calc_power(s):
    '''calc the power
    of a decimal'''
    accum = 1
    for digit in s:
        if  digit == '.':
            continue
        elif digit == '0':
            accum += 1
            continue
        else:
            return accum


if __name__ == '__main__':
    import re

    s = '0'
    s = zero_cull(s)
    sign = sign(s)
    leading_digit = leading_digit(s)
    remainder = remainder_(s)
    post_period = post_period_(s)
    len_post_period = length_post_period(s)
    pre_period = pre_period_(s)
    len_pre_period = length_pre_period(s)


    if pre_period == []:
        if '.' not in s:
            len_post_period = len(remainder)
            post_period = remainder
            digit = leading_digit
            post_period = cull_trail_zeros(post_period)
        elif '.' in s:
            digit = leading_digit
            post_period = cull_trail_zeros(post_period)
            len_post_period = '-' + str(calc_power(s))

        else:
            len_post_period = '-1'

    if leading_digit == '':
        remainder = post_period

if post_period == '':
    print('{0}{1}{2}{3}{4}{5}'.format(sign, digit, '', post_period, ' x 10^', len_post_period))
else:
    print('{0}{1}{2}{3}{4}{5}'.format(sign, digit, '.', post_period, ' x 10^', len_post_period))

Result

0 x 10^0