php - PHP - 如何打印具有特定模式的字符串?(词搜索网格)
问题描述
我需要帮助来打印带有特定单词的字符串。这有点像字谜,它应该显示 SOFTWARESENI。任何人都可以给我一个解决这个问题的想法吗?
$string = "
S Q X C P R T M
R O M S P H P D E V C I
X N F P L Z M H R K N J
P D S T X R N D G E B Y
J Z D G W C W E S X
M B S C N A P E Q
Y Z D G Q V R D S";
$string_to_array = explode("\n", $string);
$i = 0;
foreach ($string_to_array as $key => $value) {
$per_string = explode(" ", $value);
$hasil[] = $per_string[$i];
$i++;
}
这是我的结果。
[0] => S
[1] => O
[2] => F
[3] => T
[4] => W
[5] => A
[6] => R
输出应该是 SOFTWARESENI。
解决方案
向下循环一次,向上循环一次,并通过比较 $col 和该行中的项目数来跟踪我们是否撞到“墙”。
// Preperations
$arr = explode("\n", $string);
foreach($arr as &$val){
$val = explode(" ", $val);
}
// start at:
$col=0;
for($row=0; $row<count($arr); $row++){
if($col >= count($arr[$row])) break; // stop if we reach the end
$word[] = $arr[$row][$col];
$col++;
}
// loop rows backwards
for($row=$row-2; $row>0; $row--){
if($col >= count($arr[$row])) break; // stop if we reach the end
$word[] = $arr[$row][$col];
$col++;
}
var_dump($word);
输出:
array(12) {
[0]=>
string(1) "S"
[1]=>
string(1) "O"
[2]=>
string(1) "F"
[3]=>
string(1) "T"
[4]=>
string(1) "W"
[5]=>
string(1) "A"
[6]=>
string(1) "R"
[7]=>
string(1) "E"
[8]=>
string(1) "S"
[9]=>
string(1) "E"
[10]=>
string(1) "N"
[11]=>
string(1) "I"
}
推荐阅读
- python - 如何从 vaderSentiment 获得更好的数据?
- springdoc - 我已经使用 springdoc 安装了 OpenAPI 3,但是 URL 很奇怪。我可以将其更改为预期值吗?
- java - 杰克逊注释问题
- windows - 通过 bat 文件或 cmd 远程启动/停止 Windows 服务
- google-bigquery - 在 Google bigquery 中创建多列数组
- javascript - 如何准确地使用 Java Script JSON.parse() 函数来平面显示文本?
- airflow - 云作曲家气流插件使用
- javascript - 在python文件中导入java.lang和java.util时没有识别机器人框架关键字
- javascript - 在角材料中调用属性吸气剂
- python - pandas groupby 一天中的时间,带 15 分钟的垃圾箱