=== 구구단 === {{{~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를 볼 수 있을듯 하다. ---- [인수]