Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -0,0 +1,33 @@
def N = 10, Inf = -1>>1; \number of cards/items in Array
int Array, Pile(N, N+1); \N piles with maximum size of N+1
int Inx(N+1); \index into each Pile to topmost card/item
int I, J, Card, Min, IMin;
[Array:= [4, 65, 2, -31, 0, 99, 83, 782, 1, 0];
for I:= 0 to N-1 do Pile(I, 0):= Inf;
for I:= 0 to N-1 do Inx(I):= 0;
\Step 1: Put cards into piles
for I:= 0 to N-1 do \for each card in array
[Card:= Array(I);
J:= 0; \for each pile
loop [if Pile(J, Inx(J)) >= Card then
[Inx(J):= Inx(J)+1; \put card onto pile
Pile(J, Inx(J)):= Card;
quit; \next card
];
J:= J+1; \next pile
];
];
\Step 2: N-way merge sort
loop [Min:= Inf; \search piles for smallest card
for I:= 0 to N-1 do \for each pile
[Card:= Pile(I, Inx(I)); \get top card from pile
if Card <= Min then
[Min:= Card; IMin:= I];
];
if Min = Inf then quit;
Card:= Pile(IMin, Inx(IMin));
IntOut(0, Card); Text(0, " "); \show smallest card
Inx(IMin):= Inx(IMin)-1; \remove smallest card
];
CrLf(0);
]