Discuss Scratch

pura314
Scratcher
100+ posts

Scratchスクリプトクイズ

問題です。
この下のプログラムをプログラム1、
ずっと
(0) 歩動かす //ちなみにこのブロック以外でも同じ動作にすることができる。(0秒待つなど)
[変数 v] を [1]ずつ変える
end
この下のプログラムをプログラム2とする
ずっと
[変数 v] を (1) ずつ変える
end
プログラム1とプログラム2を別のプロジェクトで実行すると、変数の増え方が違うことがわかります。(これこれの通り)
そこで、旗を押して変数が10秒間はプログラム1の変数の増え方、それ以降はプログラム2の変数の増え方をするプログラムを考えてください。
ただし、条件として、
  • 初期値は0。
  • 旗が押されたブロックと変数を1ずつ変えるブロック、変数を0にするブロック以外は制御ブロックで行うこと。
  • FPSに影響されることもあるので10秒間ではなく約10秒間でもいい。
を守ってください。
想定解は旗が押されたブロック含めて5ブロックです。
Poteto143
Scratcher
1000+ posts

Scratchスクリプトクイズ

#3565に回答します。 https://scratch.mit.edu/projects/1208193858/
気づくまでに10分くらいかかりました
10秒、がミソですね!
pura314
Scratcher
100+ posts

Scratchスクリプトクイズ

#3566
正解です!
scratchは動きブロックなどを使用するときは30FPSなので、1秒に30回更新されます。それが10秒なので30*10で300となり、クローンの制限は300までなので、そのときから、実質動きブロックなどの30FPSにするブロックがない状態になって増え方が変わるんですね。
わずか19分44秒、、、
問題設定が難しい、、、

Last edited by pura314 (Aug. 21, 2025 09:32:36)

tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

yuito2013 wrote:

... ::hat
go to x: (-240) y: (0)//できるだけ計算できるように
repeat until <(x position) = (繰り返しの回数)>
...
change x by (1)
end
まあ、制限がありますがね。
いい発想ですね!!
計算処理を加えれば172800(480*360)まで行けると思います!
GENPAKU1616
Scratcher
16 posts

Scratchスクリプトクイズ

#3542
少し前の問題になるのですが、この問題の制限に連番ではいけない(ランダムでないといけない)という制限はないので、そこを突けば
40ブロックよりすごい少なくできますね(必ず不正解になる)
https://scratch.mit.edu/projects/1210566375/

Last edited by GENPAKU1616 (Aug. 29, 2025 06:37:39)

tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

問題。すごい長い。許して…
ペン拡張機能を使って、2点間を結ぶ点線を描いて下さい。
スプライトのコスチュームは空のベクター(コスチューム1)一枚で、音はありません。
ただし、点線は{描画する,描画しない}の組み合わせが10回になる様にして、浮動小数点の誤差も考慮してください。
描画しない場所の処理はペンを上げるでも透明度を変えるでもいいです。
また、
(x1)
(y1)
(x2)
(y2)
の4つの変数が事前に設定されている物として、それを使用してください。
when green flag clicked
[x1 v]を[0]にする
[y1 v]を[0]にする
[x2 v]を[200]にする
[y2 v]を[100]にする
ペンを上げる
ペンの色を[#000000]にする
全部消す
(0)::stack custom

定義(引数)
...
の…の部分にプログラムを作成して下さい。その部分のブロック数をカウントします。
使用不可な物,事
変数の書き換えや新たな変数の作成はできません。
新たな定義の作成、定義の引数の変更等はできません。
指定されたスクリプト以外のスクリプトは作成できません。
x座標を()、y座標を ()にする
もし<>なら
以外の動き,制御ブロックは使用できません。
また、以下のブロックは使用できません。
<<>かつ<>>
<<>ではない>
(()の()番目の文字)
(()を四捨五入)
()の[... v] ::operators
コスチュームと音の変更(名前含む)はできません。
調べるブロックは使用できません。
想定解は28ブロックです。

Last edited by tuneninemuihito (Aug. 29, 2025 15:15:24)

nozotti0909
Scratcher
22 posts

Scratchスクリプトクイズ

#3570
こんな感じですか?
点線を10通りの意味があんまりわからない
tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

nozotti0909 wrote:

#3570
こんな感じですか?
点線を10通りの意味があんまりわからない
・定義の入力値の値は0にしてください

それから「点線はの組み合わせが10回になる様に」の文章が分かりづらかったとの事、誠に申し訳ございません。
これは点1(x1,y1)から点2(x2,y2)の間に、{描画する,描画しない}の塊を10個入れると言う事です。
こちらのミスでカッコが[]になってしまっていました。すみません。
修正致しましたので確認をお願いいたします。

Last edited by tuneninemuihito (Aug. 30, 2025 08:59:02)

nozotti0909
Scratcher
22 posts

Scratchスクリプトクイズ

#3572
黒い線が10本になるように&入力値をなしにしました
GENPAKU1616
Scratcher
16 posts

Scratchスクリプトクイズ

#3570
疑似ループを作れれば簡単ですね
https://scratch.mit.edu/projects/1210825669/
tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

#3573
いいですね、正解です。
では(調べる)のブロックを使わずに作れますか?
#3574
変数の値を座標に反映して下さい
点の数が10になる様にして下さい
abee
Scratcher
1000+ posts

Scratchスクリプトクイズ

#3574
ある関数の中で、その関数を呼び出すことを「再帰呼び出し」と言います(recursive call, リカーシブコール)。
ブロック定義は厳密には関数ではありませんが、その書き方も再帰です。
tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

#3570
一日半経ったし答え載せます。
想定解

Last edited by tuneninemuihito (Aug. 31, 2025 01:30:55)

finalbacon
Scratcher
100+ posts

Scratchスクリプトクイズ

出題します。

3つのスプライトがそれぞれ(x_1 , y_1) (x_2 , y_2) (x_3 , y_3)にあるとき、これらからできる三角形の内側を塗りつぶすプログラムを作ってください。
↑この説明がムズカシイと思う人は「3つのスプライトからできる三角形をぬりつぶす」と思ってもらってOKです。
ただし、追加の変数は3つまでしか作ってはいけません。もちろんリストも作ってはいけません。

とっつきやすいように、前提条件が整えられているプロジェクトを作りました。リミックスやコピーなどするとラクです。
こちらです。https://scratch.mit.edu/projects/1218991116/

【くわしい説明】
・「塗りつぶす」とは、「中身が全部まわりとは別の色で塗られている」ことを指します。スキマが空いてはいけません。
・はみ出しは、ほんの少しならOKです。
・3つのスプライトは-240≦x≦240、-180≦y≦180です。大雑把に言えば、「スプライトは画面内に収まる」です。
・有限時間内に終わるようにしてください。また、見る人のカーソル操作によって書かせるものはNGです。
・変数は元から6個あります。なので、変数の個数の上限は9個、ということになります。
・3つのスプライトが一直線になるようなときには、どんな感じになっても大丈夫です。

頑張ってください。想定解はいくつか考えてあります。

【余談】
「変数3個」という条件は、「内接円を使った塗りつぶし」を妨害するために入れています。「内接円を使った塗りつぶし」を強行してみるのも面白いかもしれません。
あと、音量などを使えば変数を実質的に増やせますが、想定内です。自分のプライドと相談してみてください。

Last edited by finalbacon (Sept. 19, 2025 23:29:56)

gannbaru306
Scratcher
15 posts

Scratchスクリプトクイズ

#3576
出来ました。
挙動ちょっとおかしいしプログラム長すぎかも?
三角形描画

Last edited by gannbaru306 (Sept. 19, 2025 14:04:25)

tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

#3576
出来ました
変数の書き換え,追加は行わずに、計算と再帰処理で完結しました。
作ってる最中に先を越された…
finalbacon
Scratcher
100+ posts

Scratchスクリプトクイズ

【ご報告】
・3つのスプライトが一直線になるようなときには、どんな感じになっても大丈夫です。
という説明を足しました。書き忘れです。

#3577
正解です!しかし、三角形が直線に近づくと塗りつぶしがうまくいかなかったり、角が丸かったりしているので、そこを直すともっとよいかもしれません。
#3578
正解です!再帰処理、正直頭にありませんでした…お見事です!あと、点と点の内分点を取るプログラムの書き方が私のいつも使っているものより見やすい感じがしますね。今度使ってみようと思います。

Last edited by finalbacon (Sept. 19, 2025 14:35:59)

Doctor_Fe
Scratcher
100+ posts

Scratchスクリプトクイズ

#3576
楽しそうなので私も作ってみました。

有効な解答と見做せるかについては意見が分かれそうですが、こういう解法も面白いと思います。

https://scratch.mit.edu/projects/1219130446/
finalbacon
Scratcher
100+ posts

Scratchスクリプトクイズ

#3580
正解です!こういう「逆転の発想」は前にも何回か見たことがあるのですが、コスチュームを使わないものを見たのは初かもしれません。
「逆転の発想」を見るたびに、「その手があったか…!」とびっくりさせられてます。
tuneninemuihito
Scratcher
59 posts

Scratchスクリプトクイズ

#3576
ブロック数をさらに減らして作ってみたり。38→26
解答2
1~2,3~2の往復を1,2~3の往復にしました

Powered by DjangoBB