Upside-down numbers: Difference between revisions

→‎{{header|Python}}: prepend Free Pascal version
(→‎{{header|Python}}: prepend Free Pascal version)
Line 30:
 
 
=={{header|PythonPascal}}==
==={{header|Free Pascal}}===
extended to 50E6
<syntaxhighlight lang="pascal">
program UpSideDownNumbers;
{$IFDEF FPC}{$MODE DELPHI}{$Optimization ON,All}{$ENDIF}
{$IFDEF Windows}{$APPTYPE CONSOLE}{$ENDIF}
const
middle = 5;
var
Upperhalf : array[0..15] of Int32;
 
function CalcUpDownNumber(dgtCnt:Int32):Uint64;
var
i,dc : Int32;
begin
dc := (dgtCnt DIV 2) -1;
result := 0;
For i := dc downto 0 do
result := result*10+Upperhalf[i];
if Odd(dgtCnt) then
result := result*10+middle;
For i := 0 to dc do
result := result*10+(10-Upperhalf[i]);
end;
 
procedure NextNumb(var dgtCnt:UInt32);
var
i,dc,dgt : Uint32;
begin
dc:= DgtCnt;
IF dc= 0 then
begin
dgtcnt := 1;
EXIT;
end;
IF dc= 1 then
begin
Upperhalf[0] := 1;
dgtCnt := 2;
EXIT;
end;
i := 0;
dc := dc DIV 2-1;
repeat
dgt := Upperhalf[i]+1;
if dgt <10 then
begin
Upperhalf[i] := dgt;
BREAK;
end;
Upperhalf[i] := 1;
inc(i);
until i > dc;
 
if i > dc then
Begin
For i := 0 to dc+1 do
Upperhalf[i]:= 1;
inc(dgtcnt);
Upperhalf[i] :=1;
end;
end;
 
var
dgtcnt,
Count,
limit : UInt32;
Begin
Count := 0;
limit := 50;
Writeln('First fifty upside-downs:');
repeat
repeat
NextNumb(dgtCnt);
inc(Count);
IF Count<= 50 then
Begin
write(CalcUpDownNumber(dgtCnt):5);
if Count MOD 10 = 0 then
writeln;
end;
until Count>= limit;
if limit <> 50 then
writeln(limit:10,CalcUpDownNumber(dgtCnt):20)
else
writeln;
limit := limit*10;
until limit> 50*1000*1000;
end.
</syntaxhighlight>
{{out|@TIO.RUN}}
<pre>
First fifty upside-downs:
5 19 28 37 46 55 64 73 82 91
159 258 357 456 555 654 753 852 951 1199
1289 1379 1469 1559 1649 1739 1829 1919 2198 2288
2378 2468 2558 2648 2738 2828 2918 3197 3287 3377
3467 3557 3647 3737 3827 3917 4196 4286 4376 4466
 
500 494616
5000 56546545
50000 6441469664
500000 729664644183
5000000 82485246852682
50000000 9285587463255281
 
User time: 0.310 s CPU share: 99.30 %
</pre>
 
<syntaxhighlight lang="python">""" rosettacode.org task Upside-down_numbers """
 
Line 99 ⟶ 208:
Five millionth: 82,485,246,852,682
</pre>
 
 
=={{header|Raku}}==
132

edits