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

challenge78_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

challenge90_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

challenge117_easy

challenge118_easy

challenge119_easy

challenge121_easy

challenge122_easy

challenge123_easy

challenge124_easy

challenge125_easy

challenge126_easy

challenge127_easy

challenge128_easy

challenge130_easy

challenge131_east

challenge132_easy

challenge133_easy

challenge134_easy

challenge135_easy

challenge136_easy

challenge137_easy

challenge138_easy

challenge139_easy

challenge140_easy

challenge141_easy

challenge142_easy

challenge143_easy

challenge144_easy

challenge145_easy

challenge146_easy

challenge147_easy

challenge148_easy

challenge149_easy

challenge153_easy

challenge153_easy

challenge154_easy

challenge156_easy

challenge157_easy

challenge158_easy

challenge158_easybonus

challenge159_easy

challenge160_easy

challenge161_easy

challenge162_easy

challenge163__easy

challenge168_easy

challenge169_easy

challenge169_easybonus

challenge170_easy

challenge171_easy

challenge172_easy

challenge174_easy

challenge175_easy

challenge177_easy

challenge179_easy

challenge180_easy

challenge181_easy

challenge182_easy

challenge184_easy

challenge185_easy

challenge188_easy

challenge189_easy_ascii

challenge191_easy

challenge192_easy

challenge193_easy

challenge195_easy

challenge197_easy

challenge198_easy

challenge199_easy

challenge200_easy

challenge201_easy

challenge202_easy

challenge203_easy

challenge204_easy

challenge204_easyBonus

challenge205_easy

challenge205_easyBonu

challenge206_easy

challenge207_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

challenge231_easy

challenge232_easy

challenge232_easy

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

challenge251_easy

challenge251_easy

challenge251_easybonus

challenge252_easy

challenge252_easy

challenge253_easy

challenge254_easy

challenge255_easy

challenge257_easy

challenge261_easy

challenge267_easy

challenge269_easy

challenge270_easy

challenge272_easy

challenge277_easy

challenge282_easy

challenge282_easy_bonus

challenge283_easy

challenge284_easy

challenge286_easy

challenge287_easy

challenge288_easy

challenge290_easy

challenge290_easybonus

challenge291_easy

challenge291_easybonus

challenge302_easy

challenge308_easy

challenge311_easy

challenge313_easy

challenge313_easy

challenge314_easy

challenge315_easy

challenge319_easy

challenge323_easy

challenge324_easy

challenge325_easy

challenge328_easy

challenge330_easy

challenge330_easybonus

challenge335_easy

challenge338_easy

challenge340_easy

challenge341_easy

challenge342_easy

challenge344_easy

challenge315_easy

'''
One way to think about bitwise addition (using the symbol ^)
as binary addition without carrying the extra bits:

   101   5
^ 1001   9
  ----
  1100  12

  5^9=12

So let's define XOR multiplcation (we'll use the symbol @)
in the same way, the addition step doesn't carry:

     1110  14
   @ 1101  13
    -----
     1110
       0
   1110
^ 1110
  ------
  1000110  70

  14@13=70

For this challenge you'll get two non-negative integers as input and
output or print their XOR-product, using both binary and decimal notation.
Input Description

You'll be given two integers per line. Example:

5 9

Output Description

You should emit the equation showing the XOR multiplcation result:

5@9=45

EDIT I had it as 12 earlier, but that was a copy-paste error. Fixed.
Challenge Input

1 2
9 0
6 1
3 3
2 5
7 9
13 11
5 17
14 13
19 1
63 63

Challenge Output

1@2=2
9@0=0
6@1=6
3@3=5
2@5=10
7@9=63
13@11=127
5@17=85
14@13=70
19@1=19
63@63=1365

'''


def bin2dec(n):
    store = 0
    x = 0
    # y = index of n
    for y in range(len(n) - 1, -1, -1):
        m = n[y]
        m = int(m)
        store += m * (2 ** x)
        x += 1
    return  store


def dec2bin(n):
    numstring = ''
    if n % 2 == 0:
        numstring += str(0)
    else:
        numstring += str(1)
    while n > 1:
        n = n // 2

        if n % 2 == 0:
            numstring += str(0)
        else:
            numstring += str(1)
    return numstring[::-1]


def addition(l):
    sum_ones = l.count('1')
    if sum_ones%2 == 1:
        result = '1'
    else:
        result = '0'
    return result


def flatten(n):
    lst = list(''.join(n))
    return lst


if __name__ == '__main__':
    import re

    candidates ='''1 2
    9 0
    6 1
    3 3
    2 5
    7 9
    13 11
    5 17
    14 13
    19 1
    63 63'''

    #candidates = '3 3'
    candidates = candidates.splitlines()
    # extract the numbers and convert to binary
    for nums in candidates:
        mults = re.findall('\d+', nums)
        num_one = int(mults[0])
        num_one = dec2bin(num_one)
        num_two = int(mults[1])
        num_two = dec2bin(num_two)
        # length of the binary number
        len_list_two = len(num_two)

        # do long-hand
        num_two_r = num_two[::-1]
        num = ''
        master_list = []
        lst = []
        for x in range(0, len_list_two):
            if num_two_r[x] == '0':
                lst.append(('0'))
                lst = flatten(lst)
                master_list.append(lst)
                lst = []
            else:
                lst.append(num_one)
                if x > 0:
                    num = '0' * x
                    lst.append(num)
                lst = flatten(lst)
                master_list.append(lst)
                lst = []

        #len_master_list_last = len(master_list[-1])
        # find the columns to add for the result
        n = []
        store = []
        N = len(master_list[-1]) + 1
        for x in range(0, 1):
            for y in range(-1, -N, -1):
                n = []
                for z in range(0, len(master_list)):
                    try:
                        n.append(master_list[x + z][y])
                    except IndexError:
                        n.append(0)
                        continue
                store.append(n)

        # convert store list to binary answer
        result = ''
        for lst in store:
            ans = addition(lst)
            result += str(ans)

        result = result[::-1]
        result = bin2dec(result)

        print('{0}{1}{2}{3}{4}'.format(mults[0], '@', mults[1], '=', result))

Result

1@2=2
9@0=0
6@1=6
3@3=5
2@5=10
7@9=63
13@11=127
5@17=85
14@13=70
19@1=19
63@63=1365