Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074

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

24.04.2018, 00:21. Показов 792. Ответов 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru