我目前正在学习PHP (初学者编程),我被困在试图为以下基本问题找到解决方案.
这是一个“拆除炸弹”的游戏,下面的规则只适用于下一个割线:
如果你切断一根白色电缆,你就不能切断白色或黑色电缆。如果你剪一根红色的电缆,你必须剪一根绿色的,如果你剪一根黑色的电缆,它不允许切割一根白色、绿色或橙色的电缆--如果你剪一根橙色的电缆,你应该剪一条红色或黑色的电缆--如果你剪一根绿色的电缆,你必须剪一条橙色或白色的电缆--如果你切割一根紫色的电缆,你不能剪一根紫色的、绿色的、橙色的或白色的电缆。
输入如下..。
白色,红色,绿色,白色
因此,我将这些数据排列成一个关联数组,其中包含了有效的下一个裁剪。我将输入字符串转换为数组。如何使用这个关联数组来检查输入数组中的下一个线切割是否有效?
function bombDefuseValidation($inputString) {
$input = $inputString;
$inputExplodedArray = explode(", ", $input);
//$inputExplodedArray = array('white', 'red', 'green', 'white');
$inputExplodedArrayLength = count($inputExplodedArray);
//Valid next cuts
$rules = array(
"white" => "red, green, orange, purple",
"red" => "green",
"black" => "red, purple, black",
"orange" => "red, black",
"green" => "orange, white",
"purple" => "red, black"
);
}
bombDefuseValidation('white, red, green, white');我需要一种接受输入的方法,比如'white',检查下面的输入('red')是否作为一个值存在于关联数组的'white‘键中,如果是这样的话,转到下一个输入并继续检查。如果它们都匹配到相应键中的值,炸弹就会被拆除。如果没有,“砰”。
谢谢你的帮助!
发布于 2017-01-09 18:50:16
如果你使用Array(),那就容易多了!
function bombDefuseValidation($inputArray) {
$inputExplodedArrayLength = count($inputArray);
//Valid next cuts
$rules = array(
"white" => array("red", "green", "orange", "purple"),
"red" => array("green"),
"black" => array("red", "purple", "black"),
"orange" => array("red", "black"),
"green" => array("orange", "white"),
"purple" => array("red", "black")
);
for ($i = 0; $i < $inputExplodedArrayLength-1 ; $i++) {
$temp = $rules[$inputArray[$i]];
if(!in_array($inputArray[$i+1], $temp)) {
$num = $i + 2;
print("Invalid Input no. {$num}");
return -1;
}
}
print("Valid Input");
return 0;
}
bombDefuseValidation(Array('white', 'red', 'green', 'white'));https://stackoverflow.com/questions/41554666
复制相似问题