Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708

Добавить символы

18.10.2018, 14:52. Показов 2429. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Итак есть последовательность из нескольких байт например, 6. 6 байт перевести в биты и дополнить после каждых 12 бит вставить 4 нулевых бита. И вернуть получившуюся последовательность байт.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2018, 14:52
Ответы с готовыми решениями:

Если длина строки больше заданной, отбросить первые символы, иначе в её начало добавить символы "."
Дано целое число N (N>0) и строка S.Преобразовать строку S в строку длины N следующим образом:если длина строки S больше N,то отбросить...

Если длина строки больше заданной, отбросить первые символы, иначе в ее начало добавить символы "."
4.Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Добавить символы к переменной
Необходимо к одной переменной приставить заготовленный текст. Аналог того, что мне надо, но на js: var name = prompt('Process...

28
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
23.10.2018, 22:11  [ТС]
Студворк — интернет-сервис помощи студентам
Curry, а можете пояснить по охранным выражениям. Вот момент как к примеру выбрать каждый третий, пятый или прочий символ вставить нули?

Добавлено через 3 часа 51 минуту
Catstail, спасибо большое
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
24.10.2018, 13:21  [ТС]
Catstail, а как поставить ограничение на восемь символов, чтоб если не хватает дополнялись нулями?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38217 / 21149 / 4314
Регистрация: 12.02.2012
Сообщений: 34,761
Записей в блоге: 14
24.10.2018, 14:09
Andy_Coldfield, приведи пример этой ситуации
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
24.10.2018, 16:44  [ТС]
Catstail, На входе список [1,4] на выходе [0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0]
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
25.10.2018, 05:50
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Как я понимаю сначала функция reverse используется для того, чтобы взять список в обратном порядке. Это я так понимаю связано с представлением данных в памяти? И применить к каждому элементу списка функцию go. Верно? А вот с охранными выражениями можно пояснить что происходит?
Тут непонятно, правильно ли вы понимаете, что такое композиция функций(в самом конце):
learnyouahaskell.com/higher-order-functions
Когда разбираетесь как работает рекурсивная функция go, надо просто закрыть рукой "reverse . " , так как она будет применяется, после рекурсивных вычислений go.
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
25.10.2018, 12:08  [ТС]
XRuZzz, у нас получается следующая ситуация функция f(g(t(x))). Получается сначала выполняется функция t(x), дальше полученный результат передаётся в функцию g(x), далее в f(x).
Мне интересно как работает функция go.

Добавлено через 3 минуты
Haskell
1
2
3
4
5
go _ _ ac [] = ac
          go i n ac (x:xs)
                | i == 0 = go 1 n (x:ac) xs
                | i == 1 = go 2 (x `shiftR` 4) ((x .&. 0x0F) : ac) xs
                | otherwise = go 0 0 ((x `shiftR` 4):((n .|. (x `shiftL` 4)) : ac)) x
Функция принимает три аргумента: i, n, ac. Верно?
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
25.10.2018, 14:29
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Функция принимает три аргумента: i, n, ac. Верно?
ну, и ещё список байтов, итого 4 аргумента.

Вы не захотели написать рекурсивную функцию, которая перебирает список по байту, придётся написать её за вас:
Haskell
1
go _ _ _ (x:xs) = go 0 0 [] xs

Не по теме:

Чтобы разобраться, краевое условие можно пока выкинуть из головы:

Haskell
1
go _ _ ac [] = ac



Так мы перебираем байты! И на эту функцию уже накручиваем алгоритм, что нужно сделать с каждым байтом.

Тут
Haskell
1
job = reverse . go (0::Int) 0 []
Используется частичное применение и композиция(про которую можно почитать по ссылкам)

4-ый аргумент добавляется в функции go, после редукции выражения
Haskell
1
2
3
(reverse . go (0::Int) 0 [])
~> по определению композиции f . g = \x -> f (g x):
\xs -> reverse (go (0::Int) 0 [] xs)
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
25.10.2018, 16:38  [ТС]
XRuZzz, ачто происходит в охранных выпадениях? Можно вот их разобрать. Мне не понятно, что там происходит
0
Антикодер
Эксперт функциональных языков программирования
1889 / 871 / 48
Регистрация: 15.09.2012
Сообщений: 3,092
25.10.2018, 17:00
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
XRuZzz, ачто происходит в охранных выпадениях? Можно вот их разобрать. Мне не понятно, что там происходит
Ну я конечно могу пересказывать учебную литературу своими менее понятными выражениями, если не хотите пытаться разобраться самостоятельно:
http://learnyouahaskell.com/sy... rds-guards
Но это будет отнимать очень много времени и вы таким образом не научитесь учиться. То есть чем больше решается задач без посторонней помощи и готовых решение тем больше усваивается материал. В книге Дынкин, Успенский "Математические беседы" говорится о том, что одна задача, решённая самостоятельно стоит 10(или больше) задач с подсмотренными решениями.

Не по теме:

Для меня ваше здоровье важнее ваших знаний, поэтому скажите вы хорошо высыпаетесь?

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2018, 17:00

Добавить символы переноса строки
Отправляю в COM3 некоторые данные ( в данном случае число 33 ) Как сделать так, чтобы после отправлялся ещё и символ переноса строки?...

Как добавить символы в легулярку?
Нужно добавить сюда /^{3,15}$/i эти разрешенные символы .-_()

В строку char добавить символы
Дана строка массивов char. Если в строке встречается "." ,то заменить ее на "..." Добавлено через 2 минуты Вот мои...

Добавить символы в регулярное выражение
!preg_match('/^{3,15}$/') Как в это регулярное выражение добавить разрешение на вопрос? перепробовал уже всё

OnKeyPress, добавить дополнительные символы
Здравствуйте. Как в OnKeyPress включить такие символы как - _


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru