競技プログラミングメモ(その1)


メモ

そもそも標準出力をどうするのか全然わからない
どうやってデバックすれば良いんだ・・・

テスト

標準出力]

7 1 3 6 7

let arr=readLine()!.characters.split{$0==" "}.map{Int(String($0))!}
let a=arr[0]
let b=arr[1]
print(a,b)
7 1

テスト2

7 1 3 6 7
.#..#..
let arr=readLine()!.characters.split{$0==" "}.map{Int(String($0))!}
let arr2=readLine()!.characters.map{$0}
let a=arr[0]
let b=arr[1]
print(arr,arr2)
[7, 1, 3, 6, 7] [".", "#", ".", ".", "#", ".", "."]

造りかけのコード

どうすればよかったのかさっぱりわからない・・・・

let arr=readLine()!.characters.split{$0==" "}.map{Int(String($0))!}
let Street=readLine()!.characters.map{$0}
let N=arr[0]
let A=arr[1]
let B=arr[2]
let C=arr[3]//すぬけのゴール
let D=arr[4]//ふぬけのゴール
var sunuke:Int = A - 1
var funuke:Int = B - 1

func isOneStep(people1:Int, people2:Int) -> Bool {
    guard people1 != people2 else {
        return false
    }

    if Street[people1+1] == "." {
        print("進めます")
        return true
    } else if Street[people1+1] == "#"{
        print("岩です")
        return false
    } else {
        print("なんかへんです")
        return false
    }
}

func isTwoStep(people1:Int, people2:Int) -> Bool {
    guard people1+2 != people2 else {
        print("ぶつかります")
        return false
    }
    if Street[people1+2] == "." {
        print("進めます")
        return true
    } else if Street[people1+2] == "#"{
        print("岩です")
        return false
    } else {
        print("なんか変です")
        return false
    }
}

while C - sunuke > 0 && D - funuke > 0 {
    //もしsunukeのほうがゴールより遠ければ
    if C - sunuke > D - funuke {
        print("/////すぬけのたーん/////")
        switch isTwoStep(sunuke,people2:funuke) {
            case true:
                print("trueでした")
                sunuke = sunuke + 1
                //もしどちらもゴールに辿り着いたら
                if sunuke == C && funuke == D {
                    print("Yes")
                }
                break
            case false:
                print("falseでした 一ステップきりかえ")
                switch isOneStep(sunuke,people2:funuke) {
                    case true:
                        print("2ステップは動けます")
                        sunuke = sunuke + 2
                        //もしどちらもゴールに辿り着いたら
                        if sunuke == C && funuke == D {
                            print("Yes")
                        }
                    case false:
                        print("2ステップめもうごけませんでした")
                        break
                }
        }
      print("/////すぬけのたーんおわり/////")
      print("/////ふぬけのたーん/////")
        switch isTwoStep(funuke,people2:sunuke) {
            case true:
                print("trueでした")
                funuke = funuke + 1
                //もしどちらもゴールに辿り着いたら
                if sunuke == C && funuke == D {
                    print("Yes")
                }
                break
            case false:
                print("falseでした 一ステップきりかえ")
                switch isOneStep(funuke,people2:sunuke) {
                    case true:
                        print("2ステップは動けます")
                        funuke = funuke + 2
                        //もしどちらもゴールに辿り着いたら
                        if sunuke == C && funuke == D {
                            print("Yes")
                        }
                    case false:
                        print("2ステップめもうごけませんでした")
                        break
                }
        }
      print("/////ふぬけのたーんおわり/////")
    }

    if D - funuke > C - sunuke {
        print("/////ふぬけのたーん/////")
        switch isTwoStep(funuke,people2:sunuke) {
            case true:
                print("trueでした")
                funuke = funuke + 1
                //もしどちらもゴールに辿り着いたら
                if sunuke == C && funuke == D {
                    print("Yes")
                }
                break
            case false:
                print("falseでした 一ステップきりかえ")
                switch isTwoStep(funuke,people2:sunuke) {
                    case true:
                        print("2ステップは動けます")
                        funuke = funuke + 2
                        //もしどちらもゴールに辿り着いたら
                        if sunuke == C && funuke == D {
                            print("Yes")
                        }
                    case false:
                        print("2ステップめもうごけませんでした")
                        break
                }
        }
    }
}