Stern-Brocot sequence: Difference between revisions

Content added Content deleted
(Add Forth)
(Add MAD)
Line 3,153: Line 3,153:


Task 5: PASS</pre>
Task 5: PASS</pre>

=={{header|MAD}}==

<lang MAD> NORMAL MODE IS INTEGER
VECTOR VALUES FRST15 = $20HFIRST 15 NUMBERS ARE*$
VECTOR VALUES FRSTAT = $6HFIRST ,I3,S1,11HAPPEARS AT ,I4*$
VECTOR VALUES NUMBER = $I4*$
DIMENSION STERN(1200)
STERN(1) = 1
STERN(2) = 1
R GENERATE FIRST 1200 MEMBERS OF THE STERN-BROCOT SEQUENCE
THROUGH GENSEQ, FOR I = 1, 1, I .GE. 600
STERN(I*2-1) = STERN(I) + STERN(I-1)
GENSEQ STERN(I*2) = STERN(I)

R PRINT FIRST 15 VALUES OF STERN-BROCOT SEQUENCE
PRINT FORMAT FRST15
THROUGH P15, FOR I = 1, 1, I .G. 15
P15 PRINT ON LINE FORMAT NUMBER, STERN(I)
R PRINT FIRST OCCURRENCE OF 1..10
THROUGH FRST10, FOR I = 1, 1, I .G. 10
FRST10 PRINT FORMAT FRSTAT, I, FIRST.(I)
PRINT FORMAT FRSTAT, 100, FIRST.(100)
R SEARCH FOR FIRST OCCURRENCE OF N IN SEQUENCE
INTERNAL FUNCTION(N)
ENTRY TO FIRST.
THROUGH SCAN, FOR K = 1, 1, I .G. 1200
SCAN WHENEVER N .E. STERN(K), FUNCTION RETURN K
END OF FUNCTION
END OF PROGRAM</lang>

{{out}}

<pre style="height: 45ex;">FIRST 15 NUMBERS ARE
1
1
2
1
3
2
3
1
4
3
5
2
5
3
4
FIRST 1 APPEARS AT 1
FIRST 2 APPEARS AT 3
FIRST 3 APPEARS AT 5
FIRST 4 APPEARS AT 9
FIRST 5 APPEARS AT 11
FIRST 6 APPEARS AT 33
FIRST 7 APPEARS AT 19
FIRST 8 APPEARS AT 21
FIRST 9 APPEARS AT 35
FIRST 10 APPEARS AT 39
FIRST 100 APPEARS AT 1179</pre>


=={{header|Oforth}}==
=={{header|Oforth}}==