Scratch 基数ソート課題3
課題内容
スペースキーでリストを基数ソートを用いて昇順に並び替え
解答
解答を表示する
背景
変更①変更②変更③
定義 変数初期化
↓↓↓↓↓
定義 変数初期化 [状態 v]を[未整列]にする [桁数 v]を(0)にする
定義 基数ソート
↓↓↓↓↓
定義 基数ソート (最大桁数)回繰り返す バケツ生成::custom [選択場所 v]を(1)にする [桁数 v]を(1)ずつ変える ([リスト v]の長さ::list)回繰り返す [選択値 v]を([リスト v]の(選択場所)番目)にする [バケツ選択場所 v]を((((([リスト v]の(選択場所)番目)/(((桁数)-(1))の[10 ^ v]::operators))の[切り下げ v]::operators)を(10)で割った余り)+(1))にする [バケツ選択文字列 v]を([バケツ v]の(バケツ選択場所)番目)にする [バケツ v]の(バケツ選択場所)番目を((バケツ選択文字列)と((選択値)と[|]))で置き換える [選択場所 v]を(1)ずつ変える end バケツ取り出し::custom end
定義 バケット取り出し
↓↓↓↓↓
定義 バケツ取り出し [バケツ選択場所 v]を(1)にする [選択場所 v]を(1)にする ([バケツ v]の長さ::list)回繰り返す [バケツ選択文字列 v]を([バケツ v]の(バケツ選択場所)番目)にする もし<<(バケツ選択文字列)=[|]>ではない>なら [位置 v]を(2)にする [数値 v]を()にする [バケツ選択文字列長 v]を((バケツ選択文字列)の長さ::operators)にする (バケツ選択文字列長)回繰り返す [文字 v]を((バケツ選択文字列)の(位置)番目の文字)にする もし<<(文字)=[|]>ではない>なら [数値 v]を((数値)と(文字))にする でなければ [リスト v]の(選択場所)番目を(数値)で置き換える [選択場所 v]を(1)ずつ変える [数値 v]を()にする end [位置 v]を(1)ずつ変える end end [バケツ選択場所 v]を(1)ずつ変える end
解説
解説を表示する
背景
変更①変更②変更③
定義 変数初期化
定義「変数初期化」が呼び出されたとき、スクリプトを開始する
[状態 v]を[未整列]にする
変数の初期設定
定義 基数ソート
定義「基数ソート」が呼び出されたとき、スクリプトを開始する
(最大桁数)回繰り返す バケツ生成::custom [選択場所 v]を(1)にする [桁数 v]を(1)ずつ変える ([リスト v]の長さ::list)回繰り返す [選択値 v]を([リスト v]の(選択場所)番目)にする [バケツ選択場所 v]を((((([リスト v]の(選択場所)番目)/(((桁数)-(1))の[10 ^ v]::operators))の[切り下げ v]::operators)を(10)で割った余り)+(1))にする [バケツ選択文字列 v]を([バケツ v]の(バケツ選択場所)番目)にする [バケツ v]の(バケツ選択場所)番目を((バケツ選択文字列)と((選択値)と[|]))で置き換える [選択場所 v]を(1)ずつ変える end バケツ取り出し::custom end
1番目から桁数番目の値に対応するリスト「バケツ」の場所に入れる。
同じ値でも複数個入れられるように「|」で区切る
定義 バケット取り出し
定義「バケット取り出し」が呼び出されたとき、スクリプトを開始する
[バケツ選択場所 v]を(1)にする [選択場所 v]を(1)にする ([バケツ v]の長さ::list)回繰り返す [バケツ選択文字列 v]を([バケツ v]の(バケツ選択場所)番目)にする もし<<(バケツ選択文字列)=[|]>ではない>なら [位置 v]を(2)にする [数値 v]を()にする [バケツ選択文字列長 v]を((バケツ選択文字列)の長さ::operators)にする (バケツ選択文字列長)回繰り返す [文字 v]を((バケツ選択文字列)の(位置)番目の文字)にする もし<<(文字)=[|]>ではない>なら [数値 v]を((数値)と(文字))にする でなければ [リスト v]の(選択場所)番目を(数値)で置き換える [選択場所 v]を(1)ずつ変える [数値 v]を()にする end [位置 v]を(1)ずつ変える end end [バケツ選択場所 v]を(1)ずつ変える end
リスト「バケツ」の1番目から入れていく
文字列の長さと「|」で複数個にも対応する