PHP - มาลองเขียนโค้ดแก้โจทย์ปัญหาด้วยการวนลูปหาค่าตัวแปรแต่ละตัว

โดย CyberMAN

มาลองเขียนโค้ดแก้โจทย์ปัญหาด้วยการวนลูปกันดูครับ


ด้านล่างนี้คือโค้ดเริ่มต้นที่ผมมีให้ครับ ลองไปต่อกันดู หรือถ้าใจร้อน จะเลื่อนลงไปล่างสุดเพื่อดูโค้ดที่ผมเขียนเอาไว้เลยก็ย่อมได้ ^O^

<?php
$worm     = 7;
$clock     = 6;
$flower = 2;


$check1 = ($worm + $worm + $worm == 21);
$check2 = ($clock + $clock + $worm == 19);
$check3 = ($flower + $clock + $worm == 15);

$result = "???";

echo "<br/>$worm + $worm + $worm = 21 (", $check1 ? 'true' : 'false',")";
echo "<br/>$clock + $clock + $worm = 19 (", $check2 ? 'true' : 'false', ")";
echo "<br/>$flower + $clock + $worm = 15 (", $check3 ? 'true' : 'false', ")";

if($check1 == true && $check2 == true && $check3 == true){
    $result = "($worm-$flower) + ($flower *2) * $clock = <b>".( ($worm-$flower) + ($flower *2) * $clock) . "</b>";
}

echo "<br/>Result : ", $result, "";
?>




จากโค้ด PHP ด้านบนนี้ ถ้าเรากำหนดตัวแปรให้เป็นดังต่อไปนี้

$worm     = 7;
$clock     = 6;
$flower = 2;

เมื่อลองรันดู จะปรากฏผลลัพธ์ออกมา คือ 29
แต่กรณีที่เราเดายังไงก็ไม่ถูก จะมีวิธีเขียนอย่างไรเพื่อหาค่าของตัวแปรแต่ละตัว

และนี่คือโค้ด PHP สำหรับใช้หาคำตอบโดยใช้การวนลูปด้วย While() ครับ


<?php
header('Content-Type: text/html; charset=utf-8');

$worm = 0;
$clock = 0;
$flower =0;

$worm_result_title = '';
$clock_result_title = '';
$flower_result_title = '';
$result_title = '';

$check = false;
$loop = 0;
while($check == false){//วนจนกระทั่งได้คำตอบ
    $loop++;
   
    //คำนวณผลลัพธ์จากตัวเลขที่กำหนด
    $result1 = $worm + $worm + $worm;
    $result2 = $clock + $clock + $worm;
    $result3 = $flower + $clock + $worm;
   
    //ตรวจคำตอบแต่ละตัว
    $check_worm = (bool)($result1 == 21);
    $check_clock = (bool)($result2 == 19);
    $check_flower = (bool)($result3 == 15);
   

    //ตรวจสอบตัวแปรหนอน
    if($check_worm == true){
       
        if($worm_result_title == ''){//เก็บค่าครั้งเดียว
            $worm_result_title = "<br/>รอบที่ $loop : Worm = $worm + $worm + $worm = $result1";
        }
       
        //ตรวจสอบตัวแปรนาฬิกา
        if($check_clock == true){
           
            if($clock_result_title == ''){//เก็บค่าครั้งเดียว
                $clock_result_title = "<br/>รอบที่ $loop : Clock = $clock + $clock + $worm => $result2";
            }
           
            //ตรวจสอบตัวแปรสุดท้าย
            if($check_flower == true){
                $flower_result_title = "<br/>รอบที่ $loop : Flower = $flower + $clock + $worm => $result3";
            }else{
                $flower++;
            }
        }else{
            $clock++;
        }
    }else{//ถ้ายังไม่ถูก วนลูปต่อไป
        $worm++;
    }
       
    //ตรวจสอบคำตอบรวม
    if($check_worm == true && $check_clock == true && $check_flower == true){
       
        $check = true;//ห้ามลืมบรรทัดนี้ ไม่งั้นอยู่ในเขาวงกต ออกจาก Loop While ไม่ได้!!
       
        $result_title .= "<br/><b>Result = ($worm-$flower) + ($flower x 2) x $clock = ". ( ($worm-$flower) + ($flower *2) * $clock) . "</b>";   
    }
   
    //ป้องกัน  Overhead
    if($loop > 1000){
        $result_title .= '<br/>เกิน 1000 รอบแว้ววววววว';
        break;
    }
}

echo '<h1>ตัวอย่างการวนลูป หาค่าในตัวแปรแต่ละตัว</h1>';
echo '<img src="images/examp01.jpg" width="300"><br/>';
echo $worm_result_title;
echo $clock_result_title;
echo $flower_result_title;
echo "<br/>", $result_title;
?>

ขอให้ทุกท่านมีความสุข และสนุกกับการเขียนโปรแกรมนะครับ ^^



ปล.  โค้ดนี้ยังไม่ได้ปรับปรุงเพิ่มในส่วนของข้อสังเกตเรื่อง
1. เข้มนาฬิกาที่เปลี่ยนไปที่เลข 5
2. ความยาวของหนอนตัวสุดท้ายที่ต่างกันกับภาพอื่นๆ





PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/