電波ビーチ

☆(ゝω・)v

vimのMarkdownプレビューをPrevimに変えた

or3.hatenablog.com

昨日作った環境がなぜか今日になると動かず、:MarkdownPreviewが一切使えなくなっていた。一度消してからインストールし直してもダメ。 非常に残念だけど5時間くらい余裕でかけて無駄だったので別のPrevimっていうプラグインを使うことにします。いまのところ動いている。

github.com

気力が削がれてしまった。いつになったらコードを書けるんだよ(と、やらない理由を探すのはやめたい

vimはじめ

あらすじ

町外れの森に暮らすまじないばばあがある日ぼくにこう言ったんだ。

vimをやれ。サーバサイドをいじるとき役に立つ』

続きを読む

Goのsortパッケージを少し調べた

組込みじゃないんかい

Goは素晴らしい言語なのでソートのためにsortパッケージを呼ぶことができるのです。手間かけてimportしたソートにはぬくもりがありますね。

sortパッケージはこちら。

src/sort/sort.go - The Go Programming Language

続きを読む

Sliceをコピーするときcopyじゃなくてappendを使うとなにも考えずに済む

Goでスライスをコピーする関数があります。

func copy(dst, src []Type) int

戻り値は「コピーが成功した要素の数」です。

注意点として、dstsrcの長さが短いほうのぶんだけしかコピーされません。なので、

arr := []int{1, 2, 3}
tmp := []int{}
copy(tmp, arr)

は、len(tmp) == 0なので、最大コピー数は0、つまりコピーなんてされません。

fmt.Println(tmp)    //    []
fmt.Println(arr)    //    [1 2 3]

解決策として、予めコピー元のサイズを求めてmakeしておく手がありますが、書くのめんどくせぇです。

// あらかじめサイズを確保して作っておく
tmp := make([]int, len(arr))
copy(tmp, arr)

愚直です。

空のスライスにコピー元をまるごとappendで追加したやつが1行も短く書けます。

tmp := append([]int{}, arr...)

速度とかは知りません。

Goでfloat値を小数点以下n位まで出力する

調べても見つからなかったんだけど、書式指定子なんてみんな同じノリだろという感じで適当にC言語の書き方をしたらいけた。

a := 156.0/46.0
fmt.Println(a)
fmt.Printf("%f\n", a)
fmt.Printf("%.4f\n", a)     //小数点以下4桁まで
fmt.Printf("%10.3f\n", a)   //右詰め・小数点以下3桁まで
fmt.Printf("%010.5f\n", a)  //ゼロ埋め・右詰め・小数点以下5桁まで
>>> 3.391304347826087
>>> 3.391304
>>> 3.3913
>>>     3.391
>>> 0003.39130

GoでCompetitive Programming用途のUtilityみたいなやつ

とりあえず空白区切りでの入力と一行をスライスとして得るのとそのうちでmin/maxをとるやつ。 どんどん更新してるので履歴はgistからどうぞ

メソッドチェーン的なのができないのはGenericsが無いかららしいんですが、pythonC#LINQにお世話になってきているのですごいめんどくさい。 [2018/04/16]追記参照
コメントアウトしてあるやつは予めいくつの要素が与えられるかわからない場合のやつで、AOJでみかけたりするやつ用として最初に作りました。pythonだとそもそもlis = list(map(int, input().split()))とかでいくつ要素あるか知っていても一気にとってしまう事が多いのですが、goではそもそも使われてない変数とかあると怒られるので積極的に使っていこうという姿勢です。
あと疑似デフォルト引数的に構造体にフィールドをまとめるみたいなやつも使えます。競プロで使うには冗長になりすぎるので今回は使わなかったです

otiai10.hatenablog.com

追記:2018/01/09 12:24
gistにおいてあります。早速更新してroundを付け足しました

追記:2018/04/16 10:08

ツッコミありがとうございます。よくわかってないままノリで書きました。どこを参照したか覚えてないので参照ページを付記することの重要性を改めて思いました。まだよくわかってないので分かるか誰か教えてくれる人に教えていただけるまで消しときます。