Fibonacci n-step number sequences: Difference between revisions
Content deleted Content added
Added PicoLisp |
Go solution |
||
Line 272: | Line 272: | ||
} |
} |
||
}</lang> |
}</lang> |
||
=={{header|Go}}== |
|||
Solution using a separate goroutine. |
|||
<lang go>package main |
|||
import "fmt" |
|||
func g(i []int, c chan int) { |
|||
var sum int |
|||
b := append([]int{}, i...) |
|||
for _, t := range b { |
|||
c <- t |
|||
sum += t |
|||
} |
|||
for { |
|||
for j, t := range b { |
|||
c <- sum |
|||
b[j], sum = sum, sum+sum-t |
|||
} |
|||
} |
|||
} |
|||
func main() { |
|||
for _, s := range []struct { |
|||
seq string |
|||
i []int |
|||
} { |
|||
{"Fibonacci", []int{1, 1}}, |
|||
{"Tribonacci", []int{1, 1, 2}}, |
|||
{"Tetranacci", []int{1, 1, 2, 4}}, |
|||
{"Lucas", []int{2, 1}}, |
|||
} { |
|||
fmt.Printf("%10s:", s.seq) |
|||
c := make(chan int) |
|||
go g(s.i, c) |
|||
for j := 0; j < 10; j++ { |
|||
fmt.Print(" ", <-c) |
|||
} |
|||
fmt.Println() |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Fibonacci: 1 1 2 3 5 8 13 21 34 55 |
|||
Tribonacci: 1 1 2 4 7 13 24 44 81 149 |
|||
Tetranacci: 1 1 2 4 8 15 29 56 108 208 |
|||
Lucas: 2 1 3 4 7 11 18 29 47 76 |
|||
</pre> |
|||
=={{header|Haskell}}== |
=={{header|Haskell}}== |