VS
Size: a a a
VS
VS
VS
VS
VS
А
VS
VS
А
VS
А
А
А
x
АЗ
package main
import (
"fmt"
)
func Merge2Channels(f func(int) int, in1 <-chan int, in2 <- chan int, out chan<- int, n int) {
var chan1 []int;
var chan2 []int;
var x int;
var y int;
count_n := 0;
for {
if count_n == n {
return
}
select {
case first := <- in1:
fmt.Print(first)
if len(chan2) > 0 {
x, chan2 = chan2[len(chan2)-1], chan2[:len(chan2)-1]
out <- f(x) + f(first)
} else {
chan1 = append(chan1, first)
count_n += 1
}
if count_n == n {
return
}
case second := <- in2:
if len(chan1) > 0 {
y, chan1 = chan1[len(chan1)-1], chan1[:len(chan1)-1]
out <- f(y) + f(second)
} else {
chan1 = append(chan1, second)
count_n += 1
}
if count_n == n {
return
}
}
}
}
func sum(i int) int {
return i + i;
}
func chek(o chan int) {
for i := range o {
fmt.Print(i)
}
}
func send(c1 chan int, c2 chan int) {
c1 <- 1
c2 <- 2
c2 <- 1
}
func main() {
c1 := make(chan int, 5)
c2 := make(chan int, 5)
o := make(chan int, 5)
go Merge2Channels(sum, c1, c2, o, 4)
go chek(o)
go send(c1, c2)
}
AY
x
package main
import (
"fmt"
)
func Merge2Channels(f func(int) int, in1 <-chan int, in2 <- chan int, out chan<- int, n int) {
var chan1 []int;
var chan2 []int;
var x int;
var y int;
count_n := 0;
for {
if count_n == n {
return
}
select {
case first := <- in1:
fmt.Print(first)
if len(chan2) > 0 {
x, chan2 = chan2[len(chan2)-1], chan2[:len(chan2)-1]
out <- f(x) + f(first)
} else {
chan1 = append(chan1, first)
count_n += 1
}
if count_n == n {
return
}
case second := <- in2:
if len(chan1) > 0 {
y, chan1 = chan1[len(chan1)-1], chan1[:len(chan1)-1]
out <- f(y) + f(second)
} else {
chan1 = append(chan1, second)
count_n += 1
}
if count_n == n {
return
}
}
}
}
func sum(i int) int {
return i + i;
}
func chek(o chan int) {
for i := range o {
fmt.Print(i)
}
}
func send(c1 chan int, c2 chan int) {
c1 <- 1
c2 <- 2
c2 <- 1
}
func main() {
c1 := make(chan int, 5)
c2 := make(chan int, 5)
o := make(chan int, 5)
go Merge2Channels(sum, c1, c2, o, 4)
go chek(o)
go send(c1, c2)
}
main
эти две строки:var i int
fmt.Scan(&i)