Metallic ratios: Difference between revisions

Add Factor
m (minor (formatting) changes to task description)
(Add Factor)
Line 147:
 
 
 
=={{header|Factor}}==
<lang factor>USING: combinators decimals formatting generalizations io kernel
math prettyprint qw sequences ;
IN: rosetta-code.metallic-ratios
 
: lucas ( n a b -- n a' b' ) tuck reach * + ;
 
: lucas. ( n -- )
1 pprint bl 1 1 14 [ lucas over pprint bl ] times 3drop nl ;
 
: approx ( a b -- d ) swap [ 0 <decimal> ] bi@ 32 D/ ;
 
: approximate ( n -- value iter )
-1 swap 1 1 0 1 [ 2dup = ]
[ [ 1 + ] 5 ndip [ lucas 2dup approx ] 2dip drop ] until
4nip decimal>ratio swap ;
 
qw{
Platinum Golden Silver Bronze Copper Nickel Aluminum Iron
Tin Lead
}
[
dup dup approximate {
[ "Lucas sequence for %s ratio " printf ]
[ "where b = %d:\n" printf ]
[ "First 15 elements: " write lucas. ]
[ "Approximated value: %.32f " printf ]
[ "- reached after %d iteration(s)\n\n" printf ]
} spread
] each-index</lang>
{{out}}
<pre style="height:45ex">
Lucas sequence for Platinum ratio where b = 0:
First 15 elements: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Approximated value: 1.00000000000000000000000000000000 - reached after 1 iteration(s)
 
Lucas sequence for Golden ratio where b = 1:
First 15 elements: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
Approximated value: 1.61803398874989484820458683436563 - reached after 78 iteration(s)
 
Lucas sequence for Silver ratio where b = 2:
First 15 elements: 1 1 3 7 17 41 99 239 577 1393 3363 8119 19601 47321 114243
Approximated value: 2.41421356237309504880168872420969 - reached after 44 iteration(s)
 
Lucas sequence for Bronze ratio where b = 3:
First 15 elements: 1 1 4 13 43 142 469 1549 5116 16897 55807 184318 608761 2010601 6640564
Approximated value: 3.30277563773199464655961063373524 - reached after 32 iteration(s)
 
Lucas sequence for Copper ratio where b = 4:
First 15 elements: 1 1 5 21 89 377 1597 6765 28657 121393 514229 2178309 9227465 39088169 165580141
Approximated value: 4.23606797749978969640917366873127 - reached after 27 iteration(s)
 
Lucas sequence for Nickel ratio where b = 5:
First 15 elements: 1 1 6 31 161 836 4341 22541 117046 607771 3155901 16387276 85092281 441848681 2294335686
Approximated value: 5.19258240356725201562535524577016 - reached after 24 iteration(s)
 
Lucas sequence for Aluminum ratio where b = 6:
First 15 elements: 1 1 7 43 265 1633 10063 62011 382129 2354785 14510839 89419819 551029753 3395598337 20924619775
Approximated value: 6.16227766016837933199889354443271 - reached after 22 iteration(s)
 
Lucas sequence for Iron ratio where b = 7:
First 15 elements: 1 1 8 57 407 2906 20749 148149 1057792 7552693 53926643 385039194 2749201001 19629446201 140155324408
Approximated value: 7.14005494464025913554865124576351 - reached after 20 iteration(s)
 
Lucas sequence for Tin ratio where b = 8:
First 15 elements: 1 1 9 73 593 4817 39129 317849 2581921 20973217 170367657 1383914473 11241683441 91317382001 741780739449
Approximated value: 8.12310562561766054982140985597407 - reached after 19 iteration(s)
 
Lucas sequence for Lead ratio where b = 9:
First 15 elements: 1 1 10 91 829 7552 68797 626725 5709322 52010623 473804929 4316254984 39320099785 358197153049 3263094477226
Approximated value: 9.10977222864644365500113714088139 - reached after 18 iteration(s)
</pre>
 
=={{header|Go}}==
1,827

edits