// 夺宝大赛 hunt
from std import console.*
from std import convert.*
from std import collection.*
from std import math.*
from std import format.*
//import std.format.*
//import std.math.*
//import std.collection.*
//import std.console.*
//import std.convert.*
//判断输入的字符串是否为空。
func getOrThrow(p: ?String): String{
match (p) {
case Some(x) => x
case None => ""
}
}
//判断输入的字符串是否为数字。返回真假。
func isNumber(number_string :String):Bool{
var number_rune :Array<Rune>=number_string.toRuneArray()
for(number in number_rune){
if(!number.isAsciiNumber()){
return false
}
}
return true
}
//获取输入的数字字符串。返回字符串。
func getInputNumber():String{
var input=Console.stdIn.readln()
let input_to_strig: Option<String> = input
var input_to_strig_to :String=getOrThrow(input_to_strig)
if(isNumber(input_to_strig_to)){
return input_to_strig_to
}
return ""
}
//获取输入的字符串。返回字符串。
func getInputString():String{
var input=Console.stdIn.readln()
let input_to_strig: Option<String> = input
var input_to_strig_to :String=getOrThrow(input_to_strig)
return input_to_strig_to
return ""
}
//获取m和n。
func getMandN(temp :String):Array<Int64>{
//println("temp = ${temp}")
if(temp.size>0){
var tempArray :Array<String> =temp.split(" ",118,)
if(tempArray.size==2){
var m:Int64=Int64.parse(tempArray[0])
var n:Int64=Int64.parse(tempArray[1])
if(2<m && n<=100){
//println("m = ${m} n = ${n}")
return [m,n]
}
}
}
return []
}
func getLine(temp :String,n :Int64):Array<String>{
if(temp.size==2*n-1){
var tempArray :Array<String> =temp.split(" ",118,)
var tempA =Array<String>(n,item:"")
for(i in 0..tempArray.size){
tempA[i]=tempArray[i]
}
return tempA
}
return []
}
//清洗 划定游戏边界,没有进入边界的人都踢出
func getQingXi(temp :ArrayList<(Array<String>,Array<String>)>):ArrayList<Array>{
var arraylistLineKeyReal=ArrayList<Array<String>>()
var findIt:Array<String>=["",""]
var start:Array<String> =["",""]
var end:Array<String> =["",""]
for(i in 0..temp.size){
for(j in 0..temp[i][1].size){
if(temp[i][1][j]=="2"){
findIt[0]=i.toString()
findIt[1]=j.toString()
}
}
}
if(findIt[0].size>0&&findIt[1].size>0){
var boo :Bool=false
for(i in findIt[1]-1..:-1){
if(temp[findIt[0][1][i]]=="0"){
start[0]=findIt[0]
start[1]=temp[findIt[0][1][i]]
Boo=true
}
}
if(!boo){
for(i in Int64.parse(findIt[0]..=0:-1)){
for(j in temp[0][1].size..0:-1){
if(temp[i][1][j]=="0"){
start[0]=i.toString()
start[1]=j.toString()
boo=true
break
}
}
if(boo){
break
}
}
}
//end
boo =false
for(i in findIt[1]..temp[0][1].size){
if(temp[findIt[0][1][i]]=="0"){
end[0]=findIt[0]
end[1]=temp[findIt[0][1][i]]
Boo=true
}
}
if(!boo){
for(i in findIt[1]..temp[0].size){
for(j in 0..temp[0][1].size){
if(temp[i][1][j]=="0"){
end[0]=i.toString()
end[1]=j.toString()
boo=true
break
}
}
if(boo){
break
}
}
}
}
arraylistLineKeyReal.append(findIt)
arraylistLineKeyReal.append(start)
arraylistLineKeyReal.append(end)
return arraylistLineKeyReal
}
func move(x :String,y :String,ArrayList<(Array<String>,Array<String>)>):Array<String>{
}
func control(){
//输入游戏数据
var arrayMandN :Array<Int64> =getMandN(getInputString())
var arraylistLine=ArrayList<(Array<String>,Array<String>)>()
if(!arrayMandN.isEmpty()){
for(i in 0..arrayMandN[1]){
var tempArray:(Array<String>,Array<String>)=(["","","",""],getLine(getInputString(),arrayMandN[1]))
arraylistLine.append(tempArray)
}
}
println("arraylistLine 0 = ${arraylistLine[0][1]}")
println("arraylistLine 1 = ${arraylistLine[1][1]}")
//输入游戏人物数据
var gamerNumber:Int64=Int64.parse(getInputString())
var arrayGamer=ArrayList<Array<String>>()
if(gamerNumber>0&&gamerNumber<arrayMandN[0]*arrayMandN[1]/2){
for (i in 0..gamerNumber){
var tempGamer:Array<String> =getInputString().split(" ",118,)
arrayGamer.append([i.toString,tempGamer[0],tempGamer[1],"0",""])
}
}
//清洗游戏人物
var arrayGamerDell:ArrayList<Array<String>>=getQingXi(arraylistLine)
var arrayGamerReall=ArrayList<Array<String>>()
if(!arrayGamerDell.isEmpty()){
for(i in arrayGamer){
if(i[1]=>arrayGamerDell[1][0]&&i[1]<=arrayGamerDell[2][0]){
if(i[1]==arrayGamerDell[1][0]&&i[0]>arrayGamerDell[1][1]){
arrayGamerReall.append(i)
}else if(i[1]==arrayGamerDell[2][0]&&i[0]<arrayGamerDell[2][1]){
arrayGamerReall.append(i)
}else if(i[1]>arrayGamerDell[1][0]&&i[1]<arrayGamerDell[2][0]){
arrayGamerReall.append(i)
}
}
}
}
//开始游戏循环
if(!arrayGamerReall.isEmpty()){
while(true){
//判断游戏是否结束
var count =0
for(i arrayGamerReall){
if(i[1]==arrayGamerDell[0][1]&&i[2]==arrayGamerDell[0][0]){
count++;
i[4]="win"
}
}
if(count==1){
for(i in arrayGamerReall){
if(i[4]=="win"){
println("${i[0]} ${i[3]}")
break
}
}
}
i(count>1){
println("No winner.")
}
//开始启动
for(i in arrayGamerReall){
var temp:Array<String>=move()
}
}
}
}
main(){
control()
return 0
}
仓颉PAT程序设计 L3-037 夺宝大赛(cangjie)(1)
最新推荐文章于 2024-10-01 23:05:47 发布