我有一个用螺旋算法排序的坐标列表.我需要从该区域的中间开始并"触摸"任何坐标.
为了简化这一点,表示(未排序的)坐标列表(x,y在后面的图像上标有"点").
此处提供CSV坐标列表.
X从左向右
增加Y从TOP增加到BOTTOM
每个坐标不与下一个坐标相邻,而是由1或2个骰子(在某些情况下为更多)进行干扰.
从该区域的中心开始,我需要通过螺旋运动触摸任何坐标:

解析我已经起草这个PHP算法的每个坐标:
//$missing is an associative array having as key the coordinate "x,y" to be touched
$direction = 'top';
$distance = 1;
$next = '128,127'; //starting coordinate
$sequence = array(
$next;
)
unset($missing[$next]);
reset($missing);
$loopcount = 0;
while ($missing) {
for ($loop = 1; $loop <= 2; $loop++) {
for ($d = 1; $d <= $distance; $d++) {
list($x,$y) = explode(",", $next);
if ($direction == 'top') $next = ($x) . "," . ($y …Run Code Online (Sandbox Code Playgroud) 是否可以使用不同的权限运行自定义bash功能?
#!/bin/bash
function RunStefano() {
while [ 1 ]; do
echo "Ciao, ´/usr/bin/whoami´"
sleep 10;
done &
}
export -f RunStefano;
echo "Welcome, ´/usr/bin/whoami´"
sudo -u stefano -c "RunStefano"
Run Code Online (Sandbox Code Playgroud)
如果我用'root'用户运行这个脚本,我想收到输出:
Welcome, root
Ciao, stefano
(...)
Ciao, stefano
Run Code Online (Sandbox Code Playgroud)
它可能吗?
我有一个字符串描述像这样的nxm元素矩阵:
§inputmap = "
~~~~~~~~~~~~~~~~~~~~B~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~BBB........BBB~~~~~~~~~~~~~
~~~~~~~~~~BB...............FBB~~~~~~~~~~
~~~~~~~~BB....................BB~~~~~~~~
~~~~~~BB.....F..................BB~~~~~~
~~~~~BB.....................F.....B~~~~~
~~~~B..............................B~~~~
~~~B........F.......................B~~~
~~BB.........F......................BB~~
~~B................F.................BB~
~BF....F....F........................FB~
~B.....................................B
B.....................................FB
B........F......F......................B
B...........................F..........B
B......................................B
B......................................B
B.......F.......................F......B
B......FFF.............................B
B.......F.............................FB
~B..................F.................FB
~BF...........................F.......B~
~~B...F...........F..........FFFFF.F.BB~
~~BB..................F..F....F.....BB~~
~~~B.......................FF.FF....B~~~
~~~~B..............................B~~~~
~~~~~BB...........................B~~~~~
~~~~~~BB........................BB~~~~~~
~~~~~~~~BB..........F..........B~~~~~~~~
~~~~~~~~~~BB................BB~~~~~~~~~~
~~~~~~~~~~~~~BBB.......F.BBB~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~BBBBBB~~~~~~~~~~~~~~~~~
";
$inputmap = trim($inputmap);
Run Code Online (Sandbox Code Playgroud)
我需要构建一个正则表达式(或其他东西)来搜索字符串:
$search = "
*F*
FFF
*F*
";
$search = trim($search);
Run Code Online (Sandbox Code Playgroud)
在整个网格上.另一方面,我需要找到一个5个不同字母"F"的图案(垂直3个,水平3个),回到地图上找到的图案的行/列位置.
考虑到输入矩阵可以是不同的(5x5或10x10或20x25或......),有没有办法解决我的PHP和正则表达式的问题?
我有php fsockopen命令的问题.
我需要在服务器上打开套接字连接以实现消息交换.如果服务器没有从我的(客户端)端收到任何东西,它会在一定的超时后关闭连接(我不知道我不能改变).
问题是......我怎么知道几分钟前套接字是否仍然存在?
这是我用来打开连接的脚本
$socket = fsockopen("automation.srv.st.com", 7777, $errno, $errstr);
if ($socket === false) {
echo "Unable to open Socket. Error {$errno} : {$errstr}\n";
die();
}
$status = stream_get_meta_data($socket);
print_r($status);
Run Code Online (Sandbox Code Playgroud)
它打印出来
Array
(
[stream_type] => tcp_socket/ssl
[mode] => r+
[unread_bytes] => 0
[seekable] =>
[timed_out] =>
[blocked] => 1
[eof] =>
)
Run Code Online (Sandbox Code Playgroud)
然后写入服务器的每条消息......
fwrite($socket, $message);
Run Code Online (Sandbox Code Playgroud)
...我在200ms内收到反馈:
$answer = fread($socket, 1024);
Run Code Online (Sandbox Code Playgroud)
但是如果我的脚本花了30分钟没有向服务器发送任何消息(因为它没有任何通信),那么服务器会自动关闭连接,我无法理解如何在重新实例化新连接之前检查它:
如果尝试过
if ($socket) echo "The socket is still having a valid resource\n";
Run Code Online (Sandbox Code Playgroud)
但这会回复我的$ socket仍然是一个有效的流资源
我试过了
$status = stream_get_meta_data($socket); …Run Code Online (Sandbox Code Playgroud) 我在 bash 脚本上遇到了一个问题,即: - 在系统启动时或按需由“root”执行 - 运行具有“stefano”权限的脚本 - 如果由“root”或“/”触发,则重定向日志文件上的输出dev/stdout" 如果由 "stefano" 触发:
#!/bin/bash
[ "$1" == "log" ] && log="$2" || log="/dev/stdout"
if [ "`/usr/bin/whoami`" != "stefano" ]; then
echo "You are not allowed"
exit 9
fi
runuser -s /bin/bash stefano -c "echo I am Stefano >> $log"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我得到一个 bash: /dev/stdout: Permission denied
如果命令由 root 触发,为什么用户“stefano”无法在 /dev/stdout 上写入?
显然作为stefano> echo "I am Stefano" >> /dev/stdout没有得到任何错误。
在此先感谢您的帮助!Stefano, 米兰, 意大利
我知道很可能这样的问题已被多次请求但我需要在触发javascript函数时显示弹出窗口或消息或whatelse并在最后隐藏它.
看到这个简单的小提琴
这是HTML代码:
<div id='message'>Default message</div>
<input type='button' onclick='Run();' value='start'>
Run Code Online (Sandbox Code Playgroud)
div'消息'必须包含一个简单的文本,如"跑步"或"请等待"或......
这是JS(延迟)3秒的功能:
function Run() {
var delay = 3000; //-- 3 seconds
$( '#message' ).text('Please wait ' + delay + ' seconds...');
var start = new Date().getTime();
while (true) {
current = new Date().getTime();
if ( (start + delay) < current) {
break;
}
}
$( '#message' ).text('Done');
}
Run Code Online (Sandbox Code Playgroud)
预期的行为是'#message'div包含"请等待3秒......"才能进入循环,而"Done"字符串仅包含在结尾处.
但事实并非如此.任何人都可以解释我(最有可能"再次")为什么或建议一个链接在哪里找到答案?
php ×3
bash ×2
asynchronous ×1
coordinates ×1
fsockopen ×1
javascript ×1
jquery ×1
regex ×1
sockets ×1
sorting ×1
spiral ×1
sudo ×1