PYTHON
-
Python에서 C/C++언어 함수 실행하기컴퓨터/파이썬 2020. 10. 21. 16:06
Ctypes ctypes — 파이썬용 외부 함수 라이브러리 — Python 3.9.0 문서 ctypes — 파이썬용 외부 함수 라이브러리 ctypes docs.python.org 1. ctypes이란 C언어로 기반으로 제작된 파이썬에서, ctypes 으로 C 호환 데이터형을 이용, DLL 또는 공유 라이브러리(.so)에 있는 함수를 호출할 수 있게 해 준다. 2. 할 것 py 파일 안에서 C/C++ 함수를 작성해서 실행하는 것을 불가능하고, disutils에 있는 ccompiler로는 object파일밖에 생성하고 exe파일 까진 만들 수 있으나, exe실행은 따로 해야 한다. from distutils.ccompiler import new_compiler if __name__ == '__main__': ..
-
Python kth Hamming number (해밍 수)컴퓨터/파이썬 2020. 10. 19. 23:50
해밍 수 Regular Number 1. Hamming number 해밍 수란 인수가 2, 3, 5으로만 이루어진 수를 말한다. 그래서 5-smooth number, ugly number라고도 불린다. 한마디로, 아래 식을 만족하는 수 (다음 수들은 해밍 수이다. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, ...) $H = 2^i * 3^j * 5^k$, ($i, j, k >= 0$) 2. 파이썬 시간 복잡도: O(n), 결과를 바로바로 출력하면 공간 복잡도 O(1) 가능 프로그램: n 보다 작거나 같은 모든 해밍 수를 배열에 넣고 출력할 것이다. n = 25 base = [2, 3, 5] nums = [1] append = nums.append # tweak candidates_indic..
-
Python fastcore: 파이썬 업그레이드 모듈컴퓨터/파이썬 2020. 10. 17. 00:24
fastcore fast.ai fastcore Github 링크 github.com fast.ai에서 제작한 파이썬 언어 확장 모듈 1. 소개 fastcore은 Julia 언어의 multiple dispatch, Ruby 언어의 mixins, Haskell 언어의 currying, binding 등 다른 언어의 기능들이나, 파이썬 내장 기능을 업그레이드한 모듈이다. 설치법은 conda나 pip으로 설치 conda install fastcore pip install fastcore 2. 기능 글 모든 예제는 아래를 import 하는 걸 전제로 한다. from fastcore.all import * 1. Test assertion test_eq(a, b) : 위 함수는 assert a == b와 같다. te..
-
Python random bool 생성컴퓨터/파이썬 2020. 10. 16. 11:07
1. random.choice import random random.choice([True, False]) 2. random.getrandbits(1) getrandbits(1)은 0,1을 생성하고 not으로 bool 타입으로 캐스팅 import random not random.getrandbits(1) # True or False 3. random() random()은 0.0 ~ 1.0보다 작은 실수값을 반환 import random random.random() >= 0.5 속도 비교 3번 > 2번 > 1번
-
Python random 모듈 구현하기컴퓨터/파이썬 2020. 10. 14. 15:52
Python python/cpython 파이썬 언어 오픈소스 github.com 0. MT19937 소개 파이썬에서 random.randint, random.randrange, random.seed...등은 모두 메르센-트위스터 기법 기반으로 제작되었다. 메르센 트위스터란 유사난수 생성기 중 하나이며, 주기는 2**19937-1 이며, 가장 널리 알려지고 다이하드 테스트와 같은 확률적 시험을 통과한 기법이다. (Dieharder test > diehard test, 생일 문제 등을 포함한 테스트임) 이 글에서 파이썬 버전과 일치하진 않지만, seed 함수, randrange 함수, randint 함수, random 함수를 구현해 볼 것이다. (원본 파이썬 버전은 맨 아래 참고 링크 파이썬에선 SHA-1,..
-
Python Tkinter 피보나치 수열, 소수 생성기 GUI컴퓨터/파이썬 2020. 9. 30. 22:37
tkinter tkinter은 파이썬 내장 GUI 라이브러리이다. tkinter — Tcl/Tk 파이썬 인터페이스 — Python 3.8.6 문서 tkinter — Tcl/Tk 파이썬 인터페이스 소스 코드: Lib/tkinter/__init__.py tkinter 패키지(《Tk 인터페이스》)는 Tk GUI 툴킷에 대한 표준 파이썬 인터페이스입니다. Tk와 tkinter는 대부분의 유닉스 플랫폼과 윈�� docs.python.org # 2020-09-30 공부 일지 1. 피보나치 생성 함수 원하는 숫자까지의 피보나치 수를 모두 저장한다. (less or equal) ex) n = 13이면, 0, 1, 1, 2, 3, 5, 8, 13을 보여줌 (시간 복잡도 O(n) | 공간 복잡도 O(1)) (하지만 tki..
-
Python Fast inverse square root컴퓨터/파이썬 2020. 9. 28. 20:18
고속 역 제곱근 Fast inverse square root - Wikipedia Fast inverse square root, sometimes referred to as Fast InvSqrt() or by the hexadecimal constant 0x5F3759DF, is an algorithm that estimates 1⁄√x, the reciprocal (or multiplicative inverse) of the square root of a 32-bit floating-point number x in IE en.wikipedia.org (Fast inverse square root) 1. 소개 IEEE 754 부동소수점 체계의 32비트 실수에 대한 제곱근의 역수를 계산하기 위한 알고리..
-
Python 중국인의 나머지 정리컴퓨터/파이썬 2020. 9. 25. 15:38
Chinese Remainder Theorem (중국인의 나머지 정리, 이하 CRT) 소개 CRT는 손자산경에, (손자병법 손자 아님), 3으로 나누었을 때 2가 남고, 5로 나누었을 때 3이 남고,7로 나누었을 때 2가 남는 수는 무엇인가? 간단해보이지만, 일반 방정식으로 해결하려해보면 꽤나 복잡하다. 필요한 사전 지식은, 연합 합동식을 알아야한다. 이 글에선, 식의 증명보다는 실제 몇 예제를 통해 문제를 푸는 법과, 파이썬 코드로 작성만 해볼 것이다. (증명은 맨 아래 참고 사이트를 이용) 합동식이란? 합동식만 먼저 설명하자면, $m~|~(a - b)$ 일 때 (m이 a-b로 나누어 떨어질 때), a는 법(modular) m에 대하여 b와 합동이다. 기호는 $a ≡ b~(mod~m)$ ex) $15 ..