1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074

Перевод в строку и вычисления

24.04.2018, 00:21. Показов 799. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тут с палиндромами задачка имеется, определяю их так

Python
1
if str(n) == str(n)[::-1]:
потом подумал, а может перевод в строку тормозит, попробовал математически

Python
1
2
3
4
5
6
7
8
9
10
11
def getReverse(n1):
    n2 = 0
    while n1 > 0:
        digit = n1 % 10
        n1 = n1 // 10
        n2 = n2 * 10
        n2 = n2 + digit
    return n2
 
def isPalindrom(n):
    return n == getReverse(n)
Так оно в 4 раза медленнее
что с этим можно сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2018, 00:21
Ответы с готовыми решениями:

Как добавить в текст перевод на другую строку и пустую строку?
Подскажите пжл))) понимаю, что дурацкий вопрос, но быстро не нашла, а долго искать сейчас нет совсем времени. Как добавить в текст,...

Перевод и вычисления
Всем hello!!!:))) Нужна програ которая выполняет следующие операции и и показует ка это выгледело бы в письменном виде (что и как и зачем...

Перевод в постфиксную запись и вычисления
Здравствуйте , у меня возник такой вот вопрос: написал код, который переводит в постфиксную запись и выполняет вычисления. Все работало...

3
 Аватар для FilArt97
37 / 36 / 16
Регистрация: 11.03.2018
Сообщений: 95
24.04.2018, 00:48
Реализовать свою версию getReverse на Cython или C
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.04.2018, 03:03
что-то у меня не получается сделать в 4 раза медленнее

Добавлено через 3 минуты
preps

C
1
2
3
4
5
6
7
8
9
int reverse(int n) {
  int reverse = 0;
  while (n != 0) {
    reverse = reverse * 10;
    reverse = reverse + n%10;
    n = n/10;
  }
  return reverse;
}
Code
1
gcc -o reverse.so -shared -fPIC reverse.c
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
>>> from ctypes import cdll
>>> from ctypes import c_int
>>> rev_lib = cdll.LoadLibrary("/root/reverse.so")
>>> rev = rev_lib.reverse
>>> rev.restype = c_int
>>>
>>> # c version
... def reverse1(n):
...     return n == rev(n)
...
>>> # py version str
... def reverse2_1(n):
...     return str(n)[::-1]
...
>>> def reverse2_2(n):
...     return str(n) == reverse2_1(n)
...
>>> # py version alg
... def reverse3_1(n):
...     reverse = 0
...     while n != 0:
...         reverse = reverse * 10
...         reverse = reverse + n % 10
...         n = n / 10
...     return reverse
...
>>> def reverse3_2(n):
...     return n == reverse3_1(n)
tests

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> reverse1(1234)
False
>>> reverse1(1221)
True
>>>
>>> reverse2_2(1234)
False
>>> reverse2_2(1221)
True
>>>
>>> reverse3_2(1234)
False
>>> reverse3_2(1221)
True
>>>

speeds

Python
1
2
3
4
5
6
7
8
>>> import timeit
>>>
>>> timeit.repeat("for x in range(100, 1000): reverse1(x)", "from __main__ import reverse1", number=10000)
[3.4779930114746094, 3.1083719730377197, 3.0455260276794434]
>>> timeit.repeat("for x in range(100, 1000): reverse2_2(x)", "from __main__ import reverse2_2", number=10000)
[6.101519823074341, 7.477694988250732, 6.1712939739227295]
>>> timeit.repeat("for x in range(100, 1000): reverse3_2(x)", "from __main__ import reverse3_2", number=10000)
[7.358089923858643, 7.048866033554077, 7.0321009159088135]

твоя версия с def getReverse(n1) и def isPalindrom(n) дает такой же результат, как и 3_2
2
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
24.04.2018, 12:38
Ну так деление вообще медленная операция. Думаю, не выйдет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2018, 12:38
Помогаю со студенческими работами здесь

Перевод кода вычисления выражения с C++
Вот код на С++, переведите пожалуйста на Visual Basic. int A=12.83, B=0.863,P=3.14; double o; float r; cin>> o; if...

Перевод кода вычисления выражения с Pascal
Как можно переделать с Паскаля в С# uses crt; function sum(n:integer):byte; begin sum:=n div 100+n div 10 mod 10+n mod 10 end; ...

Перевод из C# в C++ (VS 2013). Фурье-вычисления для сравнения изображений
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include <fftw3.h> using System; using...

Перевод числа в строку
Всем доброго времени суток! есть вот такой код: ;Прога #2a ;--------------------------Сегмент...

Перевод массива в строку
Как перевести массив в строку подскажите пожалуйста хоть какой метод)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru