1からnまでの配列をシャッフルして偶然昇順に戻るまでをシミュレート

358 :デフォルトの名無しさん:2014/01/31(金) 05:31:38.44
まず、ユーザに1以上30以下の整数をひとつ、入力してもらう。これをnとする。
1〜nの整数を並べる。これをLとする。
※Lをシャッフルする。
Lが偶然にも大きいものから小さいものへの順に並んでいたら、何回シャッフルしたかをユーザに伝え、終了する。
順に並んでいなければ※に戻り、成功するまで何度でも繰り返す。

これをグラフィカルにプログラミングすると、どうなるん?

グラフィカルなプログラミング言語ない?


スレ主の趣旨には沿わないかもしれませんが、スクラッチの勉強にちょうどよさげなお題だったので書いてみました。


参考まで、Squeak Smalltalk だとこんな感じに書けます。

| n L k |
n := (FillInTheBlank request: '30以下の整数') asInteger ifNil: [3].
(n between: 1 and: 30) ifFalse: [^self].
L := (1 to: n) asArray.
k := 0.
[k := k+1. L shuffled isSorted] whileFalse.
'1から{1}まで、{2}回シャッフルで昇順に' format: {n. k}
"=> '1から8まで、46285回シャッフルで昇順に' "
=> '1から8まで、46285回シャッフルで昇順に'