非負整数のリストのバランスが取れているかどうかを確認するには、ボードにそれぞれのウェイトを置き、ピボットの左右の合計相対ウェイトが同じになるように、ピボットのボードのバランスをとることを想像できます。相対的な重量は、重量にピボットまでの距離を掛けることによって与えられます(レバーの法則を参照)。
(ソース:ウィキペディア)
この画像はリストに対応しています[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
。このリストのバランスが取れているの5
は、ピボットの距離が20 100
、距離が1およびであるため5*20 = 100 = 100*1
です。
例
3 1 5 7
#########
^
この場合にはピボットが直接下にあり5
、3
距離2を有し、1
かつ7
両側が左右のピボット和のアップするよう距離1を有する7
(3*2 + 1*1
左の及び7*1
右)、したがって、リストが[3, 1, 5, 7]
バランスされています。
ただし、ピボットはリスト要素の1つの下に配置する必要はありませんが、2つのリスト要素の間に配置することもできます。
6 3 1
#######
^
この場合、距離は次のようになり0.5, 1.5, 2.5, ...
ます。このリストもバランスが取れてい6*0.5 = 3 = 3*0.5 + 1*1.5
ます。
ピボットは、1つの数字の真下または2つの数字の真ん中にのみ配置できます。たとえば、2つの数字の3分の2には配置できません。
仕事
出力、任意の合理的なフォーマットの非負整数のリストを与えられたtruthy
値リストができた場合にバランスとfalsy
そうでない場合、値。
入力リストに少なくとも2つの要素が含まれ、少なくとも1つの要素が非ゼロであると想定できます。
これはコードとゴルフのチャレンジなので、各言語のバイト数が最も少ない答えが優先されます。
真実のテストケース
[1, 0]
[3, 1, 5, 7]
[6, 3, 1]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
[10, 4, 3, 0, 2, 0, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 7, 7, 7]
偽のテストケース
[1, 2]
[3, 6, 5, 1, 12]
[0, 0, 2, 0, 1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[6, 3, 2, 4, 0, 1, 2, 3]
[4, 0, 0, 2, 3, 5, 2, 0, 1, 2, 3, 0, 0, 1, 2, 4, 3, 1, 3, 0, 0, 2]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
この課題がサンドボックス化されている間に見つかった関連する課題の多く: バランスの取れた数ですか?、シーケンスの平衡指数、バランスがシーソー上の重みのセットは、言葉をバランシング、私は転倒のでしょうか?そして、ピボットはどこに属しますか?
You can assume that the input list contains at least two elements and that at least one element is non-zero.