|
|
|
| Просто на разминку.
Перевести число 123456 в число 654321 (в число на оборот) без использования преобразования типов в один цикл. | |
|
|
|
|
|
|
|
для: Artem S.
(06.05.2007 в 15:59)
| |
<?php
for($i = 0, $string = "123456", $l = strlen($string);
$i < $l / 2;
list($string[$i], $string[$l - ($i + 1)]) =
array($string[$l - ($i + 1)], $string[$i]), $i++);
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(06.05.2007 в 18:57)
| | По условию 123456 - не строка, а число...
Однако без преобразования типов в одном цикле посчитать порядок числа,
да еще и "перевернуть" его я не умудрился. str_repeat в каком-то смысле тоже цикл... ну да ладно.
вот что надумал:
<?php
$num = 123456;
$len = 6;
for ($i = 1; $i <= $len; $i++)
{
$d = (int)'1'.str_repeat('0', $len - $i);
$d2 = (int)'1'.str_repeat('0', $i-1);
if ($i == 1)
$result += floor($num / $d) * $d2;
else $result += (floor($num / $d) % 10) * $d2;
}
echo $result;
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(06.05.2007 в 20:47)
| | Смотрите в сторону % оператора | |
|
|
|
|
|
|
|
для: Artem S.
(06.05.2007 в 21:23)
| | Угу, туда и смотрел ... Что ж, будем подумать. | |
|
|
|
|
|
|
|
для: Artem S.
(06.05.2007 в 15:59)
| |
for($x = 12345, $y = 0;
$x;
$d = $x %10, $x = ($x - $d)/10, $y = $y*10+$d)
;
|
intval(str_reverse($x)) быстрее будет. :) | |
|
|
|
|
|
|
|
для: Trianon
(07.05.2007 в 00:33)
| | :) | |
|
|
|
|
|
|
|
для: Artem S.
(07.05.2007 в 05:07)
| |
<?php
$num = '123456';
$num2 = '';
for($i = strlen($num); $i >= 0; $i--)
{
$num2 .= $num[$i];
}
echo $num2;// если 123456 в '' , это преобразование типов ?
|
| |
|
|
|
|
|
|
|
для: EXP
(17.05.2007 в 13:01)
| | См. жирный шрифт в условии.
Если 123456 в '' , то это уже не число. | |
|
|
|
|
|
|
|
для: Trianon
(17.05.2007 в 13:09)
| |
<?php
$num = 123456;
for($i = 10, $n = 1; $i < $num * 10; $i *= 10, $n *= 10)
{
$numer .= floor(($num % $i) / $n);
}
| ещё такой вариант с .= | |
|
|
|
|
|
|
|
для: EXP
(17.05.2007 в 15:05)
| | вызовите var_dump($number)
в результате формируется строка, а не число. | |
|
|
|
|
|
|
|
для: Trianon
(17.05.2007 в 17:34)
| | Что.то похожее на это , оптимальнее наверное что.то должно быть
<?php
$num = 123456;
$n = 1;
while(($num / $n *= 10) > 0.1)
{
$n2 = ($n / 10);
$numer = ($numer * 10) + floor(($num % $n) / $n2);
}
var_dump($numer);
|
| |
|
|
|
|
|
|
|
для: EXP
(17.05.2007 в 18:04)
| | вы явно не понимаете, чего хотел Артем.
Вам просто не приходилось программировать в условиях, когда плавающей точки нет, стандартных функций нет, и даже операций умножения и деления и тех нет. Процессором не реализованы. А работать с данными надо. В том числе и числовыми. Ну да ладно.... | |
|
|
|
|
|
|
|
для: Trianon
(07.05.2007 в 00:33)
| | Иногда меня зацикливает:) Ну это я понимаю:
intval(strrev($x))
но откуда str_reverse? или это для наглядности ?))
P.S. это не мой глюк, бывает, что вставляется коммент не туда куда я хочу. Это я к Trianon естественно хотел обратиться. | |
|
|
|
|
|
|
|
для: sim5
(25.05.2007 в 04:19)
| | да, конечно.
мысль на бумагу вылезла, не пройдя фэйс-контроль. ) | |
|
|
|
|
|
|
|
для: Artem S.
(06.05.2007 в 15:59)
| |
<.?php
$num_1 = 123456;
$num_2 = 777777 - $num_1;
?>
|
Шутка=) | |
|
|
|
|
|
|
|
для: Киналь
(17.05.2007 в 21:21)
| | $A=array(1,2,3,4,5,6,7,8,9);
$R=array("");
for($i=0; $i<count($A);$i++)
{
echo "$A[$i]";
}
echo "<br>";
for($i=0; $i<count($A);$i++)
{
$T=array_pop($A);
array_unshift($A, "_");
$R[$i]=$T;
echo "$R[$i]";
}
о как | |
|
|
|
|
|
|
|
для: debug
(28.05.2007 в 23:19)
| | Ну вообще-то массивы использовать нельзя было...
А Ваш второй цикл мне напомнил цитату с баша :)
<gram|work> про индийский код
<gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
<gram|work> bool b;
<gram|work> b = false;
<gram|work> if (b == true){...}
<gram|work> Это децкий лепет
<gram|work> ИТАК, ПЕРВОЕ МЕСТО
<gram|work> Знакомый говорит что нашел только что в коде:
<gram|work> if (b.ToString().length < 5){...}
|
<?
$A=array(1,2,3,4,5,6,7,8,9);
echo implode('', $A), "<br>";
echo implode('', array_reverse($A));
/*
for($i=count($A); $i>=0; $i--)
echo $A[$i]
*/
?>
|
| |
|
|
|