戦う騎士のリストを 1 つ受け取る関数を作成しています。彼らの戦いを実行しているコードは機能しています (馬上槍試合)。今、私はトーナメント システムを書いていますが、トーナメント ラウンドを機能させることができません。先ほど言ったように、騎士のリストを受け取り、全員が戦うまで再帰的に戦わせ、勝者と敗者の 2 つのリストを返します。知っていることはすべて試しましたが、何をしてもエラーが発生し、コードが機能しなくなり、その理由がわかりません。これまでに書いたものは次のとおりです。
(define (playTourneyRound knightList)
(
(cond
((> (length knightList) 1)
(let (
(winner (jousting-game (car knightList) (cadr knightList)))
(winners (list))
(losers (list))
(results (playTourneyRound (cddr knightList)))
)
(if (= winner 1) (winners (append winners (list (car knightList)))) (winners (append winners (list (cadr knightList)))))
(winners (append (car results)))
(losers (list (cadr knightList) (cadr results)))
(list winners losers)
)
)
((= (length knightList) 1)
(list knightList)
)
)
(list '() '())
)
)
「Call of non-procedure: #」というエラーが表示される理由と、今後このエラーを回避するにはどうすればよいですか? 私は、scheme/lisp について重要なことを理解していないだけだと確信しており、実際に説明を使用することができます。
すべての助けをありがとう、問題は解決されました