平衡三進表記

Tiki の「天秤を 3 回だけ使って 12 枚のコインの中から重さの異なる 1 枚を見つける方法」数学クイズからたどって、STUDIO KAMADA さんの「天秤を n 回だけ使って 3n-3 / 2 枚のコインの中から重さの異なる 1 枚を見つける方法」という一般解経由で、クヌス先生お気に入りの平衡三進表記(balanced ternary notation)というのを知って、それとからめて SequenceableCollection >> #asDigitsToPower:do: と #polynomialEval: というのを見つけました。

そこで、-(3n - 1) / 2 から (3n - 1) / 2 までの trit 配列をジェネレートするスクリプト

n
n _ 2. World findATranscript: nil. (-1 to: 1) asDigitsToPower: n do: [: each | Transcript cr; show: (each reverse polynomialEval: 3); space; show: '->'; space; show: each]
=> -4 -> #(-1 -1)
   -3 -> #(-1  0)
   -2 -> #(-1  1)
   -1 -> #( 0 -1)
    0 -> #( 0  0)
    1 -> #( 0  1)
    2 -> #( 1 -1)
    3 -> #( 1  0)
    4 -> #( 1  1)