Gitignore

This commit is contained in:
Jens True 2024-07-31 07:16:44 +00:00
parent 6b8afd49b9
commit ed83a3afc3
9 changed files with 147 additions and 157 deletions

2
.gitignore vendored Normal file

@ -0,0 +1,2 @@
output/
.*.cache/

52
.phpcs.xml Normal file

@ -0,0 +1,52 @@
<?xml version="1.0"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PHP_CodeSniffer" xsi:noNamespaceSchemaLocation="phpcs.xsd">
<description>Coding standard</description>
<file>src/</file>
<file>tests/</file>
<rule ref="PSR1">
<exclude name="Generic.Files.LineLength"/>
</rule>
<rule ref="PSR2"></rule>
<rule ref="PSR12"></rule>
<rule ref="Generic">
<exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed"/>
<exclude name="Generic.Files.LowercasedFilename.NotFound"/>
<exclude name="Generic.PHP.ClosingPHPTag.NotFound"/>
<exclude name="Generic.Files.EndFileNoNewline.Found"/>
<exclude name="Generic.Files.EndFileNoNewline.Found"/>
<exclude name="Generic.Arrays.DisallowShortArraySyntax.Found"/>
<exclude name="Generic.Functions.OpeningFunctionBraceKernighanRitchie.BraceOnNewLine"/>
<exclude name="Generic.Classes.OpeningBraceSameLine.BraceOnNewLine"/>
<exclude name="Generic.PHP.LowerCaseConstant.Found"/>
<exclude name="Generic.Formatting.SpaceAfterCast"/>
<exclude name="Generic.Formatting.MultipleStatementAlignment.NotSameWarning"/>
<exclude name="Generic.Commenting.DocComment.MissingShort"/>
<exclude name="Generic.NamingConventions.AbstractClassNamePrefix.Missing"/>
<exclude name="Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed"/>
<exclude name="Generic.NamingConventions.InterfaceNameSuffix.Missing"/>
<exclude name="Generic.Commenting.Todo.TaskFound"/>
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUse"/>
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassAfterLastUsed"/>
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceAfterLastUsed"/>
<exclude name="Generic.Formatting.SpaceBeforeCast.NoSpace"/>
<exclude name="Generic.CodeAnalysis.UselessOverridingMethod.Found"/>
<exclude name="Squiz.Functions.MultiLineFunctionDeclaration.NewlineBeforeOpenBrace"/>
</rule>
<!-- Ban some functions -->
<rule ref="Generic.PHP.ForbiddenFunctions">
<properties>
<property name="forbiddenFunctions" type="array">
<element key="sizeof" value="count"/>
<element key="delete" value="unset"/>
<element key="print" value="echo"/>
<element key="is_null" value="null"/>
<element key="create_function" value="null"/>
</property>
</properties>
</rule>
</ruleset>

@ -1,53 +0,0 @@
??r?Jlogo.png?)??PNG

IHDRLK?~)sBIT??O? pHYs  ??~?tEXtSoftwareMacromedia Fireworks 8?h?xtEXtCreation Time20/7/06?t?-IDATx???{ts??{???=?F??Foi???lK????Bx8??/???k?5??d7??
96K?n8,7a??@K??!k`?!61Y$| ?d
?,y?????Hc?C???????????3?IT???[??j???W??FX?[??f?H$E?B!A??h4"?h?2?lC?-???l>w????po?e ????+--?l@ ?
dkZ???? ?D?~W?~PE?dOOOSS?d?l??-?g?}&?H???òl(jmm?cG?s?lC
?]?(j||<???H?R???J?4M?,+????S]?@?Sp????H$BD?d8??L&?e?;M????'?l??7??|d?X?a? P?H)xK?r???a???R?KKKkkk ?1d?PX?G"?la???D????ryA??l7
?]??e??eE???
?dR?1?N?cF`?`0X??@ ????a?cr ?l6???Z???l+
+r??g0?b??? ?H$-?{?VVQ?P?eY?Au,?)??f ?n?N??j?????' 2 s$?D???}?????????R??
?@?K?Eß??h?x?"A?5g?iZ???'?"gYvlllaa!?r?T?4??(EQy????????T*?j?*EQUUU???(?¾:?w?&*??433#?H?]?.??nw0?Dpm)?w?#???Y????#=
? ?`pttTx`NDn4sV8?a??????? ?c?"?X,R?t?=m?Xl4???&??@????~???T*?|>?
a?w?;???e?g??k???5?L&`5%w??F??#pC!?f)9?<\?t)?j?????|?@ ???e????<Nk?4???S^^>>>'? ?????V???J~;?j?z??kkk6?-_f!?A??Hdlll3??q?,???H$R(:?nll 6?H?Z?F?????OF???;???#??a??azN?r?????? ?1?@?Ev"?x<?J??f?[j????? ?V?5???@?-?|yy9?
G?a?h@+??===###[?Me?O?,Dß??j-?'?!I2z???_???b?o?lC?y0?z????A?ñ?'?w/\|
???,k?X
????V?N????l.?!?m?P?3 3;;[?:?B??"???w??y?C ?D???v{8.?l ?$~S???? ????B??>-?SSS8?*(?(rA???3::*???$)???~????hSt???ry?8???r?Zm4??? q??!???l?81y?/o?)????rya??e?8?KS=?e?q??;?jEUuUs?????4
$)?*???,\(????N'? ??{????^_8w@??9?c#???p???[???"???85=???{?f???J??}??g_??P???]????u??wGP???|?,?[????*?J?*))?|?rggg!2PB??|??!wZ\???VB???/_7y??w^x??F/?LN??a??#?}???<B?\4?????z{{O?:??????g7??G????????b??hh(o???w??5U(???Rn[?·j?:????.??T2???D?T?????I??I+??H????1
????6?B {?[A?z????/PK??8I??P? ?T?P??%%%F????#?;??????Kg??F?
?^ä?(8???????n?V\{?.P?k??C&2?y?Z=????w"&?? =?e?eyh??y??ny??????mV'@???)????????_O?+???~z6??Cr@P?U?PVpm??s?????+**????Je?????Í?s???L?>?????i??D???'w(?????g8!???<????*????7M?J??(??????????l?? ?d9? ???rH?b??eY???v????e2?^???t?>?R??j????]]]???]>u?3?J?i???]Zle???G'
??-??[S?N?????s?????(?\?????,??B?C~??????G?U??e??[Hnd9?06????"DD$q/?$
??????????Z?k?????????<l~6V???=?????og?}??????_???X??o>??#}E?G]zpr ?????????3???,]???@???DP???]?r??mt??L??????f?o???=?lT??['??;??K????????W7??F????l]?b??? ??*?$??????b?a>???o???????s?c??6?#???=????v}?`m\??}?bJ?V?h??t??"?Q?-?A??W}aD?b<?O????%?*?k*??:?ut?w???W<???o?g?^^?z{???IL? ??m[@Hv?Ag?(J????o??fA?RiUU?K?????\?:5??B
?CiB????#I???#???
?!??????NZ??K????o???j??r???;??]?b;M??|??;w$f69?3b{+??$I?<p?]R???X?????`??#?????t????o??????Lf?AM???B$??P(?}qm?]I???22?M?&p??+?+??;/??$u?????????k*l??O?|4K?1??x?[?N2??4????w???O???]??#?7?e???? ??0??1??,.?=?????Z?$I~!
?`Y6?o?D"iii???p]?0??gb??^????7?t?k?b????????qLY?;?pUu?]m?M?t? _?U?xp?M????????^???`???????<??W?<^?8?R2W|??^?H? "?l??????Iwttd??1?<???????z??????;???s?Kc??????@???j0???'y>??S?F??????g???p?O??????ub???;U???m???bfC?B???>V??Y?_?x
???D"???2?LB6I??OQ?(r?$?Z-????B???????9??w??;??k????%?7?F;????????? ?S?????????Jq~?????:XE?????A??8?:?ap???s#??.Rqq?dt ?V/g]^a5??? P? O??????. ?$m6?R??h?v? x?????????????J????)?(???a?L????????w?}7??=????c??g2 ????t:????QO????E???2? ??[P??on??l????+g?O?? eO?7???(@:??s???+'_O? ?????uy???R ??????L&?B????????Z?H??2<??u???d* [õ?*B?d?U*????.]R*?\DY??.??Y?eEQnII?u??P(TVV?w??D???.\?gOjXE?X6$??#r??xU*c_ X?~??l????????F??Wa(vj????z?????LCl??:M1 m??%!W*E??Y??&???, ???+???knn9,?0@S4??n?Ve7CpX?????????R4???W??U?D ?0??i ? ?e????$Yd???u-?Yf??{????$PT?k5q3??Ew[??N+))a???AE+++Q
??4Mbkt?e#?H8??????????b??MD?kk?S????2D?Yg?[M)´?j??T×?\??me??F[.?f???H?J?L?p??G?2?U??? ???;?|??????(K??????{?d9?w??dI??????2(??hmiim?h?W??`??8?cl?v??+?3??d?@??w?u?oe?,?U????Tx??????????6???M0????j ?????n?V????E-..???5.N&??8y?,??F???Ht?u? ????Ti?v?c???>?~dG_?%UeD[f???????b???q????]????+?????o.?????+4???r????DUR?R(d
a?(?-Ml????????**?u??:?????n-?cy?w??H$J?????H?h.???QG ?\??{D???J?$=?2??"B???2'? +???F?4^?
*????????}?DW4U?s3?r}?x?f?J??j`?}?Ib9i??1????;A?E??????L&??[W?a
???$I?|?P(???b?Z???s??aX?eYV"?????????[S???`0??L?| YQC{78?U?>??K#?????O??????a?7.????
?%?S???L~2@Ug?,????_NvU?
?E?t??u?3????O??l?(^?= s??e?4?X
???????C+???N????s?Ri?t-???;?B??j??o\`??m&Z??0???h^)n??U9?h?? d
* Pl???~o$?u?Y?1 (???p???biz????W?-??$??<WW5u-??q? ????4??R?P?H$??,A??h4:?N*?R?W\1 ?u?)?R(???;v????[;;;* ????.\??2??????>??/~??"??e???V?;?>?1?6?u?7???V ?B[ÿ?????{?R?A%??s?????4???#??}J????k7?
z????S????!??n
???"?(?????uB?'?? +U? ?"%???D?~DZ????3???!??vX,Kk$?????:m K?`Es?4z.?u??@T]W??R?B??r??{????
y?ZVZZj4?^/????LNNNNN?wt?,KQI?$I?????????<xpppp??????%%%9??455??vn??w?3???????o???^????=????y?][?o?7n?????????? o?\??'????u???'~???=?>??????$???1???of{??O-?w??U??7_???{l??1?{o????b&G?uy7???<2?>??/|?JGGG8?9?C???^O?Nx??
? E#??, ?!???(e?w-.oB,D"$??J?J?.??)???Qmk?N??+???Sy?Z?2 B????????hB?\t4M;????E?)_
?0???????>n???h*++?Z?L&?W??H$?????????{??????~??>r?{W[?8?d?j?l4Vb t???v????-??o??`???i??N?}-???w??_??Hq??q~x?5????????[?vW??|???;]???????Zc?8c? ???^???????-?H???f?L/ ??orCy????oN?{j??????45?q?]_n/`n???y7&?????????o??"}??J?A8??????,?????\@??Z??B@-l?d?J\???CH%??+T???"T|?EX4?MJK?B?8?f??J ?>\Y%K1H?(???[?ZXt?k???????T?V?D^"1?Xy?œ??@ ??q?????i?@ 044t????)sp?nmm?{wcc?F?????~S?T?!n? >??????c#K???%O?m?Jmn?-?/_??^????????????G??G??5??+???%W?F??3W??u_?U?;w?????<???????u
A/Duc?W??o}?_B[?>?Y?w????a??? Ue[^???o???+?]???????rC?????~??-q?X????{?j?z?t: ????#?Z??m?e???^Y
1??R?B????????_?i?)?3?X?\]Z^YY?????$?
?2?ZZ??????7?,Q??m&ZP+T?f6/???n??D??b?N?O?)%DbZ^rI4???????Bp??T?*q???+5 ??@A?? I,cI???.?x?b5??z?$?p8??????4X8???i?D"?????.};?y?f??l??????W~????'S
q???????[?}K???o?????q]??'???I????u
??h???t??x#?C?_?.
???u?b?Uu??? ??Q?"???_??????6?i???/?{?Nm?k9???.????T?O????G;???O??-C??????miiI ?FH.pG??,C? ?a<?%?a(
???????A??M??????$?r?????9?|zzzjjJ"???????????g ????on???Tn?(!??????+ ?Kre?VSS[^SQ?????Uw(?KJ?????????
???????9´'H?8?I??E?M?G???
?I~1k*j?5???'????? ~`&D84M;?N????????s?????Vkg[$immmkk?=??`??\???1?? ????????A??VUU?4???q\?????????~?TVVR%|??T*moo?
??T???d%?E?E Y?"???? ??? eeei?? ?mK."_XX??|E?a???????d???(???!?xr?F?!?[???????>?o||? ?I o?#???:???'!??L2;? ?0?????x<??ES?? BQ?F???????25/8??????*??
?\.Wuu??? q/?? ?D?}9?4MQ????w
?????uuu?`?eY?????QE$?-??H$BQ?a???Q?V??O??$944? ???FQT$I?R8??aB??????||?4??2??m?9?P%I??t???T}rN?E?????f~w?qn?????????]??{??Enh???????C.???G??7??M??$???????RIEND?B`??*??

@ -1,53 +0,0 @@
?PNG

IHDRLK?~)sBIT??O? pHYs  ??~?tEXtSoftwareMacromedia Fireworks 8?h?xtEXtCreation Time20/7/06?t?-IDATx???{ts??{???=?F??Foi???lK????Bx8??/???k?5??d7??
96K?n8,7a??@K??!k`?!61Y$| ?d
?,y?????Hc?C???????????3?IT???[??j???W??FX?[??f?H$E?B!A??h4"?h?2?lC?-???l>w????po?e ????+--?l@ ?
dkZ???? ?D?~W?~PE?dOOOSS?d?l??-?g?}&?H???òl(jmm?cG?s?lC
?]?(j||<???H?R???J?4M?,+????S]?@?Sp????H$BD?d8??L&?e?;M????'?l??7??|d?X?a? P?H)xK?r???a???R?KKKkkk ?1d?PX?G"?la???D????ryA??l7
?]??e??eE???
?dR?1?N?cF`?`0X??@ ????a?cr ?l6???Z???l+
+r??g0?b??? ?H$-?{?VVQ?P?eY?Au,?)??f ?n?N??j?????' 2 s$?D???}?????????R??
?@?K?Eß??h?x?"A?5g?iZ???'?"gYvlllaa!?r?T?4??(EQy????????T*?j?*EQUUU???(?¾:?w?&*??433#?H?]?.??nw0?Dpm)?w?#???Y????#=
? ?`pttTx`NDn4sV8?a??????? ?c?"?X,R?t?=m?Xl4???&??@????~???T*?|>?
a?w?;???e?g??k???5?L&`5%w??F??#pC!?f)9?<\?t)?j?????|?@ ???e????<Nk?4???S^^>>>'? ?????V???J~;?j?z??kkk6?-_f!?A??Hdlll3??q?,???H$R(:?nll 6?H?Z?F?????OF???;???#??a??azN?r?????? ?1?@?Ev"?x<?J??f?[j????? ?V?5???@?-?|yy9?
G?a?h@+??===###[?Me?O?,Dß??j-?'?!I2z???_???b?o?lC?y0?z????A?ñ?'?w/\|
???,k?X
????V?N????l.?!?m?P?3 3;;[?:?B??"???w??y?C ?D???v{8.?l ?$~S???? ????B??>-?SSS8?*(?(rA???3::*???$)???~????hSt???ry?8???r?Zm4??? q??!???l?81y?/o?)????rya??e?8?KS=?e?q??;?jEUuUs?????4
$)?*???,\(????N'? ??{????^_8w@??9?c#???p???[???"???85=???{?f???J??}??g_??P???]????u??wGP???|?,?[????*?J?*))?|?rggg!2PB??|??!wZ\???VB???/_7y??w^x??F/?LN??a??#?}???<B?\4?????z{{O?:??????g7??G????????b??hh(o???w??5U(???Rn[?·j?:????.??T2???D?T?????I??I+??H????1
????6?B {?[A?z????/PK??8I??P? ?T?P??%%%F????#?;??????Kg??F?
?^ä?(8???????n?V\{?.P?k??C&2?y?Z=????w"&?? =?e?eyh??y??ny??????mV'@???)????????_O?+???~z6??Cr@P?U?PVpm??s?????+**????Je?????Í?s???L?>?????i??D???'w(?????g8!???<????*????7M?J??(??????????l?? ?d9? ???rH?b??eY???v????e2?^???t?>?R??j????]]]???]>u?3?J?i???]Zle???G'
??-??[S?N?????s?????(?\?????,??B?C~??????G?U??e??[Hnd9?06????"DD$q/?$
??????????Z?k?????????<l~6V???=?????og?}??????_???X??o>??#}E?G]zpr ?????????3???,]???@???DP???]?r??mt??L??????f?o???=?lT??['??;??K????????W7??F????l]?b??? ??*?$??????b?a>???o???????s?c??6?#???=????v}?`m\??}?bJ?V?h??t??"?Q?-?A??W}aD?b<?O????%?*?k*??:?ut?w???W<???o?g?^^?z{???IL? ??m[@Hv?Ag?(J????o??fA?RiUU?K?????\?:5??B
?CiB????#I???#???
?!??????NZ??K????o???j??r???;??]?b;M??|??;w$f69?3b{+??$I?<p?]R???X?????`??#?????t????o??????Lf?AM???B$??P(?}qm?]I???22?M?&p??+?+??;/??$u?????????k*l??O?|4K?1??x?[?N2??4????w???O???]??#?7?e???? ??0??1??,.?=?????Z?$I~!
?`Y6?o?D"iii???p]?0??gb??^????7?t?k?b????????qLY?;?pUu?]m?M?t? _?U?xp?M????????^???`???????<??W?<^?8?R2W|??^?H? "?l??????Iwttd??1?<???????z??????;???s?Kc??????@???j0???'y>??S?F??????g???p?O??????ub???;U???m???bfC?B???>V??Y?_?x
???D"???2?LB6I??OQ?(r?$?Z-????B???????9??w??;??k????%?7?F;????????? ?S?????????Jq~?????:XE?????A??8?:?ap???s#??.Rqq?dt ?V/g]^a5??? P? O??????. ?$m6?R??h?v? x?????????????J????)?(???a?L????????w?}7??=????c??g2 ????t:????QO????E???2? ??[P??on??l????+g?O?? eO?7???(@:??s???+'_O? ?????uy???R ??????L&?B????????Z?H??2<??u???d* [õ?*B?d?U*????.]R*?\DY??.??Y?eEQnII?u??P(TVV?w??D???.\?gOjXE?X6$??#r??xU*c_ X?~??l????????F??Wa(vj????z?????LCl??:M1 m??%!W*E??Y??&???, ???+???knn9,?0@S4??n?Ve7CpX?????????R4???W??U?D ?0??i ? ?e????$Yd???u-?Yf??{????$PT?k5q3??Ew[??N+))a???AE+++Q
??4Mbkt?e#?H8??????????b??MD?kk?S????2D?Yg?[M)´?j??T×?\??me??F[.?f???H?J?L?p??G?2?U??? ???;?|??????(K??????{?d9?w??dI??????2(??hmiim?h?W??`??8?cl?v??+?3??d?@??w?u?oe?,?U????Tx??????????6???M0????j ?????n?V????E-..???5.N&??8y?,??F???Ht?u? ????Ti?v?c???>?~dG_?%UeD[f???????b???q????]????+?????o.?????+4???r????DUR?R(d
a?(?-Ml????????**?u??:?????n-?cy?w??H$J?????H?h.???QG ?\??{D???J?$=?2??"B???2'? +???F?4^?
*????????}?DW4U?s3?r}?x?f?J??j`?}?Ib9i??1????;A?E??????L&??[W?a
???$I?|?P(???b?Z???s??aX?eYV"?????????[S???`0??L?| YQC{78?U?>??K#?????O??????a?7.????
?%?S???L~2@Ug?,????_NvU?
?E?t??u?3????O??l?(^?= s??e?4?X
???????C+???N????s?Ri?t-???;?B??j??o\`??m&Z??0???h^)n??U9?h?? d
* Pl???~o$?u?Y?1 (???p???biz????W?-??$??<WW5u-??q? ????4??R?P?H$??,A??h4:?N*?R?W\1 ?u?)?R(???;v????[;;;* ????.\??2??????>??/~??"??e???V?;?>?1?6?u?7???V ?B[ÿ?????{?R?A%??s?????4???#??}J????k7?
z????S????!??n
???"?(?????uB?'?? +U? ?"%???D?~DZ????3???!??vX,Kk$?????:m K?`Es?4z.?u??@T]W??R?B??r??{????
y?ZVZZj4?^/????LNNNNN?wt?,KQI?$I?????????<xpppp??????%%%9??455??vn??w?3???????o???^????=????y?][?o?7n?????????? o?\??'????u???'~???=?>??????$???1???of{??O-?w??U??7_???{l??1?{o????b&G?uy7???<2?>??/|?JGGG8?9?C???^O?Nx??
? E#??, ?!???(e?w-.oB,D"$??J?J?.??)???Qmk?N??+???Sy?Z?2 B????????hB?\t4M;????E?)_
?0???????>n???h*++?Z?L&?W??H$?????????{??????~??>r?{W[?8?d?j?l4Vb t???v????-??o??`???i??N?}-???w??_??Hq??q~x?5????????[?vW??|???;]???????Zc?8c? ???^???????-?H???f?L/ ??orCy????oN?{j??????45?q?]_n/`n???y7&?????????o??"}??J?A8??????,?????\@??Z??B@-l?d?J\???CH%??+T???"T|?EX4?MJK?B?8?f??J ?>\Y%K1H?(???[?ZXt?k???????T?V?D^"1?Xy?œ??@ ??q?????i?@ 044t????)sp?nmm?{wcc?F?????~S?T?!n? >??????c#K???%O?m?Jmn?-?/_??^????????????G??G??5??+???%W?F??3W??u_?U?;w?????<???????u
A/Duc?W??o}?_B[?>?Y?w????a??? Ue[^???o???+?]???????rC?????~??-q?X????{?j?z?t: ????#?Z??m?e???^Y
1??R?B????????_?i?)?3?X?\]Z^YY?????$?
?2?ZZ??????7?,Q??m&ZP+T?f6/???n??D??b?N?O?)%DbZ^rI4???????Bp??T?*q???+5 ??@A?? I,cI???.?x?b5??z?$?p8??????4X8???i?D"?????.};?y?f??l??????W~????'S
q???????[?}K???o?????q]??'???I????u
??h???t??x#?C?_?.
???u?b?Uu??? ??Q?"???_??????6?i???/?{?Nm?k9???.????T?O????G;???O??-C??????miiI ?FH.pG??,C? ?a<?%?a(
???????A??M??????$?r?????9?|zzzjjJ"???????????g ????on???Tn?(!??????+ ?Kre?VSS[^SQ?????Uw(?KJ?????????
???????9´'H?8?I??E?M?G???
?I~1k*j?5???'????? ~`&D84M;?N????????s?????Vkg[$immmkk?=??`??\???1?? ????????A??VUU?4???q\?????????~?TVVR%|??T*moo?
??T???d%?E?E Y?"???? ??? eeei?? ?mK."_XX??|E?a???????d???(???!?xr?F?!?[???????>?o||? ?I o?#???:???'!??L2;? ?0?????x<??ES?? BQ?F???????25/8??????*??
?\.Wuu??? q/?? ?D?}9?4MQ????w
?????uuu?`?eY?????QE$?-??H$BQ?a???Q?V??O??$944? ???FQT$I?R8??aB??????||?4??2??m?9?P%I??t???T}rN?E?????f~w?qn?????????]??{??Enh???????C.???G??7??M??$???????RIEND?B`?

@ -1,27 +1,29 @@
<?php <?php
declare(strict_types=1);
namespace CodingTests; namespace CodingTests;
class Numerical { class Numerical
function isPandigital(int $input) {
public static function isPandigital(int $input): bool
{ {
$array = count_chars($input,1); return self::isDigitsPresent($input, [49 => 1, 50 => 1, 51 => 1, 52 => 1, 53 => 1, 54 => 1, 55 => 1, 56 => 1, 57 => 1]);
ksort($array);
if($array == array(49=>1,50=>1,51=>1,52=>1,53=>1,54=>1,55=>1,56=>1,57=>1)) {
return true;
} else {
return false;
}
} }
function isPandigitalWithZero(int $input) public static function isPandigitalWithZero(int $input): bool
{ {
$array = count_chars($input,1); return self::isDigitsPresent($input, [48 => 0, 49 => 1, 50 => 1, 51 => 1, 52 => 1, 53 => 1, 54 => 1, 55 => 1, 56 => 1, 57 => 1]);
}
private static function isDigitsPresent(int $input, array $count): bool
{
$array = count_chars((string)$input, 1);
ksort($array); ksort($array);
if($array == array(48=>0, 49=>1,50=>1,51=>1,52=>1,53=>1,54=>1,55=>1,56=>1,57=>1)) { if ($array == $count) {
return true; return TRUE;
} else { } else {
return false; return FALSE;
} }
} }
} }

@ -1,46 +1,47 @@
<?php <?php
declare(strict_types=1);
namespace CodingTests; namespace CodingTests;
class Prime class Prime
{ {
static function isPrime(int $number) : bool { public static function isPrime(int $number): bool
if($number <= 1) {
{ if ($number <= 1) {
return false; return FALSE;
} }
$factors = 0; $factors = 0;
for($i = 1; $i <= floor(sqrt($number)); $i++){ for ($i = 1; $i <= floor(sqrt($number)); $i++) {
if(is_int($number/$i)){ if (is_int($number / $i)) {
$factors++; $factors++;
} }
} }
$factors++; $factors++;
if($factors == 2){ if ($factors == 2) {
return true; return TRUE;
} }
return false; return FALSE;
} }
static function findFactors(int $number) : array { public static function findFactors(int $number): array
$factors = []; {
if($number <= 1) $factors = [];
{ if ($number <= 1) {
return $factors; return $factors;
} }
for($i = 1; $i <= floor(sqrt($number)); $i++){ for ($i = 1; $i <= floor(sqrt($number)); $i++) {
if(is_int($number/$i)){ if (is_int($number / $i)) {
$factors[] = $number/$i; $factors[] = $number / $i;
} }
} }
$factors[] = $number; $factors[] = $number;
return $factors; return $factors;
} }
}
}

41
tests/NumericalTest.php Normal file

@ -0,0 +1,41 @@
<?php
declare(strict_types=1);
namespace App\Tests;
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Attributes\CoversClass;
use CodingTests\Numerical;
#[CoversClass(Numerical::class)]
final class NumericalTest extends TestCase
{
public function testisPandigital(): void
{
$this->assertTrue(Numerical::isPandigital(123456789));
$this->assertTrue(Numerical::isPandigital(987654321));
$this->assertTrue(Numerical::isPandigital(789456123));
$this->assertTrue(Numerical::isPandigital(321654987));
$this->assertFalse(Numerical::isPandigital(0));
$this->assertFalse(Numerical::isPandigital(1));
$this->assertFalse(Numerical::isPandigital(111111111));
$this->assertFalse(Numerical::isPandigital(999999999));
$this->assertFalse(Numerical::isPandigital(1234567890));
}
public function testisPandigitalWithZero(): void
{
$this->assertTrue(Numerical::isPandigitalWithZero(1234567890));
$this->assertTrue(Numerical::isPandigitalWithZero(9876543210));
$this->assertTrue(Numerical::isPandigitalWithZero(7894561230));
$this->assertTrue(Numerical::isPandigitalWithZero(3216549870));
$this->assertFalse(Numerical::isPandigitalWithZero(123456780));
$this->assertFalse(Numerical::isPandigitalWithZero(123456789));
$this->assertFalse(Numerical::isPandigitalWithZero(987654321));
$this->assertFalse(Numerical::isPandigitalWithZero(789456123));
$this->assertFalse(Numerical::isPandigitalWithZero(321654987));
}
}

@ -12,14 +12,12 @@ use CodingTests\Prime;
#[CoversClass(Prime::class)] #[CoversClass(Prime::class)]
final class PrimeTest extends \PHPUnit\Framework\TestCase final class PrimeTest extends \PHPUnit\Framework\TestCase
{ {
public function testisPrime(): void public function isPandigital(): void
{ {
$primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]; $primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
for($test=-100;$test<=100;$test++) for ($test = -100; $test <= 100; $test++) {
{
$ret = Prime::isPrime($test); $ret = Prime::isPrime($test);
$this->assertEquals(in_array($test, $primes), $ret, "Testing $test"); $this->assertEquals(in_array($test, $primes), $ret, "Testing $test");
} }
} }
} }