Strange numbers: Difference between revisions
Content added Content deleted
(Added Algol 68) |
(→{{header|ALGOL W}}: Simplify - treat single digit numbers as strange, as in other samples) |
||
Line 189: | Line 189: | ||
=={{header|ALGOL W}}== |
=={{header|ALGOL W}}== |
||
<syntaxhighlight lang="algolw"> |
<syntaxhighlight lang="algolw"> |
||
begin % find "strange numbers" - numbers where digits differ from the next % |
|||
% by a prime % |
% by a prime % |
||
% returns true if n is strange, false otherwise % |
% returns true if n is strange, false otherwise % |
||
logical procedure isStrange( integer value n ) ; |
logical procedure isStrange( integer value n ) ; |
||
begin |
begin |
||
integer rest; |
integer rest, d0; |
||
⚫ | |||
rest := abs( n ); |
rest := abs( n ); |
||
strange := true; |
|||
d0 := rest rem 10; |
|||
rest := rest div 10; |
|||
while strange and rest > 0 do begin |
|||
integer d1, diff; |
|||
d1 := rest rem 10; |
|||
rest := rest div 10; |
rest := rest div 10; |
||
diff := abs( d1 - d0 ); |
|||
strange := diff = 2 or diff = 3 or diff = 5 or diff = 7; |
|||
d0 := d1 |
|||
⚫ | |||
rest := rest div 10; |
|||
strange |
|||
diff := abs( d1 - d0 ); |
|||
strange := diff = 2 or diff = 3 or diff = 5 or diff = 7; |
|||
d0 := d1 |
|||
⚫ | |||
⚫ | |||
end if_rest_lt_10__ |
|||
end isStrange ; |
end isStrange ; |
||
% test the isStrange procedure on values |
% test the isStrange procedure on values 101-499 % |
||
begin |
begin |
||
integer strangeCount; |
integer strangeCount; |
||
strangeCount := 0; |
strangeCount := 0; |
||
for n := |
for n := 101 until 499 do begin; |
||
if isStrange( n ) then begin |
if isStrange( n ) then begin |
||
strangeCount := strangeCount + 1; |
strangeCount := strangeCount + 1; |
||
Line 227: | Line 224: | ||
end for_n |
end for_n |
||
end |
end |
||
end. |
|||
</syntaxhighlight> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |