{"id":23552582,"url":"https://github.com/xlisp/algorithm-visualizer-gpter-fper","last_synced_at":"2025-04-28T13:47:50.689Z","repository":{"id":42280756,"uuid":"254553630","full_name":"xlisp/algorithm-visualizer-gpter-fper","owner":"xlisp","description":"算法可视化开发，GPT辅助生成，函数式化后去递归的算法辅助开发脚手架平台","archived":false,"fork":false,"pushed_at":"2024-04-27T05:12:25.000Z","size":1397,"stargazers_count":10,"open_issues_count":12,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-30T10:11:26.600Z","etag":null,"topics":["algorithm","clojure","clojurescript","functional-programming","mysql","re-frame","reagent","redis","visualizer"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xlisp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-10T05:42:43.000Z","updated_at":"2024-04-27T05:12:28.000Z","dependencies_parsed_at":"2024-04-27T06:21:30.278Z","dependency_job_id":"d79973aa-acd1-4f74-9c37-3fca218e8c02","html_url":"https://github.com/xlisp/algorithm-visualizer-gpter-fper","commit_stats":null,"previous_names":["chanshunli/algorithm-visualizer-gpter-fper","xlisp/algorithm-visualizer-gpter-fper"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Falgorithm-visualizer-gpter-fper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Falgorithm-visualizer-gpter-fper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Falgorithm-visualizer-gpter-fper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlisp%2Falgorithm-visualizer-gpter-fper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xlisp","download_url":"https://codeload.github.com/xlisp/algorithm-visualizer-gpter-fper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251321951,"owners_count":21570825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","clojure","clojurescript","functional-programming","mysql","re-frame","reagent","redis","visualizer"],"created_at":"2024-12-26T11:11:35.246Z","updated_at":"2025-04-28T13:47:50.659Z","avatar_url":"https://github.com/xlisp.png","language":"Clojure","readme":"# 算法可视化开发，GPT辅助生成，函数式化后去递归的算法辅助开发脚手架平台\n\n* 核心思想: 最先用函数式思想来写算法, 把一切复杂过程用高阶函数来描述, 不断写纯函数, 不断高阶化f(... f(f(x))), 直到递归, 找到递归停止条件和递增出递减入, 必要时使用Datalog/Prolog逻辑式编程语言(基于递归不定序运行)来当脚手架开发算法, 或借用图数据库Datomic的力量来帮助开发算法, 最后用GPT翻译为其他语言如Java或Go =\u003e 变成本能的反应,天下武功唯快不破: 常用的Scaffold代码写成Elisp/Yasnippet组合模版, 输入几个命令参数就生成特定的算法\n\n- [ ] 写一个GPT的提示词工程界面, 用Python或最熟悉的Clojure作为提示词(高维输出高维度)，辅助代码生成和运行的界面，通过项目和提示词历史，丰富提示词去提交，五六个UI界面窗口的实现\n  - [ ] GPT生成的代码解析，静态分析和Datalog结合判断其逻辑是否准确性\n  - [ ] 用Datalog来保存整个开发过程出现的提示词历史，还有repl历史, 以便更容易生成符合逻辑的提示词\n\n- [ ] 函数式递归的开发脚手架的实现：数据流可视化，分析递增递减\n\n- [ ] 数据流的可视化设计开发，lambda化数据流, 通过可视化数据流来帮助快速理解问题\n\n---\n\n- [ ] [[递归算法]]\n\t - 递归算法一般用干解决三类问题：\n\n\t - 1、数据的定义是按递归定义的（斐液那契数列）\n\n\t - 2、问题解法按递归算法实现（回溯）\n\n\t - 3、数据的结构形式是按递归定义的（树的逼历，图的搜索）\n\n- [ ] [[贪心算法]]\n\t - 经典案例：活动选择问题\n\n\t - 1、最小生成树\n\n\t - 2、算法背包\n\n\t - 3、问题单源最短路径的 Diikstra算法\n\n\t - 4、Huffman压缩编码#快捷输入\n\n- [ ] [[回溯算法]]\n\t - 使用回湖算法的经典案例\n\n\t - 1、深度优先搜索\n\n\t - 2、0-1背包问题\n\n\t - 3、正则表达式匹配4、八皇后\n\n\t - 5、数独6、全排列#快捷输入\n\n- [ ] [[动态规划]]\n\t - 使用动态规划求解的一些经典问题\n\n\t - 1、爬楼梯问题\n\n\t - 2、背包问题\n\n\t - 3、硬币找零4、图的全源最短路径\n\n\t - 5、最长公共子序列#快捷输入\n\n- [ ] [[枚举算法]]\n\t - 使用枚举算法求解的一些经典问题\n\n\t - 1、判断阿姆斯特朗数\n\n\t - 2、解百鸡问题#快捷输入\n\n- [ ] [[分治算法]]\n\t - 使用分治法求解的一些经典问题\n\n\t - 1、二分查找\n\n\t - 2、归并排序\n\n\t - 3、快速排序\n\n\t - 4、汉诺塔问题\n\n\t - 5、React时间分片#快捷输入\n\n---\n\n## 思想\n\n* 太极来描述递归的对立统一的两面: eval,apply元解释器λ演算解释一切复杂算法\n![](https://raw.githubusercontent.com/chanshunli/functional-programming-visualgo/master/太极来描述递归的对立统一的两面SICP_EVAL_APPLY_元解释器.png)\n\n* 函数式思想: 就是四两拨千斤, 就像太极一样 =\u003e FP的算法,递归描述算法是最简的统一算法的方式(解释器和所有算法的递归形式统一),接近数学,而不是堆栈的算法描述方式接近机器\n![](https://raw.githubusercontent.com/chanshunli/functional-programming-visualgo/master/clojure-kungfu.jpg)\n\n- [函数式算法可视化 functional programming algorithm visualizer](#%E5%87%BD%E6%95%B0%E5%BC%8F%E7%AE%97%E6%B3%95%E5%8F%AF%E8%A7%86%E5%8C%96-functional-programming-algorithm-visualizer)\n  - [算法可视化开发第一性原则](#%E7%AE%97%E6%B3%95%E5%8F%AF%E8%A7%86%E5%8C%96%E5%BC%80%E5%8F%91%E7%AC%AC%E4%B8%80%E6%80%A7%E5%8E%9F%E5%88%99)\n    - [递归方法的总结](#%E9%80%92%E5%BD%92%E6%96%B9%E6%B3%95%E7%9A%84%E6%80%BB%E7%BB%93)\n  - [算法可视化导航](#%E7%AE%97%E6%B3%95%E5%8F%AF%E8%A7%86%E5%8C%96%E5%AF%BC%E8%88%AA)\n  - [如何在数组中找到直角三角形的组合？(map-reduce-filter式解法)](#%E5%A6%82%E4%BD%95%E5%9C%A8%E6%95%B0%E7%BB%84%E4%B8%AD%E6%89%BE%E5%88%B0%E7%9B%B4%E8%A7%92%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E7%BB%84%E5%90%88map-reduce-filter%E5%BC%8F%E8%A7%A3%E6%B3%95)\n  - [二叉搜索树](#%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91)\n  - [SICP找零钱问题(递推式递归解法)](#sicp%E6%89%BE%E9%9B%B6%E9%92%B1%E9%97%AE%E9%A2%98%E9%80%92%E6%8E%A8%E5%BC%8F%E9%80%92%E5%BD%92%E8%A7%A3%E6%B3%95)\n\n##  算法可视化开发第一性原则\n* 用二维的表格或者矩阵存储数据(低维度的基本结构), 展示为高维的图或者树形结构, 而不要去存储高维结构,然后去解析高维结构生成高维结构\n* 充分利用数据库或者atom来存储中间过程, 然后API传给前端展示出来\n* 可视化前端驱动Repl lambda演算开发算法: 编写可视化的工具函数群,来快速可视化一个新的算法过程\n* 高阶函数描述复杂过程`(fn ... (f2 (f1 x)))` =\u003e 递归脚手架: 找到递归(递推的通项公式)终止条件(不同的算法递归描述的终止条件都不一样) =\u003e 去递归 =\u003e 去for循环,向量化\n* 先写死展示的数据,然后可视化开发结束(遵从易道),然后\"吃饱\"之后,最后变成灵活的自定义生成的数据,能够让人代入自身的易于理解的数据进去运行: 不要一上来就想着开发很完美的可视化过程,直接开发高维结构到高维结构的映射\n* 算法可视化开发如同吃饭天天吃,每天不断接近目标的可视化效果,直到最后能够随意代入自身数据进去运行,直接展示该算法的物理或现实意义: 刚开始从一个GraphViz图描述算法开始,慢慢细化,直到最后全部开发完一个算法的可视化过程\n* 先很粗暴的算法实现功能(暴力Repl人肉拟合未知函数), 然后对照旧的代码重写一遍\n* 代数进去算法得到局部打印的数列: 用等差和等比数列来表示所有数据的规律, 离散数据的规律, 发现数列的规律找到通项公式 或者是递推公式\n* 数学归纳法思想(有名(不同的算法的名字)万物(所有软件)之始,无名(数学归纳证明法)万物之母): 递归版本是最容易的, 运用万能的数学归纳法来证明所有复杂的公式定理，就算你完全不知道一个算法的名字，知道需求输入输出的样子，都能用递归描述出来 =\u003e 然后是非递归版本,用栈实现\n* 一切都是高阶函数, 包括字符串和数字(邱奇数的观点): 把amount当成一个高阶函数, 金额5的阶数和金额10的阶数是不同的, 金额10的一定量衰减就是金额5 =\u003e 当前的高阶函数数字 和 前一个高阶函数数字的关系是什么?(数学归纳法)\n* emacs yasnippad递归多分支的脚手架帮助开发算法\n* 打印prn信息来文学编程: 写成你能理解的方式就行 =\u003e log文学编程化\n\n### 递归方法的总结\n\n* 找到不可变的定点,即最基本的底维度的结构,衰减问题不可变的规律: 先降维度最简描述定点(最基本的简单结构), 然后升维度(递归低维,高维结果展示出来)\n* 找到规律来缩小这个问题的搜索空间: 确定函数的定义域和值域的边界在哪里\n* 分段函数来cond求和结果\n* 尝试用代数穷举小的数字,来描述衰减前者和衰减后者的关系,如何消解问题: count_change（amount，n）, count_change（amount，n-1）, count_change(amount-衰减的钱,n) 抽取出来的因子的关系\n* 用递归脚手架来爆栈来尝试衰减你的目标变量\n* 平时独立思考和编码练习: 从几个衰减变量中找到前后者关系 =\u003e 从一个递推公式直接到递归脚手架写出代码\n* 用公式来表达多个情况相加, 然后排出不可能的组合方式(A1 = A0 + A(?)): count_change(amount，n) = count_change(amount，n-1) + count_change(amount-amount_of_first_coin,n)\n\n##  算法可视化导航\n\n![](https://raw.githubusercontent.com/chanshunli/functional-programming-visualgo/master/website_preview.png)\n\n##  如何在数组中找到直角三角形的组合？(map-reduce-filter式解法)\n\n![](https://raw.githubusercontent.com/chanshunli/functional-programming-visualgo/master/demo_fp_visualgo.gif)\n\n##  二叉搜索树\n![](https://raw.githubusercontent.com/chanshunli/functional-programming-visualgo/master/demo_bst_search.gif)\n\n##  SICP找零钱问题(递推式递归解法)\n\n![]()\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlisp%2Falgorithm-visualizer-gpter-fper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxlisp%2Falgorithm-visualizer-gpter-fper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlisp%2Falgorithm-visualizer-gpter-fper/lists"}