- 1
- 2
- 3
bool CheckRepeat(int cur, int i, char* word) {
return (word[cur] != '\0') ? ((word[i] != '\0') ? ((word[cur] == word[i] && cur != i) ? true : CheckRepeat(cur, i + 1, word)) : CheckRepeat(cur + 1, 0, word)) : false;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
bool CheckRepeat(int cur, int i, char* word) {
return (word[cur] != '\0') ? ((word[i] != '\0') ? ((word[cur] == word[i] && cur != i) ? true : CheckRepeat(cur, i + 1, word)) : CheckRepeat(cur + 1, 0, word)) : false;
}
Функция проверки слова на повторение букв.
Задали в институте лабу, в требование входили рекурсия и экономия строк, подпрограммы такого плана понравились преподавателю.
Какой анролл в checkRepeat() )))
А вот в Impl говнище какое-то.
P. S. Особенно умиляет .L6. Кажется, компилятор немного ёбнулся.
mov eax, 0
?
то есть для "xor eax,eax" один махонький опкод, а для mov eax, "immediate" нужно еще место для этого самого immediate
я глупый
через неделю самого потянет
*числа примерные, я не знаю сколько до твоего родного Безвузопетухска
Всё, пора завязывать с этим безумием.
https://ideone.com/6jveEq
Оно же сразу выйдет на c[*p], не? Там вообще бул можно, но на нём ++ не работает.
З.Ы. Правда массив копируется если не в компайлтайме :( Во нахуй!
А теперь сделай для юникода ^___~
В растровом варианте чтоль?
нацарапай на нем то что надо сохранить
можешь еще стикер приклеить
совсем уже поехавший
у жабоёбов есть шутка про
эффектно превращающая 1 и N.
unordered_set так же?
А чому нi? Хэшмапа же, вставка дешёвая. Не то что в этих ваших «деревьях»: пройди вниз, да покрути налево, да покрути направо, да обменяй дядю с прадедом…
З.Ы. Хотя, если там больше 16МБ можно возвращать true не читая.
Так и запишем: O(N) по памяти…
> З.Ы. Хотя, если там больше 16МБ можно возвращать true не читая.
Это если ты Страйкер.
На опасную дорожку вступаем.
1. Одним кодпоинтом: ä.
2. Двумя кодпоинтами: ä (написали букву «a», а потом добавили надстрочный элемент).
Тем не менее, мне не всё ясно про декомпозицию. Если у буквы два акцента (во вьетнамском такое бывает (ờ, ề), то в каком порядке эти акценты ставить при декомпозиции?
Т.е. символы с разным "обвесом" мы считаем разными? А визуально одинаковые - одинаковыми. Ох бля, нафиг ты этот юникод притащил...
Боюсь, что большинство библиотек сольются гораздо раньше.
Ну да, при ресайзе всего-то надо выделить бóльший кусок памяти и перехешировать всё (или ебаться с поколениями). Ну или выделить сразу дохрена памяти, но тогда тупой массив будет быстрее.
и что будет, если someHashFunc вернёт 100500? аллокация?
например, я хочу N бакетов, и выделяю память, и так настраиваю свою функцию, чтобы она выдавала равномерно число от 0 до N-1.
А в какой момент увеличиваеца -- Борманд ниже поснил
Обычно везёт. Но если мапа забилась процентов на 80, то коллизии начинаются всё чаще и чаще. Поэтому выделяется новый буфер раза в 1.5-2 больше и в него переносятся все значения из старого (с пересчётом их позиций, само собой). И дальше опять какое-то время всё работает быстро и почти за O(1).
для разрешения коллизий обычно по хешу сохраняются все экземпляры. если на хеше их несколько, то тогда сравнивают ещё как-то иначе (IComparable в общем). но это только одна из реализаций, как я понимаю
В самом тупом варианте ты бежишь по списку всех, у кого хеши совпали, и ищешь нужный.
З.Ы. Такое ощущение, что после формулировки no_dupes писать реализацию checkRepeat уже бессмысленно. Разве что какую-то более оптимизированную версию.
А то получится, что в списке [1, 2, 2, 2] нет повторов.
P.S. Поэтому для подобных определений я обычно тесты пилю.
Тесты и доказательства не нужны, потому что я в состоянии нормально написать код.
По этой же причине не нужны QA. И статические анализаторы.
Ничего этого не было у Дурова, когда он написал "Вконтакте".
Между прочим. И где Дуров? А где вы все?
Переписок моих он не читает (я его говном не пользуюсь), а еще он живет один, в какой-то тьмутаракани, пива не пьет, мяса не ест, ужасно же. Не хотел бы я так
>>>"он живет один, в какой-то тьмутаракани, пива не пьет, мяса не ест"
Ты уверен, что это был не пиздёж?
Бедный парень(( Я бы с ума сошел так жить.
>Ты уверен, что это был не пиздёж?
А зачем ему врать?
>>>"А зачем ему врать?"
Чтобы казаться не таким, как все.
Меня этот знак доллара всегда прикалывает, потому что я его читаю как С, которая английская С, то есть как русская Г.
Так executable превращается в sexecutable, многие другие слова тоже забавно коверкаются.
а у тебя нету
Ведь можно обойтись без "була" в начале, без долбоёбских звёздочек, без указания типов...
Слово "Bob" содержит повторяющиеся буквы?
можешь нассать преподу на усы (уверен, что они у него есть)
- не все знают, но в аббревиатуре BMW первая буква на самом деле означает Bormand
Как, к примеру, разделить японский текст на слова? Боюсь, что даже «icu» с его многомегабайтными таблицами тут не справится.
З.Ы. Походу справится, у них есть таблички с word boundary для таких языков.
а как в общем работают рагулярки для японского текста?
кодепоинты и Unicode block properties, в общем
В «icu» специальный итератор для этого завезли. Который для любого языка умеет прыгать по границам слов, предложений и чего-то там ещё.
Есть слова, для которых нет готового иероглифа, поэтому их пишут иероглифом с суффиксом, представленным каной. Эти же слова могут быть записаны и полностью каной. Для поиска слов придётся учитывать оба варианта.
Почему нельзя для поиска нормализовать? В японском жуткая омофония: есть слова, у которых разный смысл, но в современном японском произносятся они одинаково, поэтому каной пишутся тоже одинаково, а вот иероглифами пишутся по-разному, чтобы различать омонимы. При нормализации мы рискуем потерять полезную информацию.
Это примерно как в дореволюционной орфографии русского были слова «миръ» и «міръ», которые звучали одинаково, а смысл был разным (одно из них — весь свет, другое — отсутствие войны). Русский пережил «нормализацию», потому что таких реальных примеров было немного, а вот в японском они на каждом шагу.
поменяй буквы на кодпоинты и это будет работать для любого языка, если ты точно знаешь, что передал в функцию одно слово
а вы как обычно усложнили задачу зачем-то)
В какой из четырёх нормальных форм?
один символ можно записать четырьмя разными кодпоинтами что ли?
я вот смотрю в статью и вижу, что у хираганы свой интервал, у катаканы свой, у защеканы свой
http://govnokod.ru/27025#comment584463
И это обычный еврогейский язык, никаких иероглифов.
Именно поэтому придумали нормальные формы.
я бы предполагал, что разный набор кодпоинтов подразумевает разные строки для технического сравнения, но сравнение выходит семантическое (проверил на свифте)
Более того, всякие ⑦ и ⁷ тоже могут быть равны 7 если включить более мягкий режим сравнения (не во всех либах есть, но в icu точно был).
ё-моё, мне даже фф второе слово не подчёркивает лол
У японцев слово может быть записано как 1-2 иероглифа + ещё немного каны. Или целиком каной. Или вообще ромадзи.
Или слова с «iteration mark»「ゝ」, который повторяет предыдущий слог.
В старые добрые времена я знал что такое длина строки, всё было просто и понятно.
А теперь нет. В байтах (в какой-то кодировке)? В соснольных квадратиках? В глифах? В пикселях (может зависеть от предыдущего куска и вообще быть вертикальной)? В кодепоинтах (какой-то нормальной формы)?
А á - это один-два кодепоинта, два-три байта, один глиф и один соснольный квадратик.
> от порядка букв и наличия кернинга в шрифте
В какую сторону измеряется "длина" в монгольской вертикальной письменности?
аа, пиздец, я не умею фар ист хуйни, слава богу.
От отсос я почуял еще в момент появления utf-8, когда стало непросто за O(1) указать середину текста.
> "длина" в монгольской вертикальной письменности?
в высоту, очевидно
body width это высота у вертикальных алфавитов
Ну вот кстати таблички в mc и ls не разносит от японских символов, т.е. они реально это учитывают (актуально для каталога с торрентами, лол).