Ulam spiral (for primes): Difference between revisions

m
m (→‎{{header|Wren}}: Minor tidy)
 
(13 intermediate revisions by 5 users not shown)
Line 1,542:
 
</pre>
 
=={{header|EasyLang}}==
 
[https://easylang.dev/show/#cod=bZHdUsMgEIXveYqd8c5OmdTaC2eap0mIoglEIDX49LILi0w1F4HDfucsP9NmBtB+dXoBsy0gBQDoieZXeEKVPqfC5gx0KDMBfS5+velZJXntwX+6gL7iKSGLHYnuyvJdGgdS5qGHU21RqJOQwgAW9vS/dCLmYdxpcYyU/QBidXYAssh6igLlfBLclHxUUTOCsQVjC6Lr2JC/+t9MRr1qkb/RMp2LtuyDWnnLpl7BjrNkfcwykowsF3tTCYnlmPx+TaNBuyE9TCcv3CyoPXj9reAsqn02r3x9k3XwAcHC8ws6cFc4InEob42XiyOi74hi8VhbskUyo5E5lyqb7/xlqbFzAu75Bw== Run it]
 
<syntaxhighlight>
func isprim num .
if num < 2
return 0
.
i = 2
while i <= sqrt num
if num mod i = 0
return 0
.
i += 1
.
return 1
.
n = 1
x = 50
y = 50
dx = 1
dy = 0
#
proc turn . .
if dx = 1
dx = 0
dy = 1
elif dy = 1
dy = 0
dx = -1
elif dx = -1
dx = 0
dy = -1
else
dx = 1
dy = 0
.
.
proc step . .
n += 1
x += dx * 1
y += dy * 1
move x y
if isprim n = 1
circle 0.5
.
.
textsize 3
move x y
lng = 0
#
for k to 49
step
lng += 2
turn
for j to lng - 1
step
.
for i to 3
turn
for j to lng
step
.
.
.
</syntaxhighlight>
 
 
=={{header|EchoLisp}}==
Line 2,259 ⟶ 2,328:
 
{{FormulaeEntry|page=https://formulae.org/?script=examples/Ulam_spiral}}
 
'''Solution'''
 
[[File:Fōrmulæ - Ulam spiral 01.png]]
 
'''Test case'''
 
[[File:Fōrmulæ - Ulam spiral 02.png]]
 
[[File:Fōrmulæ - Ulam spiral 03.png]]
 
=={{header|Go}}==
Line 3,326 ⟶ 3,405:
* * *
* * * * </pre>
 
=={{header|Maxima}}==
[[File:Ulam spiral.png|thumb|Ulam spiral powered by Maxima]]
Using the function defined in the Spiral matrix task
<syntaxhighlight lang="maxima">
/* Adapting the spiral to the problem requirements */
spiral_from_center(n):=(n^2+1)*matrixmap(lambda([x],x+1),zeromatrix(n,n))-spiral(n)$
 
/* Testing */
spiral_from_center(35)$
matrixmap(lambda([x],if primep(x) then "O" else ""),%);
</syntaxhighlight>
 
=={{header|Nim}}==
Line 4,444 ⟶ 4,535:
- 43 - - - 47 - - -
73 - - - - - 79 - -
</pre>
 
=={{header|Quackery}}==
 
<code>spiral</code> is defined at [[Spiral matrix#Quackery]].
 
<code>isprime</code> is defined at [[Primality by trial division#Quackery]].
 
<syntaxhighlight lang="Quackery"> 32 spiral
witheach
[ witheach
[ 1024 swap -
isprime iff
say " o"
else say " ." ]
cr ]</syntaxhighlight>
 
{{out}}
 
<pre>
. . . o . o . . . . . o . . . o . . . . . . . . . . . o . . . .
. . . . . . . . . . . . . . o . . . o . o . . . o . . . . . . .
. . . . . . . . . . . . . o . . . o . . . . . . . o . . . o . o
. . o . . . o . . . . . . . . . . . o . o . . . . . o . . . . .
. o . o . . . . . o . o . . . . . o . . . . . o . . . . . . . .
. . . . . . . . . . o . . . . . . . . . . . o . . . o . . . . .
. . . . . o . . . o . . . . . . . o . . . . . o . . . . . . . .
o . . . o . . . . . . . . . o . . . o . o . . . o . o . o . . .
. . . . . . . o . . . . . o . . . . . . . . . o . o . . . o . .
. . o . . . . . o . . . o . o . . . . . . . . . . . . . . . o .
. . . . . . . . . . . . . . . o . o . . . . . o . . . o . . . o
o . . . o . . . o . o . . . o . . . . . . . o . . . o . o . . .
. . . . . . . . . . . . . . . o . o . . . o . . . . . . . . . .
. . . . . . o . . . o . o . . . . . o . o . o . . . . . o . o .
. o . o . o . o . o . o . o . . . o . . . . . . . o . . . . . .
. . . . . . . . . . . . . . o . o . o . . . . . . . . . . . o .
. . . . . . . . . o . . . o . . o o . o . o . o . . . o . o . o
. . o . . . . . . . o . o . o . . . . . . . . . . . . . . . . .
. . . . . . . . . . . o . . . o . . . . . . . . . . . . . . . .
o . . . o . o . . . o . o . . . o . . . o . o . . . o . . . o .
. . . o . . . o . . . o . . . . . o . . . . . o . o . . . o . .
. . . . . . . . . . . . o . . . . . . . . . . . o . . . . . . .
. . . . . . . o . o . . . . . o . . . o . . . o . . . . . . . o
. . . . o . . . o . . . . . . . . . . . o . . . . . . . o . . .
. . . . . o . . . . . o . . . o . o . . . . . . . . . . . . . .
. . . . . . . . . . o . o . . . o . . . . . o . . . o . . . . .
. o . o . o . . . . . . . . . o . o . . . . . o . . . . . o . o
. . o . . . o . . . . . . . . . . . o . o . . . . . . . . . . .
. o . o . . . . . o . . . . . o . . . o . o . . . . . . . . . .
o . . . . . . . o . . . . . . . . . o . . . . . . . o . . . . .
. . . . . . . . . o . o . . . o . o . . . . . . . . . o . . . .
. . . . . . o . . . o . . . . . o . . . . . o . . . . . . . . .
</pre>
 
Line 5,662 ⟶ 5,805:
{{libheader|Wren-str}}
{{libheader|Wren-fmt}}
<syntaxhighlight lang="ecmascriptwren">import "./dynamic" for Enum
import "./math" for Int
import "./str" for Char
import "./fmt" for Fmt
 
var Direction = Enum.create("Direction", ["right", "up", "left", "down"])
Line 5,823 ⟶ 5,966:
 
http://www.zenkinetic.com/Images/RosettaCode/ulamSpiral.png
 
 
=={{header|ZX Spectrum Basic}}==
a simplistic naive procedure that on a real machine will take some DAYS at the max of 176x176 numbers to check
 
RUN 10 , to start
 
 
<syntaxhighlight lang="ZX Spectrum Basic">
 
1 IF n<max THEN LET n=n+1: FOR p=2 TO n-1: LET r= (INT (n/p)<>n/p): IF r THEN NEXT p
2 IF p=n THEN LET pr=pr+1: LET kx=(255-xx AND k<3)+(xx AND k>2): LET ky=(175-yy AND (k=1 OR k=3)+(yy AND (k=2 OR k=4))): PLOT kx,ky: PRINT #0;AT 0,0;n;" pr";pr
3 RETURN
10 CLS : PRINT "ULAM SPIRAL OF PRIME's"'''"it takes DAYS at max level"'"and 3.5MHz"
12 INPUT "square size= LxL"'"l: ";l: IF l<>INT l OR l<1 OR l>176 THEN GO TO 12
13 LET max=l*l: PRINT ''l;"x";l;"=";max;" positive integers"
15 INPUT "0,0 orientation 1-4: ";k: IF k<1 OR k>4 THEN GO TO 15
20 CLS : LET xx=127: LET yy=88: LET n=0: LET pr=0: PRINT #0;AT 0,15;max
40 FOR q=0 TO l: LET m=INT (q/2)=q/2: LET m=-1*m+NOT m
60 FOR x=0 TO q*m STEP m: GO SUB 1 : LET xx=xx+m: NEXT x
80 FOR y=0 TO q*m STEP m: GO SUB 1 : LET yy=yy+m: NEXT y: NEXT q
9,479

edits