Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Tsyklop
5 / 6 / 5
Регистрация: 01.01.2014
Сообщений: 399

Вычисление строк по hashCode

25.09.2018, 22:02. Показов 805. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поставлена такая задача.

Есть метод Collection getStringsForHashCode(int hashCode, int length)

На входе hashCode и length - кол-во символов в получаемой строке.

Метод должен найти все комбинации char-ов у которых сумма hashCode равна параметру метода и кол-во этих char-овдолжно быть равно параметру length у метода.

Пример:

getStringsForHashCode(18,3) = {“dad”, “bbc”, “maa”, …. }

Подскажите как такое сделать? я вообще в тупике.

Небольшие условия:

hashCode считается так: hashCode(s) = sum (s[i] * (i+1))
дан метод int getInt(char c);
дан метод char getChar(int c);
значение int у char равно от 1 до 26. То бишь getInt('a') = 1 и т.д.
если что не понятно по задаче спрашивайте)

Я честно хз как лучше решить. надо случайным образом брать чар и пытаться склеивать с другими. Или же идти от обратного: найти сумму цифр и потом по полученным цифрам найти char.

Буду очень благодарен помощи)

туда я не прошел ибо не справился)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2018, 22:02
Ответы с готовыми решениями:

hashCode()
Вопрос собственно вот в чем... является ли значение возвращаемое методом "hashCode()" уникальным в текущей программе, т.е. могут ли...

изменяющийся hashcode
Доброго времени суток. Столкнулся со следующей проблемой. У меня имеется класс все поля которого изменяемые из вне. Понадобилось...

Переопределение hashCode()
Нужно реализовать функцию hashCode(). Значение хеш-функции вычислять как значение побитового исключающего ИЛИ битовых представлений всех...

2
 Аватар для Aviz__
2744 / 2053 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
26.09.2018, 14:49
как то так, если по простому:
Java
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
29
30
31
32
public class StringFromRangChars {
 
    private static void printSummOfThreeNumsFromRang(int summa, char [] charArr) {
        int rang = charArr.length;
        if (summa > rang * 3 && summa < 3) {
            System.out.println(summa + " is incorrect!");
            return;
        }
        for (int i = 1; i < rang; i++) {
            for (int j = 1; j < rang; j++) {
                for (int k = 1; k < rang; k++) {
                    if ((i +j + k) == summa)
                    System.out.printf("%d --> %c%c%c%n", summa, charArr[i], charArr[j], charArr[k]);
                }
            }
        }
    }
 
    private static char [] getCharArray(char beginChar, char endChar) {
        char [] charArr = new char[endChar - beginChar + 2];
        int indexArr = 1;
        for (char i = beginChar; i <= endChar; i++) {
            charArr[indexArr++] = i;
        }
        return charArr;
    }
 
    public static void main(String[] args) {
       printSummOfThreeNumsFromRang(76, getCharArray('a','z'));
 
    }
}
результат работы:
Кликните здесь для просмотра всего текста

76 --> xzz
76 --> yyz
76 --> yzy
76 --> zxz
76 --> zyy
76 --> zzx
2
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
26.09.2018, 16:15
Java
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class StringsForHashCodeRunner {
    public static void main(String[] args) {
        StringsForHashCode instance = new StringsForHashCode('a', 'z');
        System.out.println(instance.getStringsForHashCode(18, 3));
    }
}
 
class StringsForHashCode {
    private char from;
    private char to;
 
    public StringsForHashCode(char from, char to) {
        if (from > to) {
            throw new IllegalArgumentException();
        }
        this.from = from;
        this.to = to;
    }
    
    public Collection getStringsForHashCode(int hashCode, int length) {
        List<String> list = new ArrayList<>();
        getStringsForHashCode(hashCode, length, "", list);
        return list;
    }
 
    private void getStringsForHashCode(int hashCode, int maxLength, String str, Collection<String> collection) {
        for (char c = from; c <= to; c++) {
            String currentStr = str + c;
            int currentHashCode = hashCode(currentStr);
            if ( currentHashCode > hashCode) {
                break;
            }
            if (str.length() == maxLength - 1 && currentHashCode == hashCode) {
                collection.add(str + c);
            }
            if (str.length() < maxLength - 1) {
                getStringsForHashCode(hashCode, maxLength, str + c, collection);
            }
        }
    }
 
    private int hashCode(String s) {
        int res = 0;
        for (int i = 0; i < s.length(); i++) {
            res += getInt(s.charAt(i)) * (i + 1);
        }
        return res;
    }
 
    private char getChar(int c) {
        return (char) (c + from - 1);
    }
 
    private int getInt(char c) {
        return c - from + 1;
    }
}
Результат
Code
1
[aae, adc, aga, bbd, beb, ccc, cfa, dad, ddb, ebc, eea, fcb, gac, gda, hbb, ica, jab, kba, maa]
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2018, 16:15
Помогаю со студенческими работами здесь

MD5 Hashcode
Есть две программки. Одна создает архив с файлами, а вторая - разархивирует. Вопрос: как проверить валидность хеш-суммы(md5) архива во...

Hashcode и Equals
Здравствуйте! Возникла необходимость выяснить точные ответы на следующие вопросы: Добавлено через 3 минуты 1) Как работает hashcode...

Переопределение equals() и hashCode()
Если есть класс Point: public class Point { private int x; private int y; public Point(int x, int y) { ...

Переопределяем equals и hashcode
Добрый день Допустим есть класс с тремя полями(1, 2, 3), я хочу переопределить еквалс, но так, что если первые 2 поля...

HashCode и equals (переопределение)
Здравствуйте, у меня возникла сложность с нashCode и equals. ______________________________________________________________________ ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru