リスト(配列)の中で隣り合う同じ値をグループ化する(3)

しつこいようだけど、今度は Go でやってみた。

package main

import (
    "fmt"
)

func main() {
    var l1 = []int{1, 1, 2, 2, 3, 1, 1}
    var l2 = []int{}

    fmt.Printf("%v\n", adjacentGroup(l1))
    fmt.Printf("%v\n", adjacentGroup(l2))
}

func adjacentGroup(l []int) [][]int {
    var result [][]int

    if len(l) == 0 {
        return result
    }

    var current = []int{l[0]}
    for i := 1; i < len(l); i++ {
        if current[0] == l[i] {
            current = append(current, l[i])
        } else {
            result = append(result, current) current = []int{l[i]}
        }
    }
    result = append(result, current) return result
} 
^o^ > go run adjacentGroup.go
[[1 1] [2 2] [3] [1 1]]
[]

カテゴリー: algorithm, Go パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください