Jawa / Говнокод #28543 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
static private Double getHashString(String string, Integer foundation){
    Double hash = 0.0 ;
    short [] charsToInteger = getCharArray(string);
    double step = Double.MAX_VALUE / 256 - foundation;
    for (int i = 0; i < charsToInteger.length ; i++ ){
        hash += charsToInteger[i] * step;
        step = step / 2 - 1;
    }
    return hash;
}

static private short [] getCharArray(String string){
    char [] chars = string.toLowerCase().toCharArray();
    short [] bytes = new short [chars.length];
    for (int i = 0; i < chars.length; i++){
        bytes [i] = (short) (chars[i] & 0x00FF);
        //System.out.println("bytes [" + i + "] = " + bytes[i]);
    }
    return bytes;
}

Вычисление сигнатуры строки для её применения в сортировке строк в алфавитном порядке по всем символам
https://habr.com/ru/post/709406/ / https://itnan.ru/post.php?c=1&p=709406
https://github.com/Helgi-cell/HashStringAlphabetical

Запостил: ISO ISO, (Updated )

Комментарии (43) RSS

  • > Два года назад я выполнял задачу по сортировке строк в алфавитном порядке
    > Решать эту задачу обычным способом желания не было
    > Я решил попробовать реализовать внезапно возникшую идею представления строки в виде числа, то бишь сигнатуры. Причем надо было реализовать эту идею таким образом, чтобы число зависело от символов и их порядка, находящихся в строке. Т.е. сделать так, чтобы сортировка этих чисел была эквивалентна сортировке строк в алфавитном порядке по всем символам этих строк.

    Это охуенно!
    Зато в репозитории есть «HashStringService.java», «HashStringController.java» и «public interface HashStringJpaRepo extends JpaRepository <HashString, Long>».
    Ответить
    • Я прошу прощения, но множество возможных значений Double меньше, чем множество строк.
      Эквивалетно уже сразу не получится
      Ответить
      • В прекрасной статье на «Хабре» там BigInteger. Но код на картинке, а мне лень запускать «OCR».
        P.S. Статью рекомендую прочитать, там просто эпического уровня анскилл.
        Ответить
        • Прежде, чем читать статью, я хочу порассуждать.

          Чтобы решить задачу, нам нужно биекционно отражить множество строк на множество чисел.

          Можно представить себе что строка это N-ичное число , N -- количество букв в алфавите.

          То есть задача сводится к переводу из N-ричной системы в двоичную (для представления в памяти ПК) или в десятичную (с учетом локали).

          Если я верно помню, то для перевода в десятичную каждый разряд умножают на A в степени B, где A это основание числа (в случае ASCII видимо 127) а B -- номер разряда.

          Так что задача решается элементарно, правда для сортировки достаточно больших строк может и не хватить сверхбыстрой памяти.

          Упомянутый выше hash это по-определеию сюръекция, и значит в общем случае не подходит
          Ответить
          • > Чтобы решить задачу, нам нужно биекционно отражить множество строк на множество чисел.

            Достаточно инъекционно, нет? Можно добавить шаг с умножением числа на два и получить невозможность вывода нечетного числа, но сохранить контракт.
            Ответить
    • > «public interface HashStringJpaRepo extends JpaRepository <HashString, Long>»

      Программист на «Лаже», даже «HelloWorld» не напишет без JPA, IoC и AbstractFactory.
      Ответить
  • > неудобные строки

    Неудобные строки, это когда у тебя 2 строки килобайт по 10, одна из которых нормальная, а во второй могут быть дефект[ы] OCR, а это вполне себе нормальные строки.
    Ответить
    • ты сейчас хочешь чтоб он еще и новым блядь методом OCR на сдачу разродился?
      Ответить
  • Что такое тип char ? ... старший байт является просто кодировкой страницы UTF-8 (алфавита страны), а младший байт — кодировкой самого символа (буквы) из таблицы ASCII-кодов.

    ой бляджь просто идите нахуй
    Ответить
    • Что такое компьютер?

      Верхняя часть его состоит из монитора (телевизора) а нижняя из процессора (оперативной памяти)
      Ответить
      • Спасибо!!!!! Наконец-то нашелся человек, способный объяснить понятным и доступным языком, а не то что эти заучки!!!!!!!1
        Ответить
        • Предлагаю игру. Объяснить таким же образом любое околоITшное понятие.
          Я уже объяснил комптютер. Объясни теперь ты что нить
          Ответить
          • Что такое скрам?

            Внешний слой это просто честность (софт скиллы), а внутренний сонаправленность (мыслей программиста и потока байт)
            Ответить
      • Что такое айтишник?

        Верхняя часть его состоит из головы (пищеприёмника), а нижняя из ягодиц (точки опоры).
        Ответить
          • Что такое осень? Это свиньи.
            Это свиньи плещутся в канаве,
            Рядом Чебуратор наблюдает за свиньями,
            Что же будет с Родиной и с нами? ааа,
            Рядом Чебуратор наблюдает за свиньями,
            Что же будет с Родиной и с нами?

            Осень, свиньи яблоки жрут,
            Только пожрали - сразу насрут,
            Только насрали - снова сожрут,
            Вечный круговорот.

            Что зима такое - это дубо,
            Это с дуба помер Чебуратор,
            Вместе с Чебуратором поймали дуба свиньи,
            Весь колхоз и тётушка Аксинья, ааа,
            Вместе с Чебуратором поймали дуба свиньи,
            Весь колхоз и тётушка Аксинья.

            Лето, осень, зима и весна,
            Январь, февраль, март и апрель,
            Вторник, среда, ёбаный в рот,
            Вечный круговорот.
            Ответить
      • Когда мариванна говорит «процессор», она на самом деле проявляет олдскульность, на майнфраймах именно так назывался отдельно стоящий главный ящик.
        Ответить
    • Дальше ещё смешнее:

      >Что из этого возможно получить в виде выгоды? Ну, конечно же возможно! Вообще, старший байт , если мы сортируем список строк (слов) , описываемых одной страницей UTF-8 ASCII кодов, можно отбросить.
      > Он является лишь маркером для выяснения страны происхождения данных строк.

      Теперь мы знаем как отличать дешевые китайские подделки char.
      Ответить
  • > package com.epam.brest.hashstring

    Пхахаха. Дальше можно быдло не читать.

    >@SpringBootTest
    >@ComponentScan("com.epam.brest")
    >@EntityScan("com.epam.brest")
    >@Transactional
    >@EnableJpaRepositories

    Зачем? Зачем?
    Ответить
        • Такая малось сишечка.

          Ну есть же картинка известная, типа нуб
          a = 2 * weight()


          Мидл
          AbstractFactoryMultiplicationProviderImpl.getInstance().multiplyBy(new WeightProvider().getInstance().getWeight(), new ConstantNumberWrapper(2));


          Сеньйор
          a = 2 * weight()
          Ответить
          • >Программа расчета разверток для изготовления водосточных колен, углов желоба, также расчитывает развертку пирамиды, вальмы для изготовления зонтов вентиляционных и защитных колпаков из жести. Математика полностью моя. Позволяет делать любое количество итераций для более точного расчета шаблона и облегчения использования лекал для перевода значений на листовую сталью Когда была написана ООП еще не знал.... SWING прикручен как оконный интерфейс

            ...
            Ответить
            • Заметь, что пока он оперировал ``double []``, у него реально были нужные и полезные программы

              А как появились ``public BigDecimal getPriceLargeMore()`` так сразу стала какая-то хуйня там про строки

              зы: хотя я бы наверное не рискнул пользоваться водосточным коленом, в расчете которого учавствовал дабл
              Ответить
          • > Ну есть же картинка известная, типа нуб
            Не-не-не. Это слишком просто.
            Эволюция Июнь, Мыдл, Синьор там всё должно только усложняться.

            The Evolution of a Haskell Programmer.html
            Ответить
  • Я тут кстати давеча видал рустню, писаную жаваёбом, а там сплошной Arc (атомик референс каунтер) и клонирование (копирование). Попытался понять, что не так. Так вот:

    ГЦ-блядь никогда не думает, где лежит объект: она просто пишет new, и течет.
    С++ блядь конечно думает: лежит ли объект у меня на стеке, или в векторе? Или может на стеке, а в векторе ссылка? Или я его мувнул в вектор, и больше не могу им пользоваться? А может, я его туда скопировал (что долго)?

    Для джаваёба все эти вопросы не существенны.

    И вот жаваёб пришел в Rust, где всё тоже самое, что и в плюсах (ну только ничего по умолчанию не копируется а мувается, и еще ссылку надо явно задавать).

    У ГЦбляди пухнет маленький мозг, и ГЦ блядь начинает хуярить всё в кучу с RC (atomic он для передачи между тредами) а если что-то не компилируется (ибо всё мувается по умолчанию и оно мувнулось) то тупо клонирует

    В итоге получает говнецо похлеще джавы, и скоро начнет ныть, что нифига это чото не быстро.
    Ответить
    • > итоге получает говнецо похлеще джавы
      Ну да.
      Йажа она конечно тупая, но хотя бы реордеринг в OoO будет.
      А тут атомики наделают фенсов и вообще перепитушня страшная.

      ЗЫ, там растухи рекомендуют Rc.
      Unlike Rc, Arc uses atomic operations for its reference counting. This means that it is thread-safe. The disadvantage is that atomic operations are more expensive than ordinary memory accesses. If you are not sharing reference-counted allocations between threads, consider using Rc for lower overhead.

      Чем не зашло?
      Ответить
      • Я про Arc и говорю.

        В рустне есть:
        * Box это некоторый аналог юника
        * Rc это шарик, как ты понимаешь. Но шарик не потокобезопасный (потому что ты не можешь с двух потоков крутить счетчик) и потому его нельзя между тредами.
        * Arc атомарный шарик, который можно между тредами (там трейт специальный реализуется, позволяющий между потоками копировать)

        Если ты будешь всё хранить в куче и со всем работать через Arc то будет малость не так перформансно, как могло бы быть
        Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8