タグ付けされた質問 「knot-theory」

1
「ノット」または「ノット」?
もつれた文字列のASCIIアート表現を処理し、それを単純なループに解くことができるかどうかを決定するプログラムを作成します。もつれは、文字-を使用し|て表され、水平および垂直セグメント+を表し、角を表します。文字列がそれ自体を通過する場所は、次のように表されます。 | | ------- ---|--- | | (Horizontal segment on top) (Vertical segment on top) ストリングの両端は互いに接続されています。ゆるい終わりはありません。 プログラムが文字列を単純なループに解くことができないと判断した場合、wordを出力する必要がありますKNOT。それ以外の場合は、wordを出力する必要がありますNOT。 これはコードとゴルフの挑戦なので、最短の有効な回答(ソースコードのバイト数で測定)が勝ちます。 制限 ASCII入力は、最大25行の80文字で構成されます。すべての行に同じ長さのスペースが埋め込まれていると想定できます。 例 入力: +-------+ +-------+ | | | | | +---|----+ +-------+ | | | | | | +-------|------------|---+ | | | | +---+ +---+ 出力: KNOT 入力: +----------+ | | …

2
節のある状況
結び目のダウカー表記法とその交差記号を与え、そのブラケット多項式を計算します。 より多くの技術的な定義がありますが、この課題に対しては、結び目を、文字列の両端を結び付けて物理的に作られたものと考えるだけで十分です。ノットは3次元で存在するため、紙にノットダイアグラムを描画するときは、ノットダイアグラムを使用します。2次元投影では、交差が正確に2本の線で構成されます。 ここで(b)と(c)は同じ結び目の異なる図です。 紙に結び目図をどのように表現しますか?私たちのほとんどはレンブラントではないので、次のように機能するDowker表記法に依存しています。 結び目の任意の開始点を選択します。結び目に沿って任意の方向に移動し、遭遇した交差点に番号を付けます。1から始まり、次の変更を加えます。偶数で、現在交差点を超えている場合は、その偶数を無効にします。最後に、1、3、5などに対応する偶数を選択します。 例を試してみましょう: この結び目で、開始点として「1」を選択し、右上に移動しました。ロープの別の部分の上または下を通るたびに、交差点に次の自然数を割り当てます。たとえば[3,-12]図のように、交差を越える鎖に対応する偶数を無効にします。したがって、この図はで表され[[1,6],[2,5],[3,-12],[-4,9],[7,8],[-10,11]]ます。1、3、5、7などの仲間をリストすると、が得られ[6,-12,2,8,-4,-10]ます。 ここで注意すべきことがいくつかあります。まず、Dowker表記は、任意の開始点と方向を選択できるため、特定のノットに対して一意ではありません。しかし、表記法を考えると、結び目の構造を完全に決定することができます(技術的には、その主要な結び目コンポーネントの反映まで)。すべてのダウカー表記法がノットを形成できるわけではありませんが、この問題では、入力が実際のノットを表すと仮定できます。 結び目の反射のあいまいさを回避し、課題を解決しやすくするために、交差記号のリストも入力として提供されます。 正の交差では、下の線は上の線の視点から左に進みます。負の交差点では、右に進みます。(つまり、両方の逆転結び目の周りに行くの向きを反転させることに注意上のラインと下のラインは)交差記号を変更しません。この例では、交差記号は[-1,-1,-1,1,-1,1]です。それらは、ダウカー記法と同じ順序で、つまり1、3、5、7などの番号が付けられた交差点で与えられます。 AAA DDD⟨ D ⟩⟨D⟩\langle D\rangle 交差のない唯一のループの多項式は1です。 構成される図がある場合DDDDDDDDD(− A2− A− 2)(−A2−A−2)(-A^2-A^{-2}) DDD 上記の画像では、最初の図のアウトラインの交差はの形式であり、2番目の図(正の平滑化)または3番目の図(負の平滑化)のように変換できます。 AAAA− 1A−1A^{-1} まだ混乱していますか?のブラケット多項式を見つけようとする例を見てみましょう(注:これは相互にリンクされた2つのノットです。この種の図は、入力が単一のノットのみであるため、このチャレンジの潜在的な入力ではありませんが、アルゴリズムの中間結果。) 最初にルール3を使用します 新しいノットの両方で再びルール3を使用します これらの4つの新しいノットを最初の方程式に代入します。 これら4にルール1と2を適用すると、 だから、これは私たちに教えて 結び目理論の簡単な紹介を完了しました! 入力 2つのリスト: ダッカー記法、例えば[6,-12,2,8,-4,-10]。交差点の番号は1から開始する必要があります。対応する奇数[1,3,5,7,...]は暗黙的であり、入力として提供しないでください。 ダウカー記法に対応する交差点の標識(1/ -1または0/ 1またはfalse/ trueまたは'+'/ を好む場合'-')[-1,-1,-1,1,-1,1]。 リストのペアの代わりに、ペアのリストを持つことができます。例えば [[6,-1],[-12,-1],... 出力 A− 2+ 5 + A − A3A−2+5+A−A3A^{-2}+5+A-A^3[[1,-2],[5,0],[1,1],[-1,3]] あるいは、指数対応する係数の奇数長リストを出力します− …

1
ガスケットウィービング-シェルピエスキーノットを描く
N> = 2の整数を指定すると、N次のシェルピスキーノットを示す画像が生成されます。 たとえば、2、3、4、5次のノットがあります。 画像をクリックしてフルサイズで表示します(次数が高いほど画像が大きくなります)。 仕様 次数Nのシェルピエスキーノットは、次数Nのシェルピエスキー三角形の頂点をガイドポイントとして使用して描画されます。次数Nのシェルピエスキー三角形は、より大きな三角形に配置された次数N-1の3つのシェルピエスキー三角形です。次数0のシェルピスキー三角形は正三角形です。 最小のコンポーネント三角形の辺の長さは64であり、ノエルの基になるSierpiński三角形は、 外側の三角形の中心は、画像の中心に配置されます。これは、上部と下部に等しい空白を与えません。 出力は、辺の長さの正方形の画像です。ここではceiling(x)、x以上の最小の整数です。これは、三角形の中心が画像の中心にあるときに、基になるSierpiński三角形の頂点が画像内に含まれるのに十分な大きさです。 単一の曲線は、厳密に交互に上下に通過する必要があります。ソリューションは、アンダーザオーバー、オーバーザアンダー、オーバーザアンダーのいずれかを選択できます。 サンプル画像は、黒い前景と白い背景を示しています。簡単に区別できる2つの色を選択できます。アンチエイリアスは許可されていますが、必須ではありません。 2つの円弧が交わる場所、または曲線がそれ自体の上または下を通る場所に隙間があってはなりません。 出力は、任意のラスター形式の画像ファイル、または正しいデフォルトの表示サイズを含む任意のベクター形式の画像ファイルになります。画面に直接表示する場合は、画面よりも大きいときにスクロールして画像全体を表示できる形式にする必要があります。 アークの中心、半径、厚さの決定 結び目は、接線が平行な点で交わる一連の円弧として構築され、シームレスな結合を提供します。これらの円弧は、環状の扇形(太さのある円弧)として表示されます。 これらの円弧の中心は、最小の逆さまの三角形の頂点です。そのような各頂点は、正確に1つの円弧の中心です。 各円弧の半径は 例外は、3つの最も外側の三角形(大きな三角形の角にある)の円弧の中心が2つの隣接する内側の頂点の中点であり、したがって半径が 各弧は、合計の厚さ(内側半径と外側半径の差)で表され、それぞれの黒い境界線の厚さは、曲線だけでなく、これらの境界線を持つ必要があります。 測定の単位 すべての距離はピクセル単位です(1は2つの隣接するピクセル間の水平または垂直距離です)。 3の平方根は、7つの有効数字に対して正確でなければなりません。つまり、計算は、ROOT3を使用するのと同等である必要があります。1.7320505 <= ROOT3 < 1.7320515 得点 バイト単位の最短コードが優先されます。 不思議な人には、N = 0とN = 1は含まれません。これらは円と三葉に対応しているため、N> = 2に適用されるパターンとは完全には一致しません。この課題へのほとんどのアプローチでは、0と1に特別なケースコードを追加する必要があると予想されるため、それらを省略することにしました。

1
むしろ厄介な難問
ノットの構造に基づいてノットの2次元図を描くプログラムを作成します。結び目はまさにそのように聞こえます:縛られたロープのループ。数学では、結び目図は、ロープがそれ自体の上または下を横切って結び目を形成する場所を示します。いくつかのノットダイアグラムの例を以下に示します。 ロープがそれ自体を横切るラインにブレークがあります。 入力:結び目を記述する入力は整数の配列です。ロープがそれ自体をn回横切るノットは、それぞれが範囲[0、n-1]の値を持つn個の整数の配列として表すことができます。この配列をKと呼びましょう。 ノットを記述する配列を取得するには、セグメント0〜n-1のそれぞれに番号を付けます。セグメント0は、セグメント1につながり、セグメント2につながり、セグメント3につながり、セグメントn-1がループバックしてセグメント0につながるまで続きます。ロープの別のセグメントが交差するとセグメントは終了します(図の線の切れ目で表されます)。最も単純な結び目、トレフォイル結び目を取りましょう。セグメントに番号を付けた後、セグメント0はセグメント2が交差すると終了します。セグメント1は、セグメント0が交差すると終了します。セグメント1は、セグメント1が横切ると終了します。したがって、結び目を記述する配列は[2、0、1]です。一般に、セグメントxは、セグメントx-1 mod nが中断したところから始まり、セグメントK [x]が交差するところで終わります。 次の図は、ラベル付きのセグメントと、結び目を説明する対応する配列を持つ結び目図を示しています。 上の3つの図は真の結び目であり、下の3つの図はそれ自体を横切るが実際には結び付けられていない(ただし対応するコードがまだある)ロープのループです。 あなたの仕事は、上記のように、結び目(または実際には結び目ではないロープのループ)を記述する整数Kの配列(実際には結び付けられていないロープのループ)を受け取る関数を作成することです例。可能な場合は、コードの未バージョンまたは説明を提供し、コードのサンプル出力も提供します。多くの場合、同じノットは複数の異なる方法で表すことができますが、関数の出力が満たすノットダイアグラムの入力が可能な表現の1つである場合、ソリューションは有効です。 これはコードゴルフなので、バイト単位の最短コードが優先されます。ロープを表す線の太さは1ピクセルにすることができますが、アンダークロッシングとオーバークロッシングは明確に区別できる必要があります(ロープの切れ目のサイズは、ロープの太さよりも両側で少なくとも1ピクセル大きくする必要があります) 。 組み込みの結び目理論の機能に依存する回答に賛成しますが、最終的に選択されるものは、組み込みの結び目理論の機能に依存することはできません。 私の表記法について知っていることすべて:結び目や結び目に対応していないように見える値のシーケンスがあると信じています。たとえば、シーケンス[2、3、4、0、1]は描画できないようです。 それとは別に、交差点を取得し、その交差点から始めて、ロープの経路を一方向にたどり、出会うすべてのラベルのない交差点に連続して大きな整数値をラベル付けするとします。交番の場合、表記法をこのようなラベルに変換する簡単なアルゴリズムがあり、交番の場合、このラベルをガウスコードに変換するのは簡単です。 template<size_t n> array<int, 2*n> LabelAlternatingKnot(array<int, n> end_at) { array<int, n> end_of; for(int i=0;i<n;++i) end_of[end_at[i]] = i; array<int, 2*n> p; for(int& i : p) i = -1; int unique = 0; for(int i=0;i<n;i++) { if(p[2*i] < …

13
フィボナッチ製品
正のフィボナッチ数の一意の合計として、0より大きい数を分解できます。この質問では、可能な最大の正のフィボナッチ数を繰り返し減算することでこれを行います。例えば: 1 = 1 2 = 2 3 = 3 4 = 3 + 1 12 = 8 + 3 + 1 13 = 13 100 = 89 + 8 + 3 ここで、フィボナッチ積を上記と同じリストと呼びますが、加算は乗算に置き換えられます。たとえば、f(100) = 89 * 8 * 3 = 2136。 正の整数nを指定して、その数のフィボナッチ積を返すプログラムまたは関数を作成します。 テストケース: 1: 1 2: 2 3: 3 4: …
13 code-golf  math  sequence  fibonacci  code-golf  word  code-golf  cipher  code-golf  string  math  subsequence  code-golf  regular-expression  code-golf  brainfuck  assembly  machine-code  x86-family  code-golf  math  factorial  code-golf  math  geometry  code-golf  math  arithmetic  array-manipulation  math  number  optimization  stack  metagolf  code-golf  tips  assembly  code-golf  tips  lisp  code-golf  number-theory  path-finding  code-golf  number  sequence  generation  code-golf  math  geometry  code-golf  grid  permutations  code-golf  code-golf  graphical-output  geometry  fractal  knot-theory  code-golf  math  arithmetic  code-golf  interpreter  balanced-string  stack  brain-flak  code-golf  math  set-theory  code-golf  math  array-manipulation  code-golf  code-golf  string  natural-language  code-golf  code-golf  math  linear-algebra  matrix  code-golf  string  encode 

1
n交差のプライムノットの数
プライム結び目は次のとおりです。 2つの非自明なノットのノット和として記述できない非自明なノット。 説明結び目和:隣接する2ノットを入れて、 ...次に、それらの間に2本の線を引き、両側を同じストランドにし、先ほど描いた線の間の部分を削除します。この2つのノットの構成により、新しい非プライムノットが形成されます。 以下は、交差が7以下のすべてのプライムノットです(Unknotはプライムではありません)。 与えられた交差数に対して、一意のプライムノットの数を出力する必要があります。 1 0 2 0 3 1 4 1 5 2 6 3 7 7 8 21 9 49 10 165 11 552 12 2176 13 9988 14 46972 15 253293 16 1388705 私は値がより大きい入力で既知であるとは思いません16が、そのような入力が与えられた場合、コードは十分な時間を与えられた正しい結果を見つける必要があります。 OEIS-A002863
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.