Language detail: ドリトル
Coverage: 6.60%
|
number of '+' ratings |
contribution for coverage |
Unsolved challenges
- 文字列で+を表示する (Nested Flatten)
- 年賀はがきの当せん番号 (Nested Flatten)
- 箱詰めパズルの判定 (Nested Flatten)
- 関数やメソッドのソースの平均行数 (Nested Flatten)
- コレクションの実装 (Nested Flatten)
codes
複数行のコメントアウト
(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)もあるので気軽に試せます。
see: プログラミング言語「ドリトル」
1 | ラベル!『Hello, world!』作る。
|


匿名
#9900()
[
ドリトル
]
Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]