問題タブ [r5rs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scheme - 行列のスキーム ストリーム
特定の順序を持つ一連の行列を保持するスキームにストリームが必要です。
このストリームのストリームカーは行列 [1 6 0 3] になります。つまり、行 1 列 1 は 1、行 1 列 2 は 6、行 2 列 1 は 0、行 2 列 2 は 3 です。各行列は技術的にはリストですが、表現 (コンストラクターとセレクター) があります。 2x2 マトリックス。したがって、これは 2x2 行列のストリームになります。
これで、ストリームの次のアイテムは [2 10 0 5] になります。ここでのパターンは、次のストリームの行列が次のように増加することです: [k (4k+2) 0 (2k+1)] ここで、k は k 番目の行列です。
これらをどのように保管したいかという考えがあります。例として、次のようにして連続した 1 のストリームを取得できることを知っています。
および整数の連続ストリーム:
したがって、上記の形式の行列の連続ストリームが必要です。つまり、最初のもの (カーストリーム) は、[1 6 0 3] で表される行列、[2 10 0 5] で表される行列、[3 14 0 7] で表される行列になります。
だから、私はそれが次のようになることを知っています:
下線は「私が思う」が欠落している部分です。投稿を整理するために、この投稿から「ストリームの追加」手順を削除しました。
***編集: 「開始行列」は 1 4 0 2 ではなく 1 6 0 3 でなければならないことに気付きました。
しかし、k 番目の行列に 1 4 0 2 を追加する方法が必要です。
scheme - リストの最後の要素を取得するスキーム
リストの最後の要素を返す単純なスキーム関数を作成しようとしています。私の機能はうまくいくように見えますが、何かで失敗しました:
DrRacket は私にエラーを与え続けます:
本当なので(null? '())
、なぜこれが機能しないのかわかりません。
これは宿題に必要だと思う関数です(関数を書くことlast-element
は課題ではありません)、説明書には組み込み関数を使用できないと書かれているreverse
ので、(car (reverse l))
この機能を修正するにはどうすればよいですか?
list - スキームリストは常に逆の順序で
ここのより高度な計画者のほとんどにとっておそらく些細な質問ですが、新参者として、私はこれが問題であることに気づきました。
入ったときと同じ順序で新しいリストを作成する方法が必要です。例として、リスト'(1 2 0 3 4 0 0 5)が与えられたとします。ただし、リストをトラバースし、最初の引数としてcdrを返すと、新しいリストが逆方向に作成されます。
コードの例を次に示します。
作業が必要な「古いリスト」と、作成して返す「新しいリスト」としての空のリストを渡します。
0を削除することは、新しいリストが満たさなければならない「何らかの条件」としてここにあることに注意してください
逆の手順で返されるリストを逆にするだけでなく、最初に新しいリストを正しい順序でまとめたいと思います。
おそらくどこか別の場所で再帰呼び出しを行うような、これに対するある種の「トリック」はありますか?
アドバイスをいただければ幸いです。
scheme - スキームから R5RS への add1 関数
コードを書きましたがadd1
、Scheme で使用した関数が R5RS では機能しないため、機能しません。add1
R5RSで何を置き換えることができますか?
scheme - エラー処理のためのスキーム call/cc
ユーザー入力を受け入れ、計算し、出力を与えるSchemeアプリケーションがあります。ある種のエラー処理とスムーズな終了方法を有効にすることで、より堅牢にしたいと考えています。Call with current continuation は、ここでこのギャップを埋めるものと思われますが、それを実装する方法がよくわかりません。
現時点では、ユーザーが無効な入力を入力すると、プログラムがクラッシュして終了します。ユーザーをアプリケーションに保持し、代わりにエラーメッセージを表示したいだけです。これが私の方法の概要ですが、通常はシステムをクラッシュさせるエラーが発生した場合にエラーを出してプログラムに保持するように実装する場所がわかりません。
また、プログラムをきれいに終了したいと思います。つまり、クラッシュ出口でもブレークでもありません。ユーザーに「leave」と入力してもらい、プログラムを閉じてインタープリターに戻してもらいたいと思います。私のアウトラインは上記のように見えますが、ユーザーがプログラムを離れることはなく、入力プロンプトに戻るだけです。
どんなアイデアでも大歓迎です。
image - R5RSでの画像の使い方
.jpg ファイルを R5RS にインポートする方法を探しています。制作中のゲームの背景に使用したいと思います。
ありがとう!
scheme - Scheme の導関数の例を改善する
私は、合計手順から始めて、最終的に積まで、スキームデリバティブ計算機が入力をより受け入れられるようにしようとしています。(deriv '(* x y (+ x 3)) 'x)
の代わりにの形式で入力を受け入れるように手順を変更しようとしています(deriv '(* x (* y (+ x 3))) 'x)
。
私が取り組んでいるコードは次のとおりです。
と
私は問題を解決しようとしましたが、これまでのところあまりうまくいきませんでした.これは、いくつかの異なるバリエーションで実装しようとしたものです:
それは私に悪い構文呼び出しを与えています。そして、私の 2 番目の if は実際には if ステートメントに適合していないように見えますが、それがどのように見えるかの構造は先生から与えられたので、それが機能しないか、または想定されていると混乱します。仕事に行くと思います。
誰かがこれを理解する手を貸してくれるなら、それは素晴らしいことです.
私はこれまでのところ、Scheme にあまり熱中していません。知ったり理解したりするのはクールなことのように思えますが、私の先生はこの 2 週間でそれに合わせようとしていて、私はそれを理解することができません。
scheme - 最大深度をカウントするためのScheme(R5RS言語)プログラムの書き方(max関数を使用しない)?
これが深度プログラム用のものですが、最大関数なしでそれを行う方法 (define、lambda、quote (')、car、cdr、cons、cond、eq?、および equal? のみを使用)?
入力: ((id = id + id)(if bool then (if bool then ( id = id + id ))(id = const / const)(id = id + id))(while bool (id = id - const )(id = id - id)))
出力する必要があります: maximumdepth: 2
scheme - このスキームプログラムが期待どおりに機能しないのはなぜですか?
これは何も返しません。私はそれがすることを期待しています(3 + (2 + (9 + 1))
、それはに等しいはず15
です。私set!
は間違った方法を使用していますか?条件set!
内で電話できませんか?if