Significanceという雑誌には毎号Probability puzzleという確率についてのパズルが出題されます。October 2021号では"A certain bet"と題された裁定取引についての問題が出されました。
解答は比較的簡単に見つかりますが、これが唯一の解であるかどうかという問いは困難です。例えば、賭け金として用意されている99ポンドの一部だけを賭けて利益を出すことが可能かどうか、という疑問があります。
以下のSchemeプログラムが返す結果から、一部を賭けることを許しても解答が唯一であることが分かります。Guileで実行できます。
(use-modules (srfi srfi-1))
(define odds '((13/7 9/5 17/10)
(2/1 7/3 9/4)
(15/8 19/10 33/17)))
(define (bet i j k x y z)
(let* ((a (list-ref (car odds) i))
(b (list-ref (cadr odds) j))
(c (list-ref (caddr odds) k))
(den-a (denominator a))
(den-b (denominator b))
(den-c (denominator c)))
(list (+ (* x den-a) (* y den-b) (* z den-c))
(+ (* x den-a) (* x (numerator a)))
(+ (* y den-b) (* y (numerator b)))
(+ (* z den-c) (* z (numerator c))))))
;; https://stackoverflow.com/a/20591545
(define (cartesian-product . lists)
(fold-right (lambda (xs ys)
(append-map (lambda (x)
(map (lambda (y)
(cons x y))
ys))
xs))
'(())
lists))
(filter (lambda (v)
(let ((b (apply bet v)))
(and (<= (car b) 99)
(< (car b) (cadr b))
(< (car b) (caddr b))
(< (car b) (cadddr b))
b)))
(let ((indice (iota 3))
(weight (map 1+ (iota 99))))
(cartesian-product indice indice indice weight weight weight)))