Допустим, есть число 6193040000000 Нужно увеличить последний значащий разряд на единицу, чтобы получилось 6193050000000. Естественно, если будет 6193090000000, должно получиться 6193100000000. Вообще это сделать я и сам могу, но мне нужен самый быстрый способ, ибо ибо эта фигня будет крутиться в циклах с до 10^6 повторений. У кого какие идеи ? =)
Самый быстрый пока: Код (Text): static public function kode_in_coverage($code, $coverage ) { $digits = preg_replace("#[0]+$#","", $coverage); $coverage_max = str_replace($digits, $digits+1, $coverage); return ($code>=$coverage && $code<$coverage_max); } Но оно мне не нравится. Переменные слишком неопределенные. То число, то строка
блин я их сам не люблю. и еще я не очень понимаю, что ты хочешь. =) http://php.net/manual/en/language.operators.bitwise.html ты хочешь менять именно ту цифирьку, которая не нолик первая справа? А где это вобще такое понадобилось? нарочно не придумаешь...
в двоичной системе тебе было бы очень просто жить... а что с твоими десятеричными ноликами делать - не ясно.
очень легко придумаешь. Наш чудесный российский кладр видел? Вот там мне и надо. Надо проверять, соответствуют ли коды родителю Ну, на пальцах код родителя 10 Он может иметь детей 11 12 13 14 15 16 17 18 19 Все.. Остальные не его =) Так вот, мне надо проверить, соответствует ли ребенок родителю. В нашем случает ребенок должен быть x>10 и x<20 Все просто) но в кладре коды подлиннее
не вкурил темку тогда. зачем на единицу-то увеличивать? так сравнивай =) распиши подробнее, может кто завтра отпишется.
нельзя) допустим 21, - больше 10, но он будет уже ребенком кода 20 Просто не знаю как уже подробнее расписать.. А в побитовых операциях что-то есть) Буду думать вот только 32-х разрядов мне не хватит, наверное для 15-ти разрядного десятичного числа. Мде.. 10001010101100101010110001010100000010000000000000 явно не хватит
ShamahN а почему так много будут они проверяться все адреса каждый раз по новой миллион раз в секунду?
igordata, не очень часто. Раз в месяц в среднем =) Адрес составной КодРегиона,КодРайона,КодГорода,КодНаселенногоПункта,КодУлицы Один адрес - 5 кодов. 200к адресов - 1кк кодов
надо подумать. может работать с ним как с байтовым массивом? и почему ты идешь с конца? распиши всю структуру этого гребаного кода. может там быть чтобы у 37 папа был не 3 а 2 т.е. с 20 по 39. или никогда так не будет?
PHP: $nulls = 10; while(!($number % $nulls)) { $nulls *= 10;} $newnumber = (($number / $nulls) + 1) * $nulls; пых гавно в подобных вещах конечно, но это должно работать быстро. только я не проверял, это ИДЕЯ а не реализация, реализацией сами дел много :-!
igordata Структура кода ФФРРРГГГНННУУУУ ФФ - Код региона РРР - Код района ГГГ - Код города ННН - код нас. пункта УУУУ - код улицы Так вот если у тебя есть улица с кодом 610000040000010 (улица на которой я живу) это значит, что у региона в котором эта улица код региона 610000000000000 района нет Код города 610000040000010 Моя задача, для целой куче адресов проверить, что они соответствуют какой-либо области (зоне) А именно, принадлежит ли улица 610000040000010 зоне с кодом 610000000000000 , спасибо... Попробую вникнуть =)
ShamahN да просто берем число 10, если на него делится без остатка, умножаем на 10 это число, проверяет делится ли на 100, если делится еще умножаем и так пока не перестанет делиться кстати, если у тебя возможен вариант исходного числа - только нули, то тут надо добавить whil($number && !(то условие)), а то в бесконечность уплывешь
я понимаю, что ты хочешь сделать, но не понимаю, зачем для этого увеличивать что-то. =) что тебе мешает брать одну цифру и ее сравнивать с эталоном?
phpdude станная логика если число делилось на 10, то после умножения на 10 оно точно будет делиться на 100 =) цифра 610000040000010 эталон 210000000000000 Как их сравнить ?=)
смотря какая зона тебя интересует. это другой город в том же регионе в том же районе. нужно знать не только эталонную маску, но и насколько точное должно быть совпадение.
igordata Мне нужно знать, принадлежит ли улица зоне. Зоной может быть как регион, так и населенный пункт. В общем, закрываем пока тему =) Реализация меня пока устраивает, если будут проблемы - будем придумывать искусственные методы =) Спасибо за активное участие