No older revisions available
No older revisions available
구구단 ¶
~cpp
from: aFrom to: aTo
| a b |
a := aFrom.
b := 1.
[a <= aTo] whileTrue: [
[b <= 9] whileTrue:[
Transcript cr; show: a; show: ' * '; show: b; show: ' = '; show: a*b; printString.
b := b + 1.
].
a := a + 1.
b := 1.
Transcript cr.
].
랜덤워크 ¶
- 머리에 쥐나는줄 알았다.--; 사소한거 하나로 삽질한게 몇가진지... --; 문법이 왜 이리 하던거랑 다른지.;;
~cpp
RWBoard>>initialize: aSize
size := aSize.
numsOfWalked := Array2D width:size height:size.
numsOfWalked atAllPut:0.
RWBoard>>isAllPut
numsOfWalked do: [ :val | val = 0 ifTrue: [^false] ].
^true.
RWBoard>>row: aRow col: aCol
| numOfWalked |
numOfWalked _ numsOfWalked at: aRow at: aCol.
numsOfWalked at: aRow at:aCol put: numOfWalked + 1.
RWBoard>>setValidLocation: num
| newValue |
newValue := num + 3 atRandom - 2.
newValue = 0 ifTrue: [newValue := 1].
newValue = (1 + size) ifTrue: [newValue := size].
^newValue.
RWBoard Class>>make: aSize
^self new initialize:aSize.
~cpp
RWRoach>>abroad: aBoard row: aRow col: aCol
totalWalked := 1.
curRow _ aRow.
curCol _ aCol.
aBoard row: aRow col: aCol.
RWRoach>>moveOne: aBoard
totalWalked _ totalWalked + 1.
self selectDirection: aBoard.
aBoard row:curRow col:curCol.
RWRoach>>selectDirection: aBoard
curRow := aBoard setValidLocation: curRow.
curCol := aBoard setValidLocation: curCol.
RWRoach>>traverse: aBoard
[ aBoard isAllPut = false. ] whileTrue: [ self moveOne:aBoard. ].
~cpp
b := RWBoard make:5.
r := RWRoach new.
r abroad:b row:1 col:1.
r traverse:b.
- 짜놓고 생각 : 이건 스몰토크프로그래밍이 아니다. C++/Java의 냄새가 너무 많이 나는것 같다. 부분부분을 좀더 간단하게 할 수 있을것 같기도 하다. 책을 더 봐야 할듯 싶다. 인스턴스 생성할때도 인자를 넘겨 받을 수 있을 텐데 잘 안된다.(지금 보니까 그렇게 하지 말라 한다. 대충 찾아보니 팩토리 메소드를 많이 쓰는것 같다. 또 클래스 메소드 만드는법 알아낼라고 줄기차게 삽질을 했다.--;) do라는 좋은게 있었군.
- 스퀵 소스 옮기기 너무 힘들다. ㅠ.ㅠ 좀 더 커지면 어떻게 될지... 흑 ㅠ.ㅠ
- 따로따로 있을땐 몰랐는데 지금 보니까 중복도 있다.--; 제길
- 2차원 배열 클래스가 있었다. 레퍼런스를 잘 찾아보고 하자. 이제 조금 볼만하구나.
- 이제 SBPP를 볼 수 있을듯 하다.