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_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

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

challenge251_easy

'''
    Nonograms, also known as Hanjie, Picross or Griddlers, are picture logic puzzles in
    which cells in a grid must be colored or left blank according to numbers at the
    side of the grid to reveal a hidden picture. In this puzzle type, the numbers are a
    form of discrete tomography that measures how many unbroken lines of filled-in
    squares there are in any given row or column.

In a Nonogram you are given the number of elements in the rows and columns. A row/column
where containing no element has a '0' all other rows/columns will have at least one number.

Each number in a row/column represent sets of elements next to each other.

If a row/column have multiple sets, the declaration of that row/column will have multiple
numbers. These sets will always be at least 1 cell apart.

An example
			2 	1 	1
		1 	1 	1 	2 	1
	2 		* 	*
1 	2 		* 		* 	*
	0
2 	1 	* 	* 		*
	2 			* 	*
Input description

Today you will receive an image in ASCII with ' ' being empty and '*' being full.
 The number of rows and columns will always be a multiple of 5.

    *
   **
  * *
 *  *
*****

Output description

Give the columns and rows for the input

Columns:
    1 1
1 2 1 1 5

Rows:
  1
  2
1 1
1 1
  5

Ins

1

    *
   /|
  / |
 /  |
*---*

2

    /\ #
   /**\#
  /****\
 /******\
/--------\
 |      |
 | || # |
 | || # |
 | ||   |
 *------*

Bonus

Place the columns and rows in a grid like you would give to a puzzler

        1 1
    1 2 1 1 5
  1
  2
1 1
1 1
  5

'''

pattern = '''    /\ #
   /**\#
  /****\\
 /******\\
/--------\\
 |      |
 | || # |
 | || # |
 | ||   |
 *------*'''


pattern = pattern.splitlines()

import re

def regex(l):
    '''Extract ascii and form a list'''
    output = []
    temp = []
    for x in range(0, len(l)):
        ans = re.findall('\S{10|\S{9}|\S{8}|\S{7}|\S{6}|\S{5}|\S{4}|\S{3}|\S{2}|\S{1}', l[x])
        # iterate and count the individual results
        for item in ans:
            len_item = len(item)
            temp.append(str(len_item))
        # store in a list
        output.append(temp)
        temp = []

    return output


def column_pattern(l):
    '''Extract ascii and form a list'''
    output = []
    temp = ''
    for x in range(0, len(l)):
        for y in range(0, len(l[0])):
            temp += l[y][x]
        output.append(temp)
        temp = ''
    return output



def pad_out(l):
    # adjust the output for print presentation
    N = len(l)
    M = 0
    # set M to length of longest string in the output
    for strng in l:
        if len(strng) >= M:
            M = len(strng)
    # make all strings the same length for output
    b = ''
    c = []
    for lst in l:
        for item in lst:
            b += item
        b = b.rjust(M, ' ')
        c.append(b)
        b = ''
    return c


def column_print(c):
    d = '   '
    e = []
    # width
    M = len(c[0])
    for x in range(0, M):
        for y in range(0, len(c)):
            d += c[y][x] + ' '
        e.append(d)
        print(d)
        d = '   '


def row_print(padded):
    for s in padded:
        for item in s:
            print(item, end='')
        print()


def pad_pattern(l):
    len_string = 0
    for strng in l:
        temp = len(strng)
        if temp >= len_string:
            len_string = temp
    # pad out
    lst = []
    for strng in l:
        strng = strng.ljust(len_string, ' ')
        lst.append(strng)
    return lst


if __name__ ==  '__main__':

    # column output

    # pad out the pattern to same width
    pattern_modded = pad_pattern(pattern)

    # convert the pattern to count the column
    output = column_pattern(pattern_modded)

    # extract rows of characters and count the columns
    output2 = regex(output)

    # pad out for printing
    padded = pad_out(output2)

    # print the column output
    to_print = column_print(padded)


    #-- row output --------------

    output = regex(pattern)

    padded = pad_out(output)

    to_print = row_print(padded)

Result

               4       
       3 4 5 5 2 5     
   1 7 1 4 4 1 1 1 7 1 
  21
   5
   6
   8
  91
  11
1211
1211
 121
   8