алгоритм — PHP: генерировать упорядоченные идентификаторы, которые не имеют нулей и единиц

Я хочу создать упорядоченные числа от 2 до любого без нулей и единиц.

например, 1, 10, 11, 15, 41, 50, 60, 61 и т. д. это недействительные номера

Моя попытка:

for($i=0, $ii=1000; $i<$ii; $i++){
if($i%11){
continue;
}
}

но это не работает

0

Решение

Вы можете рассматривать числа как строки и искать символы «0» и «1».

<?php
for($i=0; $i<100; $i++){
if(strpos((string) $i, '0') !== false) continue; // contains 0
if(strpos((string) $i, '1') !== false) continue; // contains 1

echo $i . "\n";
}

Обратите внимание, что strpos() возвращает позицию первого вхождения строки поиска (он же игла) в заданной строке (он же стог сена) или false если совпадений не найдено. Вот почему вы должны сравнить результат strpos() с !== false как результат 0 будет считаться false тоже если просто с помощью == false,

Увидеть http://php.net/manual/en/function.strpos.php для подробной документации с примерами.

2

Другие решения

Создайте целое число, преобразуйте его в восьмеричную строку, а затем увеличьте значение каждой цифры на 2. Я не программист PHP, поэтому я дам вам псевдокод.

foo = 1
octFoo = decoct(foo)
// at this point, octFoo is equal to 1

// Now go through each character in octFoo and increase it by 2.
// So 0 becomes 2, 1 becomes 3, etc.

Учитывая номер 8, octFoo было бы 10и конечный результат будет 32,

Вы можете сделать это без промежуточного восьмеричного шага, если хотите написать собственную подпрограмму для целочисленных значений. Вместо того, чтобы использовать цифры от 0 до 7, используйте цифры от 2 до 9.

0

По вопросам рекламы [email protected]