- 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;
}
Функция проверки слова на повторение букв.
Задали в институте лабу, в требование входили рекурсия и экономия строк, подпрограммы такого плана понравились преподавателю.
guest8 13.10.2020 14:16 # −999
gost 13.10.2020 14:22 # +1
defecate-plusplus 13.10.2020 14:24 # 0
gost 13.10.2020 14:27 # +1
gost 13.10.2020 14:29 # 0
Какой анролл в checkRepeat() )))
А вот в Impl говнище какое-то.
P. S. Особенно умиляет .L6. Кажется, компилятор немного ёбнулся.
DypHuu_niBEHb 13.10.2020 14:33 # 0
gost 13.10.2020 14:42 # 0
DypHuu_niBEHb 13.10.2020 14:49 # 0
mov eax, 0
?
gost 13.10.2020 14:51 # 0
guest8 13.10.2020 14:53 # −999
defecate-plusplus 13.10.2020 14:56 # 0
DypHuu_niBEHb 13.10.2020 14:59 # 0
то есть для "xor eax,eax" один махонький опкод, а для mov eax, "immediate" нужно еще место для этого самого immediate
Raj_Kapoor 13.10.2020 15:01 # 0
guest8 13.10.2020 14:47 # −999
DypHuu_niBEHb 13.10.2020 14:49 # 0
я глупый
guest8 13.10.2020 14:50 # −999
guest8 13.10.2020 14:54 # −999
guest8 13.10.2020 14:55 # −999
DypHuu_niBEHb 13.10.2020 14:55 # 0
через неделю самого потянет
6e3By3HbIu_nemyx 13.10.2020 14:57 # 0
Raj_Kapoor 13.10.2020 14:59 # 0
6e3By3HbIu_nemyx 13.10.2020 15:02 # +1
DypHuu_niBEHb 13.10.2020 15:02 # 0
6e3By3HbIu_nemyx 13.10.2020 15:03 # 0
DypHuu_niBEHb 13.10.2020 15:07 # 0
*числа примерные, я не знаю сколько до твоего родного Безвузопетухска
6e3By3HbIu_nemyx 13.10.2020 15:08 # 0
bootcamp_dropout 13.10.2020 15:33 # 0
bormand 13.10.2020 15:39 # 0
bormand 13.10.2020 15:47 # 0
bormand 13.10.2020 15:58 # 0
Desktop 13.10.2020 16:08 # 0
bormand 13.10.2020 16:11 # 0
bormand 13.10.2020 16:23 # 0
bormand 13.10.2020 16:30 # 0
bormand 13.10.2020 16:47 # 0
Всё, пора завязывать с этим безумием.
bormand 13.10.2020 16:58 # 0
gost 13.10.2020 17:03 # 0
https://ideone.com/6jveEq
bormand 13.10.2020 17:14 # +2
gost 13.10.2020 17:15 # 0
bormand 13.10.2020 17:18 # 0
Оно же сразу выйдет на c[*p], не? Там вообще бул можно, но на нём ++ не работает.
gost 13.10.2020 17:20 # 0
rotoeb 13.10.2020 17:20 # −1
bormand 13.10.2020 17:21 # +2
З.Ы. Правда массив копируется если не в компайлтайме :( Во нахуй!
bormand 13.10.2020 17:34 # +2
CHayT 13.10.2020 17:22 # +2
А теперь сделай для юникода ^___~
bormand 13.10.2020 17:24 # +1
rotoeb 13.10.2020 17:26 # 0
digitalEugene 14.10.2020 05:23 # −1
В растровом варианте чтоль?
Mithun_Chakraborty 14.10.2020 11:12 # 0
rotoeb 14.10.2020 11:39 # 0
Mithun_Chakraborty 14.10.2020 15:41 # −21
rotoeb 14.10.2020 19:00 # 0
bootcamp_dropout 14.10.2020 19:04 # −1
нацарапай на нем то что надо сохранить
можешь еще стикер приклеить
rotoeb 14.10.2020 19:06 # 0
bootcamp_dropout 14.10.2020 19:09 # +46
defecate-plusplus 14.10.2020 19:23 # +1
совсем уже поехавший
bootcamp_dropout 15.10.2020 00:12 # 0
guest8 14.10.2020 20:07 # −999
CHayT 13.10.2020 17:37 # 0
bormand 13.10.2020 17:38 # +1
DypHuu_niBEHb 13.10.2020 17:46 # 0
у жабоёбов есть шутка про
эффектно превращающая 1 и N.
unordered_set так же?
bormand 13.10.2020 17:47 # +1
CHayT 13.10.2020 17:48 # 0
gost 13.10.2020 22:23 # +1
А чому нi? Хэшмапа же, вставка дешёвая. Не то что в этих ваших «деревьях»: пройди вниз, да покрути налево, да покрути направо, да обменяй дядю с прадедом…
bormand 13.10.2020 22:27 # 0
gost 13.10.2020 22:31 # 0
bormand 13.10.2020 22:34 # +3
З.Ы. Хотя, если там больше 16МБ можно возвращать true не читая.
gost 13.10.2020 22:36 # +1
Так и запишем: O(N) по памяти…
> З.Ы. Хотя, если там больше 16МБ можно возвращать true не читая.
Это если ты Страйкер.
XYPO3BO3 13.10.2020 22:36 # 0
CHayT 13.10.2020 22:37 # 0
XYPO3BO3 13.10.2020 22:37 # 0
gost 13.10.2020 22:38 # 0
На опасную дорожку вступаем.
XYPO3BO3 13.10.2020 22:41 # +1
1. Одним кодпоинтом: ä.
2. Двумя кодпоинтами: ä (написали букву «a», а потом добавили надстрочный элемент).
gost 13.10.2020 22:42 # +2
bormand 13.10.2020 22:44 # 0
Desktop 13.10.2020 22:46 # 0
XYPO3BO3 13.10.2020 22:53 # 0
Тем не менее, мне не всё ясно про декомпозицию. Если у буквы два акцента (во вьетнамском такое бывает (ờ, ề), то в каком порядке эти акценты ставить при декомпозиции?
bormand 13.10.2020 22:54 # 0
bormand 13.10.2020 22:38 # +1
Т.е. символы с разным "обвесом" мы считаем разными? А визуально одинаковые - одинаковыми. Ох бля, нафиг ты этот юникод притащил...
CHayT 13.10.2020 22:40 # +1
bormand 13.10.2020 22:45 # 0
Боюсь, что большинство библиотек сольются гораздо раньше.
CHayT 13.10.2020 22:30 # 0
Ну да, при ресайзе всего-то надо выделить бóльший кусок памяти и перехешировать всё (или ебаться с поколениями). Ну или выделить сразу дохрена памяти, но тогда тупой массив будет быстрее.
Desktop 13.10.2020 22:39 # 0
bormand 13.10.2020 22:41 # 0
Desktop 13.10.2020 22:42 # 0
bormand 13.10.2020 22:43 # 0
Desktop 13.10.2020 22:45 # 0
guest8 13.10.2020 22:48 # −999
Desktop 13.10.2020 22:50 # 0
и что будет, если someHashFunc вернёт 100500? аллокация?
DypHuu_niBEHb 13.10.2020 22:54 # 0
например, я хочу N бакетов, и выделяю память, и так настраиваю свою функцию, чтобы она выдавала равномерно число от 0 до N-1.
А в какой момент увеличиваеца -- Борманд ниже поснил
bormand 13.10.2020 22:52 # +4
Обычно везёт. Но если мапа забилась процентов на 80, то коллизии начинаются всё чаще и чаще. Поэтому выделяется новый буфер раза в 1.5-2 больше и в него переносятся все значения из старого (с пересчётом их позиций, само собой). И дальше опять какое-то время всё работает быстро и почти за O(1).
Desktop 13.10.2020 22:54 # 0
для разрешения коллизий обычно по хешу сохраняются все экземпляры. если на хеше их несколько, то тогда сравнивают ещё как-то иначе (IComparable в общем). но это только одна из реализаций, как я понимаю
DypHuu_niBEHb 13.10.2020 22:57 # 0
В самом тупом варианте ты бежишь по списку всех, у кого хеши совпали, и ищешь нужный.
bormand 13.10.2020 17:45 # 0
CHayT 13.10.2020 18:04 # +1
CHayT 13.10.2020 18:10 # 0
bormand 13.10.2020 18:20 # 0
З.Ы. Такое ощущение, что после формулировки no_dupes писать реализацию checkRepeat уже бессмысленно. Разве что какую-то более оптимизированную версию.
CHayT 13.10.2020 18:26 # 0
bormand 13.10.2020 18:30 # 0
А то получится, что в списке [1, 2, 2, 2] нет повторов.
CHayT 13.10.2020 18:31 # +2
P.S. Поэтому для подобных определений я обычно тесты пилю.
bormand 13.10.2020 18:34 # 0
rotoeb 13.10.2020 18:35 # 0
DypHuu_niBEHb 13.10.2020 18:37 # 0
bormand 13.10.2020 18:40 # 0
DypHuu_niBEHb 13.10.2020 18:43 # +3
Тесты и доказательства не нужны, потому что я в состоянии нормально написать код.
По этой же причине не нужны QA. И статические анализаторы.
Ничего этого не было у Дурова, когда он написал "Вконтакте".
rotoeb 13.10.2020 19:43 # 0
Между прочим. И где Дуров? А где вы все?
DypHuu_niBEHb 13.10.2020 19:44 # −1
rotoeb 13.10.2020 19:45 # 0
DypHuu_niBEHb 13.10.2020 19:47 # −1
Переписок моих он не читает (я его говном не пользуюсь), а еще он живет один, в какой-то тьмутаракани, пива не пьет, мяса не ест, ужасно же. Не хотел бы я так
rotoeb 13.10.2020 19:50 # 0
>>>"он живет один, в какой-то тьмутаракани, пива не пьет, мяса не ест"
Ты уверен, что это был не пиздёж?
DypHuu_niBEHb 13.10.2020 19:54 # −1
Бедный парень(( Я бы с ума сошел так жить.
>Ты уверен, что это был не пиздёж?
А зачем ему врать?
rotoeb 13.10.2020 20:00 # 0
>>>"А зачем ему врать?"
Чтобы казаться не таким, как все.
guest8 13.10.2020 20:10 # −999
CHayT 13.10.2020 17:45 # 0
bormand 13.10.2020 17:48 # 0
CHayT 13.10.2020 17:58 # 0
bormand 13.10.2020 18:42 # 0
rotoeb 13.10.2020 15:16 # 0
Raj_Kapoor 13.10.2020 15:42 # −21
oaoaoammm 13.10.2020 17:22 # −1
Меня этот знак доллара всегда прикалывает, потому что я его читаю как С, которая английская С, то есть как русская Г.
Так executable превращается в sexecutable, многие другие слова тоже забавно коверкаются.
DypHuu_niBEHb 13.10.2020 18:09 # +1
а у тебя нету
rotoeb 13.10.2020 17:30 # −20
Ведь можно обойтись без "була" в начале, без долбоёбских звёздочек, без указания типов...
guest8 13.10.2020 17:59 # −999
bormand 13.10.2020 18:00 # 0
6e3By3HbIu_nemyx 13.10.2020 23:11 # −1
rotoeb 14.10.2020 00:18 # −20
guest8 14.10.2020 00:20 # −999
G0_G4 14.10.2020 00:31 # −1
rotoeb 14.10.2020 11:55 # +2
bormand 14.10.2020 14:10 # 0
Слово "Bob" содержит повторяющиеся буквы?
G0_G4 14.10.2020 14:49 # −1
Desktop 14.10.2020 14:51 # −1
можешь нассать преподу на усы (уверен, что они у него есть)
G0_G4 14.10.2020 14:52 # −1
bormand 14.10.2020 14:58 # 0
guest8 14.10.2020 15:05 # −999
guest8 14.10.2020 15:16 # −999
bormand 14.10.2020 15:26 # +2
Desktop 14.10.2020 15:30 # 0
bormand 14.10.2020 15:32 # 0
bormand 14.10.2020 15:46 # 0
Desktop 14.10.2020 15:48 # +3
Mithun_Chakraborty 14.10.2020 15:54 # +1
Desktop 14.10.2020 15:56 # 0
- не все знают, но в аббревиатуре BMW первая буква на самом деле означает Bormand
bormand 14.10.2020 16:01 # +1
Как, к примеру, разделить японский текст на слова? Боюсь, что даже «icu» с его многомегабайтными таблицами тут не справится.
З.Ы. Походу справится, у них есть таблички с word boundary для таких языков.
Desktop 14.10.2020 16:04 # 0
а как в общем работают рагулярки для японского текста?
bormand 14.10.2020 16:13 # 0
Desktop 14.10.2020 16:16 # 0
кодепоинты и Unicode block properties, в общем
bormand 14.10.2020 16:21 # +1
В «icu» специальный итератор для этого завезли. Который для любого языка умеет прыгать по границам слов, предложений и чего-то там ещё.
Mithun_Chakraborty 14.10.2020 16:22 # +1
Есть слова, для которых нет готового иероглифа, поэтому их пишут иероглифом с суффиксом, представленным каной. Эти же слова могут быть записаны и полностью каной. Для поиска слов придётся учитывать оба варианта.
Почему нельзя для поиска нормализовать? В японском жуткая омофония: есть слова, у которых разный смысл, но в современном японском произносятся они одинаково, поэтому каной пишутся тоже одинаково, а вот иероглифами пишутся по-разному, чтобы различать омонимы. При нормализации мы рискуем потерять полезную информацию.
Это примерно как в дореволюционной орфографии русского были слова «миръ» и «міръ», которые звучали одинаково, а смысл был разным (одно из них — весь свет, другое — отсутствие войны). Русский пережил «нормализацию», потому что таких реальных примеров было немного, а вот в японском они на каждом шагу.
Desktop 14.10.2020 16:31 # +2
поменяй буквы на кодпоинты и это будет работать для любого языка, если ты точно знаешь, что передал в функцию одно слово
а вы как обычно усложнили задачу зачем-то)
bormand 14.10.2020 16:32 # +1
В какой из четырёх нормальных форм?
Desktop 14.10.2020 16:35 # 0
один символ можно записать четырьмя разными кодпоинтами что ли?
я вот смотрю в статью и вижу, что у хираганы свой интервал, у катаканы свой, у защеканы свой
Mithun_Chakraborty 14.10.2020 16:37 # 0
http://govnokod.ru/27025#comment584463
bormand 14.10.2020 16:38 # +1
И это обычный еврогейский язык, никаких иероглифов.
Именно поэтому придумали нормальные формы.
Desktop 14.10.2020 16:55 # +1
я бы предполагал, что разный набор кодпоинтов подразумевает разные строки для технического сравнения, но сравнение выходит семантическое (проверил на свифте)
bormand 14.10.2020 17:19 # 0
Более того, всякие ⑦ и ⁷ тоже могут быть равны 7 если включить более мягкий режим сравнения (не во всех либах есть, но в icu точно был).
Desktop 14.10.2020 17:27 # 0
ё-моё, мне даже фф второе слово не подчёркивает лол
bormand 14.10.2020 17:28 # +1
bormand 14.10.2020 17:40 # +1
Mithun_Chakraborty 14.10.2020 16:05 # −1
bormand 14.10.2020 16:12 # +1
У японцев слово может быть записано как 1-2 иероглифа + ещё немного каны. Или целиком каной. Или вообще ромадзи.
Mithun_Chakraborty 14.10.2020 16:16 # 0
Desktop 14.10.2020 16:18 # +1
Mithun_Chakraborty 14.10.2020 16:30 # 0
Desktop 14.10.2020 16:32 # 0
guest8 14.10.2020 16:39 # −999
Mithun_Chakraborty 14.10.2020 16:07 # 0
bormand 14.10.2020 16:19 # +1
Или слова с «iteration mark»「ゝ」, который повторяет предыдущий слог.
Mithun_Chakraborty 14.10.2020 16:28 # 0
bormand 14.10.2020 16:30 # 0
bormand 14.10.2020 16:44 # +1
В старые добрые времена я знал что такое длина строки, всё было просто и понятно.
А теперь нет. В байтах (в какой-то кодировке)? В соснольных квадратиках? В глифах? В пикселях (может зависеть от предыдущего куска и вообще быть вертикальной)? В кодепоинтах (какой-то нормальной формы)?
guest8 14.10.2020 16:52 # −999
bormand 14.10.2020 16:56 # 0
А á - это один-два кодепоинта, два-три байта, один глиф и один соснольный квадратик.
> от порядка букв и наличия кернинга в шрифте
В какую сторону измеряется "длина" в монгольской вертикальной письменности?
MAPTbIwKA 14.10.2020 17:07 # 0
аа, пиздец, я не умею фар ист хуйни, слава богу.
От отсос я почуял еще в момент появления utf-8, когда стало непросто за O(1) указать середину текста.
> "длина" в монгольской вертикальной письменности?
в высоту, очевидно
body width это высота у вертикальных алфавитов
bormand 14.10.2020 17:10 # 0
Ну вот кстати таблички в mc и ls не разносит от японских символов, т.е. они реально это учитывают (актуально для каталога с торрентами, лол).
guest8 14.10.2020 17:12 # −999
bormand 14.10.2020 17:15 # 0
guest8 14.10.2020 17:16 # −999
bormand 14.10.2020 17:24 # 0
bormand 14.10.2020 20:42 # 0
bormand 14.10.2020 19:01 # −1
rotoeb 14.10.2020 19:03 # 0
bormand 14.10.2020 19:03 # 0
guest8 14.10.2020 20:14 # −999
bormand 14.10.2020 20:18 # 0