All SolutionsAll Solutions

🔻

Inverse Word Pyramid

Week 41, 2026

Python - head & tail | BMC | Python Solutions

def inversePyramid( sentence :str, initialPadding :int, paddingChange :int, leftWordDec :int, rigthWordDec :int ) -> list: ans = [] s = sentence.split(' ') head = 0 tail = len(s) while len(s) > 0 and head < tail: print(f"{" "*initialPadding}{" ".join(s[head:tail])}") ans.append(f"{" "*initialPadding}{" ".join(s[head:tail])}") initialPadding += paddingChange head += leftWordDec tail -= rigthWordDec return ans def writeFile(fileName:str, data:list[list[str]]) -> None: try: file = open(fileName, 'w') for a in data: for b in a: file.write(b+'\n') file.close() print(f"{len(data)} lists have been written to {fileName}.") except IOError as e: print(e) def main() -> None: # sentence = "Insanity is doing the same thing over and over again and expecting different results" # inversePyramid(sentence, 0, 0, 1, 1) # inversePyramid(sentence, 5, 3, 2, 1) sentence = "The things you do every day matter more than the things you do once in a while" answers = [] answers.append(inversePyramid(sentence, 1, 2, 3, 4)) answers.append(inversePyramid(sentence, 0, 0, 1, 1)) answers.append(inversePyramid(sentence, 40, -5, 2, 0)) answers.append(inversePyramid(sentence, 10, 5, 1, 1)) answers.append(inversePyramid(sentence, 4, 4, 4, 4)) answers.append(inversePyramid(sentence, 0, 0, 0, 1)) writeFile("ans.txt", answers) if __name__ == "__main__": main()

Iterating until left and right meets | greenya | Odin Solutions

package main import "core:fmt" import "core:strings" main :: proc () { sentence := "The things you do every day matter more than the things you do once in a while" inverse_pyramid(sentence, 1, 2, 3, 4) inverse_pyramid(sentence, 0, 0, 1, 1) inverse_pyramid(sentence, 40, -5, 2, 0) inverse_pyramid(sentence, 10, 5, 1, 1) inverse_pyramid(sentence, 4, 4, 4, 4) inverse_pyramid(sentence, 0, 0, 0, 1) } inverse_pyramid :: proc ( sentence : string, initial_padding : int, padding_change : int, left_word_dec : int, right_word_dec : int, end_new_line := true, ) { assert(left_word_dec > 0 || right_word_dec > 0) list := strings.split(sentence, " ") defer delete(list) padding := initial_padding left_word := 0 right_word := len(list) - 1 for left_word <= right_word { for _ in 0..<padding do fmt.print(" ") for s in list[left_word:right_word+1] do fmt.print(s, "") fmt.println() padding += padding_change left_word += left_word_dec right_word -= right_word_dec } if end_new_line do fmt.println() }