読者です 読者をやめる 読者になる 読者になる

Eiffel で sleep sort

設計

「Eiffel "sleep sort"」の検索結果: 0 件。


ではやりましょう。



ソースファイルは「SORT.e」と「APPLICATION.e」の 2 本。

「SORT.e」


class
SORT

inherit
THREAD

create
make

feature
value_: INTEGER

feature { NONE }
make( value: INTEGER )
do
value_ := value
end

feature
execute
do
sleep( value_ * 1000 * 1000 )
print( value_ )
end

end


「APPLICATION.e」


class
APPLICATION

create
make

feature
arr_: ARRAY[ INTEGER ]

feature { NONE }
make

do
-- 要素の追加関数が無ぇ!
-- 配列の初期化リテラルが無ぇ!
-- オラこんな言語嫌だ!オラこんな言語嫌だ!

create arr_.make( 0, 10 )
arr_.put( 5, 0 )
arr_.put( 9, 1 )
arr_.put( 2, 2 )
arr_.put( 8, 3 )
arr_.put( 4, 4 )
arr_.put( 1, 5 )
arr_.put( 3, 6 )
arr_.put( 0, 7 )
arr_.put( 7, 8 )
arr_.put( 6, 9 )

do_sort
end

feature
do_sort

-- 任意の場所で変数書け無ぇ!
-- ループを短く書け無ぇ!
-- オラこんな言語嫌だ!オラこんな言語嫌だ!


local
s_arr: ARRAY[ SORT ]
index: INTEGER
s : SORT
do
create s_arr.make( 0, arr_.count )
from
index := 0
until
index = arr_.count - 1
loop
create s.make( arr_.at( index ) )
s_arr.put( s, index )
s.launch
index := index + 1
end

from
index := 0
until
index = s_arr.count - 1
loop
s_arr.at( index ).join
end
end

end

これで動く... と思う。実は試してない。