{"id":19926746,"url":"https://github.com/shinkeonkim/tabular-method-cli","last_synced_at":"2025-03-01T10:44:47.439Z","repository":{"id":102286843,"uuid":"256086243","full_name":"shinkeonkim/tabular-method-cli","owner":"shinkeonkim","description":"tabular method cpp src","archived":false,"fork":false,"pushed_at":"2020-05-11T22:34:18.000Z","size":111,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-12T00:41:59.615Z","etag":null,"topics":["cpp-cli","tabular-methods"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shinkeonkim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-16T02:13:21.000Z","updated_at":"2020-05-15T09:59:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"5649a329-653a-4c49-912d-52b30ef20927","html_url":"https://github.com/shinkeonkim/tabular-method-cli","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinkeonkim%2Ftabular-method-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinkeonkim%2Ftabular-method-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinkeonkim%2Ftabular-method-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinkeonkim%2Ftabular-method-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shinkeonkim","download_url":"https://codeload.github.com/shinkeonkim/tabular-method-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241354996,"owners_count":19949291,"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":["cpp-cli","tabular-methods"],"created_at":"2024-11-12T22:30:37.003Z","updated_at":"2025-03-01T10:44:47.413Z","avatar_url":"https://github.com/shinkeonkim.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tabular-method-cli\n\n\u003cdiv class = \"shields\" style = \"display: flex; \"\u003e \n    \u003cimg src = \"https://img.shields.io/github/issues/shinkeonkim/tabular-method-cli\"\u003e\n    \u003cimg src = \"https://img.shields.io/github/forks/shinkeonkim/tabular-method-cli\"\u003e\n    \u003cimg src = \"https://img.shields.io/github/stars/shinkeonkim/tabular-method-cli\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=cpp\u0026message=cli\" /\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/top/shinkeonkim/tabular-method-cli\" /\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/shinkeonkim/tabular-method-cli\"/\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/shinkeonkim/tabular-method-cli\" /\u003e\n\u003c/div\u003e\n\n## introduce\n국민대학교 논리회로설계 강의 시간 중, tabular method를 배우게 되었습니다.\n\n강의 중 과제로 만들게 된 tabular method cli 소스입니다.\n\n## usage\nmain.cpp를 g++ 컴파일러로 컴파일/실행해주세요.\n\n## global variable\n```cpp\nstruct rows {\n    vector \u003cint\u003e minterms; // minterm 목록(뭉쳐지는 minterm들을 하나의 벡터에 저장함.)\n    vector \u003cint\u003e expression; // minterm 목록에서 대응되는 이진수 표현\n};\n\nint lang = 0; // 선택된 언어\nunsigned int numOfVar; // 변수 개수\nunsigned int numOfMinterm; // minterm 개수\nunsigned int numOfDontcare; // dontcare 개수\nvector \u003cint\u003e minterm; // 입력받은 minterm 벡터\nvector \u003cint\u003e dontcare; // 입력받은 dontcare 벡터\nvector\u003cvector\u003crows\u003e\u003e termList; //minterm, dontcare를 합쳐논 목록\nvector\u003crows\u003e totalrow; // PIchart, PI, EPI를 구하는 최종 minterm들을 모아놓음.\nvector\u003cvector\u003cint\u003e\u003e PIchart; //PIchart date\nvector \u003crows\u003e EPI; // EPI 목록\nvector \u003crows\u003e PI; // PI 목록\nvector \u003cint\u003e checkPI; // EPI, PI를 활용해 논리식에 포함되는 PI를 판단하는 dfs를 수행할 때, 중복 방지 check 배열 역할\nmap \u003cint, int\u003e M; // key = minterm, value = 0+ or -1, if value == -1 -\u003e dontcare \nint ansCount = (int)1e8; // 최대값 init\nint ansSizeSum = -1; // 최소값 init\nvector \u003cint\u003e ansCheck; // dfs 수행중, 최종 논리식을 구성하는 PI가 무엇인지 저장해놓는 벡터\n\nvector \u003cvector \u003cstring\u003e\u003e msg; // 언어별 메세지\n```\n\n## function\n\n### main\n```cpp\nint main() {\n    inputLanguage();\n    if(!inputNumbers()) {\n        inputErrorMsg();\n        return 0;\n    }\n    tabularMethod();\n}\n```\n\n### others function\n```cpp\nvoid inputLanguage(); // input language number\nvoid printLine(); // print \"-\" * 50\nvoid printLine(int k); // print \"-\" * k\n\nbool inputNumbers(); // input numbers\nbool mintermValidation(); //minterm이 유효한가\nbool dontcareValidation(); // dontcare가 유효한가\nvoid inputErrorMsg(); // input Error 메세지 출력\n\nvoid tabularMethod(); // tabular method 전체\n\nint countOne(vector\u003cint\u003e V); // 이진화된  minterm에서 1의 개수를 return\nvoid setTermList(); // 그룹핑 전에, minterm 세팅(1의 개수에 따라 분류하기) \nvoid printTermList(); // 그룹핑 과정 중, 1의 개수에 따라 분류된 term 목록 출력 \nvoid deleteDuplicatedTermList(); // 그룹핑 과정 중에, 중복되게 그룹핑 된 minterm 목록 제거\n\nint termDiff(vector \u003cint\u003e V1, vector\u003cint\u003e V2); // 두 이진화된 minterm의 차이 return\nvoid grouping(); // 그룹핑\nvoid makePIchart(); // PI chart 생성 함수\nvoid printPIchart(); // PI chart 출력 함수\nvoid findEPInPI(); // EPI, PI 를 찾는 함수\nvoid PIdfs(int idx); // PI를 선택할지, 안선택할지를 dfs로 탐색함.\nvoid derivecheckedPI(); // PIdfs 과정중, 맨 마지막 PI까지 결정했을 때, 결과값을 확인하는 함수.\nvoid printEPInPI(); // EPI, PI 를 출력하는 함수\nvoid findlogic(); // 최종 논리식 검출 함수\n\nvoid printMinterm(vector \u003cint\u003e V); // minterm 출력\nvoid printExpression(vector \u003cint\u003e V); // 이진 표현을, 알파벳으로 변환 출력\nvoid printfinalExpression(vector \u003cint\u003e V); // 최종 논리식 변환 출력\nvoid testFunc(); // 테스트 함수\n```\n\n\n\n## Lang setting\n- KOR/ENG version\n    - KOR\n    \u003cimg src = \"./img/KOR-version.JPG\"\u003e\n\n    - ENG\n    \u003cimg src = \"./img/ENG-version.JPG\"\u003e\n\n\n## Example\n\n#### 0\n\u003cimg src = \"./img/KOR-version.JPG\"\u003e\n\n#### 1\n\u003cimg src = \"./img/ex1.JPG\"\u003e\n\n#### 2\n\u003cimg src = \"./img/ex2.JPG\"\u003e\n\n#### 3\n\u003cimg src = \"./img/ex3.JPG\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshinkeonkim%2Ftabular-method-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshinkeonkim%2Ftabular-method-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshinkeonkim%2Ftabular-method-cli/lists"}