📝 輸入設定
- - -- 🧠 自動共享項檢測: 系統會自動分析PI數據,找出函數間的共享項 -
01 / DEFINE
+diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5043f0c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: npm + directory: / + schedule: + interval: monthly + open-pull-requests-limit: 5 + - package-ecosystem: github-actions + directory: / + schedule: + interval: monthly + open-pull-requests-limit: 5 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..6cf7866 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: CI + +on: + push: + branches: + - main + - 'agent/**' + pull_request: + branches: + - main + +permissions: + contents: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + verify: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: npm + - run: npm ci + - run: npm run check + - run: npx playwright install --with-deps chromium + - run: npm run test:e2e diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml new file mode 100644 index 0000000..08e1fcc --- /dev/null +++ b/.github/workflows/deploy-pages.yml @@ -0,0 +1,43 @@ +name: Deploy Pages + +on: + push: + branches: + - main + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 24 + cache: npm + - run: npm ci + - run: npm run build + - uses: actions/configure-pages@v5 + - uses: actions/upload-pages-artifact@v3 + with: + path: dist + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..603e60a --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +dist/ +coverage/ +playwright-report/ +test-results/ +.vite/ +*.log +*.tsbuildinfo diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..d862c75 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,12 @@ +dist +coverage +playwright-report +test-results +Boolean Minimizer.apk +android +ios +windows11 +icons.json +legacy +報告書.md +測資.md diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..ab57af6 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100 +} diff --git a/Boolean Minimizer.apk b/Boolean Minimizer.apk deleted file mode 100644 index e6da3fc..0000000 Binary files a/Boolean Minimizer.apk and /dev/null differ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3132b7a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Bigsticktw + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 12970b9..7c47d0d 100644 --- a/README.md +++ b/README.md @@ -1,301 +1,116 @@ -# 🧮 多輸出布林函數最小化工具 - -## 📖 文件 - -- [報告書](./報告書.md) -- [測資](./測資.md) - -## 🌐 線上版本 -**🚀 立即使用:[https://bigsticktw.github.io/boolean-function-minimizer/](https://bigsticktw.github.io/boolean-function-minimizer/)** - -[](https://bigsticktw.github.io/boolean-function-minimizer/) -[](https://bigsticktw.github.io/boolean-function-minimizer/) -[](LICENSE) - -## 📋 項目簡介 - -這是一個基於 **Patrick Method** 演算法的多輸出布林函數最小化工具,專為邏輯電路設計和布林代數最佳化而開發。該工具支援多種輸入格式,能夠自動找到最佳的邏輯表達式,並通過硬體共享最小化總體成本。 - -**🚀 現已支援 PWA (Progressive Web App) 功能,可安裝到桌面和手機!** - -## ✨ 功能特色 - -### 🎯 核心功能 -- **多輸出最佳化**:同時處理多個布林函數,找到全域最佳解 -- **Patrick Method 演算法**:實現完整的三階段最佳化流程 -- **硬體共享最佳化**:自動識別可共享的 Prime Implicants,降低硬體成本 -- **智能算法選擇**:根據問題規模自動選擇回溯搜索或窮舉搜索 - -### 📱 PWA 功能 -- **🔗 線上使用**:[https://bigsticktw.github.io/boolean-function-minimizer/](https://bigsticktw.github.io/boolean-function-minimizer/) -- **📱 Android 安裝**:支援安裝到 Android 手機主畫面 -- **⚡ 離線使用**:安裝後可在無網路環境下使用 -- **🚀 快速啟動**:從主畫面直接啟動,載入速度快 -- **🔄 自動更新**:應用更新時自動同步最新版本 -- **🌐 全平台網頁版**:所有平台都可使用完整網頁版功能 - -### 🆕 最新功能 -- **📤 分享結果**:一鍵分享計算結果到其他應用 -- **📋 複製結果**:快速複製結果到剪貼板 -- **📁 檔案拖放**:支援拖放 `.txt` 和 `.json` 檔案載入數據 -- **🔗 URL 參數**:支援 `?mode=pi` 和 `?mode=minterm` 直接切換模式 -- **⚡ 快捷方式**:安裝後可直接啟動特定輸入模式 - -### 📊 輸入模式 -1. **Prime Implicants 模式**:直接輸入已知的 Prime Implicants -2. **Minterms 模式**:輸入 Minterms 和 Don't Care 項,自動生成 Prime Implicants - -### 🔍 算法特色 -- **三階段成本計算**: - - Stage 1:基本 PI 成本計算 - - Stage 2:各函數獨立冗餘移除 - - Stage 3:Patrick 共享成本計算 -- **智能剪枝**:多層剪枝策略提高搜索效率 -- **成本最佳化**:支援單個 literal 和多個 literals 的不同成本計算 - -## 🚀 快速開始 - -### 🌐 線上使用(推薦) -**直接訪問:[https://bigsticktw.github.io/boolean-function-minimizer/](https://bigsticktw.github.io/boolean-function-minimizer/)** - -### 📱 PWA 安裝 - -> **📱 目前僅支援 Android 設備安裝** -> iOS、Windows、macOS 等平台的 PWA 安裝功能正在開發中,敬請期待! - -1. **Android 手機瀏覽器**: - - 使用 Chrome、Edge 或其他支援 PWA 的瀏覽器 - - 訪問 [線上版本](https://bigsticktw.github.io/boolean-function-minimizer/) - - 點擊「加入主畫面」或「安裝應用程式」 - - 應用圖標將出現在主畫面上,可離線使用 - -2. **桌面瀏覽器**(僅網頁版): - - 訪問 [線上版本](https://bigsticktw.github.io/boolean-function-minimizer/) - - 可正常使用所有功能,但暫不支援安裝到桌面 - - 建議加入書籤以便快速訪問 - -3. **快捷啟動**: - - PI 模式:[https://bigsticktw.github.io/boolean-function-minimizer/?mode=pi](https://bigsticktw.github.io/boolean-function-minimizer/?mode=pi) - - Minterm 模式:[https://bigsticktw.github.io/boolean-function-minimizer/?mode=minterm](https://bigsticktw.github.io/boolean-function-minimizer/?mode=minterm) - -### 💻 本地部署 -1. 克隆或下載項目文件 -2. 使用 HTTP 服務器運行(避免 CORS 問題): - ```bash - # Python 3 - python -m http.server 8000 - - # Node.js - npx serve . - - # PHP - php -S localhost:8000 - ``` -3. 訪問 `http://localhost:8000` - -### 系統需求 -- **網頁版**:現代網頁瀏覽器(Chrome 88+、Firefox 85+、Safari 14+、Edge 88+) -- **Android PWA**:Android 設備 + Chrome/Edge 瀏覽器 -- **技術要求**:支援 JavaScript ES6+、Service Worker -- **其他平台**:僅支援網頁版,功能完整但無法安裝 - -## 📖 使用指南 - -### 1. 設定變數 -在「變數設定」欄位中輸入邏輯變數,用逗號分隔: -``` -x,y,z -``` -或 -``` -a,b,c,d -``` - -### 2. 選擇輸入模式 - -#### Prime Implicants 模式 -適用於已知 Prime Implicants 的情況: - -**範例輸入**: -``` -函數 F1: -- PI1: 01- -- PI2: -11 - -函數 F2: -- PI1: 0-1 -- PI2: 1-0 -``` - -**輸出函數定義**(可選): -``` -F1: 2,3,6,7 -F2: 1,4,5 -``` - -#### Minterms 模式 -適用於從 Minterms 開始設計的情況: - -**範例輸入**: -``` -函數 F1: -- Minterms: 2,3,6,7 -- Don't Care: 1 - -函數 F2: -- Minterms: 1,4,5 -- Don't Care: 0 -``` - -### 3. 執行最佳化 -點擊「🚀 執行多輸出最佳化」按鈕,系統將: -1. 解析輸入資料 -2. 生成或處理 Prime Implicants -3. 執行 Patrick Method 演算法 -4. 計算最佳共享方案 -5. 顯示詳細結果 - -### 4. 結果操作 -- **📤 分享結果**:將結果分享到其他應用 -- **📋 複製結果**:複製完整結果到剪貼板 -- **📁 檔案操作**:拖放檔案載入數據 - -### 5. 結果解讀 - -#### 最佳化結果範例 -``` -🔹 解決方案 1: -F1 = b'c' + bd' + ac' + cd -使用的PI: --11, -00-, -1-0, 1-0- -共享成本: 12 個閘級 - -🔹 解決方案 2: -F1 = c'd' + b'd + ac' + bc -使用的PI: --00, -0-1, -11-, 1-0- -共享成本: 12 個閘級 -``` - -#### 成本分析 -``` -💰 成本分析 -成本計算方式:1個literal成本=1,多個literals成本=literal數量+1 -例如:y 有 1 個符號,成本為 1;x'z' 有 2 個符號,成本為 2 + 1 = 3 - -個別最佳化總成本: 12 -共享最佳化總成本: 12 -``` - -## 🛠️ 技術架構 - -### 前端技術 -- **HTML5**:語義化標記和現代 Web 標準 -- **CSS3**:響應式設計和現代視覺效果 -- **JavaScript ES6+**:模組化程式設計和現代語法 -- **PWA**:Service Worker、Web App Manifest - -### 核心算法 -- **Quine-McCluskey**:Prime Implicants 生成 -- **Patrick Method**:最小覆蓋求解 -- **回溯搜索**:最佳化解空間探索 -- **動態規劃**:成本計算最佳化 - -### PWA 特性 -- **Service Worker**:離線緩存和更新管理 -- **Web App Manifest**:應用配置和圖標 -- **Cache API**:智能緩存策略 -- **Background Sync**:背景同步(未來功能) - -## 📊 性能指標 - -### 算法效能(單函數輸出情況) -- **小規模問題**(≤4變數):< 100ms -- **中規模問題**(5-6變數):< 1s -- **大規模問題**(7+變數):< 10s(視複雜度而定) - -### PWA 性能 -- **首次載入**:< 2s -- **重複訪問**:< 500ms(緩存) -- **離線啟動**:< 300ms -- **安裝大小**:< 1MB - -## 🔧 開發指南 - -### 項目結構 -``` -boolean-function-minimizer/ -├── index.html # 主要網頁 -├── patrick-method-core.js # 核心算法 -├── manifest.json # PWA 配置 -├── sw.js # Service Worker -├── README.md # 項目說明 -├── android/ # Android 圖標 -├── ios/ # iOS 圖標 -├── windows11/ # Windows 圖標 -└── icons.json # 圖標配置 -``` - -### 本地開發 -1. **克隆項目**: - ```bash - git clone https://github.com/bigsticktw/boolean-function-minimizer.git - cd boolean-function-minimizer - ``` - -2. **啟動開發服務器**: - ```bash - python -m http.server 8000 - ``` - -3. **訪問開發版本**: - ``` - http://localhost:8000 - ``` - -### 部署更新 -1. **推送到 GitHub**: - ```bash - git add . - git commit -m "Update features" - git push origin main - ``` - -2. **GitHub Pages 自動部署**: - - 推送後自動更新線上版本 - - 通常在 1-2 分鐘內生效 - -## 🤝 貢獻指南 - -歡迎提交 Issue 和 Pull Request! - -### 報告問題 -- 使用 [GitHub Issues](https://github.com/bigsticktw/boolean-function-minimizer/issues) -- 提供詳細的問題描述和重現步驟 -- 包含瀏覽器版本和操作系統資訊 - -### 功能建議 -- 在 Issues 中標記為 `enhancement` -- 描述功能的用途和預期行為 -- 提供使用場景和範例 - -### 代碼貢獻 -1. Fork 項目 -2. 創建功能分支 -3. 提交變更 -4. 發起 Pull Request - -## 🙏 致謝 - -- **Patrick Method 演算法**:基於經典的邏輯最小化理論 -- **Quine-McCluskey 演算法**:Prime Implicants 生成的標準方法 -- **PWA 技術**:現代 Web 應用開發標準 -- **GitHub Pages**:免費的靜態網站託管服務 - -## 📞 聯絡資訊 - -- **線上工具**:[https://bigsticktw.github.io/boolean-function-minimizer/](https://bigsticktw.github.io/boolean-function-minimizer/) -- **GitHub 項目**:[https://github.com/bigsticktw/boolean-function-minimizer](https://github.com/bigsticktw/boolean-function-minimizer) -- **問題回報**:[GitHub Issues](https://github.com/bigsticktw/boolean-function-minimizer/issues) - ---- - -**🚀 立即體驗:[https://bigsticktw.github.io/boolean-function-minimizer/](https://bigsticktw.github.io/boolean-function-minimizer/)** \ No newline at end of file +# Boolean Logic Minimizer + +[繁體中文](#繁體中文) · [English](#english) + +[](https://github.com/Bigsticktw/boolean-function-minimizer/actions/workflows/ci.yml) +[](https://bigsticktw.github.io/boolean-function-minimizer/) +[](LICENSE) + + + +## 繁體中文 + +這是一個 correctness-first 的布林函數最小化工具:先用 Quine–McCluskey 產生 +Prime Implicants,再用 Petrick cover 搜尋最小 SOP。所有計算都在瀏覽器本機完成。 + +### 為什麼重構 + +舊版可操作,但演算法、DOM 與結果格式化集中在兩個約 2,400 行的檔案,沒有自動測試, +也會在三變數輸入 `m8` 時錯誤產生第四變數 `X3`。v2 把輸入契約、純演算法核心、 +Web Worker、UI 與部署拆開,並把該錯誤固定為 regression test。 + +### 已驗證能力 + +- Minterms 與進階 Prime Implicants 兩種輸入模式。 +- 1–6 個變數、最多 4 個輸出的 bounded Exact prime-cover mode。 +- minterm 範圍、重複值、don’t-care 衝突、PI 寬度及 off-set 覆蓋驗證。 +- 多輸出共享 product term 成本模型。 +- 256 種三變數 truth table 的完整等價性與最佳成本 oracle。 +- Unit、regression、property 與 Playwright browser E2E。 +- Web Worker 運算、靜態 GitHub Pages 與版本化 PWA cache。 + +### 成本模型 + +- 單一 literal 的 product term 成本為 `1`。 +- 多 literal product term 成本為 `literal count + 1`。 +- 同一 product term 跨輸出重用時,每新增一個輸出連線增加 `1`。 + +多輸出搜尋會在各函數的 Prime Implicant 候選聯集中找出精確最佳 cover;它不宣稱已 +枚舉所有可能的非 prime 共享 implicants。這是專案明確定義的教學/實驗成本模型, +不等同特定 cell library、FPGA LUT 或工業 logic synthesis 的實際面積與 timing。 + +### 限制 + +- Exact minimization 具有組合爆炸;候選連線與覆蓋目標超過上限時會 fail fast。 +- 第一輪只處理 SOP,不含 POS、K-map 編輯器、Verilog 產生或 Espresso heuristic。 +- 本工具適合教學、小型函數與作品驗證,不取代 EDA 工具。 +- 歷史 `報告書.md` 與 `測資.md` 保留原專題脈絡;v2 的行為以程式測試與本 README 為準。 + +### 本機開發 + +需求:Node.js 24、npm 11。 + +```bash +npm ci +npm run dev +``` + +完整驗證: + +```bash +npm run check +npx playwright install chromium +npm run test:e2e +``` + +## 架構 + +```mermaid +flowchart LR + UI["Input UI"] --> V["Validation"] + V --> W["Web Worker"] + W --> Q["Quine–McCluskey"] + Q --> P["Petrick exact cover"] + P --> R["Structured result"] + R --> UI +``` + +核心目錄: + +```text +src/ +├─ core/ # pure validation and minimization +├─ worker/ # isolated solver execution +├─ main.ts # DOM controller and renderer +└─ styles.css +tests/ +├─ unit/ +├─ property/ +├─ regression/ +└─ e2e/ +``` + +## English + +Boolean Logic Minimizer is a correctness-first, browser-local SOP minimizer. It generates prime +implicants with Quine–McCluskey and solves the bounded prime-implicant cover with an exact +Petrick-style branch-and-bound search. + +The v2 refactor separates validation, the pure TypeScript solver, Web Worker execution, UI and +deployment. It includes exhaustive oracle checks for all 256 three-variable truth tables, +regression coverage for legacy bugs, and Playwright browser tests. + +### Scope + +- 1–6 variables and up to 4 outputs. +- Minterm and advanced supplied-prime input modes. +- Explicit input and complexity errors. +- A documented experimental multi-output sharing cost model. +- Local-only computation and a versioned offline cache. + +This is an educational and portfolio tool for small Boolean functions. It is not an industrial +logic-synthesis or EDA replacement. + +## License + +[MIT](LICENSE) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..156fbdc --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,13 @@ +# Security policy + +## Supported version + +Only the current `main` branch and deployed GitHub Pages version receive fixes. + +## Reporting + +Please use GitHub private vulnerability reporting when it is available. Do not include credentials, +private truth tables or unrelated personal data in a public issue. + +This application performs all minimization locally in the browser and does not require an account, +backend or API key. diff --git a/android/android-launchericon-144-144.png b/android/android-launchericon-144-144.png deleted file mode 100644 index 65426d2..0000000 Binary files a/android/android-launchericon-144-144.png and /dev/null differ diff --git a/android/android-launchericon-192-192.png b/android/android-launchericon-192-192.png deleted file mode 100644 index 0faa67f..0000000 Binary files a/android/android-launchericon-192-192.png and /dev/null differ diff --git a/android/android-launchericon-48-48.png b/android/android-launchericon-48-48.png deleted file mode 100644 index 2ccfd5b..0000000 Binary files a/android/android-launchericon-48-48.png and /dev/null differ diff --git a/android/android-launchericon-512-512.png b/android/android-launchericon-512-512.png deleted file mode 100644 index b50ba8e..0000000 Binary files a/android/android-launchericon-512-512.png and /dev/null differ diff --git a/android/android-launchericon-72-72.png b/android/android-launchericon-72-72.png deleted file mode 100644 index 91a14b7..0000000 Binary files a/android/android-launchericon-72-72.png and /dev/null differ diff --git a/android/android-launchericon-96-96.png b/android/android-launchericon-96-96.png deleted file mode 100644 index 9bb4cdb..0000000 Binary files a/android/android-launchericon-96-96.png and /dev/null differ diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..f259d40 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,43 @@ +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: [ + 'dist', + 'coverage', + 'playwright-report', + 'test-results', + 'legacy', + '*.config.js', + '*.config.d.ts' + ] + }, + eslint.configs.recommended, + ...tseslint.configs.recommended, + { + rules: { + '@typescript-eslint/consistent-type-imports': 'error' + } + }, + { + files: ['public/sw.js'], + languageOptions: { + globals: { + URL: 'readonly', + caches: 'readonly', + fetch: 'readonly', + self: 'readonly' + } + } + }, + { + files: ['scripts/**/*.mjs'], + languageOptions: { + globals: { + document: 'readonly', + window: 'readonly' + } + } + } +); diff --git a/icons.json b/icons.json deleted file mode 100644 index 9d9dbbf..0000000 --- a/icons.json +++ /dev/null @@ -1,452 +0,0 @@ -{ - "icons": [ - { - "src": "windows11/SmallTile.scale-100.png", - "sizes": "71x71" - }, - { - "src": "windows11/SmallTile.scale-125.png", - "sizes": "89x89" - }, - { - "src": "windows11/SmallTile.scale-150.png", - "sizes": "107x107" - }, - { - "src": "windows11/SmallTile.scale-200.png", - "sizes": "142x142" - }, - { - "src": "windows11/SmallTile.scale-400.png", - "sizes": "284x284" - }, - { - "src": "windows11/Square150x150Logo.scale-100.png", - "sizes": "150x150" - }, - { - "src": "windows11/Square150x150Logo.scale-125.png", - "sizes": "188x188" - }, - { - "src": "windows11/Square150x150Logo.scale-150.png", - "sizes": "225x225" - }, - { - "src": "windows11/Square150x150Logo.scale-200.png", - "sizes": "300x300" - }, - { - "src": "windows11/Square150x150Logo.scale-400.png", - "sizes": "600x600" - }, - { - "src": "windows11/Wide310x150Logo.scale-100.png", - "sizes": "310x150" - }, - { - "src": "windows11/Wide310x150Logo.scale-125.png", - "sizes": "388x188" - }, - { - "src": "windows11/Wide310x150Logo.scale-150.png", - "sizes": "465x225" - }, - { - "src": "windows11/Wide310x150Logo.scale-200.png", - "sizes": "620x300" - }, - { - "src": "windows11/Wide310x150Logo.scale-400.png", - "sizes": "1240x600" - }, - { - "src": "windows11/LargeTile.scale-100.png", - "sizes": "310x310" - }, - { - "src": "windows11/LargeTile.scale-125.png", - "sizes": "388x388" - }, - { - "src": "windows11/LargeTile.scale-150.png", - "sizes": "465x465" - }, - { - "src": "windows11/LargeTile.scale-200.png", - "sizes": "620x620" - }, - { - "src": "windows11/LargeTile.scale-400.png", - "sizes": "1240x1240" - }, - { - "src": "windows11/Square44x44Logo.scale-100.png", - "sizes": "44x44" - }, - { - "src": "windows11/Square44x44Logo.scale-125.png", - "sizes": "55x55" - }, - { - "src": "windows11/Square44x44Logo.scale-150.png", - "sizes": "66x66" - }, - { - "src": "windows11/Square44x44Logo.scale-200.png", - "sizes": "88x88" - }, - { - "src": "windows11/Square44x44Logo.scale-400.png", - "sizes": "176x176" - }, - { - "src": "windows11/StoreLogo.scale-100.png", - "sizes": "50x50" - }, - { - "src": "windows11/StoreLogo.scale-125.png", - "sizes": "63x63" - }, - { - "src": "windows11/StoreLogo.scale-150.png", - "sizes": "75x75" - }, - { - "src": "windows11/StoreLogo.scale-200.png", - "sizes": "100x100" - }, - { - "src": "windows11/StoreLogo.scale-400.png", - "sizes": "200x200" - }, - { - "src": "windows11/SplashScreen.scale-100.png", - "sizes": "620x300" - }, - { - "src": "windows11/SplashScreen.scale-125.png", - "sizes": "775x375" - }, - { - "src": "windows11/SplashScreen.scale-150.png", - "sizes": "930x450" - }, - { - "src": "windows11/SplashScreen.scale-200.png", - "sizes": "1240x600" - }, - { - "src": "windows11/SplashScreen.scale-400.png", - "sizes": "2480x1200" - }, - { - "src": "windows11/Square44x44Logo.targetsize-16.png", - "sizes": "16x16" - }, - { - "src": "windows11/Square44x44Logo.targetsize-20.png", - "sizes": "20x20" - }, - { - "src": "windows11/Square44x44Logo.targetsize-24.png", - "sizes": "24x24" - }, - { - "src": "windows11/Square44x44Logo.targetsize-30.png", - "sizes": "30x30" - }, - { - "src": "windows11/Square44x44Logo.targetsize-32.png", - "sizes": "32x32" - }, - { - "src": "windows11/Square44x44Logo.targetsize-36.png", - "sizes": "36x36" - }, - { - "src": "windows11/Square44x44Logo.targetsize-40.png", - "sizes": "40x40" - }, - { - "src": "windows11/Square44x44Logo.targetsize-44.png", - "sizes": "44x44" - }, - { - "src": "windows11/Square44x44Logo.targetsize-48.png", - "sizes": "48x48" - }, - { - "src": "windows11/Square44x44Logo.targetsize-60.png", - "sizes": "60x60" - }, - { - "src": "windows11/Square44x44Logo.targetsize-64.png", - "sizes": "64x64" - }, - { - "src": "windows11/Square44x44Logo.targetsize-72.png", - "sizes": "72x72" - }, - { - "src": "windows11/Square44x44Logo.targetsize-80.png", - "sizes": "80x80" - }, - { - "src": "windows11/Square44x44Logo.targetsize-96.png", - "sizes": "96x96" - }, - { - "src": "windows11/Square44x44Logo.targetsize-256.png", - "sizes": "256x256" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-16.png", - "sizes": "16x16" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-20.png", - "sizes": "20x20" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-24.png", - "sizes": "24x24" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-30.png", - "sizes": "30x30" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-32.png", - "sizes": "32x32" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-36.png", - "sizes": "36x36" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-40.png", - "sizes": "40x40" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-44.png", - "sizes": "44x44" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-48.png", - "sizes": "48x48" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-60.png", - "sizes": "60x60" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-64.png", - "sizes": "64x64" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-72.png", - "sizes": "72x72" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-80.png", - "sizes": "80x80" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-96.png", - "sizes": "96x96" - }, - { - "src": "windows11/Square44x44Logo.altform-unplated_targetsize-256.png", - "sizes": "256x256" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png", - "sizes": "16x16" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png", - "sizes": "20x20" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png", - "sizes": "24x24" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png", - "sizes": "30x30" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png", - "sizes": "32x32" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png", - "sizes": "36x36" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png", - "sizes": "40x40" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png", - "sizes": "44x44" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png", - "sizes": "48x48" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png", - "sizes": "60x60" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png", - "sizes": "64x64" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png", - "sizes": "72x72" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png", - "sizes": "80x80" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png", - "sizes": "96x96" - }, - { - "src": "windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png", - "sizes": "256x256" - }, - { - "src": "android/android-launchericon-512-512.png", - "sizes": "512x512" - }, - { - "src": "android/android-launchericon-192-192.png", - "sizes": "192x192" - }, - { - "src": "android/android-launchericon-144-144.png", - "sizes": "144x144" - }, - { - "src": "android/android-launchericon-96-96.png", - "sizes": "96x96" - }, - { - "src": "android/android-launchericon-72-72.png", - "sizes": "72x72" - }, - { - "src": "android/android-launchericon-48-48.png", - "sizes": "48x48" - }, - { - "src": "ios/16.png", - "sizes": "16x16" - }, - { - "src": "ios/20.png", - "sizes": "20x20" - }, - { - "src": "ios/29.png", - "sizes": "29x29" - }, - { - "src": "ios/32.png", - "sizes": "32x32" - }, - { - "src": "ios/40.png", - "sizes": "40x40" - }, - { - "src": "ios/50.png", - "sizes": "50x50" - }, - { - "src": "ios/57.png", - "sizes": "57x57" - }, - { - "src": "ios/58.png", - "sizes": "58x58" - }, - { - "src": "ios/60.png", - "sizes": "60x60" - }, - { - "src": "ios/64.png", - "sizes": "64x64" - }, - { - "src": "ios/72.png", - "sizes": "72x72" - }, - { - "src": "ios/76.png", - "sizes": "76x76" - }, - { - "src": "ios/80.png", - "sizes": "80x80" - }, - { - "src": "ios/87.png", - "sizes": "87x87" - }, - { - "src": "ios/100.png", - "sizes": "100x100" - }, - { - "src": "ios/114.png", - "sizes": "114x114" - }, - { - "src": "ios/120.png", - "sizes": "120x120" - }, - { - "src": "ios/128.png", - "sizes": "128x128" - }, - { - "src": "ios/144.png", - "sizes": "144x144" - }, - { - "src": "ios/152.png", - "sizes": "152x152" - }, - { - "src": "ios/167.png", - "sizes": "167x167" - }, - { - "src": "ios/180.png", - "sizes": "180x180" - }, - { - "src": "ios/192.png", - "sizes": "192x192" - }, - { - "src": "ios/256.png", - "sizes": "256x256" - }, - { - "src": "ios/512.png", - "sizes": "512x512" - }, - { - "src": "ios/1024.png", - "sizes": "1024x1024" - } - ] -} \ No newline at end of file diff --git a/index.html b/index.html index 09c67d6..337d803 100644 --- a/index.html +++ b/index.html @@ -1,2377 +1,145 @@ - - -
- - - -基於 Patrick Method 演算法的多輸出最佳化系統
+ + + + + + + + + + + +DIGITAL LOGIC · EXACT MODE
++ 用 Quine–McCluskey 產生 Prime Implicants,再以 Petrick cover 找出可驗證的最小 SOP。 +
+01 / DEFINE
+正在執行多輸出最佳化演算法...
- - - -請在左側輸入多輸出函數資料並點擊執行按鈕
-🔹 支援 Prime Implicants 和 Minterms 兩種輸入模式
-🔹 自動最佳化多函數共享項
-🔹 顯示詳細最佳化過程
-以逗號分隔;Exact mode 最多 6 個變數。
載入範例,或輸入 minterms 後執行求解。