Language detail: ドリトル

Coverage: 6.60%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

2次元ランダムウォーク (Nested Flatten)
1
2
3
酔人=タートル! 作る。
酔歩=タイマー!0.1秒 間隔 500回 回数 作る。
酔歩!「酔人!ペンあり (random(360))右回り 10歩 歩く」実行。
複数行のコメントアウト (Nested Flatten)
1
2
3
4
5
6
7
// 行コメント

『・文字列によるコメントアウト
  → 自由に書けるが入れ子に出来ない』。
 
「「ブロックによるコメントアウト。
  構文エラーを許さないが、入れ子に出来る。」」。
隣り合う二項の差 (Nested Flatten)
1
2
3
4
配列:隣差=「|r x t|r=配列!作る。x=1。t=未定義。
 「x=x+1。t=!(x)見る。未定義!=t」!の間「r!(t-(!(x-1)見る))入れる」実行」。

ラベル!(配列!3 1 4 1 5 9 2 6 5 作る 隣差)作る。
Hello, world!その2 (Nested Flatten)
1
2
配列!1 2 3 3 4 5 6 7 4 8 3 9 10 作る「|列 欄|欄!((欄!読む)+(列!(自分)見る))書く」
 (配列!『H』『e』『l』『o』『,』『 』『w』『r』『d』『!』作る)(フィールド!作る 160 40 大きさ)選ぶ。
実行時間の測定 (Nested Flatten)
こんな感じで計れますが,精度は期待できません。
1
2
3
4
5
profile=「|間 物|(未定義==間)!なら「間=0.1」実行。(未定義==物)!なら「物=ルート」実行。
 「|時 秒|時!(間)間隔「秒=秒+間」実行。物!func。時!中断。秒」!(タイマー!作る) 0 実行」。

func=「「|T|「|x|T!(x*2)円」!100回 繰り返す」!(タートル!作る)実行」。
ラベル!(profile!実行)作る -300 200 位置。
n人中m人が当選するくじ (Nested Flatten)
円順列から切り取る方式。
1
2
3
4
5
6
7
どう書く4=「|n m|
 「|候補 当選 番|
  「|x|候補!(x)入れる」!(n)繰り返す。
  「m>0」!の間「番=番%n+1。m=m-1。当選!(候補!(番)見る)入れる」実行。
  」!(配列!作る)(配列!作る)(乱数(n))実行」。

ラベル!(どう書く4!13 11 実行)作る。
与えられた数字のケタ数 (Nested Flatten)
number は数値のプロトタイプ。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
number:桁数=「|x|x=abs(自分)。
 「x==0」!なら「0」そうでなければ
 「x>=1」 なら「 ceil(log(abs(自分)))」
   そうでなければ「floor(log(abs(自分)))」実行」。

number:最大桁の位=「|k|k=!桁数。
 (k==0)!なら「0」
  そうでなければ「10!((k>0)!なら「k-1」そうでなければ「k」実行)pow」実行」。

表示欄=リスト!作る -80 80 位置 160 160 大きさ。
配列!2469 -600 1.1 0 0.042 作る
 「表示欄!(『』!(自分)『なら』(!桁数)『と』(!最大桁の位)連結)書く」それぞれ実行。
リストを逆順に表示 (Nested Flatten)
配列に長さを返すメソッドが無いらしい(!!)ので簡易実装。
1
2
3
4
5
配列:長さ=「|s|s=0。「未定義!=(!(s+1)見る)」!の間「s=s+1」実行。s」。
配列:逆順=「|r s|r=配列!作る。s=!長さ。
 「s>0」!の間「r!(!(s)見る)入れる。s=s-1」実行。r」。

ラベル!(配列!1 2 3 4 5 作る 逆順)作る。
アレイのuniq (Nested Flatten)
「uniq」相当の日本語が思いつかない…。
1
2
3
4
5
6
7
配列:uniq=「|r|r=配列!作る。
 !「|r|
  (未定義==(r!「|x|x==自分」(自分)選ぶ 1番 見る))!なら「r!(自分)入れる」実行。
   」(r)それぞれ実行。
 r」。

ラベル!(配列!3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 作る uniq)作る。
変形Fizz-Buzz問題 (Nested Flatten)
ドリトルで。
1
2
3
4
5
6
表示欄=リスト!作る -40 200 位置 80 400 大きさ。
「|回 字|字=『』。
 (回%5<1)!なら「字=『Buzz』」実行。
 (回%3<1)!なら「字=『Fizz』+字」実行。
 (字==『』)!なら「字=『hoge』」実行。
 表示欄!(『』!(回)『:』(字)連結)書く」!20回 繰り返す。
九九の表示 (Nested Flatten)
1
2
3
4
欄=リスト!作る 100 400 大きさ -50 200 位置。
「|左|「|右 積|積=左*右。
 欄!(『』!(左)『 * 』(右)((積>9)!なら「『 = 』」そうでなければ「『 =   』」実行)(積)連結)書く。
」!9回 繰り返す」!9回 繰り返す。
ピラミッドを作る (Nested Flatten)
 * の代わりに半径1ピクセルの円を描きます。
1
2
3
4
5
タートル:ピラミッド描く=
「|n 歩幅|「歩幅==未定義」!なら「歩幅=20」実行。
 !ペンなし 0 200 位置。
 「|i|「!1 円;ペンなし (歩幅)歩く」!(i*2-1)繰り返す 0(歩幅*-1)移動する 180 右回り」!(n)繰り返す」。
タートル!作る 19 ピラミッド描く。
Hello, world! (Nested Flatten)
オンライン版(http://dolittle.eplang.jp/pconline/applet.html)もあるので気軽に試せます。
1
ラベル!『Hello, world!』作る。

Index

Feed

Other

Link

Pathtraq

loading...