http://rosettacode.org/wiki/Sierpinski_carpet#SchemeにSierpinskiカーペットを生成するコードが見つかりましたが、DrRacket環境またはWeSchemeでは実行されません。誰かがどちらの環境にもソリューションを提供できますか?Sierpinskiカーペットのスキームコードの翻訳
答えて
私はWeSchemeで動作するようにプログラムを翻訳しました。私はいくつかの変更を加えました.WindSchemeが提供する画像プリミティブを使用して、(表示)と(改行)を使用するのではなく、やや良い画像を作成します。あなたはview the running program and its source codeすることができます。便宜上、私はここにソースを含めます:
;; Sierpenski carpet.
;; http://rosettacode.org/wiki/Sierpinski_carpet#Scheme
(define SQUARE (square 10 "solid" "red"))
(define SPACE (square 10 "solid" "white"))
(define (carpet n)
(local [(define (in-carpet? x y)
(cond ((or (zero? x) (zero? y))
#t)
((and (= 1 (remainder x 3)) (= 1 (remainder y 3)))
#f)
(else
(in-carpet? (quotient x 3) (quotient y 3)))))]
(letrec ([outer (lambda (i)
(cond
[(< i (expt 3 n))
(local ([define a-row
(letrec ([inner
(lambda (j)
(cond [(< j (expt 3 n))
(cons (if (in-carpet? i j)
SQUARE
SPACE)
(inner (add1 j)))]
[else
empty]))])
(inner 0))])
(cons (apply beside a-row)
(outer (add1 i))))]
[else
empty]))])
(apply above (outer 0)))))
(carpet 3)
WeSchemeの修正コードです。 WeSchemeがdo-ループ構文をサポートしていないので、私は、このコードは、そのコードを示す
#lang racket
ラインを付加した後DrRacketで正常に動作ように見え代わりSRFI-1から展開
(define (unfold p f g seed)
(if (p seed) '()
(cons (f seed)
(unfold p f g (g seed)))))
(define (1- n) (- n 1))
(define (carpet n)
(letrec ((in-carpet?
(lambda (x y)
(cond ((or (zero? x) (zero? y))
#t)
((and (= 1 (remainder x 3)) (= 1 (remainder y 3)))
#f)
(else
(in-carpet? (quotient x 3) (quotient y 3)))))))
(let ((result
(unfold negative?
(lambda (i)
(unfold negative?
(lambda (j) (in-carpet? i j))
1-
(1- (expt 3 n))))
1-
(1- (expt 3 n)))))
(for-each (lambda (line)
(begin
(for-each (lambda (char) (display (if char #\# #\space))) line)
(newline)))
result))))
これは、希望のグラフィック画像を生成していないようです。 – lifebalance
[出力](http://www.wescheme.org/view?publicId=bathe-pesky-cover-lunar-clock)はこちらからご覧いただけます。この問題は、(for each(lambda(char)(display(char "#"フォントが固定されていないのでディスプレイがギザギザになっていましたWeschemeの "display"機能で固定フォントを使う方法がわかりません – lifebalance
を使用しますラケットに書かれています。これが十分でない場合は、より詳細な情報を提供することができます。
- 1. sierpinskiカーペット - 矩形の領域
- 2. Sierpinskiカーペットの再帰 - Python
- 3. Sierpinskiカーペットは再帰の代わりにスタックを使用します
- 4. 角度翻訳 - 翻訳値の翻訳attr
- 5. TYPO3 7の翻訳モードを制限(コピー/翻訳)翻訳ウィザード
- 6. するにはアンドロイドでアニメーションを翻訳アプリ翻訳の翻訳
- 7. チェックアウトフィールドのカスタマイズと翻訳の翻訳
- 8. マイクロソフト翻訳のAPIエラー取得翻訳
- 9. スキームコード
- 10. キーボードコードの翻訳
- 11. 翻訳エディターでアンドロイドアプリを翻訳する
- 12. 翻訳を提供するWordPress翻訳
- 13. 翻訳
- 14. 翻訳
- 15. Railsの翻訳カスタムベースエラー
- 16. 翻訳の略語
- 17. netsh.exeメッセージの翻訳
- 18. selectize.jsのプレースホルダ翻訳
- 19. Yii2ベストプラクティスダイナミックコンテンツの翻訳
- 20. DrupalのSlider翻訳
- 21. ワードプレステーマ "Tarski"の翻訳
- 22. インラインビューヘルパーのTypo3翻訳
- 23. Pentahoレポートの翻訳
- 24. MgOの翻訳:-1
- 25. 翻訳元から翻訳元へ翻訳者を作成する
- 26. マイクロソフト翻訳APIで翻訳されたテストの限界
- 27. Django翻訳 - 動的文字列の翻訳
- 28. SF3 [翻訳者] [コンソール]翻訳:yamlのネスティングを更新する
- 29. MediaWikiで翻訳とULSで利用可能な翻訳のリスト
- 30. DoctrineExtensionsで翻訳されたDoctrineエンティティのクローン化翻訳可能
ありがとうございました。コードは非常に読みやすいです。よろしく、 – lifebalance