05/07/26 02:35:34
おー久しぶりにのぞきにきたが,Lisp 関連スレが増えてる.
>>538 いいか,若いの.問題の定義がよくわからんが,考え方をおしえてやろう.
お前さんは
(欲しい関数 リスト1 リスト2) => (/ リスト1の最大値 リスト2 の最小値)
としたいわけだ?ならそう書けばよい.
(defun 欲しい関数 (リスト1 リスト2)
(/ リスト1の最大値 リスト2の最小値))
一度に考えるな.すぐにわからんものは関数にしてしまえ.
(defun 欲しい関数 (リスト1 リスト2)
(flet ((リスト1の最大値 ()
...)
(リスト2の最小値 ()
...))
(/ (リスト1の最大値) (リスト2の最小値))))
さて,こうすると,除算の問題はもう解けた.あとは
リスト1の最大値, リスト2の最小値という小さな問題を解くだけだ.
さて,日本語だと通らない処理系もあるから,↓のようにしよう.
(defun answer (list1 list2)
(flet ((max-of-list1 ()
...) ;; list1 の最大値を求める
(min-of-list2 ()
...)) ;; list2 の最大値を求める
(/ (max-of-list1) (min-of-list2))))
なに?授業を聞いてないしやる気もないから最大値も最小値も求められない?
そうだね, (apply #'max list1) や (apply #'min list2) でいいんじゃないか?