- 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;
}
d_fomenok 17.04.2016 18:43 # 0
kerman 18.04.2016 14:02 # +1
3.14159265 18.04.2016 17:08 # +1
1024-- 18.04.2016 19:19 # +1
3.14159265 18.04.2016 19:53 # 0
bormand 18.04.2016 19:57 # 0
3_dar 18.04.2016 20:47 # 0
bormand 18.04.2016 20:48 # 0
3.14159265 18.04.2016 20:48 # 0
bormand 18.04.2016 20:49 # +4
{}+s // приведение к объекту
[]+s // приведение к массиву
undefined+s // приведение к хуй пойми чему
3.14159265 18.04.2016 20:50 # +8
1024-- 18.04.2016 20:50 # 0
3.14159265 18.04.2016 20:51 # 0
Как ни странно но это каст к числу
эквивалентно
+s
PS Ждём известную картинку xkcd
1024-- 18.04.2016 20:55 # +2
3.14159265 18.04.2016 21:25 # +2
Дык препендация мосиыва даёт сточную тоже ворецию.
[]+x == ""+x
PS> Блин по-моему я только что придумал многострочники в js
([]+function(){
вореции
кобенации
натализации
}).split('\n').splice(1,-1)
bot 18.04.2016 21:33 # 0
3.14159265 18.04.2016 21:38 # +1
kerman 19.04.2016 01:35 # 0
https://www.destroyallsoftware.com/talks/wat
guest 19.04.2016 16:41 # 0
kegdan 18.04.2016 19:20 # 0
Vindicar 18.04.2016 19:37 # +2
Это та роза, что упала на лапу Азора?
kegdan 18.04.2016 19:38 # +1
3.14159265 18.04.2016 19:57 # 0
И сразу фейл.
Вот именно по этой причине на J никто серьезно не пишет.
kegdan 18.04.2016 20:10 # 0
Блеадь, да даже на шарпе тоже никто серьезно не пишет
Не, ты только прикинь, там
Вообще не скомпилится, пиздец, так так жить!
3.14159265 18.04.2016 20:22 # 0
Условие задачи: bool IsPalindrome( int value ) {
Мы вам перезвоним. Следующий...
kegdan 18.04.2016 20:28 # 0
3_14dar 18.04.2016 17:14 # +3
3.14159265 19.04.2016 19:48 # +1
3_dar 19.04.2016 21:46 # +2
делим число не полностью, а до половины
потом сравниваем с перевёрнутой второй половиной
guest 19.04.2016 21:49 # 0
3.14159265 19.04.2016 21:51 # 0
Ну я б константу не стал по штеку гонять, но вдвое быстрее найдёт, да.
И без лишнего аргумента.
3_dar 19.04.2016 22:20 # 0
Хотя нет, это только добавило ;(
1024-- 19.04.2016 22:53 # +1
3.14159265 20.04.2016 20:43 # 0
1024-- 20.04.2016 21:17 # +1
1024-- 19.04.2016 23:15 # +1
Работает для 32хбитных неотрицательных чисел. Если будет работать неправильно, увеличивайте k.
Вдохновение черпал из sleepsort и хаскельной питушни, которая может поэлементно создавать список из значений, полученных после обхода этого списка.
В цикле совершается обход числа, начиная с младших разрядов. Задаются отложенные действия. Во-первых, раз в k миллисекунд переменной D присваивается текущая цифра. Максимум в инте 10 цифр. Поэтому для каждой цифры создаётся несколько отложенных действий, которые стоят по времени с другой стороны - раз в k миллисекунд, но с каждой цифрой время не растёт, а сокращается. Т.к. неизвестна длина, таких действий несколько. На этапе исполнения отложенных действий длина уже известна. Действие для "левой" цифры записывает в D цифру, действие для "правой" цифры (для конкретной длины) проверяет цифру и, если что, снимает флаг палиндромности (действие для гипотетических длин работают вхолостую). После такого обхода вызывается коллбек с результатом.
kegdan 20.04.2016 00:49 # 0
а что кегдан? кегдан ничего...
bormand 20.04.2016 00:51 # 0
kegdan 20.04.2016 00:54 # 0
или я тебя не понял?
bormand 20.04.2016 00:55 # 0
Это если длинну знаешь. А если нет - придётся буферизовать вообще всю строку целиком ;(
kegdan 20.04.2016 00:56 # +2
программистов расстраивают вещи, которые обычным смертным даже не дано понять
kerman 20.04.2016 01:12 # 0
1024-- 20.04.2016 08:32 # 0
А, Пи ниже сказал и про обычный. А ещё я перечитал условие. Почему-то показалось, что O(1) относится к проходам по строке.
Кстати, что там у хохлов квантов?
1024-- 20.04.2016 08:41 # 0
3.14159265 20.04.2016 01:15 # 0
kegdan 20.04.2016 01:26 # 0
1024-- 20.04.2016 08:36 # +1
3.14159265 20.04.2016 12:30 # 0
1024-- 20.04.2016 13:27 # 0
Впрочем, царей ничто не сломает.
bormand 20.04.2016 20:55 # +1
В общем, считаем 2 CRC с противоположными полиномами, в конце потока одну из них переворачиваем, сравниваем. Если совпало - вероятно, что строка была палиндромом. Если не совпала - всяко не палиндром.
3.14159265 20.04.2016 21:01 # 0
>вероятно, что строка была палиндромом
а. всё. вижу
думал о вореции рабин-карпа. но это ж вероятностное.
bormand 20.04.2016 21:10 # 0
inkanus-gray 20.04.2016 21:16 # 0
Либо придумать алгоритм сжатия, который умеет разжимать строку задом наперёд.
3.14159265 20.04.2016 21:16 # 0
Даже если строку итерировать несколько [O(1)] раз то думаю и тут проблематично будет за O(1) памяти.
bormand 20.04.2016 21:20 # 0
Ну типичный такой стрим с неизвестной длиной. Не знаешь же заранее, сколько памяти запасти. Поэтому алгоритм с O(N) по памяти не подходит.
3.14159265 20.04.2016 21:23 # +1
Проверить
xN=x0
xN-1=x1
xN-2=x2
...
Выход есть!
вореционное дерево фомфана!
зожимаим стрим в o(17 3 5 )
1680 палиромов данной информации
как кодировать рекурсию когда в ней проблем много
это означет что все будет используя вигагерцы и оперативнную паметь
и это означет сто все будет зависить от компьтера, на счет требываний мы поговорим после теста срима
3_dar 20.04.2016 21:31 # 0
3.14159265 20.04.2016 21:31 # 0
3_dar 20.04.2016 21:34 # 0
3.14159265 20.04.2016 22:23 # 0
bormand 20.04.2016 21:38 # +2
3_dar 20.04.2016 21:08 # +1
3_dar 20.04.2016 20:47 # +2