- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
static bool IsPalindrome( int value ) {
int reverseValue = 0;
if(value < 0) value = -value;
int tempValue = value;
int reverseValueTens = 1;
while(tempValue > 0) {
reverseValueTens *= 10;
tempValue /= 10;
}
reverseValueTens /= 10;
tempValue = value;
while(tempValue > 0) {
//Alert( reverseAbsValueAddition );
reverseValue += (tempValue - (tempValue/10)*10) * reverseValueTens;
reverseValueTens /= 10;
tempValue /= 10;
}
//Alert( reverseAbsValue );
return reverseValue == value;
}
{}+s // приведение к объекту
[]+s // приведение к массиву
undefined+s // приведение к хуй пойми чему
Как ни странно но это каст к числу
эквивалентно
+s
PS Ждём известную картинку xkcd
Дык препендация мосиыва даёт сточную тоже ворецию.
[]+x == ""+x
PS> Блин по-моему я только что придумал многострочники в js
([]+function(){
вореции
кобенации
натализации
}).split('\n').splice(1,-1)
https://www.destroyallsoftware.com/talks/wat
Это та роза, что упала на лапу Азора?
И сразу фейл.
Вот именно по этой причине на J никто серьезно не пишет.
Блеадь, да даже на шарпе тоже никто серьезно не пишет
Не, ты только прикинь, там
Вообще не скомпилится, пиздец, так так жить!
Условие задачи: bool IsPalindrome( int value ) {
Мы вам перезвоним. Следующий...
делим число не полностью, а до половины
потом сравниваем с перевёрнутой второй половиной
Ну я б константу не стал по штеку гонять, но вдвое быстрее найдёт, да.
И без лишнего аргумента.
Хотя нет, это только добавило ;(
Работает для 32хбитных неотрицательных чисел. Если будет работать неправильно, увеличивайте k.
Вдохновение черпал из sleepsort и хаскельной питушни, которая может поэлементно создавать список из значений, полученных после обхода этого списка.
В цикле совершается обход числа, начиная с младших разрядов. Задаются отложенные действия. Во-первых, раз в k миллисекунд переменной D присваивается текущая цифра. Максимум в инте 10 цифр. Поэтому для каждой цифры создаётся несколько отложенных действий, которые стоят по времени с другой стороны - раз в k миллисекунд, но с каждой цифрой время не растёт, а сокращается. Т.к. неизвестна длина, таких действий несколько. На этапе исполнения отложенных действий длина уже известна. Действие для "левой" цифры записывает в D цифру, действие для "правой" цифры (для конкретной длины) проверяет цифру и, если что, снимает флаг палиндромности (действие для гипотетических длин работают вхолостую). После такого обхода вызывается коллбек с результатом.
а что кегдан? кегдан ничего...
или я тебя не понял?
Это если длинну знаешь. А если нет - придётся буферизовать вообще всю строку целиком ;(
программистов расстраивают вещи, которые обычным смертным даже не дано понять
А, Пи ниже сказал и про обычный. А ещё я перечитал условие. Почему-то показалось, что O(1) относится к проходам по строке.
Кстати, что там у хохлов квантов?
Впрочем, царей ничто не сломает.
В общем, считаем 2 CRC с противоположными полиномами, в конце потока одну из них переворачиваем, сравниваем. Если совпало - вероятно, что строка была палиндромом. Если не совпала - всяко не палиндром.
>вероятно, что строка была палиндромом
а. всё. вижу
думал о вореции рабин-карпа. но это ж вероятностное.
Либо придумать алгоритм сжатия, который умеет разжимать строку задом наперёд.
Даже если строку итерировать несколько [O(1)] раз то думаю и тут проблематично будет за O(1) памяти.
Ну типичный такой стрим с неизвестной длиной. Не знаешь же заранее, сколько памяти запасти. Поэтому алгоритм с O(N) по памяти не подходит.
Проверить
xN=x0
xN-1=x1
xN-2=x2
...
Выход есть!
вореционное дерево фомфана!
зожимаим стрим в o(17 3 5 )
1680 палиромов данной информации
как кодировать рекурсию когда в ней проблем много
это означет что все будет используя вигагерцы и оперативнную паметь
и это означет сто все будет зависить от компьтера, на счет требываний мы поговорим после теста срима