プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

12
0〜100の偶数を出力する最小のPythonスクリプト
私は楽しみのために自分自身で設定した問題に取り組んでいます。それは0から100までの偶数を出力するPythonスクリプトを作成することです。挑戦はスクリプトをできるだけ小さくすることです。これは私がこれまでに持っているものです: for x in range(0, 101): if (x % 2 == 0): print x 現在、60バイトです。誰でもそれを小さくする方法を考えることができますか? 編集:print(*range(2,101,2),sep='\n')30バイトです。もっと小さい?
11 code-golf  tips  python 

11
四元数平方根
バックグラウンド 四元数は、複素数を拡張する数値システムです。クォータニオンの形式は次のとおりです a+bi+cj+dka+bi+cj+dk a + bi + cj + dk ここa,b,c,da,b,c,d a,b,c,d は実数で、i,j,ki,j,k i,j,k は3つの基本的な四元数単位です。ユニットには次のプロパティがあります。 i2=j2=k2=−1i2=j2=k2=−1 i^2 = j^2 = k^2 = -1 ij=k,jk=i,ki=jij=k,jk=i,ki=j ij = k, jk = i, ki = j ji=−k,kj=−i,ik=−jji=−k,kj=−i,ik=−j ji = -k, kj = -i, ik = -j 四元数の乗算は可換ではないことに注意してください。 仕事 非実数のクォータニオンが与えられた場合、その平方根の少なくとも1つを計算します。 どうやって? このMath.SEの回答によれば、非実数の四元数は次の形式で表現できます。 q=a+bu⃗ q=a+bu→ …

9
ホワイトエレファントエクスチェンジ
7月のクリスマスです。だから、仮想の白い象のギフト交換よりも良いお祝いの方法です。 このキングオブザヒルチャレンジでは、ホワイトエレファントエクスチェンジシミュレーションで遊ぶボットを作成し、可能な限り最高のプレゼントを獲得する必要があります。 ゲームのルール ゲームは多くのラウンドでプレイされ、各ラウンドは可変数のターンで構成されます。 ラウンド設定:ゲーム内のプレイヤーと同じ数のプレゼントがあり、それぞれが範囲[0 ... 1)でランダムに均一に評価されます。この値は、プレゼントが「開かれる」まで不明です。プレイヤーはランダムな順番でキューに入れられます。最初のプレーヤーがキューの先頭からポップされます。 プレイヤーのターンのとき、彼らはプレゼントを開くか、他のプレイヤーのプレゼントを盗んで、プレゼントが盗まれたプレイヤーにターンを渡すことができます。 各プレゼントは最大3回盗まれます。 盗まれたプレイヤーから盗むことはできません。 各プレーヤーは、一度に1つのプレゼンスしか持てません。 プレゼントが開かれた後、プレイはキューの先頭からポップされた次のプレイヤーに進みます。これは、まだ順番が来ていない次の順番​​のプレイヤーになります。 ラウンド終了:すべてのプレゼントが開かれると、ラウンドが終了し、各プレイヤーが保持しているプレゼントの値がそのプレイヤーのスコアに加算されます。新しいラウンドが始まり、各プレイヤーは現在何も持っておらず、プレイヤーの順番はシャッフルされます。 ゲームの終了:少なくとも1人のプレイヤーが100 500ポイントを獲得すると、ゲームは終了し、プレゼントの合計値が最も高いプレイヤーに勝利が与えられます。 コーディング すべての提出物はPython 3.7と互換性がある必要があります。から直接継承するクラスを作成する必要がありますWhiteElephantBot。例えば: class FooBot(WhiteElephantBot): # Your implementation here ボットクラスで__init__メソッド(引数を1つ取るname)を提供できます。このメソッドはを呼び出す必要がありますsuper().__init__(name)。クラスにはtake_turn、この順序で次の引数を受け取るメソッドが必要です。 players:まだプレゼントを持っていないすべてのプレイヤーの順番でのプレイヤー名のリスト。 presents:プレーヤー名を2タプルにマップする辞書。このタプルには、そのプレーヤーが保持している現在の値と、現在の盗まれた回数が含まれています。これには、現在プレゼントを持っている他のプレイヤーのみが含まれます。 just_stole:最後に行われたアクションがスチールであった場合、これは盗んだプレーヤーの名前になります。そうでない場合は、になりますNone。 各引数は不変または新しいオブジェクトであるため、それらのいずれかを変更してもゲームに影響はありません。必要に応じて、任意の引数のコピーを保持できます。 以下の値の例presents: { 'Alice': (0.35, 0), 'Bob': (0.81, 2), 'Charlie': (0.57, 1) } あなたのtake_turn方法はあなたから盗むしたり、希望するプレイヤーの名前を返す必要がありますNone存在を開くことを。例外を発生させstrたりNone、または以外の何かを返したり、盗むことができないプレーヤーの名前を返したりした場合、デフォルトでプレゼントを開きます。 コンストラクタは各ラウンドの開始時に呼び出されるため、ラウンドごとに状態を覚えることはできません。 から継承することにより、WhiteElephantBot現在のsteal_targets辞書を取得し、just_stole盗むことができるプレイヤーの名前のリストを返すメソッドにアクセスできます。 スクリプトに必要なモジュールは、エントリの一番上にインポートする必要があります。 テストドライバー テストドライバーはこちらにあります。from white_elephant import WhiteElephantBot投稿された回答に含める必要はありませんが、ローカルモジュールで行う必要があります。 …

1
EBCDICコードゴルフ(誕生日おめでとう、System / 360!)
IBMがSystem / 360ファミリーのコンピューターを発表してからまもなく50年になります。これらは、EBCDIC文字セットを最初に使用したものです。 この機会に印を付けるために、「通常の」テキストをEBCDICコードページ037に変換したり、EBCDICコードページ037から変換したりできる最短のプログラムを作成できる人を見てみましょう。CP037をISO-8859-1: EBCDIC037_to_Latin1 = [ 0x00,0x01,0x02,0x03,0x9c,0x09,0x86,0x7f,0x97,0x8d,0x8e,0x0b,0x0c,0x0d,0x0e,0x0f, 0x10,0x11,0x12,0x13,0x9d,0x85,0x08,0x87,0x18,0x19,0x92,0x8f,0x1c,0x1d,0x1e,0x1f, 0x80,0x81,0x82,0x83,0x84,0x0a,0x17,0x1b,0x88,0x89,0x8a,0x8b,0x8c,0x05,0x06,0x07, 0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9a,0x9b,0x14,0x15,0x9e,0x1a, 0x20,0xa0,0xe2,0xe4,0xe0,0xe1,0xe3,0xe5,0xe7,0xf1,0xa2,0x2e,0x3c,0x28,0x2b,0x7c, 0x26,0xe9,0xea,0xeb,0xe8,0xed,0xee,0xef,0xec,0xdf,0x21,0x24,0x2a,0x29,0x3b,0xac, 0x2d,0x2f,0xc2,0xc4,0xc0,0xc1,0xc3,0xc5,0xc7,0xd1,0xa6,0x2c,0x25,0x5f,0x3e,0x3f, 0xf8,0xc9,0xca,0xcb,0xc8,0xcd,0xce,0xcf,0xcc,0x60,0x3a,0x23,0x40,0x27,0x3d,0x22, 0xd8,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xab,0xbb,0xf0,0xfd,0xfe,0xb1, 0xb0,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0xaa,0xba,0xe6,0xb8,0xc6,0xa4, 0xb5,0x7e,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0xa1,0xbf,0xd0,0xdd,0xde,0xae, 0x5e,0xa3,0xa5,0xb7,0xa9,0xa7,0xb6,0xbc,0xbd,0xbe,0x5b,0x5d,0xaf,0xa8,0xb4,0xd7, 0x7b,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xad,0xf4,0xf6,0xf2,0xf3,0xf5, 0x7d,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0xb9,0xfb,0xfc,0xf9,0xfa,0xff, 0x5c,0xf7,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0xb2,0xd4,0xd6,0xd2,0xd3,0xd5, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xb3,0xdb,0xdc,0xd9,0xda,0x9f]; ルール: プログラムは、(a)テキスト文字列、および(b)実行する操作を示すフラグの2つの入力を受け取る必要があります。 このフラグに基づいて、プログラムはテキストの各バイトを対応するEBCDIC文字に変換するか、その逆を行う必要があります。 入力は、賢明なソース(コマンドライン引数、標準入力、キーボード入力など)から取得できますが、プログラムにハードコーディングしないでください。 出力は画面に表示するか(stdoutなどdocument.write)、ファイル/パイプラインに書き込む必要があります。 組み込みまたは外部のエンコード変換関数(iconvなど)を使用しないでください。 これはコードとゴルフのチャレンジなので、最短の回答(最小バイト)が勝ちます。 例: (注:これらの例は、UTF-8エンコードを使用するように構成された端末で作成されました。システムの構成方法によって異なる結果が表示される場合があります。 ) Input: "HELLO WORLD", convert to EBCDIC Output: "ÈÅÓÓÖ@æÖÙÓÄ" (0xc8c5d3d3d640e6d6d9d3c4) Input: "ÈÅÓÓÖ@æÖÙÓÄ", convert from EBCDIC Output: "HELLO WORLD" …

11
(完全に決定的な)擬似ランダムビットストリームを生成する
手を縛ってランダムに触発された: 目標 このチャレンジの目標は、純粋にランダムに見えるが実際には決定論的な方法で生成される1と0の文字列である擬似ランダムビットストリームを生成するプログラムを作成することです。プログラムは、1と0の文字列(オプションの空白を含む)を出力し、次の要件を満たしている必要があります。 時間とメモリが無制限の場合、プログラムは1と0の文字列を永久に出力し続ける必要があります プログラムは、合理的なマシンで、約1分で1000を超えるランダムビットを出力する必要があります。この要件が不可能な場合は、軽減します。 ビット列は繰り返すことができますが、繰り返しセクションの長さは1000ビットを超える必要があります。 ビット列は、可能な限り多くのランダム性テスト(以下で説明)に合格する必要があります。 プログラムは、外部ソースから入力を受け取ったり、組み込みのrand()のような関数を使用したりしてはなりません。 上記の要件により、プログラムは実行されるたびに同じ正確なビット文字列を出力する必要があります。 ランダム性テスト#1 擬似ランダムビットの文字列には、目視検査で明らかなパターンを含めないでください。 ランダム性テスト#2(コメントに基づいて変更される場合があります) ビット列には、1と0の等分布が含まれている必要があります。これをテストするために(および他のことも)、ビットストリームは、などの3ビット長のセグメントに分割され101|111|001ます。 これらのすべてのセグメントのうち、1/8には1が3つあり、0はありません。3/ 8には2つの1と1つの0があり、3/8には1と2つの0があり、1/8がありますそれらのうち、1がなく、3つの0が必要です。 ランダム性テスト#3 「実行」は、すべて同じ値を持つ連続した一連のビットとして定義されます。文字列に1001001110は、サイズ1(1..1.....0)の3 つの実行、サイズ2(.00.00....)の2 つの実行、およびサイズ3(......111.)の1つの実行があります。実行が重複しないことに注意してください。 1000個のランダムビットの文字列のうち、サイズ1の実行が約250回、サイズ2の実行が125回、サイズ3の実行が62回などである必要があり1000/(2**(R+1))ます。 ランダム性テスト#4 最初の840ビットは、それぞれ420ビットの2つの半分に分割されます。前半の各ビットは、後半の対応するビットと比較されます。2つのビットは、約50%の時間で一致する必要があります。 以下は、テスト2〜4を実行するPerlプログラムのソースコードです。現在のところ、ビットの文字列に空白が含まれていないことが必要です。 客観的勝利基準時間! 勝者は、6つの要件すべてとすべてのランダム性テストに合格し、ランダム性と区別できない程度に合格するプログラムです。複数のプログラムがこれを達成する場合、繰り返しに最も長い時間がかかるプログラムが勝ちます。複数のプログラムがこれを達成する場合、タイブレーカーとして機能するために、さらにランダム性テストを見つける必要があるかもしれません。

2
4色のトリオミノでチェス盤を並べます
仕事: 問題を考えてみましょう:「チェス盤に1つの正方形が欠けている場合、それを21個のL-トリオミノにカットします」。これは、2の累乗である任意の正方形のチェス盤サイズで実行できるというよく知られた建設的な証拠があります。チェス盤を、穴のある小さなチェス盤と1つの大きなトリオミノに分割し、そのトリオミノを4つのトリオミノに再帰的に切断できることを確認します。 このタスクでは、8x8のチェス盤をL字型のトリオミノにカットし、隣接する2つのトリオミノが同じ色にならないように4色で着色する必要があります。 仕様: 入力は、穴の位置であり、整数のペアとして指定されます。列インデックスと行インデックスを選択できます。それぞれが0から開始するか、1から開始し、どのコーナーから増加するかを選択できます。0..7または1..8の代わりに、最初の座標としてA..Hが必要な場合があります。また、両方の座標を辞書式順序(行優先または列優先、左から右または右から左、上から下または下から上)で単一の整数0..63または1..64にパックすることもできます。完全なプログラムまたは関数を記述できます。 タイルをASCII、色付きASCII、またはグラフィックプリミティブとして出力できます。ASCII出力を選択した場合、4色を表す印刷可能なASCII文字を4つ選択できます。色付きのASCIIを選択した場合、任意の4つの印刷可能なASCII文字またはスペース以外の1文字のみを選択できます。穴はスペース文字で表す必要があります。キャラクターの1つがスペースキャラクターである場合、穴に隣接するまたはチェス盤の端にあるトリオミノは、この色ではありません。 色付きASCIIまたはグラフィック出力を選択する場合、#000、#00F、#0F0、#0FF、#F00、#F0F、#FF0、#FFF、またはご使用の環境で利用可能な最も近いものから任意の4色を選択できます。グラフィカル出力を選択する場合、グラフィカルプリミティブは、サイズが少なくとも32x32ピクセルの正方形で塗りつぶされ、他の色の2ピクセル以下で区切られている必要があります。上記が環境の画面解像度を超える場合、最小サイズ要件は、画面に収まる最大の正方形サイズに緩和されます。 指定されたチェスボードの有効なタイルを選択できます。選択したタイルの4色を選択できます。4色の選択はすべての出力で同じでなければなりませんが、すべての出力ですべての色を使用する必要はありません。 例: 入力の可能な出力= [0、0](左上隅) #??##?? ##.?#..? ?..#??.# ??##.?## ##?..#?? #.??##.? ?..#?..# ??##??## 同じプログラムの別の可能な出力(入力= [0、7]): ??#??#? ?##?##?? ..xx..xx .?x#.?x# ??##??## ..xx..xx .?x#.?x# ??##??## 「D1」の入力用に別のプログラムが生成される場合もあります(非標準ですが、チェスボードの向きに注意してください)。 AABBCCAA ACBACBAC CCAABBCC ABBAADD AABDABDC BBDDBBCC BABBACAA AABAACCA

30
チャンク+数字のリストを列挙する
10進数のリストがあります。 4, 4, 4, 7, 7, 9, 9, 9, 9, 2, 2, 2, 4, 4 10進数のリストはアイテムと呼ばれます。同じ番号と隣接する番号をグループ化することにより、これらのアイテムから「チャンク」を形成できます。各チャンクに、1から始まり、元のリストにチャンクが現れる順序で1ずつ増加する一意の番号を割り当てたいと思います。したがって、指定された例の出力は次のようになります。 1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5 入力フォーマット 数字のリスト。(0-9)必要に応じて、このリストを読むために言語組み込みを使用できます。エンコーディング:ASCII 出力フォーマット 区切り文字で区切られた一連の10進数。プログラムは常に同じ区切り文字を使用する必要があります。区切り文字は0ビットより長くする必要があります。エンコーディング:ASCII 標準の抜け穴が適用されます。

1
ASCIIでRecamánのシーケンスを描く
Recamánのシーケンス(A005132)は、次のように定義される数学的シーケンスです。 A(n)=⎧⎩⎨0A(n−1)−nA(n−1)+nif n=0if A(n−1)−n is positive and not already in the sequenceotherwiseA(n)={0if n=0A(n−1)−nif A(n−1)−n is positive and not already in the sequenceA(n−1)+notherwiseA(n) = \begin{cases}0 & \textrm{if } n = 0 \\ A(n-1) - n & \textrm{if } A(n-1) - n \textrm{ is positive and not already in the sequence} \\ …

6
ウイルス対解毒剤コードゴルフ[終了]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 8か月前に閉鎖されました。 「v」で示されるウイルス、「a」で示されるantidote1、および「b」で示されるantidote2を含む長方形の2D配列があります(「v」、「a」、および「b」以外の値はありません)。 Antidote1は水平方向と垂直方向の隣接ウイルスのみを殺すことができますが、antidote2は水平方向、垂直方向、対角線方向の隣接する(もしあれば)ウイルスを殺すことができます。 解毒剤が有効になったら、最後にいくつのウイルスが残りますか? 例: 入力: vv vv 出力:4 入力: av vv 出力:1 入力: vvv vbv vvv 出力:0 入力: bvb bav vab vvv vvb vvv vvv bva vav 出力:3
11 code-golf 

5
この追加ピラミッドパズルには独自のソリューションがありますか?
追加のピラミッド与えて、それが解決できるかどうかを判断します。追加ピラミッドは、複数のレイヤーで構成され、各レイヤーはその下の数字よりも1つ小さい数字を持ちます。レイヤーはとして記号化されています。はベースレイヤーで、は上のレイヤーです。の番目の番号はとして示されます。はの左端の数で、は右側の数です。あなたが視覚化できるの上に存在するPPPi P i P 1 P i + 1 P i j P i P i 、j P i 、1 P i P i 、j + 1 P i 、j P i + 1 、j P i 、j私iiP私PiP_iP1P1P_1Pi + 1Pi+1P_{i+1}P私PiP_ijjjP私PiP_iPi 、jPi,jP_{i,j}P私、1Pi,1P_{i,1}P私PiP_iPi 、j + 1Pi,j+1P_{i,j+1}Pi 、jPi,jP_{i,j}Pi + 1 、jPi+1,jP_{i+1,j}Pi 、jPi,jP_{i,j}そしてミドル、その名"付加でピラミッド "。Pi …

5
コードを逆にし、OEISを逆にします
ここでのタスクは、自然数nnnを取り、OEISシーケンスのnnn番目の項を生成するプログラムを作成することです。そのシーケンスにはA、6桁の数字が続く形式の識別子が必要です。これで、ソースコードを取得し、そのバイトの順序を逆にして新しいプログラムを作成すると、そのプログラムはOEISシーケンスも実装する必要があります。新しいシーケンスはA、前回と同じ6桁の数字が逆順(先行ゼロを含む)で続いて識別される必要があります。 さて、物事が些細なものになるのを防ぐために、OEIS識別子番号もあなたのプログラムも回文ではありません。つまり、シーケンスとプログラムは異なるはずです。逆のシーケンスが存在しないか、空であるシーケンスを選択することはできません。 シーケンスごとに、0または1のインデックスを使用することを選択できます。同じインデックスを使用する必要はありません。一部のOEISシーケンスにはドメインが制限されているため、シーケンスのドメインの正しい数値を出力するだけで済みます。必要な動作は、ドメイン外では定義されていません(出力0、クラッシュ、ピザの注文など)。 これはコードゴルフであるため、回答はバイト単位でスコア付けされ、バイト数は少ない方が良いです。

3
BrainFuckで「A」を1000回印刷
'A'を1000回印刷するのに最適なBrainFuckコード(コードサイズの観点から)は? 私のアプローチは: 「A」をp [0]に設定します 255をp [1]に設定して255 'A'を3回表示する 235をp [1]に設定して235 'A'を表示します これは効果的ではありませんが、乗算のように同時に牽引カウンターを使用する方法を見つけることができません 乗算よりも良いアプローチはありますか? より一般的な質問:可能な限り最小のコードで多数の乗算を行うルールはありますか?

29
単語内の文字のすべての可能な一意の組み合わせを数える
通常のaz文字を含む文字列が与えられます。(これはどのテストでも常に当てはまると想定でき、すべての文字も小文字であると想定できます)。文字列内の個々の文字の一意の組み合わせの数を決定し、その数を印刷する必要があります。 ただし、可能な組み合わせを数える際に、重複した文字は無視できます。つまり、指定された文字列が「hello」の場合、2つlのsの位置を単純に切り替えても一意のフレーズとしてカウントされないため、合計にカウントすることはできません。 最短バイト数が勝ち、非ゴルフ言語でのクリエイティブなソリューションを楽しみにしています! 例: hello -> 60 aaaaa -> 1 abcde -> 120
11 code-golf  string 

6
独創性による整数のグループ化
前書き: ツイスティパズルを収集します。ほとんどのツイスティパズルは、中国企業によって製造および販売されています。ほとんどの有名企業は、パズルデザイナーにデザインを作成し、市場の製品に向けて協力する許可を求めています。この場合、パズルデザイナーはもちろん、パズルの1つが市場に出回ったことを非常に喜んで誇りに思っています。 しかし、模造パズルを作成する中国企業もあります。これらの模造品は、元の作成者の許可なしに使用されたデザイン、または既存のパズルのまったく安価で低品質のコピーです。 チャレンジ: 特定の順序(左から右へ†)で「リリース」された番号の独創性を判断します。 整数のリストが与えられたら、それらをオリジナリティでグループ化して出力します。 数字の独創性はどのように決定されますか? 番号は以前の番号とまったく同じですか?グループバツ+ 1X+1X+1(オリジナルが最も少ない)。グループバツ+ 1X+1X+1は、他のすべてのグループの後に続きます。 番号は、以前の番号の重複ですが、その負のではなく(つまり、元の数だったnnnが、今− n−n-n、またはその逆)?グループバツXX。 数値の絶対値は、1つ以上の以前の絶対数を連結することで形成できますか?また、前述のグループバツ+ 1X+1X+1またはバツXX一部ではありませんか?基バツ− NX−NX-N、NNN連結に使用される個別の数値の量である(そしてN≥ 1N≥1N\geq1)。 数は上記のグループのいずれにも適合しないので、これまでのところ完全に一意ですか?グループ111(最もオリジナル)。これは他のすべてのグループの前にあります。 これはかなりあいまいに聞こえるかもしれないので、ここでステップバイステップの例: 入力リスト: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44] 34は最初の番号で、常にオリジナルでグループ111ます。これまでの出力:[[34]] 9 オリジナルも: [[34,9]] 4 オリジナルも: [[34,9,4]] -34は、以前の数値の負である34ため、グループバツXXます。[[34,9,4],[-34]] 19 オリジナルです: [[34,9,4,19],[-34]] -199は、前の2つの数字19と9で形成できるため、グループバツ− 2X−2X-2ます。[[34,9,4,19],[-199],[-34]] 34は以前の番号の正確なコピーであるため、グループます。バツ+ 1X+1X+1[[34,9,4,19],[-199],[-34],[34]] -213 オリジナルです: [[34,9,4,19,-213],[-199],[-34],[34]] 94は、以前の2つの数字9と4で形成できるため、グループます。バツ− 2X−2X-2[[34,9,4,19,-213],[-199,94],[-34],[34]] 19344994つの以前の数値を用いて形成することができる19、34、4、および2回9、それがグループでありますので、:バツ− 4X−4X-4[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]] 213は、以前の数値の負である-213ため、グループバツXXます。[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]] 3 オリジナルです: [[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]] 21 オリジナルです: [[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]] -213421342134バツ− …

6
2D凸包の面積
2Dユークリッド平面上の点のデカルト座標を表す整数のペアの配列/リスト/ベクトルが与えられます。すべての座標はから、重複が許可されます。最も近い整数に丸められた、これらの点の凸包の面積を見つけます。正確な中間点は、最も近い偶数の整数に丸められる必要があります。最終結果が常に正しいことを保証できる場合にのみ、中間計算で浮動小数点数を使用できます。これはcode-golfなので、最短の正しいプログラムが勝ちます。(x 、y)(x,y)(x, y)− 104−104−10^410410410^4 凸包点の組の含ま最小の凸集合である。ユークリッド平面では、任意の単一の点に対して、それ自体が点です。2つの異なるポイントの場合は、それらを含む線、3つの非共線のポイントの場合は、それらが形成する三角形などです。PPPPPP(x 、y)(x,y)(x,y) 凸包が何であるかを視覚的に説明するには、すべてのポイントを木製ボードの釘として想像してから、すべてのポイントを囲むように輪ゴムを伸ばします。 いくつかのテストケース: Input: [[50, -13]] Result: 0 Input: [[-25, -26], [34, -27]] Result: 0 Input: [[-6, -14], [-48, -45], [21, 25]] Result: 400 Input: [[4, 30], [5, 37], [-18, 49], [-9, -2]] Result: 562 Input: [[0, 16], [24, 18], [-43, 36], [39, -29], [3, …

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