Discuss Scratch

taiyo_a
Scratcher
100+ posts

Scratchスクリプトクイズ

sasami19 wrote:

定義 (足される数)+(足す数)を求める
コスチュームを (足される数)にする
(足す数) 回繰り返す
次のコスチュームにする
end
[答え v] を (コスチューム #) にする
無限個のコスチュームを作ることは不可能であるかつ、(足す数)が負の数、少数だった場合計算できなくなるので、解答例としては不完全ではないでしょうか。
sasami19
Scratcher
58 posts

Scratchスクリプトクイズ

#2762
そうですが、それを言ってしまえばkouryou118103さんの投稿も同じです。
あくまで「自然数の足し算ならこんなものもあるよ」と言っただけです。
tabakenn
Scratcher
100+ posts

Scratchスクリプトクイズ

a + b
((((a) の[e^ v]::operators) * ((b) の[e^ v]::operators)) の[ln v]::operators)
結構いいかんじに動きました。(小数も負の数もいけるし
(なおちょっと大きいとダメな模様 (-745 <= a, b, a + b <= 709)

((((2) * (((a) の[cos v]::operators) * ((b) の[cos v]::operators))) - (((a) - (b)::operators) の[cos v]::operators)) の[acos v]::operators)
↑色々残念なバージョン (0 <= a, b, a + b <= 180)

Last edited by tabakenn (Dec. 6, 2023 14:15:49)

Leonhard01
Scratcher
100+ posts

Scratchスクリプトクイズ

#2744
#2750
解答ありがとうございます。正解です。

自分の作ったプログラムです。
https://scratch.mit.edu/projects/934914791/
https://scratch.mit.edu/projects/935488699/
一つ目はお二方同様パスカルの三角形の性質の一つである上からx番目、左からy番目の項はx-1 C y-1で表すことができるを使い
二つ目は11^nとパスカルの三角形の関連性を用いて作りました。

またWikipediaにあるような

Wikipedia wrote:

パスカルの三角形の最も単純な性質として、以下のようなものがある。

頂上から右下・左下の方向へ並ぶ数字はすべて1である。
2段目の 1 から右下・左下の方向(すべて1の方向を除く。以下同じ)には自然数の列が現れる。
3段目の 1 から右下・左下の方向には三角数の列が現れる。
4段目の 1 から右下・左下の方向には三角錐数の列が現れる。
5段目の 1 から右下・左下の方向には五胞体数の列が現れる。
一般的に n 段目の 1 から右下・左下の方向には n − 1 次元単体数が現れる。
を使った解法なども考えられるかもしれません。
inoking
Scratcher
1000+ posts

Scratchスクリプトクイズ

sasami19 wrote:

#2762
そうですが、それを言ってしまえばkouryou118103さんの投稿も同じです。
あくまで「自然数の足し算ならこんなものもあるよ」と言っただけです。
反論のための反論に見えます。
どちらのやり方も不完全ですが、その程度が違います。
無限とは言わずとも、1000個もコスチュームが作れますか?
abee
Scratcher
1000+ posts

Scratchスクリプトクイズ

私は#2761の無限個は冗談だと感じたので、回答時に制限を示していれば、これはこれでありだと思いました。
この問題の趣旨は、加算の置き換えとして使えるブロック(加算を使うべき場面でも使わなくてもすむように用意されているブロック)やアルゴリズムを探すことだと思うので、その点では成立しています。

Last edited by abee (Dec. 6, 2023 23:19:23)

inoking
Scratcher
1000+ posts

Scratchスクリプトクイズ

はい、無限は冗談だとしても
せめて「数十くらいが関の山ですが」ぐらいの注意書きは必要だったと思います。
tabakenn
Scratcher
100+ posts

Scratchスクリプトクイズ

sasami19 wrote:

#2754
スプライトを用意して、無限個のコスチュームを用意します()
(略)
()は元々 笑 がなくて、笑えないという意味らしいですが、最近だと()でネタという意味もあるので、そもそものネタ解答にマジレスするのが野暮だと思います。
やっぱりマジレスにも寛容にならないと…!

Last edited by tabakenn (Dec. 7, 2023 09:46:38)

xiangyeng
Scratcher
100+ posts

Scratchスクリプトクイズ

#2761
正解です!…が予想外でした!いくらなんでもコスチュームは無限に作れないよw
まあでも面白いしいいアイデアですね!(そういやコスチュームの限界調べてるプロジェクトあったな…。)

Last edited by xiangyeng (Dec. 7, 2023 05:37:04)

rinasama_tabasi
Scratcher
100+ posts

Scratchスクリプトクイズ

xiangyeng wrote:

問題です。
(() + ())
を使わずに、以下の続きにスクリプトをつけたして、足し算が出来るようなスクリプトにしてください。
定義 (足される数)+(足す数)を求める
(想定解は何個もありますので、もうこの問題が答えられていても、頭をひねって考えてみてください!)
できましたが長いので
プロジェクトにおいておきます。
(全加算器です)
https://scratch.mit.edu/projects/936480039/
あっ….マイナスの数無理やん
(あと少数)
直してきます

Last edited by rinasama_tabasi (Dec. 7, 2023 05:51:51)

kouhei-1
Scratcher
1000+ posts

Scratchスクリプトクイズ

擬似乱数を
(() から () までの乱数)

((any v) 番目( [list v] ) :: list)

[どこか v] へ行く

を使わずに作ってください。

定義 [最小値]から[最大値]までの乱数を変数nに代入

の先を作ってください。

50block以内でお願いします
newmomizi_txt
Scratcher
1000+ posts

Scratchスクリプトクイズ

#2772
定義 乱数 (最小値) (最大値)
[乱数 v] を (((48271) * (乱数)) を (2147483647) で割った余り) にする
[n v] を ((最小値) + ((乱数) を (((最大値) - (最小値)) + (1)) で割った余り)) にする
(最大値)-(最小値)<2^31-1 の場合に動作します。また、「乱数」にはあらかじめ2147493647で割れない整数を入れておく必要があります。(線形合同法)

おまけ(本物の乱数ver)
定義 乱数 (最小値) (最大値)
[n v] を (0) にする
[i v] を (0) にする
(((((最大値) - (最小値)) + (1)) の [log v]::operators) の [切り上げ v]::operators) 回繰り返す
[乱数さい(20面ダイス)を振り、その出目を入力してください] と聞いて待つ
[n v] を ((答え) * ((i) の [10^ v]::operators)) ずつ変える
[i v] を (1) ずつ変える
end
[n v] を ((n) を (((最大値) - (最小値)) + (1)) で割った余り) にする
[n v] を (最小値) ずつ変える

Last edited by newmomizi_txt (Dec. 7, 2023 23:42:14)

dj-YakoChite
Scratcher
100+ posts

Scratchスクリプトクイズ

タイマーの細かいところを利用してみました.
定義 [最小値]から[最大値]までの乱数を変数nに代入
[n v] を (((最小値) + (((最大値) - (最小値)) * (((タイマー) * [100]) を (1) で割った余り))) を四捨五入) にする

追記:#2778に修正しました.

Last edited by dj-YakoChite (Dec. 7, 2023 14:54:01)

abee
Scratcher
1000+ posts

Scratchスクリプトクイズ

#2775
タイマーを使った場合、なんらかの規則性が起こり、一様乱数にならない可能性があります。数千、数万回程度試行して偏りがないか検証することをお勧めします。

Last edited by abee (Dec. 7, 2023 22:21:46)

Jinenjo_000
Scratcher
100+ posts

Scratchスクリプトクイズ

#2772
https://scratch.mit.edu/projects/884167295/

Last edited by Jinenjo_000 (Dec. 7, 2023 14:03:43)

dj-YakoChite
Scratcher
100+ posts

Scratchスクリプトクイズ

#2776の指摘を受けて#2775のプログラムを試行してみた結果,
0 ~ 100 の乱数を生成しようとしたところ,一の位がすべて0になっていました.

そのため,下のように修正をしました.
(プログラムが見切れる端末がありそうなので,minは最小値,maxは最大値,定義ブロックと変数ブロックは省略)
(((min) + (((max) - (min)) * ((((13) の [10 ^ v]) * ((タイマー)を (1) で割った余り)) を (1) で割った余り))) を四捨五入)
最小値を0,最大値を100000とし,3000回実行して(3000回キーボードを連打しました.疲れた)リストに記録したところ,
ぱっと見 規則性は見えず,相加平均は約49305.73で (最大+最小)/2 ぐらいだったので,成功と言えるでしょう.

Last edited by dj-YakoChite (Dec. 8, 2023 06:04:32)

inoking
Scratcher
1000+ posts

Scratchスクリプトクイズ

dj-YakoChite wrote:

ぱっと見 規則性は見えず,相加平均は約49305.73で (最大+最小)/2 ぐらいだったので,成功と言えるでしょう.
「ぱっと見」では判断つかないと思うのですが、、グラフ表示などしてみましたか?
また、平均では一様性は分かりません。
以前乱数を図示するプロジェクトを作った覚えがありますが、今サイトの調子が悪くて見つけられません。
追記:
これこれでした。

Last edited by inoking (Dec. 7, 2023 16:20:02)

Jinenjo_000
Scratcher
100+ posts

Scratchスクリプトクイズ

>>#2772
もうひとつ作ってみました。
https://scratch.mit.edu/projects/936729558/

※思いっきりオーバーフローしてたので、微修正しました。

Last edited by Jinenjo_000 (Dec. 8, 2023 02:32:38)

Jinenjo_000
Scratcher
100+ posts

Scratchスクリプトクイズ

>> #2777

dj-YakoChite wrote:

#2776の指摘を受けて#2775のプログラムを試行してみた結果,
0 ~ 100 の乱数を生成しようとしたところ,一の位がすべて0になっていました.

そのため,下のように修正をしました.

(中略)

最小値を0,最大値を100000とし,3000回実行して(3000回キーボードを連打しました.疲れた)リストに記録したところ,
ぱっと見 規則性は見えず,相加平均は約49305.73で (最大+最小)/2 ぐらいだったので,成功と言えるでしょう.
#2775の乱数を検証したときも、キーボードを連打して生成しましたか?

そのプログラムは、ループに入れて連続で実行する場合と、1回ずつ手動で実行する場合で結果が変わると思います。
前者の場合は確かにabeeさんが指摘されているように規則性が起こりそうです。後者の場合はキーボードを押すタイミングに大きく依存するでしょう。
dj-YakoChite
Scratcher
100+ posts

Scratchスクリプトクイズ

#2780

私 wrote:

3000回実行して(3000回キーボードを連打しました.疲れた)
連打しました.

Powered by DjangoBB