aboutsummaryrefslogtreecommitdiff
path: root/challenge-164/deadmarshal/pascal
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2022-05-15 13:41:21 +0430
committerdeadmarshal <adeadmarshal@gmail.com>2022-05-15 13:41:21 +0430
commit88c9a78a58a7e5ad4c175a8e6d6fb94283453d38 (patch)
tree9870acf6ebd799ce923242872a890dcbc6e3a148 /challenge-164/deadmarshal/pascal
parent4a5f38a2d4cd826e084132cf3599d75396535b05 (diff)
downloadperlweeklychallenge-club-88c9a78a58a7e5ad4c175a8e6d6fb94283453d38.tar.gz
perlweeklychallenge-club-88c9a78a58a7e5ad4c175a8e6d6fb94283453d38.tar.bz2
perlweeklychallenge-club-88c9a78a58a7e5ad4c175a8e6d6fb94283453d38.zip
added challenge164 solutions.
Diffstat (limited to 'challenge-164/deadmarshal/pascal')
-rw-r--r--challenge-164/deadmarshal/pascal/ch1.pas31
-rw-r--r--challenge-164/deadmarshal/pascal/ch2.pas64
2 files changed, 95 insertions, 0 deletions
diff --git a/challenge-164/deadmarshal/pascal/ch1.pas b/challenge-164/deadmarshal/pascal/ch1.pas
new file mode 100644
index 0000000000..b9cd218c25
--- /dev/null
+++ b/challenge-164/deadmarshal/pascal/ch1.pas
@@ -0,0 +1,31 @@
+program Ch1;
+
+{$mode objfpc}
+var
+ I:Integer;
+
+function IsPrime(N:Integer):Boolean;
+var
+ I:Integer;
+begin
+ if(N <= 1) then Exit(False);
+ for I := 2 to Trunc(Sqrt(N)) do
+ if(N mod I = 0) then Exit(False);
+ Result := True;
+end;
+
+function ReverseNum(N:Integer):Integer;
+begin
+ Result := 0;
+ while(N <> 0) do
+ begin
+ Result := (Result * 10) + (N mod 10);
+ N := N div 10;
+ end;
+end;
+
+begin
+ for I := 1 to 1000 do
+ if((I = ReverseNum(I)) and IsPrime(I)) then
+ Write(I, ' ');
+end.
diff --git a/challenge-164/deadmarshal/pascal/ch2.pas b/challenge-164/deadmarshal/pascal/ch2.pas
new file mode 100644
index 0000000000..90a7250e82
--- /dev/null
+++ b/challenge-164/deadmarshal/pascal/ch2.pas
@@ -0,0 +1,64 @@
+program Ch2;
+
+{$mode objfpc}
+
+uses
+ SysUtils,Math,Generics.Collections;
+
+function SumSquares(N:Integer):Integer;
+begin
+ Result := 0;
+ while N <> 0 do
+ begin
+ Result := Result + Trunc(Power((N mod 10),2));
+ n := N div 10;
+ end;
+end;
+
+function IsHappy(N:Integer):Boolean;
+type
+ TMap = specialize THashMap<Integer,Integer>;
+var
+ Value:Integer;
+ Map:TMap;
+begin
+ Map := TMap.Create;
+ while True do
+ begin
+ Map.Add(N, 1);
+ N := SumSquares(N);
+ if(N = 1) then
+ begin
+ Result := True;
+ break;
+ end;
+ Map.TryGetValue(N,Value);
+ if(Value <> 0) then
+ begin
+ Result := False;
+ break;
+ end;
+ end;
+ FreeAndNil(Map);
+end;
+
+procedure HappyNumbers;
+var
+ I,Count:Integer;
+begin
+ I := 0;
+ Count := 0;
+ while Count < 8 do
+ begin
+ if IsHappy(I) then
+ begin
+ Write(I, ' ');
+ Inc(Count);
+ end;
+ Inc(I);
+ end;
+end;
+
+begin
+ HappyNumbers;
+end.