Fractran: Difference between revisions
Content added Content deleted
Line 2,555: | Line 2,555: | ||
=={{header|Julia}}== |
=={{header|Julia}}== |
||
{{works with|Julia|1.9}}<syntaxhighlight lang="julia"> |
{{works with|Julia|1.9}}<syntaxhighlight lang="julia"> |
||
# FRACTRAN interpreter implemented |
# FRACTRAN interpreter implemented as an Iterator |
||
struct Fractran |
struct Fractran |
||
input::BigInt |
|||
fracs::Vector{Rational{BigInt}} |
fracs::Vector{Rational{BigInt}} |
||
input::BigInt |
|||
maxout::Int |
|||
end |
end |
||
Line 2,575: | Line 2,574: | ||
function Base.show(io::IO, ft::Fractran) |
function Base.show(io::IO, ft::Fractran) |
||
join(io, Iterators.take(eval(ft), ft. |
join(io, Iterators.take(eval(ft), ft.maxout ), ' ') |
||
end |
end |
||
macro code_str(s) |
macro code_str(s) |
||
eval(Meta.parse("[" * replace(s, "/" => "//") * "]")) |
|||
end |
end |
||
# Example FRACTRAN program generating primes |
|||
primes = Fractran(2, |
|||
primes = Fractran(code"17/91, 78/85, 19/51, 23/38, 29/33, 77/29, 95/23, |
|||
77/19, 1/17, 11/13, 13/11, 15/14, 15/2, 55/1", 2, 40) |
|||
25) |
|||
# Output |
|||
println("First 25 iterations of FRACTRAN program 'primes':\n2 ", |
|||
⚫ | |||
println(" |
println("\nWatch the first $(primes.maxout) primes dropping out:") |
||
⚫ | |||
println("Watch the first $(primes.n) primes dropping out:") |
|||
primes</syntaxhighlight> |
primes</syntaxhighlight> |
||
{{output}} |
{{output}} |
||
<pre>First |
<pre>First 25 iterations of FRACTRAN program 'primes': |
||
2 15 825 725 1925 2275 425 390 330 290 770 910 170 156 132 116 308 364 68 4 30 225 12375 10875 28875 25375 |
2 15 825 725 1925 2275 425 390 330 290 770 910 170 156 132 116 308 364 68 4 30 225 12375 10875 28875 25375 |
||
Watch the first |
Watch the first 40 primes dropping out: |
||
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 |
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 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 |
||
</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |