24 lines
578 B
Plaintext
24 lines
578 B
Plaintext
program nth;
|
|
loop for r in [[0..25], [250..265], [1000..1025]] do
|
|
showrange(r);
|
|
end loop;
|
|
|
|
proc showrange(r);
|
|
i := 0;
|
|
loop for s in [nth(n) : n in r] do
|
|
putchar(rpad(s, 8));
|
|
if (i +:= 1) mod 6 = 0 then print(); end if;
|
|
end loop;
|
|
print();
|
|
end proc;
|
|
|
|
proc nth(n);
|
|
sfx := {[1,"st"], [2,"nd"], [3,"rd"]};
|
|
return str n +
|
|
if n div 10 mod 10 = 1
|
|
then "th"
|
|
else sfx(n mod 10) ? "th"
|
|
end if;
|
|
end proc;
|
|
end program;
|