Solution: DNA Sequencing



examples/dna-sequencing/dna_sequencing.go
package main

import (
    "fmt"
    "sort"
    "strings"
)

func main() {
    dna := "ACCGXXCXXGTTACTGGGCXTTGT"
    sequences := strings.Split(dna, "X")
    fmt.Println(sequences)
    fmt.Println(len(sequences)) // 6, this contains 2 empty strings as well

    shortSequences := make([]string, 0, len(sequences))
    fmt.Printf("%v, %v\n", len(shortSequences), cap(shortSequences)) // 0, 6
    for _, val := range sequences {
        if val != "" {
            shortSequences = append(shortSequences, val)
        }
    }
    fmt.Println(shortSequences)
    fmt.Printf("%v, %v\n", len(shortSequences), cap(shortSequences)) // 4, 6

    sort.Slice(shortSequences, func(i, j int) bool {
        return len(shortSequences[i]) > len(shortSequences[j])
    })
    fmt.Println(shortSequences)
    fmt.Printf("%v, %v\n", len(shortSequences), cap(shortSequences)) // 4, 6
}

examples/dna-sequencing/dna_sequencing.out
[ACCG  C  GTTACTGGGC TTGT]
6
0, 6
[ACCG C GTTACTGGGC TTGT]
4, 6
[GTTACTGGGC ACCG TTGT C]
4, 6