Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
28
Task/Averages-Mode/Go/averages-mode-1.go
Normal file
28
Task/Averages-Mode/Go/averages-mode-1.go
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(mode([]int{2, 7, 1, 8, 2}))
|
||||
fmt.Println(mode([]int{2, 7, 1, 8, 2, 8}))
|
||||
}
|
||||
|
||||
func mode(a []int) []int {
|
||||
m := make(map[int]int)
|
||||
for _, v := range a {
|
||||
m[v]++
|
||||
}
|
||||
var mode []int
|
||||
var n int
|
||||
for k, v := range m {
|
||||
switch {
|
||||
case v < n:
|
||||
case v > n:
|
||||
n = v
|
||||
mode = append(mode[:0], k)
|
||||
default:
|
||||
mode = append(mode, k)
|
||||
}
|
||||
}
|
||||
return mode
|
||||
}
|
||||
28
Task/Averages-Mode/Go/averages-mode-2.go
Normal file
28
Task/Averages-Mode/Go/averages-mode-2.go
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println(mode([]interface{}{.2, .7, .1, .8, .2}))
|
||||
fmt.Println(mode([]interface{}{"two", 7, 1, 8, "two", 8}))
|
||||
}
|
||||
|
||||
func mode(a []interface{}) []interface{} {
|
||||
m := make(map[interface{}]int)
|
||||
for _, v := range a {
|
||||
m[v]++
|
||||
}
|
||||
var mode []interface{}
|
||||
var n int
|
||||
for k, v := range m {
|
||||
switch {
|
||||
case v < n:
|
||||
case v > n:
|
||||
n = v
|
||||
mode = append(mode[:0], k)
|
||||
default:
|
||||
mode = append(mode, k)
|
||||
}
|
||||
}
|
||||
return mode
|
||||
}
|
||||
57
Task/Averages-Mode/Go/averages-mode-3.go
Normal file
57
Task/Averages-Mode/Go/averages-mode-3.go
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// interface type
|
||||
type intCollection interface {
|
||||
iterator() func() (int, bool)
|
||||
}
|
||||
|
||||
// concrete type implements interface
|
||||
type intSlice []int
|
||||
|
||||
// method on concrete type satisfies interface method
|
||||
func (s intSlice) iterator() func() (int, bool) {
|
||||
i := 0
|
||||
return func() (int, bool) {
|
||||
if i >= len(s) {
|
||||
return 0, false
|
||||
}
|
||||
v := s[i]
|
||||
i++
|
||||
return v, true
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println(mode(intSlice{2, 7, 1, 8, 2}))
|
||||
fmt.Println(mode(intSlice{2, 7, 1, 8, 2, 8}))
|
||||
}
|
||||
|
||||
// mode is now a generic function, in a sense.
|
||||
// It knows what to do with an intCollection,
|
||||
// but does not know the underlying concrete type.
|
||||
func mode(a intCollection) []int {
|
||||
m := make(map[int]int)
|
||||
i := a.iterator()
|
||||
for {
|
||||
v, ok := i()
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
m[v]++
|
||||
}
|
||||
var mode []int
|
||||
var n int
|
||||
for k, v := range m {
|
||||
switch {
|
||||
case v < n:
|
||||
case v > n:
|
||||
n = v
|
||||
mode = append(mode[:0], k)
|
||||
default:
|
||||
mode = append(mode, k)
|
||||
}
|
||||
}
|
||||
return mode
|
||||
}
|
||||
67
Task/Averages-Mode/Go/averages-mode-4.go
Normal file
67
Task/Averages-Mode/Go/averages-mode-4.go
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type collection interface {
|
||||
iterator() func() (interface{}, bool)
|
||||
}
|
||||
|
||||
type intSlice []int
|
||||
|
||||
func (s intSlice) iterator() func() (interface{}, bool) {
|
||||
i := 0
|
||||
return func() (interface{}, bool) {
|
||||
if i >= len(s) {
|
||||
return 0, false
|
||||
}
|
||||
v := s[i]
|
||||
i++
|
||||
return v, true
|
||||
}
|
||||
}
|
||||
|
||||
type runeList string
|
||||
|
||||
func (s runeList) iterator() func() (interface{}, bool) {
|
||||
c := make(chan rune)
|
||||
go func() {
|
||||
for _, r := range s {
|
||||
c <- r
|
||||
}
|
||||
close(c)
|
||||
}()
|
||||
return func() (interface{}, bool) {
|
||||
r, ok := <-c
|
||||
return string(r), ok
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println(mode(intSlice{2, 7, 1, 8, 2}))
|
||||
fmt.Println(mode(runeList("Enzyklopädie")))
|
||||
}
|
||||
|
||||
func mode(a collection) []interface{} {
|
||||
m := make(map[interface{}]int)
|
||||
i := a.iterator()
|
||||
for {
|
||||
v, ok := i()
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
m[v]++
|
||||
}
|
||||
var mode []interface{}
|
||||
var n int
|
||||
for k, v := range m {
|
||||
switch {
|
||||
case v < n:
|
||||
case v > n:
|
||||
n = v
|
||||
mode = append(mode[:0], k)
|
||||
default:
|
||||
mode = append(mode, k)
|
||||
}
|
||||
}
|
||||
return mode
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue