'Java'에 해당되는 글 3건

  1. 2014.12.06 숫자야구 게임 컴퓨터랑 1대1 하기(+소스코드 in github)
  2. 2014.05.04 Java & Redis
  3. 2012.01.13 3D Particle (5)
2014.12.06 00:42



10 만번 랜덤 숫자 반복 시행시

--------------------------------------

average: 5

min: 1,  max: 9

mid: 5

1 130(0.0013)

2 998(0.01128)

3 5483(0.06611)

4 17776(0.24387)

5 33725(0.58112)

6 28415(0.86527)

7 10364(0.96891)

8 2832(0.99723)

9 277(1.0)

--------------------------------------

자바 버전의 경우. 평균적으로 5회만에, 96% 확률로 7회만에 유저의 정답을 맞춤. 최악의 경우 9회이긴 한데... 사실 약간의 알고리즘을 더 추가하면 더 좋은 확률로 맞출 수 있을것 같기도..

(자바스크립트 버전은 약간 문제가 있어 다를 수 있음,,,,)


기본적인 알고리즘은 후배가 제안한것을 사용함.(ㅋㅋㅋ)

Java 버전, Javascript 버전 두개가 존재

아직 개선할 필요가 있는데 귀찮아서 패스...

특히 자바스크립트 버전의 경우 다음 번호를 부를때 앞에서 부터 불러와서 유저의 숫자값이 작을수록 더 빨리 마추게 되고 값이 클수록 늦게 맞추는 경향이 있음. 나중에 랜덤으로 호출하게 해야하는데... 나중에 해보자.


웹버전(자바스크립트)

http://quadflask.github.io/baseball-game-ai/baseball-game-ai-js/


TDD 실행

http://quadflask.github.io/baseball-game-ai/baseball-game-ai-js/tdd.html


자바로 짤때는 되도록 TDD할려고 노력했는데 역시 쉽진 않은듯...

자바스크립트 또한 TDD할려고 노력했는데 몇가지 중요한것들이 누락되었음. 역시 귀찮아서...또는 무지해서 하지 못함. 자바스크립트의 경우 유닛 테스트 라이브러리로 QUnit을 사용했고 dom manipulation, spa 용으론 AngularJs 를 사용해봄. 오오 AngularJs는 신세계!! 



사용한 알고리즘(이라기 애매함)


1. 컴터는 먼저 012 부터 987(? 맞나) 까지의 모든 가능한 패턴들을 가지고 있는다.(이게 맘에 들진 않지만....일단 구현은 편리했다...)

2. 컴터가 숫자를 제시했을때의 결과를 토대로 판단을 시작함

a. [1볼] 일 경우

숫자 3개중 반드시 한개 포함, 나머지 두개 미포함 해야하는 조건으로 숫자를 추린다. 

전체 숫자갯수가 720개였나? 에서 보통 여기서 2/3 이 추려진다.

b. [2볼] 일 경우

a 랑 비슷

c. [3볼] 일 경우

모든 숫자를 포함해야 하기 때문에 그렇지 않는 패턴들은 제거한다. (굉장히 맞출 확률을 높이는데 좋음.ㅋ)

d. [1스트라이크] 일 경우 

한 자리에 대해 숫자가 같고 나머지 두 숫자는 포함하지 않는 조건으로 숫자를 추린다.

e. [2스크라이크]일 경우

d랑 비슷

f. [1스트라이크, 1볼] 일 경우

이게 좀 애매한데 a, d를 적절히 섞어서 추리면 됨.

g. [1스트라이크,2 2볼] 일 경우

이건 좀 간단하니 패스

h. [아웃] 일 경우

이것또한 매우 간단




소스코드

https://github.com/QuadFlask/baseball-game-ai

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2014.05.04 15:10


Redis 는 NoSQL (Not only SQL) 로 메모리디비.


다양한 타입을 지원


key-value


벨류에 대해 검색이 애매하기 때문에 반드시 키를 잘 정의 해주는 것이 중요하고, 외래키 개념이 없기 때문에 따로 외래키 처럼 사용할 수 있도록 따로 키 스킴을 정의해주는것도 좋아 보임. (키값에 대해 와일드카드등 검색이 용이한 기능이 있음)


보통 키 스킴은 콜론을 이용해 구분자를 둠.


ex)

blog:users:Flask - "123"


blog:comment:user:123 - "Flask"

blog:comment:text:123 - "Wow great"


이때 모든 코맨트 검색시 


keys blog:comment:*


Flask가 작성한 코맨트 검색시


get blog:users:Flask  -> 123


keys blog:comment:*:123


아 뭔가 이상한데? RDB 를 사용하다가 NoSQL을 사용하니 SQL의 편리함을 깨달을 수 있음...



이번 포스트의 중점을 이게 아니고, java 에서 객체를 redis에 넣고, 뺘고 싶을때?


보통 Mybatis 를 사용하면 그냥 sql 구문에 잘 정의 해주면 알아서 객체로 변환해주는데, 하이버네이트처럼 ORM해주는 것이 필요 했다.


그런데 처음에 무식하게 만들었던 방법이 있었는데, 

redis 에서는 해시맵 타입을 지원해서 하나의 키에 대해 맵 형식으로 데이터를 넣을 수 있었다.


명령어는 h가 붙은것으로 hget, hput 등등


따라서, json 처럼 모든 데이터들을 String 으로 변환후, 이걸 하나의 키에 대해 write 하면 될것 같았음.

그래서 자바 오브젝트를 맵 형식으로 바꾸는 유틸을 만들어 보기로 함.






이렇게 만들어 봤는데 문제점이 객체.프롭퍼티.프롭퍼티 를 해결 하지 못함..(객체.프롭퍼티 까지만 됨....아직 재귀가 익숙 하지 않은건가...ㅠㅜㅜㅠ)


그래서 이건 뭔가 좀 불안하다 해서 검색.


검색해보니 hibernate-redis 프로젝트를 개발하시는 분을 발견.

http://debop.blogspot.kr/2013/04/hibernate-redis-hibernate4-2nd-cache.html


이것 말고도 원래 Spring -data 에서 이러한 redis 말고도 여러가지 디비관련 라이브러리가 많았음. 역시 혼자 낑낑 만드는것보다 찾아보는게 좋을지도....

http://projects.spring.io/spring-data-redis/

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0
2012.01.13 16:07
전에 만들었던  (2012년 첫글은!?) [Blur] 블러 구현(java)2을 3D로 구현해 보았습니다.

3D는 처음 만져보지만 상당히 재밌군요..ㅋㅋ 특히 사용되는 수학들이 ㄷㄷㄷ
 

위 사진들은  모두 똑같은 모습을 카메라 돌려가면서 촬영한것입니다. (파티클갯수 약 64000개)
(잘 보면 호 모양으로 그려진것을 볼 수 있는데, 이건 카메라가 자동으로 회전해서 블러효과가 누적되 나온 궤적입니다. 원래 이거(궤적)때문에 블러를 공부했던.....ㅋㅋ)

은하(...) 만들어 볼려고 파티클을 평면으로 뿌리고, 각각의 속도 벡터만 3차원으로 줬는데 원하는 결과가 잘 안나오네요...
(예상한 모양은 중앙에가 볼록나온... 실제 은하사진들을 보니 가운데에 엄청 큰 태양 또는 블랙홀같은게 있어서 환하게 빛나서 그부분이 볼록한것 같네요..?)

아무래도 안에 핵이 있어야 구현될듯 합니다.

각 파티클이 질량을 갖고 서로 인력으로 끌어당기는 효과에, 파티클이 뭉치도록해서 하나의 행성 덩어리(?)를 만들 수 있도록 하고싶은데, 컴터가 못버텨줄것 같아 포기합니다..ㅋ
(이전에 서로 인력으로 끌어당기게 해봤었는데 원하는 결과가 안나옵니다...ㅠㅠ 서로 뭉치려다가 인력이 너무 세져버려서 서로 다시 날라갑니다...ㅠㅠ)
 
 카테고리가 Useful 인만큼, 뭔가 도움될만한 내용은 다음 포스트에 적도록 하겠습니다.
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 5
  1. Favicon of http://estellenotes.tistory.com BlogIcon 에스텔시아 2012.01.15 11:17 신고 address edit & del reply

    Good. 멋있다.

  2. volumeless 2012.01.18 11:01 신고 address edit & del reply

    입자들이 가까워지면 부딪혀서 멈춰야 하는데 충돌 없이 가속 시뮬레이션만 하기 때문에 뭉칠 수 없는 것 같습니다

  3. Favicon of http://datvo.com/Dich-vu-bao-ve.html BlogIcon bao ve 2012.01.19 18:47 신고 address edit & del reply

    고마워요, 좋은 하루 소원

  4. Favicon of http://creatordev.tistory.com BlogIcon [Noa] 2012.01.21 09:31 신고 address edit & del reply

    뭐야 저거 무서워

  5. Favicon of http://www.danhtiengphat.com.vn/ BlogIcon van phong pham 2012.01.30 14:38 신고 address edit & del reply

    나는 이러한 놀라운과 뛰어난 사이트를 방문하는 것은 매우 기쁘게 생각합니다, 나는 완전히 그것을 즐겼다.



티스토리 툴바