昨日作った環境がなぜか今日になると動かず、:MarkdownPreview
が一切使えなくなっていた。一度消してからインストールし直してもダメ。
非常に残念だけど5時間くらい余裕でかけて無駄だったので別のPrevimっていうプラグインを使うことにします。いまのところ動いている。
気力が削がれてしまった。いつになったらコードを書けるんだよ(と、やらない理由を探すのはやめたい
昨日作った環境がなぜか今日になると動かず、:MarkdownPreview
が一切使えなくなっていた。一度消してからインストールし直してもダメ。
非常に残念だけど5時間くらい余裕でかけて無駄だったので別のPrevimっていうプラグインを使うことにします。いまのところ動いている。
気力が削がれてしまった。いつになったらコードを書けるんだよ(と、やらない理由を探すのはやめたい
町外れの森に暮らすまじないばばあがある日ぼくにこう言ったんだ。
『vimをやれ。サーバサイドをいじるとき役に立つ』
続きを読むGoは素晴らしい言語なのでソートのためにsort
パッケージを呼ぶことができるのです。手間かけてimportしたソートにはぬくもりがありますね。
sortパッケージはこちら。
src/sort/sort.go - The Go Programming Language
続きを読むそういえばやったことなかったので。n*mだとこういう感じです
graph := make([][]string, n) for i:=0; i<n; i++{ graph[i] = make([]string, m) }
Goでスライスをコピーする関数があります。
func copy(dst, src []Type) int
戻り値は「コピーが成功した要素の数」です。
注意点として、dst
とsrc
の長さが短いほうのぶんだけしかコピーされません。なので、
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...)
速度とかは知りません。
調べても見つからなかったんだけど、書式指定子なんてみんな同じノリだろという感じで適当に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
とりあえず空白区切りでの入力と一行をスライスとして得るのとそのうちでmin/maxをとるやつ。
どんどん更新してるので履歴はgistからどうぞ
メソッドチェーン的なのができないのはGenericsが無いかららしいんですが、pythonやC#のLINQにお世話になってきているのですごいめんどくさい。 [2018/04/16]追記参照
コメントアウトしてあるやつは予めいくつの要素が与えられるかわからない場合のやつで、AOJでみかけたりするやつ用として最初に作りました。pythonだとそもそもlis = list(map(int, input().split()))
とかでいくつ要素あるか知っていても一気にとってしまう事が多いのですが、goではそもそも使われてない変数とかあると怒られるので積極的に使っていこうという姿勢です。
あと疑似デフォルト引数的に構造体にフィールドをまとめるみたいなやつも使えます。競プロで使うには冗長になりすぎるので今回は使わなかったです
追記:2018/01/09 12:24
gistにおいてあります。早速更新してroundを付け足しました
追記:2018/04/16 10:08
“メソッドチェーン的なのができないのはGenericsが無いから” ← そのりくつはおかしい / “GoでCompetitive Programming用途のUtilityみたいなやつ - 田舎の高卒底辺フリーターがエンジニアを…” https://t.co/PFSiuQT5uX
— 全年齢リツイート先生 (@otiai10) 2018年1月9日
ツッコミありがとうございます。よくわかってないままノリで書きました。どこを参照したか覚えてないので参照ページを付記することの重要性を改めて思いました。まだよくわかってないので分かるか誰か教えてくれる人に教えていただけるまで消しときます。