มาลองเขียนโค้ดแก้โจทย์ปัญหาด้วยการวนลูปกันดูครับ
ด้านล่างนี้คือโค้ดเริ่มต้นที่ผมมีให้ครับ ลองไปต่อกันดู หรือถ้าใจร้อน จะเลื่อนลงไปล่างสุดเพื่อดูโค้ดที่ผมเขียนเอาไว้เลยก็ย่อมได้ ^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. ความยาวของหนอนตัวสุดท้ายที่ต่างกันกับภาพอื่นๆ
ความคิดเห็น
แสดงความคิดเห็น