# Square Wave Pattern

Mar 31st, 2024 (edited)
820
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. # *Square Wave Pattern* by @CodingComputing
2.
3. # Parameters
4. num_cycles = 3  # How many repeating cycles are present?
5. high_width = 2  # How long is the wave high in each cycle?
6. low_before_width = 1  # Before the wave moves up to high, how long is it low?
7. low_after_width = 1  # After the wave moves down from high, how long is it low?
8. height = 4  # How high does the wave go?
9.
10. # Develop Column-wise representation
11. # L for Low, H for High, T for Transition
12. single_cycle_col_repr = 'L'*low_before_width + 'T' + 'H'*high_width + 'T' + 'L'*low_after_width
13. full_col_repr = single_cycle_col_repr * num_cycles
14.
15. # Form each row and draw!
16. for row_idx in range(height):
17.     if row_idx == 0:  # Top row. '*' comes for H or T type columns
18.         row_items = [(' ' if c=='L' else '*') for c in full_col_repr]
19.     elif row_idx == height-1:  # Bottom row. '*' comes for L or T type columns
20.         row_items = [(' ' if c=='H' else '*') for c in full_col_repr]
21.     else:  # Middle row. '*' comes only T type columns
22.         row_items = [('*' if c=='T' else ' ') for c in full_col_repr]
23.     print(''.join(row_items))  # Output the row
24.
25. # Output:
26. #  ****  ****  ****
27. #  *  *  *  *  *  *
28. #  *  *  *  *  *  *
29. # **  ****  ****  **
30.