QB64 Phoenix Edition
Pascal Triangle - Printable Version

+- QB64 Phoenix Edition (https://qb64phoenix.com/forum)
+-- Forum: QB64 Rising (https://qb64phoenix.com/forum/forumdisplay.php?fid=1)
+--- Forum: Prolific Programmers (https://qb64phoenix.com/forum/forumdisplay.php?fid=26)
+---- Forum: bplus (https://qb64phoenix.com/forum/forumdisplay.php?fid=36)
+---- Thread: Pascal Triangle (/showthread.php?tid=4169)



Pascal Triangle - bplus - 11-29-2025

Really simple starter:
Code: (Select All)
While 1
    Cls
    For i = 1 To 5
        If i = 1 Then Pascal = i Else Pascal = Pascal * 11
        P$ = LTrim$(Str$(Pascal))
        For j = 1 To Len(P$)
            Locate i, (5 - i) * 3 + j * 3 + (2 - (cnt Mod 2)) * i: Print Mid$(P$, j, 1);
        Next
        Print
    Next
    cnt = cnt + 1
    _Limit 2
Wend

To get warmed up.

More serious display exercise:
Code: (Select All)
_Title "Pascal Triangle display exercise 2018-01-13 bplus"
'2018-01-13 Pascal Triangle.txt for JB 2015-10-31 MGA/B+

_Define A-Z As _INTEGER64

Const xmax = 1200
Const ymax = 400

Screen _NewImage(xmax, ymax, 32)
_ScreenMove 100, 60

printline = 2
For row = 0 To 20
    build$ = ""
    printline = printline + 1
    For column = 0 To row
        build$ = build$ + Right$(Space$(7) + Str$(binom(row, column)), 7)
    Next
    Locate printline, (150 - Len(build$)) / 2
    Print build$
Next
Sleep

Function binom (n, m)
    binom = fac(n) / (fac(m) * fac((n - m)))
End Function

Function fac (n)
    f = 1
    For i = 1 To n
        f = f * i
    Next
    fac = f
End Function



RE: Pascal Triangle - bplus - 11-29-2025

Now for some fun!

Odd = "* " or even = space "  "

Code: (Select All)
_Title "Pascal Triangle display exercise 2025-11-29 update bplus"
'2018-01-13 Pascal Triangle.txt for JB 2015-10-31 MGA/B+
' 2025-11-29 center triangle
_Define A-Z As _INTEGER64

Const xmax = 600
Const ymax = 400

Screen _NewImage(xmax, ymax, 32)
_ScreenMove 100, 60

printline = 2
For row = 0 To 20
    build$ = ""
    printline = printline + 1
    For column = 0 To row
        If binom(row, column) Mod 2 Then build$ = build$ + "* " Else build$ = build$ + "  "
    Next

    Locate printline, (80 - Len(build$)) / 2
    Print build$
Next
Sleep

Function binom (n, m)
    binom = fac(n) / (fac(m) * fac((n - m)))
End Function

Function fac (n)
    f = 1
    For i = 1 To n
        f = f * i
    Next
    fac = f
End Function

Look familiar Sierpinski?


RE: Pascal Triangle - bplus - 11-29-2025

We are not alone.

Code: (Select All)
_Title "Pascal Triangle Aliens Among Us" '2022-10-10 bplus

_Define A-Z As _INTEGER64
Screen _NewImage(500, 500, 32)
_ScreenMove 350, 100

For row = 0 To 20 ' level on pyramind 0 is 1, 1 is 1,1  2 is 1,2,1...
    Print "Row"; row
    For col = 0 To row
        b$ = Dec2Bin$(binom(row, col))
        'Print b$; ",";
        h = (1 + Len(b$)) * 20
        For y = 1 To Len(b$)
            If Mid$(b$, y, 1) = "1" Then Line (250 - 10 * row + col * 20, 500 - h + y * 20)-Step(20, 20), _RGB32(0, 180, 0), BF
        Next
    Next
    Print "press any..."
    Sleep
    Cls
Next

Function binom (n, m)
    binom = fac(n) / (fac(m) * fac((n - m)))
End Function

Function fac (n)
    f = 1
    For i = 1 To n
        f = f * i
    Next
    fac = f
End Function

Function Dec2Bin$ (integerBase10 As _Integer64) 'no more &B because easier to add than to remove
    Dim j As Integer, b$
    If integerBase10 = 0 Then Dec2Bin$ = "0": Exit Function
    While 2 ^ j <= integerBase10
        If (integerBase10 And 2 ^ j) > 0 Then b$ = "1" + b$ Else b$ = "0" + b$
        j = j + 1
    Wend
    Dec2Bin$ = b$
End Function

We have never been alone.