지난 글에서 추가된 기능- 함수화 하였음 (chat_race.m)- 날짜 단위로 끊는 기능 (dayChunk)- 여전히 개수 단위로도 끊을 수 있음 (NChunk)- 제외할 username 지정 가능 (nameExclude)- 어디서 끊을지 정하지 않으면 기본값은 7일 단위로 끊는 것 % 10일 단위로 끊기chat_race(file, dayChunk=10)% 1000개 단위로 끊기, "방장봇" 제외chat_race(file, NChunk=1000, nameExclude="방장봇")% 7일 단위로 끊기chat_race(file) 전체 코드 function chat_race(file, opts)arguments file opts.dayChunk (1, 1) = 7 opts.NChunk (1..
Angelo님의 블로그에서 "꿈틀 꿈틀 움직이는 바 그래프를 그려봅시다"라는 글을 본 적이 있다. 신기해서 나도 써먹어보려고 했으나 마땅히 적용할 데이터가 없어서(...) 미루고 있던 차에, 단톡방 통계를 내 달라는 퀘스트를 받았다. 그냥 특정 기간 동안 말 많이 한 사람을 추려내는 건 정규식 지옥만 빼면 쉽다. 하지만 이왕이면 꿈틀 꿈틀 움직이는 그래프면 더 재밌지 않겠는가. 그런데 해당 글을 다시 보니 문제가 있음을 깨달았다. 오리지날 코드는 데이터가 아래와 같이 timetable 형태여야 한다. 위 데이터는 일본의 각 현의 인구수 변화이다. 첫 번째 column은 시간(년도)이고, 두 번째부터는 시간에 대한 인구수 데이터이다. 반면 단톡방 대화내역은 아래처럼 생겼다. 두 가지 작업을 해야 한다..
자연과학에서 이론의 근거는 관찰과 실험이다.수리과학에서는 그것을 '계산'이라고 부른다.─ 조건희 몸풀기 아래 선형 연립 방정식을 풀어보자. 3개의 식 사이에 더하기/빼기를 할 수 있다. $x_1$을 하나만 남기기 위해 1번 식의 2배를 2번 식에서 뺀다. $x_2$와 $x_5$는 이제 바꿀 방법이 없다. 이번엔 $x_3$을 하나만 남기기 위해 2번 식의 2배를 1번 식에 더하고, 2번 식의 4배를 3번 식에 더한다. 마지막으로 $x_4$는 마지막 식에서만 남긴다. 계수는 1로 맞춘다. 여기까지의 과정을 elementary row operation이라고 부르며 최종 형태를 reduced-row echelon form이라고 부른다. 미지수가 5개인데 식이 3개이므로 해가 유일하지 않으며, 2개의..
Let $A$ and $B$ be $n\times n$ matrices. Also let $f$ and $g$ be lineat operators such that $f(x) = Ax$, $g(x) = Bx$. Because $AB = E$, $A$ and $B$ are invertible, and $f$ and $g$ are bijective. (Proof is left as an exercise.) Now we have,\begin{align}f \circ g = id \to (f \circ g)(x) = x\end{align}then for all $x\in \mathbb{F}^n$,\begin{align}g(x) = g ((f\circ g)(x)) = (g \circ f)(g(x))\end{ali..
Let $V_1$, $V_2$ be vector spaces, $\text{dim}(V_1)=n$, $\text{dim}(V_2)=m$. Also let\begin{align}B_1 = \{ \beta_1, \cdots, \beta_n \} \\B_2 = \{ \gamma_1, \cdots, \gamma_m \}\end{align}be bases of $V_1$ and $V_2$, respectively. Every vector $x \in V_1$ is uniquely expressed as$$x = b_1 \beta_1 + \cdots + b_n \beta_n$$For a linear transformation $T: V_1 \to V_2$, the image of each basis vector o..
원문: https://testdriven.io/blog/clean-code-python/ [Clean Code in PythonThis article looks at how to write clean code in Python.testdriven.io](https://testdriven.io/blog/clean-code-python/)내용은 일부 생략했습니다.PEP 8Naming클래스명은 CamelCase로 한다. (MyClass)변수명, 함수명, 모듈명은 snake_case로 한다. (first_name, quick_sort(), numpy)상수는 대문자 snake_case로 한다. (PI = 3.14159)문자열을 작은 따옴표로 할지 큰 따옴표로 할지는 일관성만 갖추면 된다. Line formatt..
헷갈릴 때 쯤 한번씩 되뇌어 주어야 한다. 'A이면 B이다'라는 명제가 참일 때, A는 B이기 위한 충분조건이다.≡ A는 B를 만족시키기에 충분(sufficient)하다.≡ A에서 조건을 조금 완화시켜도 여전히 B를 만족시킬지도 모른다.≡ A이면 충분히 B라고 했지, A가 아니라고 해서 B가 아닌 것은 아니다. B는 A이기 위한 필요조건이다.≡ A를 만족하려면 우선 B를 만족시키는 것이 필요(necessary)하다.≡ A를 만족시켜도 B를 만족시키려면 조건이 더 필요할지도 모른다.≡ B를 만족시키지 않으면 A 만족 여부는 볼 필요가 없다. 무언가를 충분히 준비했다는 것은 조금 남는 정도로 준비했다는 말과 동치이다. 조금 빼도 된다는 말이다. 따라서 A에서 조건을 조금 완화시켜도 B가 만족될 가능성이 있다..
정확히는 코랩에서 매트랩을 띄우고 돌린다고 해야 맞는 표현이다. 후술하겠지만 코랩에서 MATLAB Online 환경을 띄우고 매트랩 엔진을 코랩에서 가져와서 쓸 수 있다. 아래 내용은 위 영상을 요약한 것이다. 먼저 코랩에 가서 터미널을 연다. mpm(matlab package manager)을 가져오고 매트랩 설치를 해야 하는데, 배치 파일을 위 영상의 제작자인 Yann Debray가 이미 만들어뒀다. 굳이 긁어서 붙일 필요는 없고, 아래를 실행하여 파일을 가져오면 된다. https://gist.githubusercontent.com/yanndebray/e267617c78a3f24c875cb57570bdd3b9/raw/1b9dce314770da627ecaf162bc1a3ecc5748a99..
의심이 많은 나는 코드로 확인해본다. i = 0;while true i = i + 1; list = num2str(i) - '0'; if i == sum(factorial(list)) fprintf('%d = ', i) for n = 1:length(list)-1 fprintf('%d! + ', list(n)) end fprintf('%d!\n', list(end)) keyboard endend 1 = 1!2 = 2!145 = 1! + 4! + 5!40585 = 4! + 0! + 5! + 8! + 5! 이 이후로는 370만까지 나오지 않았다. 9!는 기껏해야 362880이므로 이 이후로는 나오지 않..