4
1

More than 3 years have passed since last update.

なぜScratchで最も短い?湯婆婆が作れるのか

Posted at

https://qiita.com/TD12734/items/743e90fb867fee8c562e#comment-75b9dae7076f5ecafad3 には、123文字の湯婆婆が掲載されています。しかし、Scratchを使うと、もっと短くできます。

計算方法

Scratchのコードの長さの計り方は統一されていません。プロジェクトがシリアライズされたproject.jsonファイルの中身で測ると多分負けます。というわけで、実行部分の文字数で測ることとしました。

  • 基本はScratchBlocks記法
  • 不要なスペースなどは除去(ScratchBlocks記法の許容内)
  • ループの終わりに書く「end」は、その後に処理がない場合等は省略できるため、省略
  • 文字数を計算

Scratchで短くできるわけ

(自然)言語の特性

実は、Scratchは「まったく同じコード」を違う言語で記述できます。たとえば、言語設定がドイツ語の場合は多くの場合中国語よりコードが長くなります。つまり、言語設定を変えればコード自体を変えなくてもコードが短くなります。

変数の初期化

変数を実行部分で初期化する必要はありません。すでに初期化された状態で保存したら、いつでも参照できます。つまり、変数に長い文字列などを格納すれば、この文字列は実行部分に含めなくても利用できます!

なお、変数は以下のように初期化されています。
image.png

やってみる

中国語で。

当@greenFlag被点击
询问(a)并等待
将[x v]设为((回答)的第(在(1)和((回答)的字符数)之间取随机数)个字符)
对于(3)中的每个[c v]
在[b v]的第(2)项前插入(回答)
说(b)

image.png

106文字です。なお、このコードは日本語に「翻訳」すると
image.png

となります。

特徴

  • 「値を聞いて変数に格納する」命令は1ブロックで済みます。
  • 添え字は1始まり。
  • カウンター変数を自動的にインクリメントしてくれる命令文が隠し機能としてあります。
  • 「言う」ブロックは前に言ったことを上書きするので、複数回呼び出しても大丈夫。
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1