完璧な5分の1に近い


10

1-TETから始めて、完全な5分の1(ちょうど比率3/2)のより良い近似を持つ等しい気質を与えます。(OEISシーケンスA060528

OEISからコピーされたシーケンスの正式な説明:

最も近い音階のステップが2つの楽音のトーンの比率にますます近づく近似の平均律(オクターブの等分割)のリスト:完全な4th、4/3、およびその補数は完全な5th、3/2。

対称性により、完全な4分の1は問題ではないことに注意してください。

3がシーケンス内にあることを知っているとしましょう。3-TETの頻度は次のとおりです。

2^0, 2^⅓, 2^⅔

どこに2^⅔最も近い対数の近似が3/2

シーケンスは4ですか?4-TETの頻度は次のとおりです。

2^0, 2^¼, 2^½, 2^¾

どこ2^½の最も近い近似値です3/2。これはに勝るもの2^⅔ではないので、4はシーケンスに含まれていません。

同様の方法で、5がシーケンス内にあることなどを確認します。

n入力として整数を指定する場合、出力は順序の最初のN個の数値でなければなりません。たとえば、の場合n = 7、出力は次のようになります。

1 2 3 5 7 12 29

xnorによるシーケンスの説明

無理数定数のlog2(3)1.5849625007211563有理分数の配列によって近似することができます。

21,32,53,85,117,1912,4629,

分数は、絶対距離で新しい最も近いものである場合、シーケンスに含まれます|pqlog2(3) |、つまり、分母が小さいか等しい他のどの分数よりも近い。

あなたの目標は、最初のn分母を順番に出力することです。これらはシーケンスA060528)です。分子(必須ではありません)は、A254351で指定されます

ルール:

  1. シーケンスA060528を直接インポートしないでください。
  2. 番号が区別できる限り、形式は重要ではありません。上記の例では、出力は次のようになります。

    [1,2,3,5,7,12,29]

  3. これはコードゴルフなので、バイト単位の最も短いコードが優先されます。


5
こんにちは、Code Golf SEへようこそ!すべての課題を自己完結型にする必要があるため、ここでのシーケンスの説明は非常に役立ちます。
AdmBorkBork

5
OEISの説明に戸惑っています。完璧な4分の1(比率4/3)についても言及していますが、課題は完璧な5分の3(比率3/2)です。シーケンス値が有理近似の分母であるという説明も必要だと思います。
XNOR

5
挑戦は好きですが、説明に追加されたものはまだ混乱しており、音楽についてはあまり知りません。たとえば、1-TETや4-TETが何なのかわからないし、Googleにも何も表示されないようです。このシーケンスをどのように説明するかについての説明を書いてみましょう。
XNOR

3
@DannyuNDosああそうです、12トーンの平均律です。それは私のお気に入りの楽器です
ジョー・キング

2
@DannyuNDosありがとうございます。したがって、比較は1/2とlog2(1.5)の間で行われ、2 ^(1/2)と1.5の間では行われません。テキストでそれをより明確にする必要があります
Luis Mendo

回答:


5

05AB1E19 18バイト

µ¯ßNLN/3.²<αßDˆ›D–

オンラインでお試しください!

µ                      # repeat until counter == input
 ¯                     #  push the global array
  ß                    #  get the minimum (let's call it M)
   N                   #  1-based iteration count
    L                  #  range 1..N
     N/                #  divide each by N
       3.²             #  log2(3)
          <            #  -1
           α           #  absolute difference with each element of the range
            ß          #  get the minimum
             Dˆ        #  add a copy to the global array
               ›       #  is M strictly greater than this new minimum?
                D–     #  if true, print N
                       #  implicit: if true, add 1 to the counter

1
いい答えですが、whileループが1ベースのインデックスを持っているのはなぜかと思っているところです。:S
Kevin Cruijssen

4

Wolfram言語(Mathematica)62 60バイト

Denominator@NestList[Rationalize[r=Log2@3,Abs[#-r]]&,2,#-1]&

オンラインでお試しください!


精度はいくつですか?
Dannyu NDos

@DannyuNDosこの関数は正確な値を使用するため、計算は任意の精度で実行できます。
attinat

あなたは挑戦に勝ちます。
Dannyu NDos

5
@DannyuNDosなぜこの回答をすぐに受け入れるのですか?また、答えをまったく受け入れない方が間違いなくよいでしょう
。– attinat

他の言語が抱えている浮動小数点エラーに関して、スコアを割り当てる別の方法を紹介したいと思います。お待ちください。
Dannyu NDos


2

Python 2、92バイト

E=k=input()
n=0
while k:
 n+=1;e=abs((3.169925001442312*n-1)%2-1)/n
 if e<E:print n;E=e;k-=1

オンラインでお試しください!

3.1699250014423122ログ22 * numpy.log2(3)


1
これにより、665の後に2つの条件が追加さ..., 665, (1995), (4655), 8286, ... れます。オンラインでお試しください!
Οurous

@Οurousええ、それは、どんな言語にとっても、無限の精度を持たずに遅かれ早かれかなり避けられないことですが、Pythonが使用する32ビットの浮動小数点で早く出現したことには驚いています。チャレンジライターが回答が機能するために必要な範囲を明確にするのを待ちます。
xnor

2 * numpy.log2(3)完全にスペルアウトされた数字よりも、使用する文字数が少ないのではないでしょうか?(またはさらに良い方法numpy.log2(9)
JDL

このコードを必要とする@JDL:from numpy import*およびlog2(9)
ジョナサンアラン

ああ、それは私がpythonがRのように動作し、最初にpackage::functionロードせずに書くことができると仮定して得られるものpackageです!
JDL


2

MATL27 25バイト

1`@:@/Q3Zl-|X<hY<tdzG-}df

オンラインでお試しください!

説明

1       % Push 1. This initiallizes the vector of distances
  `     % Do...while
  @:    %   Range [1, 2, ..., k], where k is the iteration index, staring at 1
  @/    %   Divide by k, element-wise. Gives [1/k, 2/k, ..., 1]
  Q     %   Add 1, element-wise. Gives [(k+1/k, (k+2)/k, ..., 2]
  3Zl   %   Push log2(3)
  -|    %   Absolute difference, element-wise
  X<    %   Minimum
  h     %   Concatenate with vector of previous distances
  Y<    %   Cumulative minimum
  t     %   Duplicate
  dz    %   Consecutive differences, number of nonzeros. This tells how many
        %   times the cumulative minimum has decreased
  G-    %   Subtract input n. This is the loop condition. 0 means we are done
}       % Finally (execute on loop exit)
  d     %   Consecutive differences (of the vector of cumulative differences)
  f     %   Indices of nonzeros. This is the final result
        % End. A new iteration is executed if the top of the stack is nonzero
        % Implicit display

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.