Mozart라는 언어로 짜본 Prime Function. 일반적으로 Prime function을 짜라고 한다면 제일 먼저 떠올릴 수 있는게 recursive call을 적용한게 될텐데, 이렇게 될 경우에는 결과가 stack에 쌓이면서 push와 pop을 하기 때문에 complexity가 높아진다. 하지만 위와 같이 결과도 같이 recursive call에 넘겨주게 되면, 앞에서 언급했던 것과 다르게 마지막 종료 조건에 의해서 결과가 나타나기 때문에 일반적인 recursive call에 비해서 효율적으로 처리할 수 있게 된다. 강좌에선 후자와 같은 방식을 tail recursion이라고 정의한다.
지금 듣고 있는 온라인 수업중에 sabermetrics 를 가르치는 수업이 있다. 이 수업이 좋은게 단순히 야구지식을 가를치는 것에 그치지 않고, lahman Baseball Database를 SQL과 R을 통해서 원하는 자료를 뽑을 수 있는 것까지 가르치고 있다. 그냥 수업중에 나온 문제를 소개해보고자 한다. Colored By Color Scripter™123456789SELECT CONCAT(m.nameFirst, ' ', m.nameLast) AS playerName, yearID, G, AB, H, 2B, 3B, HR, R, RBI, SB, H/AB AS BA, (H+BB+HBP)/(AB+BB+HBP+SF) AS OBP, (H+2B+2*3B+3*HR)/AB AS SLGFROM Batting bJ..
통계에서 가장 많이 구하는 요소인 분산과 표준 편차다. 우리가 그냥 통계를 배웠다 정도만 하면 표준편차까지 구하는 정도에 그치겠지만 Sabermetrics에서는 그 표준편차를 통해서 Coefficient of variation, 우리말로 번역하면 변동계수를 구하는데 사용할 수 있다. 이값을 활용하면 dataset과 평균이 얼마나 차이가 나는지를 하나의 parameter로 뽑을 수 있기 때문에 여러개의 클래스를 비교할 때 유용하게 쓸 수 있다. python코드는 다음과 같다.
C로 쓴자료구조론 연습문제 2.2.6
C로 쓴 자료구조론 연습문제 2.2.5
In CS50 class of edX,두번째 과제였던 vigenere 방식인데,이전 caesar 방식은 단순히 integer 형식의 key값을 준것과 다르게 vigenere 방식은 keyword를 기반으로 encode한다.즉 keyword를 구성하는 alphabet이 caesar에서 말한 shift value가 되는 것이다.역시 대충짜서 코드가 지저분하다. 일반 C에서 쓸 사람은 중간에 GetString()부분만 수정해주면 된다.#include #include #include #include #include #define LOWER 97 #define UPPER 65 int main(int argc, char* argv[]) { if(argc != 2){ printf("you must enter sing..
CS50 강의 과제중에 cipher에 대한 내용이 나온다.크게 언급되는게 Caesar cipher와 Vigenere cipher 방식인데그중 Caesar cipher 에 대한 구현이다. 내용도 엄청 간단하다. 그냥 k값을 입력으로 주면 그 값만큼 shift 한 결과에 대한 alphabet의 mapping value가 다시 들어가는 것이다. 즉 ASCII 코드 이상으로 넘어가는 값에 대한 처리만 해주면 되는 방식이다. Vigenere 방식은 쪼금 복잡하지만.. 아무튼 modulo 연산만 잘 쓰면 되는거 같다.대충 짜느라 코드가 지저분하다. #include #include #include #include #include #define LOWER 97 #define UPPER 65 int main(int ar..
ESaaS 3번째 과제였다. standardError로 상속해서 따로 exception을 처리하는 부분과 여러개의 입력이 들어왔을 때 각 case에 대한 recursive call을 고려했어야 했다. #!/usr/bin/env ruby class RockPaperScissors class NoSuchStrategyError < StandardError ; end def self.winner(player1, player2) if not ["P","R","S"].include?(player1[1]) or not ["P","R","S"].include?(player2[1]) raise NoSuchStrategyError, "Strategy must be one of R,P,S" end if player1[1]..
edX ESaaS 숙제 두번째는 class를 만드는 문제였는데 getter와 Setter, 그리고 inherited class를 생성할 수 있는지를 물어보는 문제가 제시되었다. 아마 기본문법을 익힌 사람이라면 금방 했을듯. #!/usr/bin/env ruby class Dessert def initialize(name, calories) @name = name @calories = calories end def name @name end def calories @calories end def name=(new_name) if new_name.empty? raise ArgumentError, 'new_name should be string' else @name=new_name end end def calo..
edX ESaaS 수업 첫번째 과제중 하나. word에 대한 palindrome과 단어 반복횟수 체크, 그리고 들어있는 단어에 대한 anagram까지 뽑는게 주제였다.다른건 쉬웠는데 마지막에 word마다 anagram을 뽑아서 어떻게 처리해야 될지가 약간 고민을 하게 했다.#!/usr/bin/env rubyclass String def palindrome? original = self.delete("^a-zA-Z") if original.reverse.downcase == original.downcase return true else return false end end def count_words original = self.delete("^a-zA-Z ").downcase dic = original...
Coursera Algorithm 강의 첫번째 과제. 단순하게 mergesort를 이용해서 순서를 정할때 거꾸로 정리되는 경우의 수를 체크하는 문제였다.mergesort를 쓰게 되면 기존에 O(n^2)의 complexity가 O(nlogn)으로 떨어진다. def readFile(filename, l): with open(filename, "r") as f: for line in f: l.append(int(line)) if f.closed == False: f.close() def sortAndCount(A): mid = len(A) // 2 if len(A) == 1: return A, 0 B, x = sortAndCount(A[:mid]) C, y = sortAndCount(A[mid:]) D, z ..
- Total
- Today
- Yesterday
- TensorFlow Lite
- Expression Blend 4
- Kinect for windows
- SketchFlow
- windows 8
- Offline RL
- Windows Phone 7
- 파이썬
- bias
- RL
- Policy Gradient
- Kinect
- ColorStream
- Off-policy
- 딥러닝
- Distribution
- Pipeline
- ai
- Kinect SDK
- Variance
- dynamic programming
- 강화학습
- DepthStream
- 한빛미디어
- PowerPoint
- arduino
- End-To-End
- Gan
- reward
- processing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |