분류
-
파이썬 Jest pytest 이용하기컴퓨터/파이썬 2020. 9. 22. 16:47
Jest는 심플함에 초점을 둔 자바스크립트 테스팅 프레임워크이다. Jest 파이썬 버전도 unittest, pytest 대신 사용할 수 있는 테스팅 프레임워크이다. 1. 설치 및 설정 yarn add jest-pytest pip install pytest-jest --upgrade pip install snapshottest 설치 후, package.json에 아래처럼 추가한다. "jest": { "moduleFileExtensions": [ "py" ], "runner": "jest-pytest", "testPathIgnorePatterns": [ "snap_.*\\.py" ], "testMatch": [ "/tests/test_*.py" ] } 개인 setup.cfg에 사용 중인 flake 및 pyt..
-
Python QuickSort 최적화에 따른 속도컴퓨터/파이썬 2020. 9. 20. 20:06
인터넷에 있는 QuickSort 중 제일 빠른 방법은 무엇일까라는 생각이 들어 테스트를 진행해보았다. (big-O-calculator와 런타임으로 비교) 결과는 다를 수 있음 (페이스북 코딩 면접 중 한 문제는 quickSort 작성이었다.) - TechLead 0. 속도 테스트 코드 from bigO import BigO lib = BigO() size = 10_000 lib.test_all(quickSort) lib.runtime(quickSort, "random", size) lib.runtime(quickSort, "sorted", size) lib.runtime(quickSort, "reversed", size) lib.runtime(quickSort, "partial", size) lib.ru..
-
파이썬 go-lang sort() 구현컴퓨터/파이썬 2020. 8. 29. 10:13
go-lang.sort() golang/go The Go programming language. Contribute to golang/go development by creating an account on GitHub. github.com 1. 소개 Go언어의 기본 정렬은 quickSort 변형을 사용하고 있다. 계산해보면, 시간 복잡도는 모든 상황에서 $O(nlog(n))$ | 공간 복잡도는 $O(1)$ Pseudo Code # Go Sort procedure sort(A : array): let maxdepth = log2(length(A) - 1) × 2 quickSort(A, 0, len(A), maxdepth) procedure quickSort(A, a, b, maxdepth): n ← b ..
-
파이썬 정렬 알고리즘 big-O 시간 복잡도 계산하기컴퓨터/파이썬 2020. 8. 28. 19:08
big-O Caculator v0.0.9.8.3 big-O-calculator A calculator to predict big-O of sorting functions pypi.org 1. 소개 C++ 버전에서 아이디어를 얻어 파이썬으로 모듈화 시키고 pypi에 업로드해보았다. 시간 복잡도를 계산해보는 식은 일반적으로 $T = C * f(n)$, where T = 입력 크기 n의 예측 런타임 , C = 계수 (coeffiecient). 10, 100, 1000, 10,000, 100,000, 총 5번, 5개의 크기만큼 테스트를 돌린다. 자세한 사항은 다음 사이트 참고: github.com/ismaelJimenez/cpp.leastsq 2. 설치 pip install big-O-calculator ※ 배..
-
V language : Sleep Sort컴퓨터/V language 2020. 8. 22. 16:01
Sleep Sort Sleep sort란 4chan에 장난식으로 올라온 정렬 방법 task + time.sleep()을 이용해서 배열 값 만큼 sleep해서 먼저 출력되는 순서대로 보면 정렬된 배열이다. 1. 문법 살펴보기 V에서 concurrency(병행)으로 task를 실행하려면 go func()을 사용하면 된다. ※ 하지만, 다른 mutable 변수를 사용할 수 없어서, 출력 값을 저장하진 못했다. ※ V 0.1.29 기준으로 Global 변수도 없다. import sync import time fn task(id, duration int, mut wg sync.WaitGroup) { println("task ${id} begin") time.sleep_ms(duration) println("tas..
-
V language : Binary Search Tree (BST)컴퓨터/V language 2020. 8. 21. 19:53
Binary Search Tree 이진 탐색 트리 1. 문법 살펴보기 1. V에는 null type이 없다. (제일 힘들었다.) 2. try/catch/block V 언어에서는 try/catch/null이 다 없는데, or 키워드가 있다. 아래 코드를 보면 user := repo.find~(10) or { 이 있는데, 이 부분은, 함수를 만들 때 우선 ? 키워드를 사용하여 option type이라고 지정해야 하고, 사용할 때는 or { // 실패했을 때 // } 와 같이 사용해야한다. struct User { id int name string } struct Repo { users []User } fn (r Repo) find_user_by_id(id int) ?User { for user in r.us..
-
V language : Introspective Sort컴퓨터/V language 2020. 8. 20. 14:58
Introspective Sort IntroSort (Introspective Sort) 인트로 정렬은, Quick Sort의 장점을 유지하면서, 최악 시나리오 O(n^2)를 해결하려 만들어진 (Quick Sort + Heap Sort + Insertion Sort) 하이브리드 알고리즘이다. (C++ 기본 정렬 알고리즘, std::sort) 모든 상황에서 시간 복잡도 : O(nlogn), 공간 복잡도는 O(logn)이며, inplace, not stable한 알고리즘이다. (in-place란, 보조 데이터 구조를 사용하지 않고, 작동하는 알고리즘) Quick Sort로 시작해서, Recursion max-depth (log(len(array)) 에 도달하면 Heap Sort로 정렬하고, 그리고, 파티션 ..
-
V language : Insertion Sort컴퓨터/V language 2020. 8. 19. 14:25
Insertion Sort 1. 문법 살펴보기 (syntax) 우선 Go언어와 같이 V언어도 while이 없고, for을 사용한다. for i range(1, len(array)) key := array[i] mut j := i - 1 for j >= 0 && key < array[j] { array[j + 1] = array[j] j-- } array[j + 1] = key } // println('${array[i]}') } Github 풀 소스 참고