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 ..
1 #include 2 #include 3 #include 4 #include 5 6 #define SWAP(x, y, t) ((t) = (x), (x) = (y), (y) = (t)) 7 8 #define MALLOC(ptr, size) \ 9 if(!((ptr) = malloc(size))) { \ 10 fprintf(stderr, "Insufficient memory"); \ 11 exit(EXIT_FAILURE);\ 12 } 13 14 #define CALLOC(ptr, n, size) \ 15 if(!((ptr) = calloc(n, size))){\ 16 fprintf(stderr, "Insufficient memory"); \ 17 exit(EXIT_FAILURE);\ 18 } 19 20 #..
현재 내가 대학원에서 주로 다루고 있는 분야는 Many Core 기반의 Operating System이다. 사실 ManyCore 의 추세는 고성능 보다는 Load Balancing 을 통한 저전력을 추구하는 방향으로 가고 있다. 뭔가 컴퓨터의 발전이 점점 소형화, 저전력화를 추구하면서 어떻게 하면 작은 디바이스에 사람이 원하는 기능을 담느냐 하는게 우리같은 컴퓨터를 연구하는 사람들의 과제가 되기도 하고, 어쩌면 대기업에서도 상품화를 하기 위한 바로 전 단계가 될 수도 있겠다. 그런데 이런게 꼭 주변에 갖춰진 환경에서만 구현되는 것이 아니라, 일상적으로 취미로 다루는 사람들도 이제는 저렴하게 구현해볼 수 있는 시대가 왔고, 그걸 실현해주는 기기중 하나가 바로 아두이노가 아닐까 하는 생각을 해본다. 사실 얼..
머리도 식힐 겸해서 잠깐 해본 게임이다. 플레이타임은 약 3시간정도고, 내가 기억하기론 Humble bundle에서 샀던거 같은데.. 아무튼 도전과제를 노리는 사람한테는 이거만큼 금방 깰 수 있는 게임도 없다. 게임 내용은 매우 간단하다. 위에 나온 빨간색 사각형이 Thomas라는 인격체다. 그 주변에 친구들이 있는데 이들의 도움 없이는 게임을 거의 깨기 힘들다. 그래서 궁극적으로는 살아가는데 있어서 주변에 있는 친구들의 존재는 중요하다, 서로 도우면서 살아가야 한다는 걸 보여주는 일종의 퍼즐 게임이었다. 장르가 약간 플랫포머와 퍼즐이 섞인 형태인데, 생각보다 이미지나 BGM같은게 깔끔해서 꽤나 인상깊게 즐겼다. 한번 궁금한 사람은 플레이 장면을 보면 대충 어떤 느낌인지 알만한 게임이다. 개인적으로는 잠..
연구실에 TopCoder를 준비하는 친구가 있다. 그 친구말로는 알고리즘이야말로 사람간의 실력을 가늠할 수 있는 척도가 되고, 이걸 잘하는 사람이야말로 진정한 고수라고 했었다. 글로 정형화되어 있는 학술적인 내용과는 다르게 알고리즘은 상황에 따라서 자신이 응용해서 적용해야 하며, 그걸 통해서 답을 찾는 케이스다. 그렇기 때문에 한가지 주제라고 해도 답이 하나만 존재하는게 아니라 개개인의 특성에 맞춰진 다양한 답들이 나온다. 나도 이전에는 알고리즘에 대해서 배워야 할 필요성을 느끼고 있었던 터라 시간을 내고 조금씩 읽었던 책이다. 이책을 한마디로 표현하자면 그냥 "문제집"이다. 어떤 알고리즘에 대해서 심도있게 분석하는 것이 아닌, TopCoder에 나왔던 기출문제를 토대로 문제 해결방향과 예시 답안을 제공..
이 책은 그냥 책상에 놓인 걸 보면 전공책같지 않고, 소설책같다. 물론 책 제목만 놓고 보면 "와 멀티코어 CPU네 어렵겠다..." 라고 생각할 법도 하다. 그런데 책 내용 자체가 코드만 책장 한면을 채우고, 딱딱한 화법으로 학술적인 지식만 소개해놓은 일반적인 책과는 다르게 우리가 학부때 배웠던 내용에서 하나씩 다리를 놓으면서 접근하는 느낌이 들었다. 이 책은 멀티코어 시대에서 공부하는 사람이라면 한번쯤 들어봤을 만한 내용들을 깊게는 아니더라도 개론 정도로 잡아주는 책이다. 그래서 컴퓨터 구조론을 들었던 사람이라면 알만한 파이프라인이라던가 Cache 내용으로 시작하면서 멀티코어에서는 어떤식으로 적용되고, 최근에 나오고 있는 GPGPU와 같은 병렬 프로세서에 대한 내용등을 다루고 있다. 무엇보다도 좋았던 ..
그냥 궁금해서 서적사이트에 "멀티코어"라는 키워드로 검색을 해봤다. 딱 25건 나온다. 그중에 논문이 pdf형식으로 변환된 자료를 제외하고 나면 실제로는 6권정도밖에 없다. 뭐 기타적으로 OpenCL이나 OpenMP, CUDA같은 병렬처리용 프로그램으로 키워드를 넣어봐도 책이 그렇게 많지 않다. 사실 요즘 우리가 쓰는 컴퓨터의 코어 갯수는 점점 증가하고 있지만, 실질적으로 이걸 활용한 프로그램을 개발하기 위해서는 외국서적을 참고해야 되는게 현실이다. 그나마 어떤 한 기술에 치중되어 있는 책들이 대부분이기 때문에 선뜻 고르기가 힘들것 같다. 나도 사실 연구실에서 Manycore기반의 시스템을 다뤄보면서 과연 그걸 활용할 수 있을만한 책이 있을지 많이 찾아봤다. 그런 시스템은 학부에 있을 때는 한번도 다뤄보..
- Total
- Today
- Yesterday
- Expression Blend 4
- arduino
- reward
- SketchFlow
- ColorStream
- ai
- bias
- End-To-End
- Windows Phone 7
- PowerPoint
- Off-policy
- Kinect
- Pipeline
- Variance
- windows 8
- 한빛미디어
- RL
- dynamic programming
- 강화학습
- 딥러닝
- TensorFlow Lite
- Policy Gradient
- Gan
- DepthStream
- Kinect SDK
- 파이썬
- Offline RL
- Kinect for windows
- processing
- Distribution
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |