coinsNumbers n i = (elems i 0 rm, elems i 2 rm) where elems i leg = findIndices ((== leg) . (!! i)) rm = rightMarkers n
*Coins> coinsNumbers 3 0 ([0,1,2,9],[6,7,8,11]) *Coins> coinsNumbers 3 1 ([6,7,8,9],[3,4,5,11]) *Coins> coinsNumbers 3 2 ([0,3,6,11],[2,5,8,10])
*Coins> rightMarkers 3 [[0,1,0],[0,1,1],[0,1,2],[1,2,0],[1,2,1],[1,2,2],[2,0,0],[2,0,1],[2,0,2],[0,0,1],[1,1,2],[2,2,0]]
no subject
Date: 2009-10-24 05:58 am (UTC)возвращающий номера монет, которые нужно класть на чашки весов при i-ом взвешивании
а затем, записав результаты взвешиваний в троичной системе, искать номер фальшивой монетки как индекс соответствующего правого маркера в списке
(или левого, превратив нули в двойки и наоборот в случае неудачного первого поиска). Сейчас пост поправлю.