Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 16.11.2021
Сообщений: 75

Вывести хэш строки (с помощью функции)

01.06.2022, 14:53. Показов 2363. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для определния Хэша используется формула
h(S) = S[0] + S[1] * P + S[2] * P^2 + S[3] * P^3 + ... + S[N] * P^N
где N-целое простое число примерно равное кол-ву символов в входном алфите, например для строчных русских букв подойдет P=37
Нужно вывести хэш строки( с помощью функции)
Как я понял, дял решения задачи нужно преобразовать строку в массив и брать индексы оттуда, но не совсем понимаю как мне правильно обернуть формулу в цикл
Python
1
2
3
4
5
6
7
p=37
a=input()
s=list(a)
def hash (s):
    for s in range(len(s))
  return ???
print(hash(s))
Добавлено через 4 часа 5 минут
Собственно актуально, исправил код
Python
1
2
3
4
5
6
7
p=37
a=input()
s=list(a)
n=len(s)
def hash (s):
        return s[0]+s[1]*p+s[2]*p**2+s[n-1]*p**n
print(hash(s))
Но есть вопрос, как убрать в ручную ввод символов (Например. s[0]), для 100 символов например не оптимально вручную писать код
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2022, 14:53
Ответы с готовыми решениями:

Как из строки 27.02.2018 c помощью функции sprintf вывести 27feb18
Всем добрый вечер) помогите пожалуйста как из строки 27.02.2018 c помощью функции sprintf вывести 27feb18

С помощью функции вывести в порядке возрастания минимальных элементов строки прямоугольной матрицы
Хелп, плиз!) Нужна программа для языка c++. Программа должна с помощью функции вывести в порядке возрастания минимальных элементов...

CryptoAPI или как с помощью CryptoAPI вычислить MD5 хэш строки...
Здравствуй, народ ! Нарыл в нете dll-ку которая вычисляет MD5 хэш строки и файла. К ней дается модуль, в котором описан интерфейс...

6
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.06.2022, 15:52
Лучший ответ Сообщение было отмечено PythonAbuser как решение

Решение

так?
Python
1
2
3
4
5
6
7
8
9
def hash (s, p):
    h = s[0]
    for i in range(1, len(s)):
        h += s[i]*(p**i) # 1088 + 1072*37^1 + 1082*37^2
    return h
 
p=37
s = map(ord, input()) # рак => [1088, 1072, 1082]
print(hash(list(s), p))
1
2 / 2 / 0
Регистрация: 16.11.2021
Сообщений: 75
01.06.2022, 16:12  [ТС]
Jabbson, Спасибо, но сейчас перечитал (задание по полинимиальной формуле) и ккак понял, надо каждой букве задать число начиная от 0
и нахождения должно быть таким
Python
1
h+= (s[i]+1)*(p**i) # прибавляем единицу что бы хэш строки 'aaaaa' не был нулевым
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.06.2022, 16:36
Если просто брать ord(буква), то оно и так едва ли будет нулевое.
0
2 / 2 / 0
Регистрация: 16.11.2021
Сообщений: 75
01.06.2022, 17:04  [ТС]
Jabbson, Ещё раз спасибо, пораскинув мозгами смог прийти к такому решению
Python
1
2
3
4
5
6
7
8
9
10
11
def hash (s, p):
    h = s[0]
    for i in range(1, len(s)):
        h += (s[i]+1)*(p**i) 
    return h
 
p=37
alphabet = [chr(i) for i in range(ord('а'), ord('я')+1)]
a=input()
s = list([alphabet.index(i)  for i in a])
print(hash(list(s), p))
Пробелма в том что буква "ё" в таком случае не считается
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.06.2022, 18:00
И заглавные буквы тоже, скорее всего, не входят
0
2 / 2 / 0
Регистрация: 16.11.2021
Сообщений: 75
01.06.2022, 18:06  [ТС]
Jabbson, Это да, видимо только в ручную весь алфавит прописывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2022, 18:06
Помогаю со студенческими работами здесь

Построение хэш-таблицы по методу цепочек с использованием хэш-функции, возращающий код первой буквы идентификатора
Здравствуйте. Помогите с задачей. Таблица строиться по методу цепочек с использованием хэш-функции, возращающий код первой буквы...

Экзамен по БД, хэш-файлы, хэш-функции
скоро экзамен по Базам Данных, и перечне заданий нашел вот такое: "Для создания хэш-файла имеются записи с ключами: ...

Программа вывода на экран значения хэш-функции для строки, введенной с клавиатуры
Задание 1. Разработайте программу вывода на экран значения хэш-функции для строки, введенной с клавиатуры. Необходимый предикат: ...

С помощью рекурсивной функции вывести значение функции sin(x) от А до B включая с шагом step
Дан прототип функции void print_tab (float A, float B, float step) Как с помощью рекурсии вывести значение функции sin(x) от А до B...

Массивы. Переставить строки в матрице, определить номер строки матрицы, содержащий максимальный элемент с помощью функции
# include <stdio.h> # include <conio.h> # include <math.h> # define N 4 # define M 4 int main() { int a; int b, c; int i,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru