このリストはバランスが取れますか?

負でない整数のリストがバランスされているかどうかをチェックするには、ボード上にそれぞれのウェイトを置いて、ピボット上のボードのバランスをとって、
relative
ピボットの左右のウェイトは同じです。相対的な重さは、重りにピボットへの距離を乗じることによって与えられます(レバーの法則< a>)。wikipedia lever
(Source: wikipedia)

このイメージは、 [100、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、
17 ピボットの左右両側が合計で 7
3 * 2 + 1 * 1 code>)、したがってリスト
[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で。

仕事

合理的な形式で非負の整数のリストが与えられていれば、リストをバランスし、それ以外の場合は
falsy の値なら truthy を出力します。

入力リストに少なくとも2つの要素が含まれ、少なくとも1つの要素が非ゼロであると仮定できます。

This is a
challenge, so the answer with the fewest amount of bytes in each
language wins.

トゥルーティテストケース

[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]

このチャレンジ中に見つかった多くの関連する課題は、サンドボックスでした。

バランスの取れた数字ですか?
シーケンスの平衡インデックス単語のバランスをとる私はヒントになるでしょうか
a href =
“https://codegolf.stackexchange.com/questions/132512/where-does-the-pivot-belong”>ピボットはどこに属していますか?

ベストアンサー

Pyth、 12 10バイト

!%ys*VQUQs

Try it online

Mr. XcoderとErik the Outgolferのおかげで2バイトを節約できました。

説明

!%ys*VQUQs
    *VQUQ    Multiply each input by its index.
  ys         Take twice the sum (to handle half-integer positions).
!%       sQ  Check if that's a multiple of the total weight.

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です