|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Привет Котаны-Бротаны! Код: sql 1. 2.
Код: sql 1. 2. 3. 4. 5.
Код: sql 1. 2.
Под катом я расскажу что такое НАМ своими словамиНормальные Алгоритмы Маркова (НАМ) - представляют собой совокупность правил (rules) Код: sql 1. 2. 3.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Некоторые подсказки которые я сам для себя нашел Код: sql 1. 2. 3. 4.
Просто некоторые линки https://en.wikipedia.org/wiki/Markov_algorithm Здесь есть пример перевода двоички в унарный код ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 18:29 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Алгоритм: сложение в столбик ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 19:50 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Ммм... да. Код давай. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 19:53 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Может вопрос-таки об умножении? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 20:02 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Давайте все таки начнем со сложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 20:11 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Давайте все таки начнем со сложения. 1. двоичный код - в палки (для обоих слагаемых) 2. убрать плюс 3. палки - в двоичный код ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 20:47 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
+1 Одна процедура уже есть. Но мне кажется что обратная будет не так проста. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 21:19 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Скопипащу с вики сюда. Что б было. Конвертер с бинарного кода в унарный. Rule|0 -> 0||1 -> 0|0 -> Для нашего примера. Input: 1101+111 Output: |||||||||||||+||||||| Далее. Здесь надо аккуратно. Надо выкинуть плюсик но только после того как оба слагаемых сконверчены в лесенку из палочек. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 22:21 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
тут наверное на ассемблере было бы прикольно напрограммировать с побитовыми операциями... ну типа прописать в память 0 и 1 но я ассемблера не знаю :( ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 22:35 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Этот топик - вообще не про Ассемблер. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 22:41 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, Проверил на ограниченном наборе. Правила формирования файла rule.txt: Сначала идут тестовые образцы в формате Тест -> Ожидаемый результат Если ожидаемый результат начинается с @ то после него идет функция получения результата от левой части Образцы собираются до строки <<rules>>, все оставшееся это правила. комментарии в правилах как в VB, Пустые строки игнорируются. запуск через run.bat Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 23:17 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Забавная штука.... пример с хабра Нормальный алгоритм Маркова для деления чисел . Список замен немного изменен, так в этой машине символ | - служебный. Так что вместо него следует использовать # ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 00:13 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
1101+111 = 1000 + 100 + 100 + 10 + 1 + 1 = 1000 + 100 + 100 + 10 + 10 = 1000 + 100 + 100 + 100 = 1000 + 1000 + 100 = 10000 + 100 = 10100 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 01:30 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Поправил интерпретатор, что бы символ "|" не выпадал из алфавита. Обычные пары разделяются последовательностью " -> ", терминальные пары последовательностью " |-> " ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 07:10 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
В интерпретатор добавлена проверка перекрытия правил ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 07:49 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, Зачем нужно terminal rule я не понял. mayton Об оптимизации - не думаем. Нужно любое работающее решение. Так это элементарно. Надо просто перебрать все суммы двоичных чисел в диапазоне байта в лоб. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 08:31 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
crutchmaster, Ну... Я-же не создатель этого языка. Terminal rule это чтото вроде условия выхода из рекурсии. Часть алгоритмов без него обходятся. Ну и ладно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 08:48 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, А, дошло. Если оно срабатывает или достигнут конец списка, то всё заканчивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 08:59 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111, спасибо. Посмотрю. Но есть также онлайновые вычислители. Я находил несколько работающих в браузере. И в Розетта-Код есть имплементации почти под все языки. https://rosettacode.org/wiki/Execute_a_Markov_algorithm Я думаю что надо собрать 1 бинарничек на сях под Windows и выложить сюда чтоб желающие пользовались. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:04 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111, ты гитхабом пользуешся? Ну я имею в виду.. Учетная запись там есть? Свои репозитарии? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:06 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Щас я расскажу свою идею. Вобщем я сложение заменил на инкремент. Поскольку НАМ очень удобно дебажить. Весь state программы укладывается в 1 строчку я просто покажу как я думал это решать. Пока без кода а в виде модификаций строки. Код: sql 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.
Вот. Я это написал в уме сегодня ночью. И еще не проверял. Наверное там где-то есть зацикливание. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:17 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, Мы сперва переводим бинарь в палочки, но как палочки перевести обратно в бинарь? Первый кусок кода его будет блокировать же. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:20 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
crutchmaster mayton, Мы сперва переводим бинарь в палочки, но как палочки перевести обратно в бинарь? Первый кусок кода его будет блокировать же. Мммм.... чтоб рулы не пересекались - мы служебные символы можем ввести новые. Например между первой и второй фазой делать Код: sql 1.
И дальше оперировать звездочками. Мне символов не жалко. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:23 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111, у меня твой алгоритм не сработал на вот этом эмуляторе http://www.cmcmsu.info/1course/alg.schema.nam.htm Правильно ли я скопипастил? Код: sql 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.
В пошаговом режиме пишет Ни одно правило не применено, либо выполнено терминальное правило. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:32 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Мне символов не жалко. Хотя да. Я думаю что Марков пожадничал. Надо было ввести в язык поняти стека и вызва процедуры или функции. Но он наверное как и все теоретики просто что-то на бумаге хотел доказать. Типа равна ли эта хрень Машинке Тьюринга. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 10:47 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, да на гите я есть, но пользуюсь редко на сайте не сработал наверное из за того что там ограничение на число правил, не более 20. Либо там другой синтаксис Пошаговый расчет можно получить и в моем интерпретаторе, просто в образцах справа задай не верные результат, тогда выдаст пошаговое выполнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 11:18 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Я возьму с розетты еще одну реализацию чтоб уже работала без ограничений. Кстати это хорошо что ты добавил каменты в рулы. Я тоже расширю этот убогий язык для такой возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 11:25 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
палки в двоичную 0|| |0 0| 1 || |0 | 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 12:26 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, спасибо Саш. Попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 12:29 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, Да дело не в *|, а в 1/0. Первая часть переводит из в палки, вторая из палок. После первого преобразования из палки в 1/0 число тут же станет палкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 12:55 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
crutchmaster, замени палки на слеши ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 13:04 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, И что? :start 1->| ... |->1 //goto :start 1/0 не на что заменить они должны быть в выхлопе. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 13:07 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Код: pascal 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 13:37 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Еще мысли. Утилитарные задачи. Не связанные с вычислениями а скорре так. Проблемы. Например 1) Априорное знание алфавита. Если делать swap или движение какого-то символа в какую-то сторону мы должны в левой части rules предусмотреть этот символ в сочетании со всеми возможными комбинациями. Описать регулярку или мета-символ мы не можем. Господин Марков этого не предусмотрел. Следовательно надо как-то опираться на область входных значений. 2) Утилитарные функции которые могут пригодится. Одну из них мы уже почти сделали. Это перевод из двоички в унарность и обратно. Для комплекта хорошо-бы сделать тоже самое для десятичной. Шестнадцатеричная из двоичной переводится тривиально. Плюс четыре базовых арифметических операции. Я думаю гуглёж всегда помогает - но прошу тех кто уже нагуглил - не спойлерите а дайте ребятам возможность самим подумать. Я думаю 1-2 недели - это нормальный строк для этого топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:55 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, мое умножение и вычитание под спойлером, насчет деления не ясно, куда девать остаток //умножение ('*','<^>'), ('1<','<3'), ('0<','<2'), ('<',''), ('>1','3>'), ('>0','2>'), ('>',''), ('|2','2||'), ('3','2|'), ('2',''), ('|^','^='), ('^',''), ('=|','|/='), ('=/','/='), ('|',''), ('=',''), ('0//','/0'), ('0/','1'), ('//','/0'), ('/','1') //пример умножения 101*11 101<^>11 10<3^>11 1<23^>11 <323^>11 323^>11 323^3>1 323^33> 323^33 2|23^33 22||3^33 22||2|^33 22|2|||^33 222|||||^33 222|||||^2|3 222|||||^2|2| 222|||||^22||| 22|||||^22||| 2|||||^22||| |||||^22||| |||||^2||| |||||^||| ||||^=||| |||^==||| ||^===||| |^====||| ^=====||| =====||| ====|/=|| ===|/=/=|| ==|/=/=/=|| =|/=/=/=/=|| |/=/=/=/=/=|| |/=/=/=/=/|/=| |/=/=/=/=/|/|/= |//==/=/=/|/|/= |//=/==/=/|/|/= |///===/=/|/|/= |///==/==/|/|/= |///=/===/|/|/= |////====/|/|/= |////===/=|/|/= |////===/|/=/|/= |////==/=|/=/|/= |////==/|/=/=/|/= |////=/=|/=/=/|/= |////=/|/=/=/=/|/= |/////=|/=/=/=/|/= |/////|/=/=/=/=/|/= |/////|//==/=/=/|/= |/////|//=/==/=/|/= |/////|///===/=/|/= |/////|///==/==/|/= |/////|///=/===/|/= |/////|////====/|/= |/////|////===/=|/= |/////|////===/|/=/= |/////|////==/=|/=/= |/////|////==/|/=/=/= |/////|////=/=|/=/=/= |/////|////=/|/=/=/=/= |/////|/////=|/=/=/=/= |/////|/////|/=/=/=/=/= |/////|/////|//==/=/=/= |/////|/////|//=/==/=/= |/////|/////|///===/=/= |/////|/////|///==/==/= |/////|/////|///=/===/= |/////|/////|////====/= |/////|/////|////===/== |/////|/////|////==/=== |/////|/////|////=/==== |/////|/////|/////===== /////|/////|/////===== //////////|/////===== ///////////////===== ///////////////==== ///////////////=== ///////////////== ///////////////= /////////////// /0///////////// //0/////////// ///0///////// ////0/////// /////0///// //////0/// ///////0/ ///////1 /0/////1 //0///1 ///0/1 ///11 /0/11 /111 1111 //вычитание ('-','<^>'), ('1<','<3'), ('0<','<2'), ('<',''), ('>1','3>'), ('>0','2>'), ('>',''), ('|2','2||'), ('3','2|'), ('2',''), ('|^|','^'), ('|^','|'), ('0||','|0'), ('0|','1'), ('||','|0'), ('|','1'), ('^1','.-1'), //точка означает терминальную операцию ('^','0') //пример вычитания 101-111 101<^>111 10<3^>111 1<23^>111 <323^>111 323^>111 323^3>11 323^33>1 323^333> 323^333 2|23^333 22||3^333 22||2|^333 22|2|||^333 222|||||^333 222|||||^2|33 222|||||^2|2|3 222|||||^22|||3 222|||||^22|||2| 222|||||^22||2||| 222|||||^22|2||||| 222|||||^222||||||| 22|||||^222||||||| 2|||||^222||||||| |||||^222||||||| |||||^22||||||| |||||^2||||||| |||||^||||||| ||||^|||||| |||^||||| ||^|||| |^||| ^|| ^|0 ^10 -10 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:42 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, ого ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:49 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Измененный алгоритм, число слагаемых может быть любым. На больших числах выигрывает по скорости счету на "счетных палочках". Код: vbnet 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.
Пример 1+11+100+10 ==> 1010 Код: plaintext 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. 58.
110101+110 ==> 111011 Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 17:36 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Хм.. Это преобразование со стороны выглядит странно. Оно как будто-бы ничего не делает. Просто заменяет одни цифры на другие. И знак * наверное можно было сохранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 18:26 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Aleksandr Sharahov Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Хм.. Это преобразование со стороны выглядит странно. Оно как будто-бы ничего не делает. Просто заменяет одни цифры на другие. И знак * наверное можно было сохранить. Дык это легко поверить, достаточно убрать "ненужное" ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 18:49 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111, правильно ли я понял, что в твоей реализации количество правил зависит от количества бит в наибольшем слагаемом? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 19:01 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton пропущено... Хм.. Это преобразование со стороны выглядит странно. Оно как будто-бы ничего не делает. Просто заменяет одни цифры на другие. И знак * наверное можно было сохранить. Дык это легко поверить, достаточно убрать "ненужное" ) Нет. Я понимаю что мы подготавливаем почву для других расчетов. Но если у нас будет 20 расчетов - нужно-ли нам 20 алфавитов или хватит двух? По очереди менять "01" <=> "23". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 19:28 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Aleksandr Sharahov пропущено... Дык это легко поверить, достаточно убрать "ненужное" ) Нет. Я понимаю что мы подготавливаем почву для других расчетов. Но если у нас будет 20 расчетов - нужно-ли нам 20 алфавитов или хватит двух? По очереди менять "01" <=> "23". Ну, мне так проще конструировать алгоритм: мы таким образом гарантируем, что входные символы не пересекаются с выходными, и, тем самым, при формировании результата не будет срабатываний замен из начала списка, которые испортят всю малину. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 20:14 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Нет, число правил одинаковое для чисел любой разрядности. Алгоритм умножения чисел в столбик. Отчасти полагается на предыдущий алгоритм сложения нескольких чисел. всего за каких то 9949 замен может перемножить числа 1000100111111000 на 1000110101111101 Код: vbnet 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93.
Обновил интерпретатор, исправлена ошибка с зависанием если ни одно правило не сработало. Добавлено:
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 20:39 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
незамутненное преобразованиями систем счисления деление на палках Код: pascal 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. 58. 59. 60. 61. 62.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 22:07 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
немного сократил Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 22:26 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Но если у нас будет 20 расчетов - нужно-ли нам 20 алфавитов или хватит двух? По очереди менять "01" <=> "23". Кстати, легко доказать, что если существуют НАМы для нескольких функций, то существует НАМ для их суперпозиции. Поэтому достаточно реализовать НАМы для унарной системы счисления, т.к. у нас есть функции перевода в нее и обратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 23:21 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Унарное вычитание Код: sql 1. 2.
Input: 11111-111 Output: 11 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 23:46 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton Но если у нас будет 20 расчетов - нужно-ли нам 20 алфавитов или хватит двух? По очереди менять "01" <=> "23". Кстати, легко доказать, что если существуют НАМы для нескольких функций, то существует НАМ для их суперпозиции. Поэтому достаточно реализовать НАМы для унарной системы счисления, т.к. у нас есть функции перевода в нее и обратно. Я вот щас какраз думаю над композицией функций. У нас есть универсальный аппарат. И есть уже кодовая база. В функциональщине есть такая штука если есть f(x), g(x) функции то f(g(x)) это некая новая функция которая последовательно применяет g а потом f. Если бы не было терминального оператора |-> то мы могли-бы просто копи-пастой формировать композиции алгоритмов Маркова просто как плоский текст. И если-бы не было пересечений алфавитов левых выражений rules. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 00:08 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
перевод из десятичной в унарную Код: vbnet 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. 58. 59. 60. 61. 62. 63. 64. 65. 66.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 00:11 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, в делении наверное это правило лишнее Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 00:38 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111 Aleksandr Sharahov, в делении наверное это правило лишнее Код: plaintext
так сделано по двум причинам: 1. для отладки, чтобы видеть пустой результат в мемо 2. для упрощения перевода результата в двоичную если не требуется ни то, ни другое, то две последних строки можно заменить одной ('-#', '') ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 00:57 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111 перевод из десятичной в унарную а мы не гонимся за скоростью ) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 01:13 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
в десятичную Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 01:35 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
пусть дано: "1111+111" решение: 1) преобразовываем строку на входе к виду #00#10#11#11#11# 2) далее на преобразованной строке применяем правила "00" -> "0" "01" -> "1" "10" -> "1" "#0#11#" -> "#1#0#" "#1#11#" -> "#11#0#" если не получилось применить ни одного из правил, то выходим из цикла 3) стираем "#" и получаем результат 10110 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 03:08 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab, Это что? Сложение в четверичной системе? Мне кажется - первый шаг слабо обоснован. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 09:02 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Swa111 перевод из десятичной в унарную а мы не гонимся за скоростью ) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Это шикарно ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 10:25 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab пусть дано: "1111+111" решение: 1) преобразовываем строку на входе к виду #00#10#11#11#11# 2) далее на преобразованной строке применяем правила "00" -> "0" "01" -> "1" "10" -> "1" "#0#11#" -> "#1#0#" "#1#11#" -> "#11#0#" если не получилось применить ни одного из правил, то выходим из цикла 3) стираем "#" и получаем результат 10110 непосредственное сложение в двоичной системе достаточно очевидно, но реализаций могут быть десятки, вот, например, моя реализация Код: pascal 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 10:40 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Из всех систем счисления - десятичная самая неудобная для этих операций. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 12:14 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Саша как тебе такая идея? Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 12:15 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Саша как тебе такая идея? Код: sql 1. 2. 3. 4. 5.
идея применительно к чему? а то у нас уже тут до фига всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 12:50 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Мне почему-то всмомнилась идея Египетского Умножения. Тоесть взять любую систему счисления. И заменить умножение сложением. С небольшим числом слагаемых. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 12:54 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Например (в десятичной) 731 * 13 = 731 * (1 + 4 + 8) = 731 + (( 731 + 731 ) + ( 731 + 731 )) + .... и т.д. Получается как-бы такое бинарное дерево сложений. И здесь 4 * 731 разваливается на две частичные слагаемые которые в императивных языках хорошо оптимизируются. Вобщем в императивных языках у нас будет не 13 сложений а нечто логарифмическое. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 13:00 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Сделал двоичное умножение, вышло достаточно быстро: 1000100111111000*1000110101111101 = 5190 замен 1000110101111101*1000100111111000 = 6006 замен Код: pascal 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 16:35 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Например (в десятичной) 731 * 13 = 731 * (1 + 4 + 8) = 731 + (( 731 + 731 ) + ( 731 + 731 )) + .... и т.д. Получается как-бы такое бинарное дерево сложений. И здесь 4 * 731 разваливается на две частичные слагаемые которые в императивных языках хорошо оптимизируются. Вобщем в императивных языках у нас будет не 13 сложений а нечто логарифмическое. для двоичной системы как раз и получится умножение в столбик ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 16:48 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Практическое применение алгоритма Маркова: сложение в столбик Code link: https://repl.it/repls/RepulsiveRowdyCareware ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:12 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab, Во-первых, там не умножение, а сложение. Во-вторых, совсем не по Маркову. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:18 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, сложение поправила :) при умножении в столбик применяется алгоритм Маркова и при записи арифметических действий в строку тоже можно применить этот алгоритм ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:22 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab Aleksandr Sharahov, сложение поправила :) при умножении в столбик применяется алгоритм Маркова и при записи арифметических действий в строку тоже можно применить этот алгоритм Перенос переполнения в старший разряд - он не Марковский, а общечеловеческий ) Марковость - это (то, чего там вовсе нет): 1. задать таблицу замен, 2. взять строку с исходной формулой, 3. по Марковкому алгоритму применять замены к формуле до тех пор, пока алгоритм не остановится. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:30 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab Aleksandr Sharahov, сложение поправила :) при умножении в столбик применяется алгоритм Маркова и при записи арифметических действий в строку тоже можно применить этот алгоритм Как-то... переусложнено всё. Ты-же понимаешь что НАМ - это чистейшая теория. Мозговой эксперимент. И если ты вводишь императивный язык как подпорку или костыль что-бы НАМ улучшить то это уже совсем другой метод. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:32 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
ммм... нет, я перехожу от абстракции к конкретному примеру, и дальше показываю, что умножение в столбик тоже относится к группе алгоритмов Маркова для этого я переписываю начальную строку, так, как мне нужно для примера, и применяю серию правил (их у меня 5) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:56 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab ммм... нет, я перехожу от абстракции к конкретному примеру, и дальше показываю, что умножение в столбик тоже относится к группе алгоритмов Маркова для этого я переписываю начальную строку, так, как мне нужно для примера, и применяю серию правил (их у меня 5) Давай, рассмотрим сложение двоичных чисел на примере выражения '101+11'. Какие правила нам надо применить, чтобы последовательными преобразованиями исходного выражения получить результирующую строку '1000' ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 18:18 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 18:29 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab Aleksandr Sharahov, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Давай разбираться с самого начала. Откуда взялось это выражение '#00#10#01#11#' ? Какое правило было применено к исходному выражению '101+11' ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 18:33 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, мы решаем разные задачи, в самом первом посте, я сказала, что покажу, что сложение в столбик выполняется по алгоритму Маркова. и дальше просто идет proof of concept. :-) я хочу сказать, а почему бы не посмотреть на проблему под другим углом. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 18:55 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab Aleksandr Sharahov, мы решаем разные задачи, в самом первом посте, я сказала, что покажу, что сложение в столбик выполняется по алгоритму Маркова. и дальше просто идет proof of concept. :-) я хочу сказать, а почему бы не посмотреть на проблему под другим углом. :-) Если смотреть под другим углом, то сложение в столбик выполняется как обычно, побитовым сложением с учетом переноса. От того, что некоторые правила записаны стрелочками, весь алгоритм сложения не становится Марковским, т.к. не соблюдены *все* необходимые требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:08 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov м, т.к. не соблюдены *все* необходимые требования. 1) и какие же требования не соблюдены? а) строка есть б) правила есть в) все шаги алгоритма выполнены г) конечный ответ получен 2) сложение в столбик может быть приведено к Марковскому алгоритму, нужно лишь записать строку нужным нам образом ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:47 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, я знаю, что решетки # это чит, но идея состоит в том, чтобы воспроизвести сложение в столбик :-) PS а если число преобразовывать, и решетки убирать, то остаются 2 правила (как в твоем решении) 12->20 02->10 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:40 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab Aleksandr Sharahov, я знаю, что решетки # это чит, но идея состоит в том, чтобы воспроизвести сложение в столбик :-) PS а если число преобразовывать, и решетки убирать, то остаются 2 правила (как в твоем решении) 12->20 02->10 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Не в решетках дело. Можно использовать хоть решетки, хоть собачки, хоть смайлики. Но тогда надо указать замены, которые привели исходное выражение к выражению с решетками, а также замены, которые приводят результат с решетками к результату без решеток. Причем записать все эти правила надо в определенном порядке, который требуется незатейливому алгоритму Маркова. Речь о том, что этого всего не хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 22:17 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, я знаю, что формально для решения задачи as is этого не хватает, но у меня были другие цели ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 22:40 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
более шустрый алгоритм сложения и умножения в столбик 1000100111111000*1000110101111101 = 4049 замен 1000110101111101*1000100111111000 = 4386 замен Код: vbnet 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. 58. 59. 60.
В интерпретатор добавлен оптимизатор порядка правил. Для этого в командной строке запустите с ключам /o и /s или используйте DropAtMe(Opt).bat. В файле все образцы должны быть с верными эталонными значениями. Образцы нужно подобрать таким образом что бы использовались все правила. Оптимизатор только переставляет правила местами для того что бы уменьшить число итераций (не замен). Если перестановка увеличила число шагов или какой либо из образцов перестал быть равным эталону то она отклоняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 00:58 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
а почему бы не сделать так: алфавит 0,1,+ Правило: a+b -> f(a,b) разве это противоречило бы правилам алгоритма? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 03:22 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab а почему бы не сделать так: алфавит 0,1,+ Правило: a+b -> f(a,b) разве это противоречило бы правилам алгоритма? Это противоречит определению НАМ: 1. НАМ - это упорядоченный набор строковых замен (некоторые замены могут иметь флаг останова). 2. НАМ начинает работу с единственной входной строки, последовательно выполняя шаги. 3. На очередном шаге НАМ просматривает список замен с самого начала и выполняет первую подходящую замену. При этом замена в текущей строке выполняется 1 раз для первого подходящего фрагмента строки. 4. НАМ останавливается, если на очередном шаге не найдена подходящая замена или если выполненная замена имела флаг останова. 5. Результатом работы НАМ является текущая строка в момент прекращения его работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 10:28 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab, поэтому когда вас просят разработать НАМ для сложения чисел в двоичной записи, это означает, что нужно просто указать список замен. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 10:39 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mini.weblab а почему бы не сделать так: алфавит 0,1,+ Правило: a+b -> f(a,b) разве это противоречило бы правилам алгоритма? Давай мы этот вопрос адресуем новому топику который ты сама создашь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 11:21 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Swa111, правильно ли я понял, что последний более быстрый вариант реализации бинарного умножения отличается от предыдущего перестановкой замен и добавлением ускорителей, например: 0g0000 -> 00000g 0g00 -> 000g 0g0 -> 00g P.S. НАМы и без оптимизаций довольно трудны для понимания, а после перестановок и вовсе теряют читаемость, поэтому, проявляя заботу о читателях, хочется попросить наряду с оптимизированной версией также публиковать неоптимизированную версию алгоритма. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:12 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, нет, спасибо, думаю, не стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 14:16 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Да весь выигрыш как раз в ускорителях. При этом если считать именно число шагов по правилам то реальную помощь дает только 0t00 -> 000t. Остальные хоть и уменьшают число замен, но увеличивают число итераций ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:21 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Беря во внимание сугубую ДОКАЗАТЕЛЬНУЮ теоретичность НАМ, я-бы предложил писать чисто-рафинированные алгоритмы без оптимизаций. Оптимизации всегда можно предложить потом. Ценой какой-то потери читабельности. Мне нравится вариант когда мы например "сложение" просто заменяем инкрементом с рекурсивным условием. Это - в духе функциональщины. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:41 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Следующий вопрос. Можем-ли мы реализовать ПОЛИЗ. Пример: Input: Код: sql 1.
Output Код: sql 1.
При этом понимаем что плюс и минус - бинарная функция а квадратный корень - унарная. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:00 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Еще вопрос. Можем-ли мы реализовать общий случай генерации перестановок (combinations) для любого числа символов? Input: Код: sql 1.
Output: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:02 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, это не просто "в духе", все эти папагиглеммы и есть существо функциональщины, доказывающее, что все, что может быть вычислено, вычислимо иммутабельным образом, если замену видеть как атомарную операцию. Алгорифм бежит только вперед. А то, что обычно алгоритмом называется, представлено списком замен, которые, в обычном понимании, просто "данные". Попом на этом сидит вся функциональщина, одновременно с декларативными прологами и последователями. Подставив еще одну замену ты внедряешь еще одну первоклассную функцию, по сути. Я никогда не влезал в эту тему, а на беглый взгляд вот такой вопрос заинтересовал: В классике алгорифмы статичны в отношении списка используемых правил. Исследовал ли кто-нибудь, и как назвал, подобные конструкции с динамически изменяемым в процессе работы алгорифма списком правил. Есть для такого случая формализьма... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:11 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
booby В классике алгорифмы статичны в отношении списка используемых правил. Исследовал ли кто-нибудь, и как назвал, подобные конструкции с динамически изменяемым в процессе работы алгорифма списком правил. Есть для такого случая формализьма... Я на самом деле хотел еще сильнее усугубить вопрос формализма НАМ. Лет 15 назад мне попала в руки Книга Душкина. И она (честно говоря) надолго отбила у меня желание изучать ФП и Хаскель в том числе. Книга - изобиловала отсылкой к математике. Ну чтобы понять сравнение это как полезность Дональда Кнута в изучении С++. Вроде и надо. И в тоже время старина Кнут затягивает тебя как воронка в очень занудные исследования непонятных сущностей как то машина MIX, ленточные сортировки, и прочие абстракции которые современному разработчику вобщем не нужны. Их просто негде применить. А если кто-то ищет другой порог вхождения то он его 100% найдет. И это будет не Кнут. Слава богу мой хороший наставник Саша Немиш и и коммитер в Хаскель сообщество Виталий Брагилевский немного освежили во мне желание снова посмотреть на этот язык. Я вобщем не планирую особо на нем кодить. Нет заказов вообще. Но его изучать полезно чтобы просто понять - а зачем собсно в Scala вводили ту или иную метафору или зачем например Java нужны streams с искусственными ограничителям. Так вот. В главе 5.1 Основы комбинаторной логики (КЛ) Душкин приводит комбинаторы тождества (I), канцелятор (K), коннектор (S), композитор (B), пермутатор (С) и дубликатор (W). Меня это заинтересовало. К сожелению Душкинские примеры с неподвижной точкой и играми с базисами были для меня непонятны с практической стороны. Я искал за что зацепиться с практики. Не смог. И данный топик является просто пред-течей или преамбулой для другого топика который я просто обдумываю. Обычно такой вопрос у меня вызревает долгими годами. И когда я пишу его текст - он на 80 % уже у меня в голове готов. Я просто дополняю его линками. Так вот. Какая связь между НАМ и КЛ. Я посчитал что если момедитировать над Марковскими правилами то возможно я увижу какую-то мысль или связь которая меня подтолкнет к логике комбинаторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:28 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
booby Попом на этом сидит вся функциональщина, одновременно с декларативными прологами и последователями. Подставив еще одну замену ты внедряешь еще одну первоклассную функцию, по сути. Тема пролога мне была интересна прошлой осенью. Я хотел ее применить для поиска фактов в дата-аналитике крупного бизнеса. Но не вышло по техническим причинам. Я не смог затащить в проект зависимость от SWI-Prolog. И моё достижение - это формальное доказательство на Прологе того что Иисус Христос - сын божий. Только для этого мне пришлось записать порядка несколько сотен библейских фактов о отцовстве и наследовании. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:34 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Еще вопрос. Можем-ли мы реализовать общий случай генерации перестановок (combinations) для любого числа символов? Input: Код: sql 1.
Output: Код: sql 1. 2. 3. 4. 5. 6.
результат должен быть строкой с разделителем? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:34 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov результат должен быть строкой с разделителем? Хм... хороший вопрос. Если у нас будет автомат-преобразователь следующей перестановки - то это будет успех. Код: sql 1. 2. 3. 4. 5.
Или если надо будет ввести искусственно код состояния. Или код рекурсии - то давай введем. Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:45 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
booby В классике алгорифмы статичны в отношении списка используемых правил. Исследовал ли кто-нибудь, и как назвал, подобные конструкции с динамически изменяемым в процессе работы алгорифма списком правил. У меня не возникало желания изменять правила. Но очень хотелось разбить их на непересекающиеся модули. Причем терминалка должна была бы просто переходить в другой модуль. Пример. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Разумеется это не чистый НАМ. Но это моё определённое улучшение в духе Маркова. Надеюсь госпожа mini.weblab меня здесь поймет и не будет настаивать на имеративных языках. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:58 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, это выглядит как чистый сахар, удобство программиста, даже если после стопа предполагается возврат. В общем - вопрос реализации. Изменяемый состав правил - это программа пишет сама себя по мере функционирования, в целях всякого дип лёрнинга и построения прочих нейросетей. То есть, кроме накопления состава фактов ( в терминах пролога) происходит докидывание/накопление, а то и замена, правил вывода. Вот что-то такое я думал, когда предыдущий пост писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:22 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
booby, мне кажется, японцы чего такого про пролог измышляли, когда хавтались за него, как язык будущего искусственного интеллекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:26 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Я тебя понял. Нет о таком я не думал. Очень напоминает eval в транслируемых языках. И вопрос доказательства останова (к примеру) для нас становится еще более неочевидным. Хотя я не против эксперимента если ты предложишь своё улучшение. NMA-eval. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:26 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
booby booby, мне кажется, японцы чего такого про пролог измышляли, когда хавтались за него, как язык будущего искусственного интеллекта. У меня был еще один мотиватор. Экспертные системы в роли telegram-чят ботов. Почему я об этом задумался. Когда я посмотрел их исходники в e-commerce. Я пришел в ужас. Интеллектом там и не пахнет. Все на if-else. И ребята которые пишут диалоговых ботов даже слыхом не слыхали про Prolog. Мне это показлось как минимум - обидным. Конечно я не собирался писать своего чят бота в телеграм. Но я хотел реализовать некое теч-демо взяв экспертную систему из 80х (ну какую-нибудь по диагностике неполадок например автомобиля). Взять - я имею в виду "слямзить" готовую. И просто интегрировать ее с Телеграм-Ботом и показать. - Ребята! Вот как надо! Вот как родные! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:32 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton, Еще одна вещь которая всегда мешает НАМ - отсутствие в правилах подстановочных символов. Например, * могла бы обозначать любой символ исходного алфавита. Без этого для описания перемещения символа приходится использовать вместо одного правила целую кучу - по одному для каждого символа алфавита. И это будет проблемой при генерации перестановок, т.к. правила зависят от исходного алфавита и, в частности, от его мощности. А других препятствий для генерации перестановок в алфавитном порядке вроде нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 19:24 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, согласен. Мне вот еще не хватало символа конец строки. Типа "$" в регулярках. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 19:29 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
mayton Aleksandr Sharahov, согласен. Мне вот еще не хватало символа конец строки. Типа "$" в регулярках. неудобно, да, но его всегда можно самому присобачить - это все-таки решаемо ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 19:32 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
По поводу Пролога. Ну вот фрагмент. Код: python 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.
Там где многоточие - ветхий и новый завет в моём кривом изложении. Генеалогия. Далее остается спросить у системы Код: sql 1.
И она отвечает true. Идею я дальше не развивал. Просто мало фактов. И они - плоские. Вот если бы взять генеалогию Толкиена или Игр Престолов то там наверное можно было описать троюродных дядей или шуринов или свояков. Но уже было не интересно. Интересно было другое. Интеграция такой системы с чят-ботом. По ту сторону которого сидит обычный юзер и не знает пролог и нужен некий фронт-енд к экспертной системе чтоб транслировать вопросы юзера в некий пролого-подобный реквест. Например Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 19:43 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton Aleksandr Sharahov, согласен. Мне вот еще не хватало символа конец строки. Типа "$" в регулярках. неудобно, да, но его всегда можно самому присобачить - это все-таки решаемо А какого еще инструментация нам не хватает чтобы присобачить к НАМ возможности генератора перестановок и конвертера инфиксной записи в ПОЛИЗ ? Мне вот кажется не хватает представления исходной строки как дерева. Если-бы мы могли скобочками так группировать Код: sql 1.
И обращяться к узлам этого дерева. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 19:47 |
|
Четверговый НАМ и сложение двоичных чисел в строках
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Еще одна вещь которая всегда мешает НАМ - отсутствие в правилах подстановочных символов. Например, * могла бы обозначать любой символ исходного алфавита. ... То, что Марков по этому поводу говорит, можно примерно в таком духе изложить: вообще, для произвольного, "обобщенного" алгорифма, подобные штуки не запрещены, до тех пор, пока понятно, как должна сработать трансформация, переводя одно слово в сразу другое. Но и сложность трансформации при таком разрешении становится неопределенной. Смысл специфически нормального алгорифма в том, чтобы использовать его как модель, по отношению к которой можно доказывать какие-то утверждения, связанные со сложностью/производительностью. Это единственная причина, по которой нормальный алгоримф требует выписывания каждого конкретного варианта "атомарных", не предполагающих вариативности или более мелкого деления. Это только вопрос автомизации формального суждения о сложности получения результата. В общем случае, для не нормальных, алгорифмов, можно и смволы-комбинаторы в правилах придумывать, каждый из которых, вообще говоря, должен уметь быть представимым в виде нормального алгорифма. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 20:10 |
|
|
start [/forum/topic.php?all=1&fid=16&tid=1339708]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
104ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 354ms |
0 / 0 |