fun printSequence(sequence: String, width: Int = 50) { fun printWithLabel(label: Any, data: Any) = label.toString().padStart(5).also { println("$it: $data") } println("SEQUENCE:") sequence.chunked(width).forEachIndexed() { i, chunk -> printWithLabel(i * width + chunk.length, chunk) } println("BASE:") sequence.groupingBy { it }.eachCount().forEach { (k, v) -> printWithLabel(k, v) } printWithLabel("TOTALS", sequence.length) } const val BASE_SEQUENCE = "CGTAAAAAATTACAACGTCCTTTGGCTATCTCTTAAACTCCTGCTAAATGCTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTGAGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGATGGGACGTTTCGTCGACAAAGTCTTGTTTCGAGAGTAACGGCTACCGTCTTCGATTCTGCTTATAACACTATGTTCTTATGAAATGGATGTTCTGAGTTGGTCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATATTTAATTTTTCTATATAGCGATCTGTATTTAAGCAATTCATTTAGGTTATCGCCGCGATGCTCGGTTCGGACCGCCAAGCATCTGGCTCCACTGCTAGTGTCCTAAATTTGAATGGCAAACACAAATAAGATTTAGCAATTCGTGTAGACGACCGGGGACTTGCATGATGGGAGCAGCTTTGTTAAACTACGAACGTAAT" fun main() = printSequence(BASE_SEQUENCE)