タグ付けされた質問 「array-manipulation」

配列の使用と操作を通じて特定の問題を解決するための競争。

2
配列をシャッフル解除できますか?
バックグラウンド 非常に熟練したカードハンドラーは、デッキを完全に半分にカットしてから、カードを完全にインターリーブする技術を使用できます。並べ替えられたデッキから始めて、この手法を52回連続して完璧に実行すると、デッキは並べ替えられた順序に復元されます。あなたの挑戦は、カードのデッキに整数配列を取り、ファロシャッフルのみを使用してソートできるかどうかを判断することです。 定義 数学的には、ファロシャッフルは、任意の正の整数nに対する2 n個の要素の順列であり、位置i(1からインデックス付け)の要素を位置2 i(mod 2 n +1)に置き換えます。また、奇数長のリストを処理できるようにしたいので、その場合、リストの最後に1つの要素を追加し(便利な場合はジョーカー)、上記のようにFaroは新しいリストをシャッフルしますが、無視しますリストの順序をチェックするときに追加されたダミー要素。 ゴール 整数のリストを取得し、いくつかのファロシャッフルによりそのリストが非降順でソートされる場合(その数がゼロであっても、小さなリストが真実を示す必要がある場合)、真実を返すか出力するプログラムまたは関数を記述します。それ以外の場合は、偽物を返すか出力します。 例 [1,1,2,3,5,8,13,21] => True [5,1,8,1,13,2,21,3] => True [9,36,5,34,2,10,1] => True [1,0] => True [0] => True [] => True [3,2,1] => True [3,1,2] => False [9,8,7,6,5,4,3,2,1,0] => True [9,8,7,6,5,4,3,2,0,1] => False [3,1,4,1,5,9,2,6,9] => False [-1,-1,-1,-2] => True 得点 これはコードゴルフなので、バイト単位での最短ソースが優先されます。

21
セックス・ボブ・オンブスの簿記(現在の金額が低すぎるかどうかを確認してください)
信じられないかもしれませんが、Sex Bob-ombsは世界的に有名なバンドになり、現在世界ツアー中です!ブックキーパーとして、日々の財務を監督し、定期的なレポートを提供する必要があります。 数週間ごとに、発生した順番で費用のリスト(米ドル全体)を作成します。 たとえば、リスト 378 -95 2234 アカウントに378ドルが入金され、その後95ドルが出金され、その後2234ドルが入金されたことを意味します。 これらの値の累積合計がしきい値Tを下回らないようにする必要があります。これを行うプログラムを作成することにしました。 チャレンジ 単一の整数Tと整数のリストを取り込むプログラムまたは関数を作成します。整数のリストの現在の合計がTより小さい場合は、偽の値を出力するか、それ以外の場合は、真の値を出力します。 通常の入力方法(stdin、ファイルから、コマンドライン、関数への引数)を使用できます。 リストの先頭では、現在の合計は0です。したがって、正のTは結果が常に偽であることを意味します。 + 正の整数の前に来ることはありません。 リストには0を含めることができます。 リストは空かもしれません。 テストケース Tはこれらすべてで-5です。 偽物: -6 1 2 3 -20 200 -300 1000 真実: [empty list] -5 4 -3 -6 得点 最少バイトの送信が勝ちです。Tiebreakerは、投稿された最も早い投稿に進みます。 私がこれをすることを余儀なくされた残念なコメント。

5
デッキを積み重ねてください!
アリスとボブは、連続する非負の整数で番号が付けられたカードのデッキで、カードゲームをするのが好きです。 しかし、アリスにはデッキをシャッフルする非常に特別な方法があります。まず、彼女はデッキから一番上のカードを取り、デッキの一番下に置きます。それから彼女は次のカードを取り除き、それで山を始めます。その後、彼女は再び一番上のカードを一番下に循環させ、新しい一番上のカードを山に置きます。彼女はデッキを空にするまでこのプロセスを繰り返し、その時点でパイルが新しいデッキになります。 deck | pile -----------+----------- 3 1 4 0 2 | 1 4 0 2 3 | 4 0 2 3 | 1 0 2 3 4 | 1 2 3 4 | 0 1 3 4 2 | 0 1 4 2 | 3 0 1 2 4 …

11
最高のラインを見つける
整数の2次元配列Aと長さNが与えられます。あなたの仕事は、配列内で、N個の要素の直線(水平、垂直、または斜め)を見つけて、合計の合計が最大になるようにし、その合計を返すことです。 。 例 N = 3, A = 3 3 7 9 3 2 2 10 4 1 7 7 2 5 0 2 1 4 1 3 この配列には、以下を含む34の有効な行があります。 Vertical [3] 3 7 9 3 [2] 2 10 4 1 [7] 7 2 5 0 2 1 4 1 3 …

9
ファイブナムと少し
(パラドックス、パラドックス、最も独創的なパラドックス) これは、さまざまなR関数に触発されたマルチパートシリーズの最初のパートです。 タスク データセットを考えるとDDD正の整数の、私はあなたが計算する必要が5数要約のDDD。ただし、大規模なデータセットで作業しているため、コードをできるだけ小さくして、コンピューターに保存できるようにする必要があります。 5つの数字の概要は次のとおりです。 最小値 最初の四分位(Q1) 中央値/ 2分の1(Q2) 3番目の四分位(Q3) 最大値 四分位数を定義する方法はいくつかありますが、Rによって実装された方法を使用します。 定義: 最小値と最大値:それぞれ最小値と最大値。 中央値以下の場合中央値DDDあればエントリの奇数、及び2つの中間最も値の算術平均値を有し、DDDエントリの偶数を有します。これは、中央値が非整数値であることを意味することに注意してください。以前に中央値を計算する必要がありました。 第1四分位と第3四分位:DDDのエントリ数が奇数の場合、各半分の中央要素を含む2つの半分にデータを分割し、各半分の中央値を求めます。下半分の中央値は第1四分位、上半分の中央値は第3四分位です。 例: D = [ 1 、2 、3 、4 、5 ]D=[1、2、3、4、5]D=[1,2,3,4,5]。中央値は、その後で333、及び下半分である[ 1 、2 、3 ][1、2、3][1,2,3]の最初の四分位得222、上半分である[ 3 、4 、5 ][3、4、5][3,4,5]の第三四分位生じ、444。 D = [ 1 、3 、3 、4 、5 、6 、7 、10 ]D=[1、3、3、4、5、6、7、10]D=[1,3,3,4,5,6,7,10]。中央値は4.54.54.5、下半分である[ 1 、3、3 、4 ][1、3、3、4][1,3,3,4]の第一四分位得333、及び上半分である[ …

25
サンプルの標準化(zスコアの計算)
浮動小数点数のリストが与えられたら、それを標準化します。 詳細 リストx1,x2,…,xnx1,x2,…,xnx_1,x_2,\ldots,x_nれる標準場合の平均すべての値が0であり、標準偏差はこれを計算する1つの方法は、第1の平均を計算することによってであるμμ\muと標準偏差σσ\sigmaとして μ=1n∑i=1nxiσ=1n∑i=1n(xi−μ)2−−−−−−−−−−−−√,μ=1n∑i=1nxiσ=1n∑i=1n(xi−μ)2, \mu = \frac1n\sum_{i=1}^n x_i \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^n (x_i -\mu)^2} , 及びその後すべて置き換えることにより標準化を計算するxixix_i用いてxi−μσxi−μσ\frac{x_i-\mu}{\sigma}。 入力に少なくとも2つの異なるエントリが含まれると仮定できます(これは、σ≠0σ≠0\sigma \neq 0を意味します)。 一部の実装ではサンプル標準偏差を使用しますが、これはここで使用しているσσ\sigma標準偏差σとは異なります。 すべての些細な解決策にCWの答えがあります。 例 [1,2,3] -> [-1.224744871391589,0.0,1.224744871391589] [1,2] -> [-1,1] [-3,1,4,1,5] -> [-1.6428571428571428,-0.21428571428571433,0.8571428571428572,-0.21428571428571433,1.2142857142857144] (これらの例はこのスクリプトで生成されています。)

16
配列実行の検索
配列内の実行を見つける 実行とは、一定のステップで前から増加する3つ以上の数として定義されます。たとえば、[1,2,3]はステップ1の実行であり、[1,3,5,7]はステップ2の実行であり、[1,2,4,5]は実行ではありません。 これらの実行は、「i to j by s」という表記で表現できます。iは実行の最初の番号、jは実行の最後の番号、sはステップです。ただし、ステップ1の実行は「i to j」で表されます。 したがって、前に配列を使用すると、次のようになります。 [1,2,3]-> "1to3" [1,3,5,7]-> "1to7by2" [1,2,4,5]-> "1 2 4 5" この課題では、複数の実行がある可能性のある配列に対してこれを行うのはあなたのタスクです。 再帰を使用したPythonコードの例: def arr_comp_rec(a, start_index): # Early exit and recursion end point if start_index == len(a)-1: return str(a[-1]) elif start_index == len(a): return '' # Keep track of first delta to …

5
最適なキャッシュ
メモリリクエストのシーケンスとキャッシュサイズが与えられます。キャッシュ置換戦略では、キャッシュミスの数をできるだけ少なくする必要があります。 最適な戦略は、Beladyのアルゴリズムです。これは、必要に応じて使用できます。 キャッシングシステムは次のように機能します。キャッシュは空から始まります。メモリ要求が入ります。要求がキャッシュ内のデータの一部を要求する場合、すべてが順調です。そうでない場合、キャッシュミスが発生します。この時点で、将来使用するために要求されたデータをキャッシュに挿入できます。キャッシュがいっぱいで、新しいデータを挿入する場合は、以前にキャッシュにあったデータを削除する必要があります。キャッシュ内だけではないデータを挿入することはできません。 あなたの目標は、特定のメモリリクエストシーケンスとキャッシュサイズについて、キャッシュミスの最小数を見つけることです。 キャッシュサイズ、正の整数、およびトークンのリストであるメモリ要求シーケンスが提供されます。これらのトークンは、少なくとも256個の異なるトークンが可能な限り、どのような種類のトークンでもかまいません(バイトは問題ありませんが、ブールはできません)。たとえば、int、string、listはすべて問題ありません。必要に応じて説明を求めてください。 テストケース: 3 [5, 0, 1, 2, 0, 3, 1, 2, 5, 2] 6 これを実現する代替ポリシーについては、ウィキペディアを参照してください。 2 [0, 1, 2, 0, 1, 0, 1] 3 2キャッシュへの追加を避けるだけです。 3 [0, 1, 2, 1, 4, 3, 1, 0, 2, 3, 4, 5, 0, 2, 3, 4] 9 これを達成する1枚の方法は、追い出したことがないことである0と2し、立ち退か1その最後の使用後は、できるだけ早く。 得点:これはコードゴルフです。少ないバイトが勝ちます。

3
マルチレベルの無料駐車スペースファインダー
キッズ関連のイントロ 子供を遊園地に連れて行くたびに、子供たちは公園に近づくにつれて緊張し、駐車場にいるときに神経質になり、駐車する場所が見つかりません。そこで、駐車に費やす時間を最小限に抑えるために、最も近い無料駐車スペースを見つける方法が必要だと判断しました。 技術紹介 このような駐車場の表現を想像してください: ***************** * * * ··CC··C··CC·· * * ************* * * ··CCCCCCCCC·· * * * **********E****** この表現で*は、aは壁、·無料駐車スペース、E入り口、およびCすでに駐車されている車を意味します。すべての空白は、駐車する車が駐車場内を移動するために使用できる位置です。次に、この概念を3Dに拡張して、複数レベルの駐車場を作成します。 1st floor 2nd floor 3rd floor 4th floor ***************** ***************** ***************** ***************** * 1 * 2 * 3 * * * CCCCCCCCCCCCC * * CCCCCCCCCCCCC * * ····C··CCCCCC * * …

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 , …

9
ブロックの再配置
したがって、あなたの仕事は3x3ブロックを取得することです。ここで、-の意味は空白スペースであり、*の意味は塗りつぶされたスペースです、例えば: -** -*- *-* 次*のように、がXを形成するようにブロックを再配置します。 *-* -*- *-* 入力: 上記のような3x3の正方形、3行、配列、または必要に応じて。 出力: Xに再配置するための最短の移動量。各移動は、互いに水平であるか、互いに垂直であるか、または互いに斜めである、接触している2つのキャラクターを反転させます。不可能な場合は、不可能な出力を返します(例:999または)-4242。5最小のそのような数です。 テストケース: 1)出力:1 -** -*- *-* 2)出力:-1 -*- -*- *-* 3)出力:3 --- -** *** 4)出力:0 *-* -*- *-* 空白文字と非空白文字を置き換えることができますが、投稿にどちらが含まれるかを必ず確認してください コードゴルフ これは、最短のコードが勝つコードゴルフです。

12
パリンドローム部分文字列からパリンドロームをつなぎ合わせる
文字列を考えるとl、全てのパリンドロームのサブストリングを見つけるpのl(重複し、単一の文字列を含む)を。次に、すべての部分文字列をp有効な回文に再配置します(複数の正解がある場合があります)。p単一のパリンドロームに再配置できない場合は、プログラムに未定義の動作(エラー、スタックオーバーフロー、終了、ジョンドヴォルザークの首吊り/早すぎる殺人など)が含まれている可能性があります。 例 有効なテストケース l = anaa p = ['a', 'n', 'a', 'a', 'aa', 'ana'] result = anaaaaana or aanaaanaa or aaananaaa l = 1213235 p = ['1', '2', '1', '3', '2', '3', '5', '121', '323'] result = 1213235323121 l = racecar p = ['r', 'a', 'c', 'e', 'c', 'a', 'r', …

14
与えられたサイズのすべての正方形部分行列を生成します
整数Mの正方行列と、Mのサイズより厳密に小さい別の正の整数nが与えられます。あなたの仕事は、サイズnのMのすべての正方形部分行列を生成することです。 この課題のために、正方形のサブマトリックスはMに含まれる隣接する行と列のグループです。 入力/出力フォーマット 他の合理的な形式を自由に選択できます。これらはほんの一例です。 入力 ネイティブマトリックスタイプのマトリックス(言語にマトリックスがある場合) 2D配列(それぞれが1行/ 1列に対応する1D配列の配列) 1D配列(行列は常に正方形であるため) 文字列(スペースを選択しましたが、これを悪用しないでください)など 出力 マトリックスのマトリックス。 各要素(3Dリスト)が行/列の部分行列を表す4D配列。 3D配列。各要素(2Dリスト)はサブマトリックスを表します。 結果の部分行列などの文字列表現。 スペック 入力としてMのサイズを選択することもできます。少なくとも2であることが保証されています。 出力の方向は任意です。サブマトリックスを列のリストまたは行のリストとして出力することを選択できますが、選択は一貫している必要があります。 デフォルトではこれらの抜け穴が禁止されていることに注意しながら、任意のプログラミング言語で競争し、標準的な方法で入力を取得し、出力を提供できます。 これはcode-golfであるため、すべての言語の最短の送信(バイト単位)が優先されます。 例 与えられたN = 3とM: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 可能な3x3部分行列は次のとおりです。 + ------- + + -------- + 1 2 3 …

14
2つのリストを最大値で比較する
負でない整数の2つの異なるリストが与えられた場合、最大値が最大のリスト(例えば[4, 2], [3, 3, 1] -> [4, 2])を返します。 両方に同じ最大値がある場合、この最大値のインスタンスをさらに含むリストを返します(例:)[4, 2, 4], [4, 3, 3, 3, 1, 3] -> [4, 2, 4]。 これらの比較の後、それらが等しい場合、同じ比較を行いますが、次に高いアイテム(例[2, 3, 4, 4], [4, 4, 3, 3, 1] -> [4, 4, 3, 3, 1])を使用します。 これらすべての比較の後、それらがまだ等しいと見なされる場合、より長いリストを出力します(例:)[4, 3, 2, 1, 0], [1, 2, 3, 4] -> [4, 3, 2, 1, …

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