cpp
-
ASCII art로 3d 공간 구현하기C&E: career & experience/Experience 2024. 9. 26. 10:17
컴퓨터 프로그래밍 수업 Cpp 프로젝트의 일환으로 ascii 3d 프로젝트를 진행하였다.3d 공간에 큐브, 사각형 그리고 삼각형 등의 입체와 평면들을 생성하고, 생성한 입체를 아스키 아트로 콘솔에 출력하는 것을 목표로 했다. 프로젝트의 소스는 github.com/KMSstudio/ascii3d 에서 볼 수 있다. 프로젝트의 사용법은 유튜브 영상 youtu.be/Yqwu8YJYayA에서도 확인할 수 있다.프로그램 내에서는 두 가지 window가 존재한다. 하나는 공간의 편집을 위해서, 나머지 하나는 공간을 보여주기 위해 존재한다. 프로그램을 처음 시작시키면, show window가 실행된다. A. Command window이 창에서는 명령어를 이용하여 Space의 속성을 조회하거나, 변경한다. 명령어는 대..
-
C스러운 코드로 유혹하기. (비트연산, 연산우선순위 편)R&E: research & education/Research 2023. 12. 9. 13:00
오늘은 코드로 상대를 유혹하는 방법을 알아보겠습니다.모든 코드는 ANSI문법을 준수합니다.01. 분기없이 Max, min 구하기#define MIN(x, y) ((y) ^ (((x) ^ (y)) & -((x) 02. N을 32로 나눈 나머지N & 0x1F03. log N값 구하기const int tab64[64] = { 63, 0, 58, 1, 59, 47, 53, 2, 60, 39, 48, 27, 54, 33, 42, 3, 61, 51, 37, 40, 49, 18, 28, 20, 55, 30, 34, 11, 43, 14, 22, 4, 62, 57, 46, 52, 38, 26, 32, 41, 50, 36, 17, 19, 29, 10, 13, 21, 56, 45, 25, 31, 35, 16, 9..
-
KMS13 : C++(Hurffman code)을 이용한 txt 파일 압축기 (source)Program_Light 2021. 9. 4. 13:00
이번에는 지난달에 올린 Huffman code를 이용한 영문 텍스트 파일을 모든 txt파일에서 사용할 수 있게 업그레이드 하는 동시에, 간단한 최적화를 진행해봤습니다. (물론 아직도 완벽한 최적화라 하기는 어렵지만요...) technonogy 지난 소스에서 사용한 최고의 기술은 huffman code의 string length만을 가지로 huffman code를 만들어내는 Binary tree를 기반으로 구현한, Huffman code length 만으로 코드를 복구하는 프로세스인데, 이 방식에 약간의 메모리 최적화를 진행했습니다. 지난 소스에서도 설명했듯 허프만 코드는 기본적으로 이진 트리 위에서 구현됩니다. 허프만 코드를 저장하는 이진 트리의 특징을 살려 코드의 길이만으로 코드를 최적화해내는 프로세스..
-
KMS13 : C++(Hurffman code)을 이용한영문 txt 파일 압축기 (source)Program_Light 2021. 8. 7. 13:00
이번 포스팅에 쓰인 프로그램은 사실 KMS프로그램에 속하지 않는 놈이었습니다. 국어 모의고사 지문에서 허프만 코드에 관한 설명이 나왔는데, 상당히 흥미롭더군요 (꼭 자기 분야가 아니면 흥미로움;;) 그래서 지문에 있던 내용을 기반으로 하여, 비효율적인 모든 부분들은 다 잘라내고 몇 가지 테크닉을 터 추가해서 코드를 짰습니다. 생각없이 이틀동안 두다다다 만들었는데, 예상 외로 결과가 뛰어나서 이렇게 KMS 13이라는 새로운 이름을 붙여 블로그에 내보내게 되었습니다. 개인적으로 C, algorithm, 암호화 이런것만 하고 C++은 vector나 priority_queue STL잠깐식 얹어 쓰는 상황이었는데, 이 프로그램을 개발하면서 대강 알고 있던 클래스를 사용했습니다. 물론 상속같은 것은 1도 없는 클래..
-
C언어 math.h에서 파이값 가져오는 방법R&E: research & education/Research 2021. 5. 15. 13:00
이번주에도 간단하게 C언어 파이값을 비롯해, 자연상수, 자연상수 로그값, 자연소그부터 루트 파이와 2 분의 파이 등 다양한 상수값?들을 알아내는 방법을 알아봅시다.이 방법은 개인적으로 알면 별거 아닌데, 모르고있다 알게되면 '아...'하게 되는 내용입니다.참고로 비주얼 스튜디오를 기준으로 설명드리는 겁니다. gcc에서는 높은 확률로 작동이 안될겁니다.+ 2주연속 간단한 내용이라 죄송합니다. 다음주에는 NIST에서 권장하는 난수 판독기로 돌아오겠습니다코드#include #define _USE_MATH_DEFINES#include //이제 여러분은 이 소스에서 math.h에서 지원하는 모든 매크로(define)들을 사용할 수 있습니다.int main(void) { return 0;} 사용가능한 매크로들 (..
-
C언어 array[-1]에 접근할 수 있는 방법R&E: research & education/Research 2021. 5. 8. 13:00
오늘은 거대한, signature 프로젝트 보다는간단하게 신기한 코드를 알아보도록 합시다.이건 제가 알아낸 방법이며, 어디든 퍼가도 좋으니 제발 퍼가신다면 출처에 KMS studio라고 잘보이게 써주세요코드#include int main(void) { int array_s[5] = { 0, 1, 2, 3, 4 }; int* arr = array_s + 4; int i; printf("arr[-3] = %d\n\n", arr[-3]); for (i = -4; i 출력결과원리간단한 원리로 "이게 될까?"했는데 "이게 되네?"가 되서 올립니다.사실 포인터만 배우시면 이정도 프로그램 원리는 알 것이라 생각합니다. printf 부분만 보면 런타임에러가 발생하거나 쓰레기 값이 출력될 것 같은 생긴 코드지만arr[-..
-
KMS08 : C++ 한글→숫자 변환함수 소스Program_Light 2021. 4. 10. 13:00
간단하게 한글을 수로 변형시켜주는 함수를 개발하였다. 상수와 for문으로 이루어진, 간단함 함수이며, 네이버 블로그 초창기 시절에 개발한 것이라 성능이 그렇게 뛰어나지는 않다. 안녕하세요 KMS입니다. 이번에는 지난번에 만들었다 삭제한 KtoI변환함수를 만들었습니다. 설명은 너무 복잡하므로 생략하겠습니다. 소스코드 아래있는 파일은 릴리즈 파일 입니다. KMS08.h #pragma once #ifndef __KMS_08__ #define __KMS_08__ #include #include namespace korean_KMS { namespace _for_kms08_inline_func { #define alpha_plus_0"영" #define alpha_plus_1"하나" wchar_t read_alp..
-
KMS07 : C++ 소인수분해, 소수판별, 확장유클리드 알고리즘 소스Program_Light 2021. 4. 3. 13:00
요즘 좋은 영감이 떠오르질 않네요. 그래서 지난번 KMS06에서 만든 확장유클리드 알고리즘과 여러 소수관련 함수들을 통합한 프로그램을 하나 만들었습니다. 참고로 소수 탐색기는 KMS04에서 만들었는데, KMS04소스 하나에만 500줄을 넘어가서 굳이 합치지는 않았습니다. 사실상 KMS04, KMS06종합인 KMS07이기 때문에 이번에 설명은 따로 하지 않겠습니다. 소스 source.cpp #include #include #include #include using namespace std; namespace GenP_KMS { #define TRUE1 #define FALSE0 #define MAX(x, y)((x > y) ? (x) : (y)) #define MIN(x, y)((x < y) ? (x) :..