为了账号安全,请及时绑定邮箱和手机立即绑定

交通灯系统行为——黑客排名代码挑战

交通灯系统行为——黑客排名代码挑战

PHP
汪汪一只猫 2021-10-08 13:02:17
模拟交通灯系统的 CLI 脚本行为:1) 06:00-23:00绿灯亮 30 秒绿灯和黄灯 5 秒红色 40 秒回到绿色2) 23:00-06:00期间黄灯闪烁(关闭 2 秒/开启 1 秒)预期输出:每秒当前灯光的文本表示
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

<?php

if (PHP_SAPI !== 'cli') exit("Not allowed here..");


$hour   = date("H");


while (true) {

    // 6am to 11pm

    if($hour >= 6 && $hour < 23){

        $j = 30;

        for ($i=0; $i < $j; $i++) { 

            echo "green light [".($i+1)."]\n";

            sleep(1);

        }

        $j = 5;

        for ($i=0; $i < $j; $i++) { 

            echo $i%2 ? "green" : "yellow";

            echo " light [".($i+1)."]\n";

            sleep(1);

        }

        $j = 40;

        for ($i=0; $i < $j; $i++) { 

            echo "red light [".($i+1)."]\n";

            sleep(1);

        }

    }


    if($hour < 6 || $hour >= 23){

        $j = 2;

        for ($i=0; $i < $j; $i++) { 

            echo "yellow light off [".($i+1)."]\n";

            sleep(1);

        }

        $j = 1;

        for ($i=0; $i < $j; $i++) { 

            echo "yellow light on [".($i+1)."]\n";

            sleep(1);

        }

    }

}

:-D


添加了更新 cli 输出而不是打印新行的不同版本。


<?php

if (PHP_SAPI !== 'cli') exit("Not allowed here..");


$hour   = date("H");


echo "Light |State|Sec\n";

while(true){

    // 6am to 11pm

    if($hour >= 6 && $hour < 23){

        $j = 30;

        for ($i=0; $i < $j; $i++) { 

            output("green","on",$i+1);

        }

        $j = 5;

        for ($i=0; $i < $j; $i++) { 

            $ltcol = $i%2 ? "green" : "yellow";

            output($ltcol,"on",$i+1);

        }

        $j = 40;

        for ($i=0; $i < $j; $i++) { 

            output("red","on",$i+1);

        }

    }

    // 11pm to 6am

    if($hour < 6 || $hour >= 23){

        $j = 2;

        for ($i=0; $i < $j; $i++) { 

            output("yellow","off",$i+1);

        }

        $j = 1;

        for ($i=0; $i < $j; $i++) { 

            output("yellow","on",$i+1);

        }

    }

}


function output($light,$state,$sec){

    $str = str_pad($light, 6, ' ', STR_PAD_RIGHT).' '.str_pad($state, 5, ' ', STR_PAD_RIGHT).' '.str_pad($sec, 2, ' ', STR_PAD_RIGHT);

    echo "\033[16D";

    echo $str;

    sleep(1);

}


查看完整回答
反对 回复 2021-10-08
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

<?php

if (PHP_SAPI !== 'cli') exit("Not allowed here..");


$hour   = date("H");


while (true) {

// 6am to 11pm

if($hour >= 6 && $hour < 23){

    $j = 30;

    for ($i=0; $i < $j; $i++) { 

        echo "green light [".($i+1)."]\n";

        sleep(1);

    }

    $j = 5;

    for ($i=0; $i < $j; $i++) { 

        echo $i%2 ? "green" : "yellow";

        echo " light [".($i+1)."]\n";

        sleep(1);

    }

    $j = 40;

    for ($i=0; $i < $j; $i++) { 

        echo "red light [".($i+1)."]\n";

        sleep(1);

    }

}


if($hour < 6 || $hour >= 23){

    $j = 2;

    for ($i=0; $i < $j; $i++) { 

        echo "yellow light off [".($i+1)."]\n";

        sleep(1);

    }

    $j = 1;

    for ($i=0; $i < $j; $i++) { 

        echo "yellow light on [".($i+1)."]\n";

        sleep(1);

    }

}

}


查看完整回答
反对 回复 2021-10-08
  • 3 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信