タグ付けされた質問 「geometry」

この課題は、形状やその他の幾何学的構造を使用、操作、または作成することで解決することを目的としています。

4
巻数を計算する
巻数は、観察者が所定の閉じた経路を追従させておく必要があり、正味反時計回りの回転の整数です。時計回りの回転は、巻数に向かってマイナスにカウントされることに注意してください。パスは自己交差できます。 いくつかの例(Wikipediaから恥知らずに取られた)を以下に示します。 あなたの目標は、与えられたパスの曲がりくねった数を計算することです。 入力 観測者は原点に(0,0)いると想定されます。 入力は、任意の入力ソースからの点の有限シーケンス(整数のペアのような)であり、区分的な線形パスを記述します。必要に応じて、これを整数の1Dシーケンスにフラット化し、入力をスウィズルして、すべてのy座標/逆の前にすべてのx座標を取得することもできます。入力を複素数として取得することもできますa+b i。パスは自己交差する場合があり、長さゼロのセグメントを含む場合があります。最初の点はパスの開始点であり、正のx軸上のどこかにあると想定されます。 パスのどの部分も原点と交差しません。パスは常に閉じられます(つまり、最初のポイントと失われたポイントは同じです)。あなたのコードは最後のポイントを暗示しているか、それを含める必要があるかもしれません。 たとえば、好みに応じて、両方の入力が同じ正方形を指定します。 暗黙のエンドポイント 1,0 1,1 -1,1 -1,-1 1,-1 明示的なエンドポイント 1,0 1,1 -1,1 -1,-1 1,-1 1,0 出力 出力はワインディング番号の単一の整数です。これは、任意のソース(戻り値、標準出力、ファイルなど)に対するものです。 例 すべての例には、エンドポイントが明示的に定義されており、x、yのペアとして指定されています。ちなみに、暗黙的に定義されたエンドポイントを想定し、出力が同じであることを前提として、これらの例をコードに直接入力することもできます。 1.基本テスト 1,0 1,1 -1,1 -1,-1 1,-1 1,0 出力 1 2.反復ポイントテスト 1,0 1,0 1,1 1,1 -1,1 -1,1 -1,-1 -1,-1 1,-1 1,-1 1,0 出力 1 3.時計回りテスト …

3
スタックベースの言語をトークン化する
私は、に取り組んできた別のと呼ばれるスタックベースのゴルフの言語Stackgoat。この課題では、Stackgoat(または実際には一般的なスタックベースの言語)のTokenizerを作成します。 例 "PPCG"23+ ["PPCG", '23', '+'] 'a "bc" + ['"a"', '"bc"', '+'] 12 34+-"abc\"de'fg\\" ['12', '34', '+', '-', '"abc\"de'fg\\"'] "foo ['"foo"'] (empty input) [] ' "" ['" "', '""'] 仕様 処理する必要がある3つのタイプは次のとおりです。 ストリングス、何も内"" 数字、数字列 演算子、空白以外の任意の単一文字 空白は、文字列内にあるか、2つの数値を区切っていない限り、本質的に無視されます。 文字列/文字仕様: 文字列はで区切られ、が検出された"場合\、次の文字をエスケープする必要があります。 '文字はa で始まり、その後の'文字は文字列リテラルに変換されます。'a->"a" ' 常にその後に文字があります 終値を自動挿入する必要があります ルール: の形式evalは許可されません 入出力: 入力は、STDIN、関数パラメーター、または同等の言語を通じて取得できます。 出力は、配列または言語に最も近いものでなければなりません。
15 code-golf  parsing  code-golf  hexagonal-grid  code-golf  string  code-golf  string  code-golf  combinatorics  code-golf  ascii-art  code-golf  string  game  counting  code-golf  arithmetic  complex-numbers  code-golf  string  code-golf  decision-problem  hexagonal-grid  code-golf  string  sequence  code-golf  number  arithmetic  code-golf  ascii-art  code-golf  ascii-art  code-golf  string  arithmetic  code-golf  number  simulation  code-golf  number  arithmetic  code-golf  string  sequence  unicode  code-golf  string  ascii-art  balanced-string  code-golf  number  clock  code-golf  ascii-art  number  code-golf  math  number  sequence  code-golf  string  ascii-art  balanced-string  code-golf  math  string  popularity-contest  graphical-output  image-processing  code-golf  string  permutations  code-golf  string  code-golf  random  code-golf  string  cryptography  palindrome  code-golf  chess  code-golf  math  array-manipulation  topology  code-golf  math  sequence  code-golf  keyboard  classification  code-golf  string  sequence  code-golf  natural-language  code-golf  math  number  sequence  sorting  code-golf  sequence  combinatorics  grid  tic-tac-toe  code-golf  geometry  code-golf  number  restricted-source  new-years  expression-building 

2
三角形の球面過剰
三角形の球面過剰 ご存知のように、平面三角形の角度の合計は180度に等しくなります。 ただし、球面三角形の場合、角度の合計は常に180度より大きくなります。球面三角形の角度の合計と180度の差は球面過剰と呼ばれます。タスクは、与えられた頂点座標で三角形の球面過剰を計算することです。 いくつかの背景 球面三角形は、球の3つの大円で定義される球の一部です。 球面三角形の両側と角度は、角度測定の用語で測定されます。これは、各側面が球体と球体の中心にある頂点との平面角度の交点と見なすことができるためです。 3つの異なる大円はそれぞれ8つの三角形を定義しますが、 適切な三角形考慮します。角度と側面の測定値が満たされる三角形 地理座標系の観点から三角形の頂点を定義すると便利です。両端の経度λと緯度Φが与えられた場合、球の弧の長さを計算するには、次の式を使用できます。 、 どこ またはより明示的に: (ソース:https : //en.wikipedia.org/wiki/Haversine_formula) 球面三角形を解くために使用できる2つの基本式は次のとおりです。 余弦の法則: サインの法則: (ソース: https //en.wikipedia.org/wiki/Spherical_trigonometry#Cosine_rules_and_sine_rules) 3つの側面がある場合、コサインルールを使用して角度を簡単に計算できます。 最後に、三角形の球面過剰が定義されます。 三角形の球体過剰とその面積との関係について興味深いのは: 単位球では、三角形の過剰はその三角形の面積に等しくなります! タスク 三角形の頂点座標を指定して、三角形の球面過剰を角度で計算する関数またはプログラムを作成します。頂点座標は、地理座標系で提供されます。 各頂点はで渡す必要があります[latitude in degrees][N|S][longitude in degrees][E|W]。経度、EまたはW緯度が90の場合はスキップできます。 90N、90S、10N100E、30S20W一方で、適切な頂点記述されている80Nか55Sではありません。 テストケースでは、緯度と経度は常に整数です。 エラーが1度未満の回答は受け入れられます(以下の例のように)。したがって、結果は実数または整数の両方としてレンダリングできます。 例 入力 90N0E 0N0E 0N90E 出力 89.999989 入力 90N 0N0E 0N90E 出力 89.999989 入力 0N0E …

5
最寄りの時計の針を見つける
チャレンジ 真夜中を過ぎた秒数が与えられたら、可能な限り少ないバイトを使用して、時計の文字盤の任意の2つの針の間の最小の角度を出力します。 秒数は常に86400未満であると想定できます。角度は度またはラジアンで表すことができます。 リファレンスソリューションは次の場所にあります。 http //ideone.com/eVdgC0 テストケース(度単位の結果) 0 -> 0 60 -> 0.5 600 -> 5 3600 -> 0 5400 -> 45 6930 -> 84.75 50000 -> 63.333 明確化 時計には3つの針があります:時間、分、秒。 すべての針は連続的に動くため、時計の文字盤の目盛りの間には時針と分針があります。

8
積分三角形と積分中央値
各辺の長さが整数である三角形ABC(積分三角形)を考えます。ABCの中央値を、頂点から反対側の中点までの線分になるように定義します。次の図では、赤い線分が中央値を表しています。三角形には3つの中央値があることに注意してください。 してみましょうnはいくつかの正の整数です。各辺の長さがn以下の非縮退積分三角形には、少なくとも1つの積分中央値がありますか? チャレンジ 与えられた最大辺の長さnに対して少なくとも1つの積分中央値を持つ積分三角形の数を計算するプログラムを作成します。辺の長さの順序は重要ではありません。つまり、<6,6,5>は<5,6,6>と同じ三角形を表し、1回だけカウントする必要があります。<1,2,3>などの縮退三角形を除外します。 得点 私のマシンでプログラムが60秒で三角形の数を生成できる最大のnは、スコアです。最高スコアのプログラムが勝ちます。私のマシンはSony Vaio SVF14A16CLB、Intel Core i5、8GB RAMです。 例 ましょうT(Nは)入力にプログラムすることN。 T(1) = 0 T(6) = 1 T(20) = 27 T(22) = 34 T(1)= T(2)= T(3)= T(4)= T(5)= 0であることに注意してください。積分辺の組み合わせは積分中央値を生成しないためです。ただし、6に到達すると、三角形<5,5,6>の中央値の1つが4なので、T(6)= 1 であることがわかります。 また、T(22)はダブルカウントが問題になる最初の値であることに注意してください。三角形<16,18,22>には中央値13と17(および2sqrt(85))があります。 中央値の計算 三角形の中央値は、次の式で計算できます。 Current top score: Sp3000 - 7000 points - C

17
Code-Golf:円の中の格子点
次の図に問題を示します。 円の半径として整数を指定し、中心の円内(境界を含む)の格子点の数を計算する関数を作成します。 画像は次のとおりです。 f[1] = 5 (blue points) f[2] = 13 (blue + red points) チェック/デバッグの他の値: f[3] = 29 f[10] = 317 f[1000] = 3,141,549 f[2000] = 12,566,345 適切なパフォーマンスが必要です。f [1000]の場合、1分未満としましょう。 最短のコードが優先されます。通常のコードゴルフ規則が適用されます。 例としてf [1001]の計算とタイミングを投稿してください。

16
カスタムラベル付きの二面体グループD4コンポジション
二面体グループは、正方形の対称グループです。つまり、回転と反射を介して正方形をそれ自体に変換する動きです。8つの要素で構成されます:0、90、180、および270度の回転、水平、垂直、および2つの対角軸にわたる反射。D4D4D_4 画像はすべて、Larry Riddleによるこの素敵なページからのものです。 この課題は、これらの動きを構成することです。2つの動きが与えられると、それらを次々に実行するのと同じ動きを出力します。たとえば、移動7の後に移動4を行うことは、移動5を行うことと同じです。 移動を4に、次に移動7に順序を切り替えると、代わりに移動6が生成されることに注意してください。 結果は以下の表のとおりです。これは、グループ Cayleyテーブルです。だから、例えば、入力出力生成しなければならない。D4D4D_47,47,47, 4555 1234567812345678123456782341786534126587412387565867134267583124758624138675423112345678123456781234567823418756341265874123786557681324685731427685421385762431\begin{array}{*{20}{c}} {} & {\begin{array}{*{20}{c}} 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ \end{array} } \\ {\begin{array}{*{20}{c}} 1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\ 7 \\ 8 \\ \end{array} } …

10
境界ループで囲まれた領域
周囲のループが90度の回転シーケンスとして与えられたユニットセルの領域の面積を見つけます。 たとえば、3セルの領域を取ります XX X 誰の境界ループを描くか L<S<L v ^ S R>L v ^ L>L 各ターンには、左(L)、直線(S)、ま​​たは右(R)のマークが付いています。Rから始まって、ターンはRLLSLSLLです。したがって、inputが与えられたRLLSLSLL場合、エリアに対して3を出力する必要があります。 入力シーケンスは、左側の単一の領域を囲むループをトレースすることが保証されています。 パスは始点で戻り、最初の方向を向いてループを形成します。 ループはそれ自体と交差したり接触したりしません。 ループは、領域を反時計回りに回ります。 I / O 入力は、文字のリストまたは文字列LSRとして、または-1, 0, 1左、ストレート、右の数字として受け取ることができます。出力は正の整数です。フロートは大丈夫です。 テストケース 入力は両方の形式で与えられ、その後にそれぞれの出力が続きます。 RLLSLSLL LLLL SLLSLL LSRRSLLSSLSSLSSL SSSSSLSSSSSLSSSSSLSSSSSL [1, -1, -1, 0, -1, 0, -1, -1] [-1, -1, -1, -1] [0, -1, -1, 0, -1, -1] [-1, …

6
あなたは私のウィーバーになりますか?
私は最近「The Weaver」をプレイしてきましたが、これはコードゴルフにとって興味深い挑戦になると思います。 前提: ウィーバーは、2つの方向から90度離れた多数のリボンが与えられるゲームであり、目標は、特定の交差点でそれらを交換して、所望の出力を達成することです。 このように:これはスワップです:これはそうではありません: 入力: 3つの配列: 上部のリボン(左から右) 左のリボン(上から下) 交換する交差点の座標 出力: 2つの配列: 下のリボン(左から右) 右リボン(上から下) 例: 最初の例として上記の画像を使用します。 入力: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)] 何が起こるのですか: r y b r y b r r r r•y y y y r r b y y y y …

12
サークル交差点
説明: 所与x及びyそれらと一緒に二つの円の位置radii、出力2円の交点の領域。 入力: 次の入力が与えられます。 array 1 = x and y positions of circle a array 2 = x and y positions of circle b radius = radii of the two congruent circles 入力方式 : ([12 , 20] , [20 , 18] , 12) ---> two array and number ([12 , …

8
頂点接続の合計
正の整数Nがあるとしましょう。最初に、N個の頂点を持ち、隣接する頂点間の距離が1である通常のポリゴンを作成します。次に、すべての頂点から他のすべての頂点まで線を接続します。最後に、合計されたすべての行の長さを計算します。 例 入力N = 6を指定すると、すべての頂点を他の頂点と接続する線で六角形を構築します。 ご覧のとおり、合計6本の境界線(長さ= 1)、2倍の境界線長さ(長さ= 2)、およびピタゴラスの定理を使用して、 、 行の長さを合計すると、(6 * 1)+(3 * 2)+(6 * 1.732)= 22.392になります。 追加情報 2つ以下の頂点を持つ構造はポリゴンと見なされNaNないため、1つの頂点は他の頂点に接続できないため、N = 1の場合は0(または1つの頂点間の距離はあまり意味がないため)を出力し、 N =2。2つの頂点が1本の線で接続されているため。 入力 合理的な形式の整数N。 出力 すべての行の長さを合計すると、関数の戻り値として、またはに直接出力され、小数点以下3桁まで正確stdoutです。 ルール 標準的な抜け穴は禁止されています。 これはcode-golfであるため、どの言語でもバイト単位の最短コードが優先されます。 幸運を! テストケース (Input) -> (Output) 1 -> 0 or NaN 2 -> 1 3 -> 3 5 -> 13.091 6 …

14
[N]とM反復の再帰的に連結された累積和
2つの正の整数NをM取得し[N]、M反復での連結累積和を作成します。最後の反復の結果を出力します。 連結累積合計の定義: 数字Nから始めてシーケンスを定義するX = [N] 追加Xの累積和X 手順を2 M回繰り返します。 ベクトルの累積合計X = [x1, x2, x3, x4]は次のとおり[x1, x1+x2, x1+x2+x3, x1+x2+x3+x4]です。 例N = 1とM = 4: P =累積和関数。 M = 0: [1] M = 1: [1, 1] - X = [1, P(1)] = [[1], [1]] M = 2: [1, 1, 1, 2] - X …
14 code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

2
パスセグメントのように。初めて触れた
2つ以上の2Dデカルトポイントの順序付きリストが与えられた場合、パスがそれ自体に触れるか自己交差する場合、真の値を出力します。それ以外の場合、それ自体に触れたり自己交差したりしない場合、偽の値を出力します。 リスト内の連続したポイントは別個のものであると想定することができます。 例: (0,0), (1,0) -> falsey (0,0), (1,0), (0,0) -> truthy (0,0), (1,0), (1,1), (0,0) -> truthy (0,0), (2,0), (1,1), (1,-1) -> truthy (0,0), (10,0), (0,1), (10,1), (0,2), (10,2) -> falsey ここで指定したすべての座標は整数です。{整数、小数、有理数、浮動小数点、...}のうち、好きなものの座標入力をサポートできます。ただし、実装の計算では、与えられた入力に対して正しい答えを与える必要があります。

3
ASCII直方体を描く
3以上の整数が2以上の場合、直交(キャビネット)投影でASCIIキューブを作成します。3つの整数は、角を含む高さ、幅、深さ(可視文字で測定)を表します。角は「o」または「+」で、自由に選択できます。 w:10、h:5、d:4したがって: o--------o / /| / / | o--------o | | | o | | / | |/ o--------o さて、これを少し難しくするために、すべての面をソリッド、透明、または欠落させることができます。このように面を注文します: o--------o / /| / 2 / | o--------o 3| | | o | 1 | / | |/ o--------o --- |2| ------- |5|1|3| ------- |4| --- |6| --- トークンのリスト、S、T、またはMを指定します。したがって、元の例は次のようになります。 w …

5
樹木的に満足する点集合を特定する
arborally満足点セットは、対角としてセット内の2点を用いて形成することができる任意の軸に整列長方形のために、その矩形が少なくとも一つの他の点を含む、または接触、ように点の2次元集合です。ウィキペディアの同等の定義を次に示します。 次のプロパティが成り立つ場合、ポイントセットはアーボリーに満たされていると言われます:両方が同じ水平線または垂直線上にないポイントのペアについて、最初の2つのポイント(内部または境界のいずれか)。 次の図は、長方形がどのように形成されるかを示しています。この長方形は少なくとも1つ以上の点を含む必要があるため、この点集合は樹木学的に満たされていません。 ASCIIアートでは、このポイントセットは次のように表すことができます。 ...... ....O. ...... .O.... ...... 少し変更することで、これを十分に満足させることができます。 ...... ....O. ...... .O..O. ...... 上記では、すべての長方形(そのうちの1つだけ)には少なくとも3つのポイントが含まれていることがわかります。 樹木学的に満たされるより複雑な点集合の別の例を次に示します。 2点にまたがって描画できる長方形の場合、その長方形には少なくとも1つの他の点が含まれます。 チャレンジ (私が表す点の長方形のグリッド所与O)および空のスペース(私はと表す.)、出力truthyのそれがarborally満たされる場合、値、またはfalseyのそうでない場合、値。これはコードゴルフです。 追加のルール: 文字Oを選択して、.印刷可能な他のASCII文字のペアと交換することができます。プログラムが使用する文字マッピングを指定するだけです。 グリッドは常に長方形になります。末尾の改行を使用できます。 その他の例 満足している: .OOO. OO... .O.OO .O..O ....O ..O.. OOOO. ...O. .O.O. ...OO O.O. ..O. OOOO .O.O OO.. ... ... ... ... ..O ... O..... O.O..O .....O OOO.OO …

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