|
|
|
|
|
для: simbel
(11.03.2010 в 15:11)
| |
<?
// Это сам код
$mas[] = array();
for ($i = 0; $i < 256; $i++) {
$octat = sprintf('%08s', decbin($i));
$octat = str_replace('0', 'nou ', $octat);
$octat = str_replace('1', 'yes ', $octat);
$octat = trim($octat);
$mas[$i] = explode(' ', $octat);
}
// А это для проверки
for ($i = 0; $i < 256; $i++) {
for ($j = 0; $j < 8; $j++) {
echo $mas[$i][$j].' ';
}
echo '<br />';
}
?>
|
| |
|
|
|
|
|
|
|
для: Loki
(11.03.2010 в 15:04)
| | for($i=0; $i<256; $i++)
конечно же:) | |
|
|
|
|
|
|
|
для: Loki
(11.03.2010 в 15:04)
| | Всем спасибище большое за помощь! | |
|
|
|
|
|
|
|
для: simbel
(11.03.2010 в 15:05)
| | Для того, чтобы узнать состояние, достаточно проверить число само, и коли уж так необходимо, заменить в нем 0 на одно слово, и 1 на другое, а вот массив создавать для этого нет никакой необходимости. | |
|
|
|
|
|
|
|
для: sim5
(11.03.2010 в 13:13)
| | это просто так совпало что получиллась двоичная система исчисления - делаю что-то типа фильтра данных - в нём есть 8 выпадающих списков (могло быть сколько угодно - под двоичную систему специально не подстраивал), каждый из которых содержит два значения "да" и "нет". И вот в зависмости от комбинаций значений в этих выпадающих списках - будут производиться различные выборки данных. Но для начала нужно сгенерить все возможные комбинации в массив. На основе комбинаций сформировать потом код который будет фильтровать. Вобщем, там не простой фильр, я с такой задачей первый раз столкнулся. | |
|
|
|
|
|
|
|
для: simbel
(11.03.2010 в 02:10)
| | Фига вы тут наворотили!
<?
$arr=array(0=>'Нет ', 1=>'Да ');
for($i=1; $i<256; $i++)
{
echo str_replace(array_keys($arr), $arr, sprintf('%08b', $i)).'<br />';
}
|
| |
|
|
|
|
|
|
|
для: sim5
(11.03.2010 в 14:54)
| | Я изначально был уверен, что есть гораздо более изящный метод, который мне, увы, недоступен. Однако, в теме не было ни одного стОящего ответа и надо было что-то делать ) | |
|
|
|
|
|
|
|
для: DJ Paltus
(11.03.2010 в 14:42)
| | Достаточно проверить состояние каждого из восьми бит, заменив его на "нет" или "да". Зачем такой монстр? | |
|
|
|
|
|
|
|
для: simbel
(11.03.2010 в 02:10)
| | Если я правильно понял задание, то вот решение:
<?php
function ttod($k) //эту функцию (перевод из десятичного в двоичный вид числа) я спер на форуме, вот тут: http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=23008
{
$dn = "";
while ($k >= 2)
{
$m = $dn;
$dn = $k%2;
$dn = $dn.$m;
if ($k%2 == 0)
{
$k = $k/2;
}
else
{
$k = ($k-$k%2)/2;
}
}
if ($k == 1) $dn = "1".$dn;
if ($dn == 1) $dn = "0".$dn;
return $dn;
}
$sub1 = "да "; // что пишем
$sub2 = "нет ";
$len = 8; // сколько "да/нет" в строке
$num = pow(2, $len); // сколько вариантов получится
for ($i = 0; $i < $num; $i ++){
// номер варианта превращаем в строку двоичного кода
$str = strval(ttod($i));
// достраиваем строку нулями до нужной длины
while(strlen($str) < $len) $str = "0".$str;
for($j = 0; $j < $len; $j++){
// ну и всё, проверяем j-тый символ, записываем в массив то, что надо.
if($str[$j] == "0") $x = $sub2; else $x = $sub1 ;
$arr[$i][$j] = $x;
}
}
//проверка
for ($i = 0; $i < $num; $i ++){
for($j = 0; $j < $len; $j++){
echo $arr[$i][$j];
}
echo "<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: simbel
(11.03.2010 в 12:56)
| | А у меня получается не 256 да нет да нет да нет да нет, а 128 да и 128 нет
И если брать триады $i, $j и содержимое по этим координатам, что и есть Ваша неповторяющаяся восьмёрка (2^3).
Но мой скрипт - незакончено и сложно. Сейчас попробую попроще. | |
|
|
|
|