初心者(私)がやるバグをしばし紹介
以前少しは習得したはずだけど1年以上放置していればまあ忘れます。
./Answer.go:4:8: imported and not used: "bufio"
使ってないインポートでエラー
./Answer.go:5:8: imported and not used: "strings"
最初のサンプルにすでに2つエラーがある
./Answer.go:29:22: undefined: os
fmt.Fprintln(os.Stderr, 5,"Debug messages...")
標準エラーに2つの形式をそのまま表示できるか試す
カラムまで教えてくれるのはいいかも
./Answer.go:29:22: undefined: os
fmt.Fprintln(os.Stderr, "Debug messages...")
最初のサンプルのコメントアウトでエラーとは
import "os"
これがなかったらしい
最初にトライしてみた方も動く
fmt.Fprintln(os.Stderr, 5,"Debug messages...")
fmt.Scan(&width, &height, &myId)
最初から見ないでいた。この & あまりいい未来が見えない
go言語、なにがいいのか調べてみると
並列処理に向いている
速度が速い
速度のため、あえて最新を取り入れていない
googleだから安心
といった内容
個人的には、速度が速いはマル。
いかん1時間もたっていないのに速攻で捨てようとしている
サッカー漫画の桐木くんもびっくりだ
もう少し頑張ってみよう
./Answer.go:18:15: type []string is not an expression
mp := [] string
配列定義に失敗{}も必要
mp := [] string{}
for i := 0; i < height; i++ {
var row string
fmt.Scan(&row)
mp = append(mp, row)
}
fmt.Fprintln(os.Stderr, mp)
標準で配列も出力できる
[...12...21... .X.X0X2X0X.X. .010..1..0100 2X1X2X.X2X1X2 1...........1 .X.X2X2X2X.X. 1...........1 2X1X2X.X2X1X2 0010..1..010. .X.X0X2X0X.X. ...12...21...]
区切り文字はスペース
次に配列の一部を変更できるか
Standard Error Stream:
./Answer.go:25:11: non-name mp[1] on left side of :=
mp[1]:="55555"
ここは=
mp[1]="55555"
[..0022.2200.. 55555 2..210.012..2 .X0X1X1X1X0X. .20.11111.02. .X2X.X.X.X2X. .20.11111.02. .X0X1X1X1X0X. 2..210.012..2 .X.X.X1X.X.X. ..0022.2200..]
さてそれではこのピンポイント取れるか?
fmt.Fprintln(os.Stderr, mp)
fmt.Fprintln(os.Stderr, mp[5][2:6])
[...222.222... 55555 .0.1.222.1.0. 1X0X1X0X1X0X1 1....0.0....1 2X.X0X.X0X.X2 1....0.0....1 1X0X1X0X1X0X1 .0.1.222.1.0. .X1X0X0X0X1X. ...222.222...]
.X0X
なかなかやる
これならどうだー
mp[5][5]="5"
./Answer.go:27:17: cannot assign to mp[5][5]
まあPythonでもできないし、それならこれは
mp[5]= mp[5][0:5]+"5"+mp[5][6:]
fmt.Fprintln(os.Stderr, mp[5])
0X0X05.X0X0X0
これぐらいできるなら、実装できそうな気はする
構造体も必要なので
type Unit struct {
entityType, owner, x, y, param1, param2 int
}
u=Unit{entityType, owner, x, y, param1, param2}
./Answer.go:34:13: undefined: u
u:=Unit{entityType, owner, x, y, param1, param2}
最終的に作ったもの
go言語の特徴と思える所を赤にしてみました。
package main
import "fmt"
import "os"
//import "bufio"
//import "strings"
type Unit struct {
entityType, owner, x, y, param1, param2 int
}
func main() {
var width, height, myId int
fmt.Scan(&width, &height, &myId)
for {
mp := [] string{}
for i := 0; height > i; i++ {
var row string
fmt.Scan(&row)
mp = append(mp, row)
fmt.Fprintln(os.Stderr, row)
}
var entities int
fmt.Scan(&entities)
u:=[] Unit{}
for i := 0; entities > i; i++ {
var entityType, owner, x, y, param1, param2 int
fmt.Scan(&entityType, &owner, &x, &y, ¶m1, ¶m2)
u = append(u,Unit{entityType, owner, x, y, param1, param2})
}
for i :=0; len(u) > i; i++{
fmt.Fprintln(os.Stderr, u[i])
}
fmt.Println("BOMB 6 5")// Write action to stdout
}
}
ここまでで今回は終了
これでなければというのがないと、なかなか続けにくい
( 半角の”<”はタグと認識されるのでプログラムはあえて逆にしています)
¶これは半角の&paraが変換されてしまったらしい。
この & あまりいい未来が見えない
予言が的中してしまった。