Data update

This commit is contained in:
Ingy döt Net 2026-04-30 12:34:36 -04:00
parent 4bb20c9b71
commit cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions

View file

@ -0,0 +1,12 @@
with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Command_Line;
procedure Floyd_Triangle is
rows : constant Natural := Natural'Value(Ada.Command_Line.Argument(1));
begin
for r in 1..rows loop
for i in 1..r loop
Ada.Integer_Text_IO.put (r*(r-1)/2+i, Width=> Natural'Image(rows*(rows-1)/2+i)'Length);
end loop;
Ada.Text_IO.New_Line;
end loop;
end Floyd_Triangle;

View file

@ -0,0 +1,69 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. FLOYD-TRIANGLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VARIABLES COMP.
02 NUM-LINES PIC 99.
02 CUR-LINE PIC 99.
02 CUR-COL PIC 99.
02 CUR-NUM PIC 999.
02 ZERO-SKIP PIC 9.
02 LINE-PTR PIC 99.
02 MAX-NUM PIC 999.
01 OUTPUT-FORMAT.
02 OUT-LINE PIC X(72).
02 ONE-DIGIT PIC B9.
02 TWO-DIGITS PIC BZ9.
02 THREE-DIGITS PIC BZZ9.
02 MAX-COL-NUM PIC 999.
PROCEDURE DIVISION.
BEGIN.
MOVE 5 TO NUM-LINES. PERFORM FLOYD.
DISPLAY ' '.
MOVE 14 TO NUM-LINES. PERFORM FLOYD.
STOP RUN.
FLOYD.
MOVE 1 TO CUR-NUM.
COMPUTE MAX-NUM = NUM-LINES * (NUM-LINES + 1) / 2.
PERFORM FLOYD-LINE
VARYING CUR-LINE FROM 1 BY 1
UNTIL CUR-LINE IS GREATER THAN NUM-LINES.
FLOYD-LINE.
MOVE ' ' TO OUT-LINE.
MOVE 1 TO LINE-PTR.
PERFORM FLOYD-NUM
VARYING CUR-COL FROM 1 BY 1
UNTIL CUR-COL IS GREATER THAN CUR-LINE.
DISPLAY OUT-LINE.
FLOYD-NUM.
COMPUTE MAX-COL-NUM = MAX-NUM - NUM-LINES + CUR-COL.
MOVE 0 TO ZERO-SKIP.
INSPECT MAX-COL-NUM TALLYING ZERO-SKIP FOR LEADING '0'.
IF ZERO-SKIP IS EQUAL TO ZERO
PERFORM FLOYD-THREE-DIGITS
ELSE IF ZERO-SKIP IS EQUAL TO 1
PERFORM FLOYD-TWO-DIGITS
ELSE IF ZERO-SKIP IS EQUAL TO 2
PERFORM FLOYD-ONE-DIGIT.
ADD 1 TO CUR-NUM.
FLOYD-ONE-DIGIT.
MOVE CUR-NUM TO ONE-DIGIT.
STRING ONE-DIGIT DELIMITED BY SIZE INTO OUT-LINE
WITH POINTER LINE-PTR.
FLOYD-TWO-DIGITS.
MOVE CUR-NUM TO TWO-DIGITS.
STRING TWO-DIGITS DELIMITED BY SIZE INTO OUT-LINE
WITH POINTER LINE-PTR.
FLOYD-THREE-DIGITS.
MOVE CUR-NUM TO THREE-DIGITS.
STRING THREE-DIGITS DELIMITED BY SIZE INTO OUT-LINE
WITH POINTER LINE-PTR.

View file

@ -0,0 +1,16 @@
FloydsTriangle[rows] :=
{
result = new array
n = 1
for r = 1 to rows
{
result.push[array[n to n+r-1]]
n = n + r
}
return result
}
println[formatTable[FloydsTriangle[5], "right"]]
println[]
println[formatTable[FloydsTriangle[14], "right"]]

View file

@ -0,0 +1,18 @@
local fmt = require "fmt"
local function floyd(n)
local k = 1
for i = 1, n do
for j = 1, i do
local l = (j < 9) ? 2 : 3
fmt.write($"%{l}d ", k)
k += 1
end
print()
end
end
print("Floyd(5):")
floyd(5)
print("\nFloyd(14):")
floyd(14)

View file

@ -1,11 +1,6 @@
Floyd ← ⊜□▽.⟜(+1⇡/+)+1⇡
Print ← (
⬚""≡°⋕ # Stringify terms
/↥≡◇⧻♭. # Get max length
≡≡◇⬚@ ↙¯ # Pad strings
≡(&p/$"_ _") # Print
F ← (
⟜(⬚@\s°⋕+1⇡/+)+1⇡ # Generate, stringify and pad terms.
↘1⊕□∧(˜⊂˙↯)⊙[] # Group as triangle.
≡◇(&p/$"_ _") # Join and print.
)
Print Floyd 4
&p""
Print Floyd 14
F 14 &p"" F 4

View file

@ -0,0 +1,15 @@
' Read the number of rows to use..
intRows = WScript.StdIn.ReadLine
' Get the first number of the final row so we can calculate widths...
intLastRowStart = (intRows ^ 2 - intRows) \ 2 + 1
For i = 1 To intRows
intLastRow = intLastRowStart
For j = 1 To i
k = k + 1
WScript.StdOut.Write Space(Len(intLastRow) - Len(k)) & k & " "
intLastRow = intLastRow + 1
Next
WScript.StdOut.WriteLine ""
Next