[過去ログ] プログラミングのお題スレ Part13 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
359(4): さまよえる蟻人間 ◆T6xkBnTXz7B0 2019/02/24(日)06:09 ID:xnYazQgz(2/3)調 AAS
お題: スリープソートを実装せよ。
370(1): 2019/02/24(日)11:01 ID:gbE7FXAb(3/4)調 AAS
>>359 Perl5
use List::Util shuffle;
@a = shuffle 1..5;
print "shuffled) @a\n";
use threads;
use threads::shared;
my @b: shared;
sub f {
my $n = shift;
sleep $n;
push @b, $n;
}
push @thr, threads->create(\&f, $_) for @a;
$_->join() for @thr;
print "sorted ) @b\n";
実行結果
~ $ perl 13_359.pl
shuffled) 5 3 1 2 4
sorted ) 1 2 3 4 5
371: 2019/02/24(日)11:04 ID:gbE7FXAb(4/4)調 AAS
>>370 しまった、 がそのまま表示されている…orz 全角スペースに置換して修正
>>359 Perl5
use List::Util shuffle;
@a = shuffle 1..5;
print "shuffled) @a\n";
use threads;
use threads::shared;
my @b: shared;
sub f {
my $n = shift;
sleep $n;
push @b, $n;
}
push @thr, threads->create(\&f, $_) for @a;
$_->join() for @thr;
print "sorted ) @b\n";
実行結果
~ $ perl 13_359.pl
shuffled) 5 3 1 2 4
sorted ) 1 2 3 4 5
377: 2019/02/24(日)16:12 ID:ke/CY5a3(2/2)調 AAS
>>359 Pharo/Squeak Smalltalk
| sleepsort |
sleepsort := [:arr |
| queue |
queue := SharedQueue new.
arr do: [:x | [(x * 2) milliSeconds asDelay wait. queue nextPut: x] fork].
(1 to: arr size) inject: #() into: [:acc :idx | acc, {queue next}]
].
sleepsort value: #(2 1 5 10 7 8 3 6 4 9)
"=> #(1 2 3 4 5 6 7 8 9 10) "
380: 2019/02/24(日)19:37 ID:Wf3q+Rvy(1)調 AAS
>>359 Bash
#!/usr/bin/bash
N=5
IFS=$'\n'
a=(`seq $N | shuf | sed -e 's/\([0-9]\+\)/(sleep \1; echo \1 >> result)/'`)
IFS="$'\n'$'\t' "
[ -f ./result ] && rm ./result
for s in "${a[@]}"; do
echo "$s"
sh -c "${s}" &
done
wait
cat ./result
~ $ sh 13_359.sh
(sleep 2; echo 2 >> result)
(sleep 5; echo 5 >> result)
(sleep 4; echo 4 >> result)
(sleep 1; echo 1 >> result)
(sleep 3; echo 3 >> result)
1
2
3
4
5
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.034s