Skip to content

Instantly share code, notes, and snippets.

@refeed
Created November 7, 2020 04:25
Show Gist options
  • Save refeed/1f91509564b0e2fd82f055ebf0f8795c to your computer and use it in GitHub Desktop.
Save refeed/1f91509564b0e2fd82f055ebf0f8795c to your computer and use it in GitHub Desktop.
Segitiga Pascal
def get_from_list_or_zero(list_to_get, index):
if index < 0:
return 0
try:
value = list_to_get[index]
except IndexError:
value = 0
return value
def buat_list_segitiga_pascal(tinggi):
segitiga_pascal_list = [[1]]
if tinggi <= 1:
return segitiga_pascal_list
for i in range(1, tinggi):
baris_pascal_list = []
for j in range(i+1):
nilai_sebelum = get_from_list_or_zero(segitiga_pascal_list[i-1], j-1)
nilai_sekarang = get_from_list_or_zero(
segitiga_pascal_list[i-1], j)
baris_pascal_list.append(nilai_sebelum + nilai_sekarang)
segitiga_pascal_list.append(baris_pascal_list)
return segitiga_pascal_list
if __name__ == "__main__":
# Diasumsikan bahwa bilangan masukkan merupakan bilangan bulat >= 1
tinggi_segitiga_pascal = int(input())
list_segitiga_pascal_str = buat_list_segitiga_pascal(tinggi_segitiga_pascal)
for i in range(len(list_segitiga_pascal_str)):
list_segitiga_pascal_str[i] = ' '.join(
list(map(str, list_segitiga_pascal_str[i])))
panjang_maks_segitiga_pascal_dengan_spasi = len(list_segitiga_pascal_str[-1])
for baris in list_segitiga_pascal_str:
print(baris.center(panjang_maks_segitiga_pascal_dengan_spasi))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment