|
|
|
สอบถามเรื่อง วนลูปหน่อยครับ งมมาหลายวันแล้วยังไม่ได้เลย |
|
|
|
|
|
|
|
มันมีแนวคิดยังไงครับ ?
|
|
|
|
|
Date :
2014-09-06 18:39:34 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
for($i=1;$i<=4444;$i++){
if($i<=4){
echo"$i<br>";
}
if($i>=10){
$a=substr($i,strlen($i)-2,1);
$b=substr($i,strlen($i)-1,1);
if($a==1 and $b>=2 and $b<=4){
echo"$i<br>";
}
if($a>=2 and $b<=4 and $a<=$b){
echo"$i<br>";
}
}
}
?>
|
|
|
|
|
Date :
2014-09-07 01:37:57 |
By :
chai19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
แต่ถ้าทำให้มันเรียงตามเป็นตัวอักษรให้ด้วยจะเป็นพระคุณอย่างสูงครับ
หลักการเดียวกัน
a
b
c
d
aa
ab
ac
ad
bb
bc
bd
cc
cd
dd
aaa
aab
......
dddd
ขอบคุณครับ
ตอนเขียนเป็นตัวเลขผมพิมพ์ตกไปครับตามจริงมันต้องมีตัวซ้ำกันเช่น
11
12
13
14
22
23
24
หลักการก็คือให้มันเรียงลำดับของตัวเลขหรือตัวอักษรครับ
ตัวที่มีค่าเหมือนกันไม่ต้องแสดง
เช่น 12 , 21 ให้ 21 ไม่ต้องแสดงเพราะมี 12 แล้ว ประมาณว่า ถ้าเอา 1 คูณกับ 2 หรือ 2 คูณกับ 1 ก็มีค่าเท่ากันครับ
|
ประวัติการแก้ไข 2014-09-07 06:54:08 2014-09-07 07:02:42
|
|
|
|
Date :
2014-09-07 06:45:22 |
By :
judas78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่ผมเขียนอ่ะครับมันได้ประมาณนี้ ผลลัพธ์ก็อยากได้ประมาณนี้ด้วยครับ
แต่ว่าเวลาจะเพิ่มจำนวนอักขระให้มากขึ้นก็ต้องมาเขียนโค๊ดเพิ่มอีก
เช่นในโค๊ดนี้แสดงตั้งแต่ 1 อักขระ ไปจน 3 อักขระครับ
ไม่รู้ว่า งงรึปล่าวครับแต่อยากให้มัน เป็นมาตรฐานกว่านี้หน่อยครับ คืออยากให้แสดงอักขระถึงหลักที่เท่าไหร่ก็เปลี่ยนแค่จำนวนค่าในตัวแปร
ขอความกรุณาด้วยนะครับ
<?php
$font = array(a,b,c,d);
for($z=0; $z<=count($font); $z++){
if($z<=count($font)){
print $font[$z]."<br/>";
}
}
for($z=0; $z<=count($font); $z++){
for($y=$z; $y<=count($font);$y++){
$x=$font[$z].$font[$y];
if($font[$y]<>""){
print $x."<br/>";
}
}
}
for($z=0; $z<=count($font); $z++){
for($y=$z; $y<=count($font);$y++){
for($w=$y; $w<=count($font);$w++){
$x=$font[$z].$font[$y].$font[$w];
if($font[$w]<>""){
print $x."<br/>";
}
}
}
}
?>
|
|
|
|
|
Date :
2014-09-08 07:26:36 |
By :
judas78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
$font = array(a,b,c,d);
$c = count($font);
$rs=array();
b( 0, '');
function b($j, $a){
global $font , $c;
for($z=$j; $z<$c; $z++){
$txt = $a . $font[$z];
echo $txt , "<br />\n"; if( strlen($txt)<4) b( $z , $txt );
}
}
?>
</body>
</html>
โค๊ดตัวนี้ใช้ได้ แต่ผมใส่ bug ไปตัวนึง ลองหาและแก้เอานะครับ ถ้าหาได้แสดงว่าคุณเข้าใจ โค๊ดต้ัวนี้แล้วนะครับ
|
|
|
|
|
Date :
2014-09-08 10:42:28 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใส่ bug เพื่ออะไร ตรรกะเพี้ยนๆ
|
|
|
|
|
Date :
2014-09-08 11:26:15 |
By :
bug หรือ gug |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ให้ลองหา บังคัุบให้ศึกษาไงครับ ไม่ใช่ลอกไปใช้ ถ้าหาไม่ได้ ถามมาผมก็เฉลยเองแหล่ะครับ
มันเป็นตรรกของคนที่ต้องการสอนคนน่ะครับ ไม่ใช่ประเคนให้เลย ถ้าผมเพี้ยน
ครูบาอาจารย์ทั้งหลายก็คงเพี้ยนเหมือนผม เพราะพวกท่านชอบตั้งโจทย์ให้คิดให้แก้กันครับ
|
|
|
|
|
Date :
2014-09-08 11:38:20 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bug 4 เป็น constant ครับ ถ้าเปลี่ยนเป็น $c จะสามารถเพิ่ม data array ไม่จำกัดครับ
สำหรับการเรียง มันเรียงตามลำดับข้อมูลใน array ครับ ข้อมูลเรียงมาเป็นอักษร
a aa aaa aaaa อย่างไรก็มาก่อน b ในกรณีที่เป็น ascending ครับ
ถ้าในกรณีที่เป็นตัวเลข ให้ลองเปลี่ยน echo เป็นเก็บค่าเข้า array แล้วใช้คำสั่ง sort() เพื่อจักเรียงก่อนแสดงค่าครับ
|
|
|
|
|
Date :
2014-09-09 08:02:01 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาไปเลย ไม่มีบั๊ก
มีใครเขียนง่ายกว่านี้ไหม ขอโค้ดหน่อย
ลองวนแบบ manual ดูแล้วเหมือนง่ายๆ แต่ทำไมเขียนโค้ดงงเป็นบ้า
หรือว่าเส้นผมบังภูเขา ใครมีวิธีวนลูปที่ดีกว่านี้เชิญชี้แนะด้วย
loop.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP</title>
<style type="text/css">
body {
font-family: "Tahoma, Geneva, sans-serif";
font-size: 12px;
}
</style>
</head>
<body>
<?php
running('ABCD');
echo '<br />';
echo '<br />';
running('1234');
function running($series) {
$lenght = mb_strlen($series);
for ($i = 1; $i <= $lenght; $i++) {
for ($c = 0; $c < $lenght; $c++) {
$text = mb_substr($series, $c, 1,'UTF-8');
recursive($series, $text, $i);
}
}
}
function recursive($series, $text, $level) {
$char = mb_substr($text, mb_strlen($text) - 1, 1,'UTF-8');
$last = mb_substr($series, mb_strlen($series) - 1, 1,'UTF-8');
if ($level === 1) {
echo "$text<br />";
}
else {
for ($i = ord($char); $i <= ord($last); $i++) {
$result = $text . chr($i);
if (mb_strlen($result) < $level) {
recursive($series, $result, $level);
}
else {
echo "$result<br />";
}
}
}
}
?>
</body>
</html>
|
|
|
|
|
Date :
2014-09-09 08:19:54 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มาแอบเอาความรู้
|
|
|
|
|
Date :
2014-09-09 10:32:26 |
By :
compiak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 12 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2014-09-09 08:19:54
รายละเอียดของการตอบ ::
มาถึงขนาดนี้แล้ว ลองดูก็ได้ครับ ว่า โค๊ดใครสั้นใครเร็วกว่ากัน ของสนุกด้วยคน
ผมแก้ไขโค๊ดของผมเล็กน้อย เพื่อให้ใช้ได้กับ utf8 เหมือนกันนะครับ
และ เปลี่ยน จาก echo โดยตรง แต่เก็บใส่ Array เพื่อทำการ sort
ตามที่ จขกท. ต้องการ
และ ใส่ โค๊ดจับความเร็วเข้าไป
ก็ทดสอบดูเอาก็แล้วกันนะครับ ผมเพิ่มตัวอักษรจาก สี่ตัว เป็น 6 ตัวเพื่อให้เห็นข้อแตกต่างเรื่องความเร็วอย่างชัดเจน
Code (PHP)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
function running($series) {
$lenght = mb_strlen($series);
for ($i = 1; $i <= $lenght; $i++) {
for ($c = 0; $c < $lenght; $c++) {
$text = mb_substr($series, $c, 1,'UTF-8');
recursive($series, $text, $i);
}
}
}
function recursive($series, $text, $level) {
$char = mb_substr($text, mb_strlen($text) - 1, 1,'UTF-8');
$last = mb_substr($series, mb_strlen($series) - 1, 1,'UTF-8');
if ($level === 1) {
echo "$text<br />";
}
else {
for ($i = ord($char); $i <= ord($last); $i++) {
$result = $text . chr($i);
if (mb_strlen($result) < $level) {
recursive($series, $result, $level);
}
else {
echo "$result<br />";
}
}
}
}
function b(&$font, &$c, &$ar, $j, $a){
for($z=$j; $z<$c; $z++){
$txt = $a . mb_substr($font, $z, 1,'UTF-8');
$k=str_repeat(' ', $c - strlen($txt) ) . $txt;
$ar[$k] = $txt;
if( mb_strlen($txt)<$c) b($font, $c, $ar, $z , $txt );
}
}
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
//////////////////////////////////////////////////
$start1 = microtime_float();
$font = 'ABCDEF';
$c = strlen($font);
$ar=array();
b($font, $c, $ar, 0, '');
ksort($ar);
foreach($ar as $k=>$v) echo $v , "<br/>\n";
$end1=microtime_float();
echo '======================================<br />';
//////////////////////////////////////////////////
$start2 = microtime_float();
running('ABCDEF');
$end2=microtime_float();
echo '======================================<br />';
echo '<br />Case 1 ', $end1 , ' - ' , $start1, ' = ' , ($end1 - $start1) ;
echo '<br />Case 2 ', $end2 , ' - ' , $start2, ' = ' , ($end2 - $start2) ;
//echo '<br />';
//echo '<br />';
//running('1234');
?>
</body>
</html>
ปล. การอ่านโค๊ดคนอื่นแล้วงงต้องสำรวจตัวเองนะครับว่ามีความรู้มากพอหรือเปล่า
|
|
|
|
|
Date :
2014-09-09 11:18:00 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ความรู้หางอึ่ง ลองลดความอ้วนแล้ว ได้แค่นี้แหละ
ไม่งั้นต้องเปลี่ยนโค้ดใหม่
Code (PHP)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP</title>
<style type="text/css">
body {
font-family: "Tahoma, Geneva, sans-serif";
font-size: 12px;
}
</style>
</head>
<body>
<?php
function running($series) {
$lenght = mb_strlen($series);
$text = str_split($series);
for ($i = 1; $i <= $lenght; $i++) {
foreach ($text as $char) {
recursive($series, $char, $i);
}
}
}
function recursive($series, $text, $level) {
$char = mb_substr($text, -1, 1,'UTF-8');
$last = ($level === 1) ? $char : mb_substr($series, -1, 1,'UTF-8');
for ($i = $char; $i <= $last; $i++) {
$result = ($level === 1) ? $text : $text . $i;
if (mb_strlen($result) < $level) {
recursive($series, $result, $level);
}
else {
echo "$result<br />";
}
}
}
function b(&$font, &$c, &$ar, $j, $a){
for($z=$j; $z<$c; $z++){
$txt = $a . mb_substr($font, $z, 1,'UTF-8');
$k=str_repeat(' ', $c - strlen($txt) ) . $txt;
$ar[$k] = $txt;
if( mb_strlen($txt)<$c)
b($font, $c, $ar, $z , $txt );
}
}
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function run($chars)
{
$chars = array_unique(str_split($chars));
$prefixes = array_fill(0, $n = count($chars), '');
for ($i = 0; $i < $n; ++$i) {
foreach ($prefixes as $prefix) {
foreach ($chars as $char) {
$key = str_split($value = $prefix . $char);
sort($key);
if (!isset($keys[$key = implode($key)])) {
echo "$value<br />";
$keys[$key] = true;
$prefixes[] = $prefix . $char;
}
}
}
}
}
//////////////////////////////////////////////////
echo '<span style="display: none;">';
$start1 = microtime_float();
$font = 'ABCDEFGHIJ';
$c = strlen($font);
$ar=array();
b($font, $c, $ar, 0, '');
ksort($ar);
foreach($ar as $k=>$v) echo $v , "<br/>\n";
$end1=microtime_float();
echo '</span>';
echo '======================================<br />';
//////////////////////////////////////////////////
echo '<span style="display: none;">';
$start2 = microtime_float();
running('ABCDEFGHIJ');
$end2=microtime_float();
echo '</span>';
echo '======================================<br />';
//////////////////////////////////////////////////
echo '<span style="display: none;">';
$start3 = microtime_float();
run('ABCDEFGHIJ');
$end3=microtime_float();
echo '</span>';
echo '======================================<br />';
//////////////////////////////////////////////////
echo '<br />Chaidhanan: ', $end1 , ' - ' , $start1, ' = ' , ($end1 - $start1) ;
echo '<br />ห้ามตอบ ฯ: ', $end2 , ' - ' , $start2, ' = ' , ($end2 - $start2) ;
echo '<br />phpinfo(): ', $end3 , ' - ' , $start3, ' = ' , ($end3 - $start1) ;
?>
</body>
</html>
|
|
|
|
|
Date :
2014-09-09 12:58:57 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แก้ไข เพิ่ม args แล้วไวขึ้นเยอะเลย
Code (PHP)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP</title>
<style type="text/css">
body {
font-family: "Tahoma, Geneva, sans-serif";
font-size: 12px;
}
</style>
</head>
<body>
<?php
function running($series) {
$lenght = mb_strlen($series);
$text = str_split($series);
for ($i = 1; $i <= $lenght; $i++) {
foreach ($text as $char) {
recursive($series, $char, $text[$lenght - 1], $char, $i);
}
}
}
function recursive($series, $text, $s, $c, $level) {
$char = $c;
$last = ($level === 1) ? $char : $s;
for ($i = $char; $i <= $last; $i++) {
$result = ($level === 1) ? $text : $text . $i;
if (mb_strlen($result) < $level) {
recursive($series, $result, $s, $i, $level);
}
else {
echo "$result<br />";
}
}
}
function b(&$font, &$c, &$ar, $j, $a){
for($z=$j; $z<$c; $z++){
$txt = $a . mb_substr($font, $z, 1,'UTF-8');
$k=str_repeat(' ', $c - strlen($txt) ) . $txt;
$ar[$k] = $txt;
if( mb_strlen($txt)<$c)
b($font, $c, $ar, $z , $txt );
}
}
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function run($chars)
{
$chars = array_unique(str_split($chars));
$prefixes = array_fill(0, $n = count($chars), '');
for ($i = 0; $i < $n; ++$i) {
foreach ($prefixes as $prefix) {
foreach ($chars as $char) {
$key = str_split($value = $prefix . $char);
sort($key);
if (!isset($keys[$key = implode($key)])) {
echo "$value<br />";
$keys[$key] = true;
$prefixes[] = $prefix . $char;
}
}
}
}
}
//////////////////////////////////////////////////
echo '<span style="display: none;">';
$start1 = microtime_float();
$font = 'ABCDEFGHIJ';
$c = strlen($font);
$ar=array();
b($font, $c, $ar, 0, '');
ksort($ar);
foreach($ar as $k=>$v) echo $v , "<br/>\n";
$end1=microtime_float();
echo '</span>';
echo '======================================<br />';
//////////////////////////////////////////////////
echo '<span style="display: none;">';
$start2 = microtime_float();
running('ABCDEFGHIJ');
$end2=microtime_float();
echo '</span>';
echo '======================================<br />';
//////////////////////////////////////////////////
echo '<span style="display: none;">';
$start3 = microtime_float();
run('ABCDEFGHIJ');
$end3=microtime_float();
echo '</span>';
echo '======================================<br />';
//////////////////////////////////////////////////
echo '<br />Chaidhanan: ', $end1 , ' - ' , $start1, ' = ' , ($end1 - $start1) ;
echo '<br />ห้ามตอบ ฯ: ', $end2 , ' - ' , $start2, ' = ' , ($end2 - $start2) ;
echo '<br />phpinfo(): ', $end3 , ' - ' , $start3, ' = ' , ($end3 - $start1) ;
?>
</body>
</html>
|
|
|
|
|
Date :
2014-09-09 13:28:04 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณทุกท่านครับ
|
|
|
|
|
Date :
2014-09-10 06:53:17 |
By :
judas78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|