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

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

14
離散畳み込みまたは多項式乗算
整数の2つの空でないリストが与えられた場合、サブミットは2つの離散畳み込みを計算して返す必要があります。興味深いことに、リスト要素を多項式の係数と考えると、2つのリストの畳み込みは2つの多項式の積の係数を表します。 定義 リストA=[a(0),a(1),a(2),...,a(n)]とB=[b(0),b(1),b(2),...,b(m)](設定a(k)=0 for k<0 and k>nとb(k)=0 for k<0 and k>m)が与えられると、2つの畳み込みは次のようA*B=[c(0),c(1),...,c(m+n)]に定義されます。c(k) = sum [ a(x)*b(y) for all integers x y such that x+y=k] ルール ご使用の言語の便利な入出力フォーマットが許可されます。 畳み込み、畳み込み行列の作成、相関、多項式乗算の組み込みは許可されていません。 例 [1,1]*[1] = [1,1] [1,1]*[1,1] = [1,2,1] [1,1]*[1,2,1] = [1,3,3,1] [1,1]*[1,3,3,1] = [1,4,6,4,1] [1,1]*[1,4,6,4,1] = [1,5,10,10,5,1] [1,-1]*[1,1,1,1,1] = [1,0,0,0,0,-1] [80085,1337]*[-24319,406] = [-1947587115,7,542822]

7
Hilbert-Curvify a Matrix
この質問に触発された 2D画像を1D文字列に展開する別の方法は、ヒルベルト曲線を使用することです。 計算中に使用される反復回数に応じて、この曲線には多くのバージョンがあります。以下は、1次から5次までのヒルベルト曲線の例です。 この曲線の計算方法は次のとおりです。最初に、図に示されているもの(n = 1の場合)として1次ヒルベルト曲線を定義し、1x1の正方形に収まるようにします。次に、この曲線の4つのコピーを作成し、それらを4x4の正方形に間隔を空けて、すべてが左側に向かって「凹面」を示すようにします。次に、2つの左端の次数1の曲線を反転し、上の1つの凹面が上を向き、下の凹面が下を向くようにします。最後に、隣接するヒルベルト曲線の角を接続します。(n + 1)次の曲線を取得する場合は、4つのn次の曲線でプロセスを繰り返すだけです。ここでプロセスの視覚化を見ることができます(プロセスの詳細を示す画像もすぐに追加します) この課題におけるあなたのタスクは、その行列の最低次のヒルベルト曲線に沿って整数の行列を展開することです。 簡単にするために、マトリックスの左上隅から曲線を開始します。 入力は整数のリストのリストとして受け取ることができます。各サブリストは行列の行を表します。 入力は正方行列(n * n)であると仮定できます。 例えば: 入力: [[ 1, 2,] [ 3, 4 ]] 出力: [ 1, 2, 4, 3 ] 図に示す1次のヒルベルト曲線を使用しているため 入力: [[ 1, 2, 3, 4, ] [ 5, 6, 7, 8, ] [ 9, 10, 11, 12, ] …

20
変動範囲
番号付きのリストが与えられたら、次のような範囲を出力します。 入力:[0, 5, 0]になり[0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0]ます。 これは、配列を範囲をマッピングしているので、私たちは最初の範囲を作成する必要が[0, 5]あります、[0, 1, 2, 3, 4, 5]。その後、を使用し5てrangeを作成します[5, 0]。以前の範囲で追加された、これは私たちに与えます: [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0] 同じ数字が2つ並んだテストケースを見てみましょう。 [3, 5, 5, 3], ranges: [3, 5] = 3, 4, 5 [5, 5] = 5 (actually …

20
配列のミニマックスを計算する
アレイ検討xなど[1 5 3 4]と番号nたとえば、2。すべての長さ-書くnスライディングサブアレイを:[1 5]、[5 3]、[3 4]。配列のミニマックスをスライディングブロックの最大値の最小値として定義します。それで、この場合5, 5, 4、それは最小であるでしょう、それは4です。 チャレンジ 配列xと正の整数を指定すると、n上記で定義されたミニマックスを出力します。 配列xには正の整数のみが含まれます。nは常に少なくとも1、最大での長さになりxます。 計算は任意の手順で実行できますが、必ずしも上記で定義したとおりではありません。 コードゴルフ、最少バイトが勝ちます。 テストケース x、nその結果、 [1 5 3 4], 2 4 [1 2 3 4 5], 3 3 [1 1 1 1 5], 4 1 [5 42 3 23], 3 42

11
二乗差を最大化する
整数値の順列を検討1するがN。たとえば、次の例N = 4: [1, 3, 4, 2] このリストは循環的である1と見なし、そのように、および2隣接として扱われます。そのようなリストについて計算できる1つの量は、隣接する値の差の2乗の合計です。 (1-3)² + (3-4)² + (4-2)² + (2-1)² = 10 あなたの仕事は、正の整数を与えられて、この量を最大にする順列を見つけることNです。N = 4上記の例の場合、最適ではありません(実際、最小限です)。18次の順列(および他のいくつかの順列)の合計平方差を達成できます。 [1, 4, 2, 3] アルゴリズムは(のN)多項式時間で実行する必要があります。特に、すべての順列の差の合計を単純に計算することはできません。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 出力は、任意の便利で明確なフラットリストまたは文字列形式にすることができます。0toのN-1代わりに1toの値を持つリストを返すことを選択できますN。 標準のコードゴルフ規則が適用されます。 テストデータ この問題に対する優れた分析ソリューションがあります。たとえば、すべての有効なソリューションN = 10は次のリストと同等です(巡回シフトおよび反転まで)。 [7, 5, 6, 4, 8, 2, 10, 1, 9, 3] 私は(それがパターンを把握する、おそらく十分ですが)それを超えてあまりにも明らかにし、その代わりに任意のより多くの例を与える、あなたは結果が与えられたため、次の総乗違いがあることを確認することができますしたくありませんN。 N Total squared difference 1 0 2 …
19 code-golf  array-manipulation  permutations  restricted-complexity  code-golf  geometry  grid  code-golf  string  sorting  code-golf  simulation  code-golf  string  code-golf  arithmetic  code-golf  sorting  code-golf  string  code-golf  sorting  code-golf  interpreter  code-golf  number  kolmogorov-complexity  natural-language  conversion  code-golf  random  internet  code-golf  board-game  code-golf  number  sequence  code-golf  math  number  code-challenge  image-processing  classification  test-battery  code-golf  ascii-art  code-golf  tips  code-golf  arithmetic  code-golf  tips  code-golf  tips  javascript  code-golf  array-manipulation  code-golf  ascii-art  code-golf  string  binary  code-golf  arithmetic  linear-algebra  matrix  code-golf  sequence  code-golf  math  number  arithmetic  code-golf  primes  code-golf  math  code-golf  array-manipulation  counting  code-golf  arithmetic  code-golf  quine  code-generation  polyglot  code-golf  math  kolmogorov-complexity  trigonometry  code-golf  string  encryption 

11
ベクトルの有界累積和を計算する
ベクトルの累積合計は、以前のすべての要素の合計を取得するだけで計算されます。例えば: vec = [1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1] cum_vec = [1 2 3 2 1 0 -1 -2 -1 0 1 2 1] ここで、上限と下限を課します。つまり、上限に達した場合は累積合計の増加を停止し、下限に達した場合は累積合計の減少を停止します。簡単な例: upper_lim = 2 lower_lim = -1 vec = [1 1 1 -1 -1 -1 -1 -1 1 1 …

8
Lisp抽出ミッション
Lispスタイルの言語では、リストは通常​​次のように定義されます。 (list 1 2 3) このチャレンジのために、すべてのリストには正の整数または他のリストのみが含まれます。またlist、最初はキーワードを省略するため、リストは次のようになります。 (1 2 3) を使用して、リストの最初の要素を取得できますcar。例えば: (car (1 2 3)) ==> 1 そして、最初の要素が削除された元のリストを取得できますcdr: (cdr (1 2 3)) ==> (2 3) 重要:cdrリストに単一の要素がある場合でも、常にリストを返します。 (cdr (1 2)) ==> (2) (car (cdr (1 2))) ==> 2 リストは、他のリスト内に含めることもできます。 (cdr (1 2 3 (4 5 6))) ==> (2 3 (4 5 6)) …

13
洗練されたパーティション
整数の配列を考えます: [1, 0, 9, 1, 3, 8] このリストを連続したサブリストに分割する方法はたくさんあります。3つあります。 A: [[1, 0, 9], [1, 3, 8]] B: [[1], [0, 9], [1, 3], [8]] C: [[1, 0], [9, 1], [3, 8]] サブリストを結合してYからXを取得できる場合、パーティションYと別のパーティションXの改良版を呼び出します。 のB洗練もA同様です。最初の2つのサブリストと最後の2つのサブリストを結合して戻すと、が得られAます。しかしC、それは洗練されたものではありません。それから回復するにはA、9とを分割する必要があります。また、どのパーティションもそれ自体が洗練されたものです。1A サブリストまたは要素をいつでも再配置することは許可されていないことに注意してください。 チャレンジ 2つのパーティション(整数のリストのリスト)Xおよびが与えられY、Yがの洗練であるかどうかを判断しXます。 あなたは、パーティションのみから整数が含まれていることを仮定してもよい0の9包括的、。あなたはそれXをY同じリストのパーティションであると仮定してはなりません(そうでない場合、互いの改良でもありません)。Xおよび/またはY空であっても、空のサブリストが含まれることはありません。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 入力は、任意の便利な文字列またはリスト形式で取得できます。要素は1桁の整数のみであるため、サブリスト内の区切り文字を省略することもできますが、先頭0のsが可能なことを確認してください。あなたは取ることを選んでもよいXし、Y逆の順序で。 出力は、洗練されている場合は真実であり、そうでない場合は偽である必要Yがあります。X コードは、妥当なデスクトップマシンで1秒以内に以下の各テストケースを解決できる必要があります。(これは、単純なブルートフォースソリューションを回避するための単なる健全性チェックです。) これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 テストケース 各テストケースは、と書かれた独自の行にありX Yます。GolfScript / CJamスタイルの配列表記を使用して、水平方向のスペースを節約しています。 真実: [] [] [[0]] [[0]] …

8
アレイをジャンプ!
jump the arrayというワンプレイヤーゲームをプレイしましょう。プレイするには、整数の配列、たとえばのみが必要aです。ある位置から開始しi、各ターンで新しい位置にジャンプします。順番にn、 n偶数の場合、絶対位置にジャンプしa[i] mod length(a)、 nが奇数の場合、相対位置にジャンプします(i + a[i]) mod length(a)。 配列のインデックス付けはゼロから始まります。最初のジャンプをturn 0またはturn としてカウントできます1。これにより、異なるゲームができます。ゲームの状態空間は有限であるため(あなたの動きは自分の位置とターン番号のパリティによって決定されます)、もちろん最終的には偶数の長さのループに入ります。表すloop(a, i, b)最初のジャンプがターンとしてカウントされ、このループの長さ、b。 入力 aゲームをプレイする整数の空でない配列。 出力 pある位置から開始しi、最初のターンをかのいずれかとしてカウントする0場合1、最終的にlengthのループに入るような最大数2 * p。言い換えれば、あなたの出力は数字です max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] } ルール 機能または完全なプログラムを提供できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース [0] -> 1 [-213] -> 1 [1,3,12,-1,7] -> 1 [2,3,5,7,9,11,13,17,19] …

13
シェルピンスキー層
はじめに、そのような下に線を追加することにより、パターンのようなシェルピンスキーの三角形/\を作成することができます... ゆるい枝/または\2つの枝に再び分割されます/\。 ブランチの衝突は、その\/下に何も(スペースはありません)死んでしまいます。 これらの規則を繰り返すと、 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ etc... (ViHartによるインスピレーション) 正の整数Nを取り込んで、このパターンの最初のN行をstdoutに出力するプログラムまたは関数を作成します。必要以上に先行または後続のスペースはありません。 たとえば、入力が1出力の場合、 /\ 入力が2出力の場合 /\ /\/\ 入力が8出力の場合 /\ /\/\ /\ /\ /\/\/\/\ /\ /\ /\/\ /\/\ /\ /\ /\ /\ /\/\/\/\/\/\/\/\ 等々。 最小バイトのコードが優先されます。

30
繰り返される数字で配列を作成する
チャレンジ この質問のタスクは、nSTDIN、ARGV、または関数の引数を介して入力として正の整数(0より大きい)を取り、STDOUTまたは関数の戻り値を介して配列を出力するプログラムまたは名前付き関数を作成することです。 簡単に聞こえますか?今ここにルールがあります 配列は唯一の整数が含まれています1へn から1までの各整数は、各整数の値である回数n繰り返される必要があります。xx 例えば: 入力: 5 出力: [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] 配列はソートされる場合とされない場合があります。 これはコードゴルフなので、勝者はバイト単位の最短コードです。 ボーナス 0.5出力配列内の隣接する2つの整数が同じでない場合、スコアを乗算します。 たとえばn = 5、そのような構成の1つは [5, 4, 5, 4, 3, 4, 5, 2, 5, 3, 1, 2, 3, 4, 5]

24
トンネリングアレイを確認する
整数の配列があり、その負でない値が同じ配列内の他の位置へのポインターであり、それらの値がトンネルを表すことだけを想像してください。したがって、位置Aの値が正で位置Bを指している場合、トンネルの両端を表すには、Bも正で、位置Aを指している必要があります。そう: チャレンジ 整数の配列が与えられた場合、その配列がトンネリング配列であるという制限に準拠しているかどうかを確認し、trueyとfalseyに対して2つの異なる一貫した値を返します。 配列内の値は、トンネル以外の位置ではゼロ未満、トンネル位置ではゼロ以上になります。配列が1インデックスの場合、ゼロ値は非トンネル位置を表します。トンネル以外の値をチェックする必要はありません。 セルの正の値が自分自身を指している場合、それは偽です。AがBを指し、BがCを指し、CがAを指す場合、それは誤りです。正の値が配列の制限を超えている場合、それは偽です。 例 次の例は、0から始まります: [-1, -1, -1, 6, -1, -1, 3, -1, -1] Truthy (position 3 points to position 6 and vice versa) [1, 0] Truthy (position 0 points to position 1 and vice versa) [0, 1] Falsey (positions 0 and 1 point to themselves) [4, 2, …

8
シャッフルブロックで並べ替え
ブロックシャッフルソート ブロックは、ソートシャッフルリストをソートする(むしろ人工的な)方法です。例で示すように、次のように機能します。 [6, 1, 0, 3, 2, 4, -2, -1] Break list into contiguous blocks [6][1, 0][3, 2, 4][-2, -1] Sort each block [6][0, 1][2, 3, 4][-2, -1] Sort blocks lexicographically [-2, -1][0, 1][2, 3, 4][6] Concatenate [-2, -1, 0, 1, 2, 3, 4, 6] 連続ブロックへのパーティションは、任意に選択できます。ただし、ブロックのすべての選択が最後にソートされたリストを生成するわけではありません。 [6, 1, 0, 3, …

10
リストを最小限の行列に並べ替える
一意の厳密に正の整数のソートされていないリストが与えられた場合、最小限で2Dマトリックスにソートします。入力リストは複合長であることが保証されています。つまり、出力行列は必ずしも正方形ではなく、サイズがn x mとn,m > 1。 ここでの「最小ソート」とは、次のことを意味します。 リストを昇順で並べ替えます。 出力行列を可能な限りコンパクトにします-行列の次元の合計を最小化し20ます(たとえば、入力として入力要素の5x4場合、aではなくa または4x5output行列が必要です2x10)。 ソートされたリストの最初の要素から始めて、ソートされた数値を可能な限りマトリックスの左上まで圧縮します。 これは、リストを並べ替えてから、マトリックスの対角線に沿って左上からスライスすることと考えることができます。 例: 入力の1..20場合、出力は次のように5x4または4x5マトリックスです。 1 2 4 7 11 3 5 8 12 15 6 9 13 16 18 10 14 17 19 20 1 2 4 7 3 5 8 11 6 9 12 15 10 13 16 18 14 …

1
アドベントチャレンジ1:サンタが現在の金庫をアンロックできるように助けてください!
次へ>> 記述キーワード(検索用):2つの行列を同等にする、重複、配列、検索 チャレンジ サンタは過去にエルフがボールトからプレゼントを盗んだという歴史があったため、今年は非常に割れにくいロックを設計し、今年はエルフを締め出したようです。残念ながら、彼は組み合わせを失い、それを開く方法もわかりません!幸いなことに、彼はあなたにその組み合わせを見つけるプログラムを書くように依頼しました。それは最短のものである必要はありませんが、できるだけ早く見つける必要があります! 彼には非常に厳しいスケジュールがあり、非常に長い間待つ余裕はありません。スコアは、プログラムの合計ランタイムに、スコアリング入力に対してプログラムが出力するステップ数を掛けたものになります。最低スコアが勝ちます。 仕様書 ロックは1と0の正方行列です。1と0のランダムな配置に設定され、指定されたコードに設定する必要があります。幸いなことに、サンタは必要なコードを覚えています。 彼が実行できるいくつかのステップがあります。各ステップは任意の連続したサブマトリックスで実行できます(つまり、左上隅と右下隅で完全に囲まれているサブマトリックスを選択する必要があります)(非正方形のサブマトリックスにすることができます): 右に90度回転* 左に90度回転* 180度回転 各行n要素を右または左に循環(ラップ) 各列m要素を上下に循環(ラップ) 水平に反転 垂直に反転 主対角線で反転* メインの対角線を反転* *サブマトリックスが正方形の場合のみ もちろん、彼はマトリックス全体でこれらのステップを実行することもできます。1と0はマトリックス上でのみ交換できますが、正方形の値は直接変更できないため、1と0の数は開始構成と終了構成で同じです。 フォーマット仕様とルール 入力は、必要な妥当な形式の2つの正方行列(開始位置と終了位置)として与えられます。出力は、読み取り可能な形式のこれらの手順のシーケンスである必要があります。これはコードゴルフではないので、簡単に検証可能な形式にしてください。しかし、それは厳密な要件ではありません。必要に応じて、入力の行列の辺の長さを選択できます。 あなたのプログラムは私のコンピューターで実行され(Linux Mint、誰かが気にするならリクエストに応じて正確なバージョンの詳細が利用可能です:P)、コマンドラインで「Enter」を押してからコマンドが終了します。 テストケース 1 0 0 1 0 0 0 0 0 1 1 0 -> 0 0 0 0 0 1 1 0 -> 1 1 1 1 …

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