Alphabet Rangoli

Sort by

recency

|

1407 Discussions

|

  • + 0 comments
    def print_rangoli(size: int) -> None:
        width: int = 4 * size - 3
        ascii_start: int = ord("a") - 1 # 97 - 1
    
        pattern_list: list[str] = []
    
        for i in range(1, size + 1):
            half_part: list[str] = [chr(ascii_start + size - j) for j in range(i)]
            line: str = "-".join(half_part + half_part[-2::-1])
            pattern_list.append(line.center(width, "-"))
    
        print(*pattern_list, sep="\n")
        print(*pattern_list[-2::-1],sep="\n")
    
  • + 0 comments

    import string def print_rangoli(n): alphabet = string.ascii_lowercase lines = [] for i in range(n): left = [] for k in range (i + 1): left.append(alphabet[n-1-k]) row = left + left[:-1][::-1] line = "-".join(row).center(4*n-3, "-") lines.append(line)

    print("\n".join(lines + lines[-2::-1]))
    

    if name == 'main': n = int(input()) print_rangoli(n)

  • + 0 comments
    def print_rangoli(n):
        a = [''] * 27
        for i in range(1, len(a)):
            a[i] = chr(ord('a') + i - 1)
    
        for i in range(1, n + 1):
    
            s = ""
            t = 0
            tmp = 0
            while t < i:
                s += str(a[n - t])
                tmp = n - t
                t += 1
            while tmp < n:
                s += a[tmp + 1]
                tmp += 1
            s = list(s)
            s = '-'.join(s)
            s = s.center(4 * n - 3, '-')
            print(s)
    
        for i in range(n - 1, 0, -1):
            s = ""
            t = 0
            tmp = 0
            while t < i:
                s += str(a[n - t])
                tmp = n - t
                t += 1
            while tmp < n:
                s += a[tmp + 1]
                tmp += 1
            s = list(s)
            s = '-'.join(s)
            s = s.center(4 * n - 3, '-')
            print(s)
    
            
    if __name__ == '__main__':
        n = int(input())
        print_rangoli(n)
    
  • + 0 comments

    Used string cropping for this one

    def print_rangoli(size):
        letters = [x for x in range(1, size + 1)]
        string = [chr(ord('a') + n - 1) for n in letters]
    
        if (size == 1):
            print("".join(string))
            return
    
        string_reversed = "-".join(string)
        string = reversed(string)
        string = "-".join(string)
        
        size *= 2
        
        for x in range(1, size, 2):
            print(f"{string[:x]:->{size - 1}}-{string_reversed[(size - x + 1):]:-<{size - 3}}")
            
        
        for x in reversed(range(1, size - 1, 2)):
            print(f"{string[:x]:->{size - 1}}-{string_reversed[(size - x + 1):]:-<{size - 3}}")
            
    
  • + 0 comments

    used the logic of tiagozr to create the list of strigs with characters.

    Added my logic to print (it's easier):

    def print_rangoli(size):
        n = size
        letter = 96 + n
        max_len = 4*n-3
        strings = []
    
        for i in range(n):
            s = []
            for j in range(letter, letter-i-1, -1):
                s.append(chr(j))
            for k in range(letter-i+1, letter+1):
                s.append(chr(k))
            strings.append("-".join(s))
    
        for string in strings:
            print(string.center(max_len, '-'))
        strings.reverse()
        for string in strings[1:]:
            print(string.center(max_len, '-'))
    
    
    if __name__ == '__main__':
        n = int(input())
        print_rangoli(n)