Уникальные числа при помощи php

435
18 января 2017, 03:01

Здравствуйте.

Даже не знаю, как правильно задать вопрос. Суть такова. Пытался и пытаюсь написать функцию, которая бы считала, сколько уникальных чисел находится в определённом числе. Хочу, чтоб функция выводила, как в списке ниже:

  • $nb = 0; // на выходе должно получится 0
  • $nb = 1; // на выходе должно получится 1
  • $nb = 2; // на выходе должно получится 2
  • ...
  • $nb = 13; // на выходе должно получится 13
  • $nb = 14; // на выходе должно получится 0 0
  • $nb = 15; // на выходе должно получится 0 1
  • $nb = 16; // на выходе должно получится 0 2
  • ...
  • $nb = 27; // на выходе должно получится 0 13
  • $nb = 28; // на выходе должно получится 1 0
  • $nb = 29; // на выходе должно получится 1 1
  • $nb = 30; // на выходе должно получится 1 2
  • ...
  • $nb = 196; // на выходе должно получится 0 0 0
  • $nb = 197; // на выходе должно получится 0 0 1
  • $nb = 198; // на выходе должно получится 0 0 2
  • ...
  • $nb = 392; // на выходе должно получится 1 0 0
  • $nb = 393; // на выходе должно получится 1 0 1
  • $nb = 393; // на выходе должно получится 1 0 2
  • ...
  • $nb = 2743; // на выходе должно получится 13 13 13
  • $nb = 2744; // на выходе должно получится 0 0 0 0
  • $nb = 2745; // на выходе должно получится 0 0 0 1
  • $nb = 2746; // на выходе должно получится 0 0 0 2
  • ...

А у меня получается какая-то логическая ошибка, что при вводе числа 392, выводится 1 14 -196, а при 393 1 14 -195 ну и т.д. И ещё при вводе более крупного и маленького числа в переменную $nb тоже выводится логическая ошибка. Вот например при вводе числа 15, мне выводится -0 -12 -181. Пытался всё это динамично сделать, но за 5 дней практически никуда не двинулся.

Вот сама функция:

// на это число делю
$count = 14;
// число
// минимальное возможное число при $count'е 14 может быть только 196
// максимальное возможное число при $count'е 14 может быть только 391
$nb = 391;
// предыдущая так сказать граница
$pr_nb = explode('.', log($numb, $count))[0];
$pr_nb = pow($count, $pr_nb);
// первый остаток
$balance1 = $nb - $pr_nb;
// второй остаток, предпоследнее число
$balance2 = explode('.', $balance1 / $count)[0];
$balance2a = explode('.', log($balance2, $count))[0];
// третий остаток, последнее число
$balance3 = $balance1 - (explode('.', $balance2 * $count)[0] * explode('.', log($balance1, $count))[0]);
// четвёртый остаток, это 3-я цифра с конца
$balance4 = explode('.', $balance1 / (pow($count, 2)))[0];
echo '<h1 style="color:red;">['.$balance4.'] ['.$balance2.'] ['.$balance3.']</h1>';

Принцип такой, если число в переменной $nb будет находится между значениями 14 во 2-й степени, то это число, будет записываться 3-мя числами (от 0 0 0 до 13 13 13). Если в 3-й степени, то 4-мя (от 0 0 0 0 до 13 13 13 13), если в 4-й степени, то 5-ю цифрами (от 0 0 0 0 0 до 13 13 13 13 13) и т.д.

Знаю, что код просто ужас. Поэтому прошу вашей помощи.

Answer 1

Вот, вроде результат похож на правду, если устроят 14-ричные цифры:

$count = 14;
$nb = 2743;
$tmp = base_convert($nb, 10, $count);
$ch = $tmp[0];
$tmp[0] = --$ch;
echo $tmp;
READ ALSO
Что такое коллекция объектов в php

Что такое коллекция объектов в php

Собственно есть задача, создать объект со вложенной коллекций объектов ticketsНо что это такое?

818
PUT FormData laravel. Не принимаются данные

PUT FormData laravel. Не принимаются данные

Отправляю данные серверу для обновления с помощью метода PUTДанные отправляю с помощью FormData

461
Нежелательное изменение HTML DOMDocument

Нежелательное изменение HTML DOMDocument

При загрузке шаблона smarty в DOMDocument и последующей выгрузке через saveHTML, появляются нежелательные теги <p> в начале и в конце контентаТакже...

381
Сравнение времени PHP (H:m)

Сравнение времени PHP (H:m)

В базе хранятся данные о времени работы компании в формате: 09:00,18:30; 12:00,02:00 и тд

418