Sha256: bee104ace152ffa987358b7dec1fe00b5228bd805c3c3985615121c1235fd0e5

Contents?: true

Size: 648 Bytes

Versions: 86

Compression:

Stored size: 648 Bytes

Contents

package dna

import (
	"errors"
	"strings"
)

// DNA is a list of nucleotides
type DNA string
type Histogram map[byte]int

const validNucleotides = "ACGT"

// Counts generates a histogram of valid nucleotides in given DNA.
// Returns error if DNA contains invalid nucleotide.
func (dna DNA) Counts() (Histogram, error) {
	var total int
	result := make(Histogram)

	for i := range validNucleotides {
		nucleotide := validNucleotides[i]
		result[nucleotide] = strings.Count(string(dna), string(nucleotide))
		total += result[nucleotide]
	}
	if total != len(dna) {
		return nil, errors.New("dna: contains invalid nucleotide")
	}
	return result, nil
}

Version data entries

86 entries across 86 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.179 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.178 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.177 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.176 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.175 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.174 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.173 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.172 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.171 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.170 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.169 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.167 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.166 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.165 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.164 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.163 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.162 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.161 tracks/go/exercises/nucleotide-count/example.go
trackler-2.2.1.160 tracks/go/exercises/nucleotide-count/example.go