Discuss Scratch

yajirushibekutoru
Scratcher
27 posts

Scratchスクリプトクイズ

1回のドラッグ操作、2回のクリック操作を必要とするので、不正解になると思います。
このルールを当てはめると、次の解法は不正解になるようです。

リストに追加する処理で、入力値を変数から2に変更する。(1回のドラッグ操作、1回のクリック操作をします)

乱数の返り値を2から2までに変更する。(2回のクリック操作をします)

変数を更新する処理で、乱数ブロックを外して変更値を2に固定する。(1回のドラッグ操作、1回のクリック操作をします)

出題者が問題の表記について間違えていた場合、正解になるかもしれません。
また、値ブロックの裏に隠れている数値は明記されていないので、最初から任意の値が入力されていたと指定することができるでしょう。
00giri
Scratcher
1000+ posts

Scratchスクリプトクイズ

>> #2579
⚑ がクリックされたとき
[list v] のすべてを削除する
(10) 回繰り返す
[変数 v] を ((2) から (2) までの乱数) にする
(変数) を [list v] に追加する
end
↓方法
((0) から (1) までの乱数)
の「0」の部分をクリックして「2」を入力。Tabキーを押して「1」を選択状態にして、「2」を入力。
Shunkacchi
Scratcher
100+ posts

Scratchスクリプトクイズ

アクションゲームのジャンプ方法で問題。

初心者の場合、ジャンプを、
[上向き矢印 v] キーが押されたとき
y座標を (50) ずつ変える
<[#67eb7e] 色に触れた> まで繰り返す
y座標を (-10) ずつ変える
end
と再現することがあります(Shunkacchiの場合)が、
動き::motion

イベント::events

制御::control

調べる::sensing//使わなくてもOK

演算::operators

変数::variables
だけで、ジャンプのスクリプトを作ってください。

Last edited by Shunkacchi (March 27, 2023 01:45:29)

inoking
Scratcher
1000+ posts

Scratchスクリプトクイズ

#2580:

xiangyeng wrote:

正解です‼️まあ自分で簡単と言ってしまいましたからね…。
簡単とは私は思えません。

この正答は
() 回繰り返す
[自分自身 v] のクローンを作る
end
が実行された時点で
クローンされたとき
[クローンされた回数 v] を [1] ずつ変える
が先にすべて実行されてから「繰り返す」の次に移ることを前提としており
実際そのように動作しますが
この動作は保証されていないと思います。

もし狙ってやっているなら
シーケンサーの処理を熟知した高度なテクニックになると思います。

Last edited by inoking (March 27, 2023 03:21:47)

Caffeine3860
Scratcher
69 posts

Scratchスクリプトクイズ

#2583
なるほど。tabを使う方法ですか。想定していませんでした。私はクリック一回で一操作と言っていたので正解としましょう。
ただ私の想定解ではないのでそれを見つけてほしいです。ヒントは・・・少し意地悪だとおもいます。ごめんなさい。
少し誤解があったので・・・「クリック(ドラッグ)一回」は「クリックまたはドラッグを一回のみ」です。
hirayuu1414
Scratcher
500+ posts

Scratchスクリプトクイズ

少し意地悪、なら
((0) から (1) までの乱数)
を取り外したときに中から2が出てくる、でしょうか。
Caffeine3860
Scratcher
69 posts

Scratchスクリプトクイズ

#2587
そうではありません。

#2584
「調べる」以外は絶対使わなければいけないですか?
ではこれならどうですか?

Last edited by Caffeine3860 (March 27, 2023 04:38:57)

akinarin
Scratcher
500+ posts

Scratchスクリプトクイズ

>> #2579

@greenflag がクリックされたとき :: events hat
[list v] のすべてを削除する :: list
(10) 回繰り返す
[変数 v] を ([list v]の長さ :: list) にする
(変数) を [list v] に追加する
end

こうですか?
値ブロックを入れ替える操作は、1回のクリックで出来ます。

Last edited by akinarin (March 27, 2023 13:42:32)

akinarin
Scratcher
500+ posts

Scratchスクリプトクイズ

問題です。
あるプロジェクトがあります。
そのプロジェクトには「リスト」というリストと「カウンタ」という変数があり、
「リスト」は「0」または「1」の要素だけで構成されています。
そして、そのプロジェクトはスプライト「あ」があり、
スプライト「あ」のプログラムは次のようになっています。

@greenflag がクリックされたとき :: events hat
[カウンタ v]を[1]にする
[A v]を送る

[A v] を受け取ったとき
([A-]と([リスト v]の(カウンタ)番目 :: list))を送る

[B v] を受け取ったとき
([B-]と([リスト v]の(カウンタ)番目 :: list))を送る

[代入0 v]を受け取ったとき
[リスト v]の(カウンタ)番目を(0)で置き換える::list

[代入1 v]を受け取ったとき
[リスト v]の(カウンタ)番目を(1)で置き換える::list

[カウントアップ v]を受け取ったとき
[カウンタ v]を(1)ずつ変える

[カウントダウン v]を受け取ったとき
[カウンタ v]を(-1)ずつ変える

このプロジェクトにスプライト「い」を追加し、以下の三種類のブロックだけを使って
「リスト」の中の要素をソートするプログラムを作りなさい。
[ v]を送る

[ v]を送って待つ
[ v]を受け取ったとき
「あ」と「い」以外にスプライトは無く、背景には全くコードが無いものとします。
スプライト「あ」のコードを変更してはいけません。

追記:
条件が一つ抜けていました。
ソートが完了した後にプログラムが終了する必要はありません。

Last edited by akinarin (March 27, 2023 22:16:18)

Shunkacchi
Scratcher
100+ posts

Scratchスクリプトクイズ

Caffeine3860 wrote:

「調べる」以外は絶対使わなければいけないですか?
調べる以外はすべて使ってください。

Caffeine3860 wrote:

ではこれならどうですか?
もう少し短いです。
abee
Scratcher
1000+ posts

Scratchスクリプトクイズ

#2584
この問題にはジャンプの定義がありません。「初心者の場合、ジャンプ」と全く同じ動きをすればよいのでしょうか。そのため、正解の動きが定まらず、問題が成立しないと思います。
また、現在の問題文だと使うブロック数の条件もありません。そのため、直接ジャンプに関係ないブロックを置くことも許されてしまいます。
sakura_neko
Scratcher
90 posts

Scratchスクリプトクイズ

#2590
これでどうでしょうか。
akinarin
Scratcher
500+ posts

Scratchスクリプトクイズ

>> #2593
@sakura_nekoさん正解です。

ちなみに、「プログラムが終了する必要がない」としたのは
自分がプログラムを終了させられるように作れなかったからです。(1時間ほど苦闘して諦めました)
@sakura_nekoさんのは、プログラムが終了しますね。素晴らしいです。

気づいた人もいるかと思います。
少し出来ることが違いますが、チューリングマシンがモデルです。

Last edited by akinarin (March 28, 2023 09:39:20)

Caffeine3860
Scratcher
69 posts

Scratchスクリプトクイズ

#2589
正解とします。
僕の想定解は
⚑ がクリックされたとき
[list v]のすべてを削除する
(10) 回繰り返す
[変数 v] を ((0) から (1) までの乱数) にする
([list v] の長さ :: list) を [list v] に追加する
end
です。変数の部分を変えたりすると思いきやあまり関係がないという少し意地悪な問題でした。
penguin820
Scratcher
18 posts

Scratchスクリプトクイズ

問題
1と2ではどちらの方が滑らかに動くでしょうか?

1
[右向き矢印 v]  キーが押されたとき
x座標を (10) ずつ変える

2
⚑ がクリックされたとき
ずっと
もし <[右向き矢印 v] キーが押された> なら
x座標を (10) ずつ変える
end
end
abee
Scratcher
1000+ posts

Scratchスクリプトクイズ

「滑らか」の意味を定義してください。このような個人の感性によって受け取り方が違う言葉は、そうしないと問題になりません。

Last edited by abee (March 29, 2023 08:14:47)

Caffeine3860
Scratcher
69 posts

Scratchスクリプトクイズ

問題
⚑ がクリックされたとき
もし <((1) から (4) までの乱数) = [1]> なら
[1 v] を (1) ずつ変える


でなければ
もし <((1) から (4) までの乱数) = [2]> なら
[2 v] を (1) ずつ変える


でなければ
もし <((1) から (4) までの乱数) = [3]> なら
[3 v] を [1] にする


でなければ
[4 v] を (1) ずつ変える
end
end
end
このようなスクリプトを、1~4が均等に出るように組みましたが、これではうまくいきません。
その理由(簡潔で良いです)と、正しいスクリプトを(数字だけを変えて)作ってください。
roketo09
Scratcher
100+ posts

Scratchスクリプトクイズ

#2598
@greenflag がクリックされたとき
[乱数 v] を ((1) から (4) までの乱数) にする
もし <(乱数)= [1]> なら
[1 v] を (1) ずつ変える
でなければ
もし <(乱数) = [2]> なら
[2 v] を (1) ずつ変える
でなければ
もし <(乱数) = [3]> なら
[3 v] を [1] にする
でなければ
[4 v] を (1) ずつ変える
end
end
end
だと思います。
問題のスクリプトでは、1~3を検出する際、毎回数字が変わってしまいます。

追記
これじゃ数字以外も変わってますね。
なのでこれは不正解です。

Last edited by roketo09 (April 4, 2023 07:58:06)

Catapult-
Scratcher
100+ posts

Scratchスクリプトクイズ

#2598
⚑ がクリックされたとき
もし <((1) から (4) までの乱数) = [1]> なら
[1 v] を (1) ずつ変える


でなければ
もし <((1) から (3) までの乱数) = [1]> なら
[2 v] を (1) ずつ変える


でなければ
もし <((1) から (2) までの乱数) = [1]> なら
[3 v] を [1] にする


でなければ
[4 v] を (1) ずつ変える
end
end
end

でどうでしょう
別解としては、.sb3ファイルエディタをバイナリエディタで開いて値を書き換えるとか

Last edited by Catapult- (April 4, 2023 07:56:57)

inoking
Scratcher
1000+ posts

Scratchスクリプトクイズ

⚑ がクリックされたとき
もし <((1) から (4) までの乱数) = [1]> なら
[1 v] を (1) ずつ変える //1/4


でなければ
もし <((2) から (4) までの乱数) = [2]> なら
[2 v] を (1) ずつ変える //3/4 * 1/3


でなければ
もし <((3) から (4) までの乱数) = [3]> なら
[3 v] を [1] にする //3/4 * 2/3 * 1/2


でなければ
[4 v] を (1) ずつ変える //3/4 * 2/3 * 1/2
end
end
end
ですね。
2箇所しか変えていません。
理由は確率分布が違うからです。

Last edited by inoking (April 4, 2023 08:03:22)

Powered by DjangoBB