Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
64
Task/Happy-numbers/Delphi/happy-numbers.delphi
Normal file
64
Task/Happy-numbers/Delphi/happy-numbers.delphi
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
program Happy_numbers;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
Boost.Int;
|
||||
|
||||
type
|
||||
TIntegerDynArray = TArray<Integer>;
|
||||
|
||||
TIntHelper = record helper for Integer
|
||||
function IsHappy: Boolean;
|
||||
procedure Next;
|
||||
end;
|
||||
|
||||
{ TIntHelper }
|
||||
|
||||
function TIntHelper.IsHappy: Boolean;
|
||||
var
|
||||
cache: TIntegerDynArray;
|
||||
sum, n: integer;
|
||||
begin
|
||||
n := self;
|
||||
repeat
|
||||
sum := 0;
|
||||
while n > 0 do
|
||||
begin
|
||||
sum := sum + (n mod 10) * (n mod 10);
|
||||
n := n div 10;
|
||||
end;
|
||||
if sum = 1 then
|
||||
exit(True);
|
||||
|
||||
if cache.Has(sum) then
|
||||
exit(False);
|
||||
n := sum;
|
||||
cache.Add(sum);
|
||||
until false;
|
||||
end;
|
||||
|
||||
procedure TIntHelper.Next;
|
||||
begin
|
||||
inc(self);
|
||||
end;
|
||||
|
||||
var
|
||||
count, n: integer;
|
||||
|
||||
begin
|
||||
n := 1;
|
||||
count := 0;
|
||||
while count < 8 do
|
||||
begin
|
||||
if n.IsHappy then
|
||||
begin
|
||||
count.Next;
|
||||
write(n, ' ');
|
||||
end;
|
||||
n.Next;
|
||||
end;
|
||||
writeln;
|
||||
readln;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue