[GDD2011] GO言語

GDD2011 DevQuizが終わりましたね。結局、心折れてスライドパズルはやらずじまい。

GO言語、Android、クイズの3つで100点で終わりました。足切り候補。

 

せっかくなので、今年は解答の記事も書いちゃおうということで、まずはGO言語。

カラーコードでキー(しかも文字列)作って連想配列でやりましたけど、もっとスマートにやる方法はたくさんあるはず。

 

io.Readerの変数名がpngとかそういう細かいところがちょっとね。

 

package main

import (
    "fmt"
    "io"
    "strings"
    "image/png"
    "image"
    "os"
    "strconv"
)

func CountColor(pngdata io.Reader) int {
    var dd image.Image
    var err os.Error
    var w int
    var h int
    var x int
    var y int
    var cc image.Color
    var cr uint32
    var cg uint32
    var cb uint32
    var ca uint32
    var st string
    var colorlist map[string] int

    dd, err = png.Decode(pngdata)

    if ( err == nil ) {
        w = dd.Bounds().Max.X
        h = dd.Bounds().Max.Y

        colorlist = make(map[string] int)

        for y = 0; y < h; y++ {
            for x = 0; x < w; x++ {
                cc = dd.At(x,y)
                cr, cg, cb, ca = cc.RGBA()

                st = strconv.Uitoa((uint)(cr&0xff))
                st += strconv.Uitoa((uint)(cg&0xff))
                st += strconv.Uitoa((uint)(cb&0xff))
                st += strconv.Uitoa((uint)(ca&0xff))

                colorlist[st] += 1
            }
        }
    }

    return len(colorlist)
}

広告

About sato_c

小学生の頃にインベーダーゲームやPC-8001やApple][といったものを知ってしまい、それ以降ずーっとゲーム好き。でも、あんまりうまくはありません。 仕事は当初はゲーム関係のプログラムやサウンドをやっていましたが、WEB関係を通ったあと、遊技機関係のプログラムやサウンドをやっています。あまり節操がないのか。 現在はJavaですてきなコードを書けるように勉強中。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。