データの整列
Posted feedbacks - Smalltalk
Squeak Smalltalk では、#asSortedCollection: をコールすることで、レシーバであるコレクションをソート済みコレクション(a SortedCollection)に変換できます。並び替えの条件は、引数として添えるブロック(無名関数)で与えます。
#r は、レシーバであるポイント(座標オブジェクト。x@y で生成)の原点(0@0)からの距離を返すメソッドです。
1 2 3 4 5 6 7 8 | | points |
points := (1 to: 10) collect: [:each | 10 atRandom @ 10 atRandom].
^{ points asSortedCollection: [:a :b | a x < b x or: [a x = b x and: [a y < b y]]].
points asSortedCollection: [:a :b | a r < b r]}
"=> an Array(
a SortedCollection(2@4 2@8 3@2 3@6 4@9 6@10 8@1 8@1 10@6 10@10)
a SortedCollection(3@2 2@4 3@6 8@1 8@1 2@8 4@9 10@6 6@10 10@10)) "
|


odz #5839() Rating1/1=1.00
(x, y) の座標情報を以下の2種類の方法で整列する機能を実現してください。
データの表現方法はタプルなり構造体/オブジェクトなり各自で適当に選んで下さい。
[ reply ]