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

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

4
アレイ内の磁気プル
バックグラウンド 私は強力な磁石の列とそれらの間にたくさんの金属オブジェクトを持っています。磁石はどこに引っ張りますか? 入力 入力は負でない整数の配列で、少なくとも1つ含まれてい1ます。任意の合理的な形式を使用できます。 0配列のsは空のスペースを1表し、sは固定磁石を表します。他のすべての数字は、磁石によって引っ張られる金属のオブジェクトです。すべてのオブジェクトは、最も近い磁石に向かって引っ張られ(タイがある場合、オブジェクトは右に引っ張られます)、磁石または別のオブジェクトに当たるまでその方向に移動します。最終的に、すべてのオブジェクトが磁石の周りに集まっています。オブジェクトの順序は保持されます。 出力 出力は、すべてのオブジェクトが可能な限り最も近い磁石に引き寄せられた配列です。入力と同じ形式にする必要があります。 例 配列を考える [0,0,2,0,1,1,0,2,0,3,0,5,0,1,0] 左端2は、2番目の磁石と同様に、最初の磁石のペアに向かって引っ張られ2ます。34つのステップ離れて両方の方向に磁石を持っているので、それが右に引っ張られます。また5、右に引っ張られ3、磁石と磁石の間に入ります。正しい出力は [0,0,0,2,1,1,2,0,0,0,0,3,5,1,0] ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース [0,1,0] -> [0,1,0] [1,0,2,0,0,1,0] -> [1,2,0,0,0,1,0] [7,0,5,0,0,1,0] -> [0,0,0,7,5,1,0] [1,0,3,0,1,0,3,0,1] -> [1,0,0,3,1,0,0,3,1] [1,0,0,0,0,0,0,7,3] -> [1,7,3,0,0,0,0,0,0] [1,2,3,4,5,6,7,8,9,10,11,0,0,0,1] -> [1,2,3,4,5,6,7,0,0,0,8,9,10,11,1] [12,3,0,0,1,0,1,3,0,0,6,12,0,0,0,1] -> [0,0,12,3,1,0,1,3,6,0,0,0,0,0,12,1]

30
この整数シーケンスを出力するプログラムを探します(Robbersのスレッド)
これが強盗のスレッドです。警官のスレッドはここに行きます。 copsスレッドのタスクは、正(または負でない)整数を受け取り、別の数値(必ずしも整数ではない)を出力/返すプログラム/関数を作成することでした。強盗タスクは、この出力を生成するために警官が使用したコードを解読することです。 クラックされたコードは、同じ長さで、表示された文字が正しい位置にある限り、同一である必要はありません。言語も同じでなければなりません(バージョン番号は異なる場合があります)。もちろん、出力は同一でなければなりません。 強盗のソリューションではノーオペレーションを使用できます。 強盗スレッドの勝者は、2016年5月7日までに最も提出物をクラックしたユーザーです。同点の場合、最長の結合コードで提出物をクラックしたユーザーが勝ちます。 提出は次のようにフォーマットする必要があります。 言語、nn文字(回答へのリンクを含む)、警官のユーザー名 コード: function a(n) if n<2 then return n else return a(n-1) + a(n-2) end end 出力 a(0) returns 0 a(3) returns 2 オプションの説明とコメント。

18
座標とその質量のリストからの重心
これは月曜日の朝の簡単なチャレンジです... 以下の最小バイト数で関数またはプログラムを作成します。 入力として[x,y]座標のリストを取ります 入力として[x,y]座標のそれぞれの質量のリストを取ります 計算された重心をの形式で出力します[xBar,yBar]。 注意: 配列が使用されている限り、入力は任意の形式で取得できます。 重心は、次の式で計算できます。 平易な英語で... を見つけるにはxBar、各質量にそれぞれのx座標を乗算し、結果のリストを合計し、すべての質量の合計で除算します。 を見つけるにはyBar、各質量にそれぞれのy座標を乗算し、結果のリストを合計して、すべての質量の合計で除算します。 簡単なPython 2.7の例: def center(coord, mass): sumMass = float(reduce(lambda a, b: a+b, mass)) momentX = reduce(lambda m, x: m+x, (a*b for a, b in zip(mass, zip(*coord)[0]))) momentY = reduce(lambda m, y: m+y, (a*b for a, b in zip(mass, zip(*coord)[1]))) xBar …

3
四角いペグを四角い穴に入れる
ニューヨークタイムズのこのグラフィックのデザインには興味をそそられました。アメリカの各州は格子状の正方形で表されています。正方形を手動で配置したのか、実際には隣接する状態の位置を表すために(ある定義の下で)正方形の最適な配置を見つけたのか疑問に思いました。 コードは、状態(または他の任意の2次元形状)を表すために正方形を最適に配置するという課題の小さな部分を担います。具体的には、形状のすべての地理的中心または重心がすでにあると仮定します。便利な形式であり、このようなダイアグラムでのデータの最適な表現は、形状の重心からそれらを表す正方形の中心までの合計距離が最小であり、それぞれに最大で1つの正方形があること可能な位置。 コードは、任意の便利な形式で0.0〜100.0(両端を含む)の浮動小数点XおよびY座標の一意のペアのリストを取得し、データを表すために最適に配置されたグリッド内の単位正方形の非負整数座標を出力します、順序を保存します。複数の正方形の配置が最適な場合、最適な配置のいずれかを出力できます。1〜100組の座標が与えられます。 これはコードゴルフで、最短のコードが勝ちます。 例: 入力: [(0.0, 0.0), (1.0, 1.0), (0.0, 1.0), (1.0, 0.0)] これは簡単です。グリッドの正方形の中心は0.0、1.0、2.0などにあるため、これらの形状はすでにこのパターンの正方形の中心に完全に配置されています。 21 03 したがって、出力は正確にこれらの座標である必要がありますが、整数として、選択した形式で: [(0, 0), (1, 1), (0, 1), (1, 0)] 入力: [(2.0, 2.1), (2.0, 2.2), (2.1, 2.0), (2.0, 1.9), (1.9, 2.0)] この場合、すべての形状は(2、2)の正方形の中心に近くなりますが、2つの正方形を同じ位置に配置することはできないため、押し出す必要があります。図形の重心からそれを表す正方形の中心までの距離を最小化すると、次のパターンが得られます。 1 402 3 したがって、出力はになります[(2, 2), (2, 3), (3, 2), (2, 1), (1, …

14
すべてのベースパリンドロームは私たちのものです
回文が含まれる塩基nのシーケンス番号を生成します(OEIS A126071)。 具体的には、シーケンスは次のように定義されます。数値を指定し、nそれをベースafor a = 1,2, ..., nで表現し、それらの式が回文的である数をカウントします。「パリンドローム」はa、原子単位として式の基数を反転することで理解されます(ありがとう、@ MartinBüttner)。例として、以下を検討してn= 5ください。 a=1:式は11111:パリンドローム a=2:式は101:パリンドローム a=3:式は12:回文ではない a=4:式は11:パリンドローム a=5:式は10:回文ではない したがって、の結果はn=5です3。OEISは(thanks、@beaker)の2, ..., n+1代わりにベースを使用することに注意してください。base とexpressionの式は常に回文的であるため、これは同等です。1, ..., n1n+1 シーケンスの最初の値は 1, 1, 2, 2, 3, 2, 3, 3, 3, 4, 2, 3, 3, 3, 4, 4, 4, 4, 2, 4, 5, ... 入力は正の整数nです。出力は、nシーケンスの最初の項です。 プログラムはn、内部計算のデフォルトのデータ型によって引き起こされる制限まで、理論的に機能するはずです(十分な時間とメモリが与えられます)。 すべての機能が許可されています。最も少ないバイト数が優先されます。

3
式を括弧で囲む
最近、新しい言語を書いています。操作の順序を処理する必要を避けるために、各式を適切に括弧で囲んで、これを完全に回避しています。 括弧は40〜41の文字コードであるため、コードはできるだけ短くする必要があります。 例 1+2*3 (1+(2*3)) 2*(3+4) (2*(3+4)) 2*3/4+3 (((2*3)/4)+3) 342*32/8 ((342*32)/8) ルール 処理する必要がある操作は*、/(乗算)、(除算)、+(加算)、および-(減算)のみです。 操作の順序は次のとおりです。 括弧 乗算、除算 加算、減算 あなたは左右に行くことを好むべきです 入力番号は常に正の整数になります(ボーナスを参照) ボーナス 否定を処理する場合は-20%: 3+-5 (3+(-5)) 入力内にスペースを入れることを許可する場合、-5%: 3 + 4 (3+4) 入力で小数を処理できる場合は-10%: 1+.12 (1+.12) 1+0.21/3 (1+(0.21/3)) 500バウンティ:無名 / ブロックで答えを書くことができた場合

6
D&Dポイント購入費用
Dungeons&Dragonsキャラクターを作成する場合、ローリングアビリティスコアの代わりに、ポイントバイと呼ばれるパワーバジェット内でそれらを割り当てることができます。能力スコアが高いほど、特に上限に向かってより多くのポイントがかかります。8のスコアは無料です。スコアを1上げると1ポイントかかります。ただし、15または16に上げると2ポイント、17または18に上げると3ポイントかかります。 +-------+------+ | Score | Cost | +-------+------+ | 8 | 0 | | 9 | 1 | | 10 | 2 | | 11 | 3 | | 12 | 4 | | 13 | 5 | | 14 | 6 | | 15 | 8 | | 16 …

9
太陽はどこまでですか?
前書き tl; dr 現在の地球から太陽までの距離を継続的に出力します。 簡単に言えば、太陽の周りの地球の軌道は楕円です。したがって、両方の実際の距離は常に変化しています。この距離は、次の式を使用して特定の日に計算できます。 方程式は、次のパート2に分割できます。 11 AU(天文単位)を表し、等しい149,597,870.691 km 0.01672地球と太陽の間の 軌道離心率です cosもちろんコサイン関数ですが、引数はラジアンではなく度単位です 0.9856である360°/ 365.256363日、1年間で全回転、365.256363平均太陽日で恒星年の長さであり、 day 年の日です [1-365] 41月4日から6日までの近日点へのオフセットを表します 数式は1日かかりますが、この課題の目的である継続的な出力のためには、より正確でなければなりません。翌日まで何も起こりません。1のように、過去の時間の割合を現在の日に単純に加算します。 day + (h * 3600 + m * 60 + s) / 864 / 100 いくつかの例: 1月1日23:59:59 1.99998842592593 1月1日、18:00:00 1.75 1月1日、12:00:00 1.50 1月1日、06:00:00 1.25 入力 このチャレンジには入力がありません。 言語が現在の時刻を取得できない場合は、プログラムへの入力として取得できます。有効な入力は、言語に最適なタイムスタンプまたは完全な日時文字列です。現在の日だけを渡すことはできません(51月5日や5.256時の同じ日など)。 出力 地球から太陽までの現在の距離を出力します。 の値を出力しますkm。 少なくとも1秒ごとに値を更新します。 …

5
8ビットチェスピクセルカウント
ゴール コンピューター化されたチェスゲームをプレイしています。ディスプレイは白黒のみで、ピクセルは分厚い。白いピクセルは黒いピクセルに比べて多くの電力を消費するため、二酸化炭素排出量を心配しています。 正方形とチェス表記のピースを指定すると、正方形に表示される白いピクセルの数を返します。 解決策は、関数または完全なプログラムの形式である場合があります。 入力 以下を定義する4文字の文字列: 一つwb白または黒の部分のため。(通常のチェス表記法の一部ではありませんが、このパズルには必須です。) 一つのKQBNRP王、王妃、ビショップ、ナイト、ルークやポーンのために。 abcdefgh作品のファイルの1つ(列)。 12345678作品のランク(行)の1つ。 出力 チェスの駒とその下にある正方形の描画に使用される白いピクセルの数。 必要条件 チェスの正方形は8x8ピクセルで、すべて白またはすべて黒です。 a1 黒い四角です。 白いチェスの駒は、黒の輪郭で白く描かれています。黒い部分は白い輪郭の黒い部分です。すべてのピースには、下にある正方形を示す透明なピクセルがあります。 入力では大文字と小文字が区別されます。 入力が有効であると仮定します。 チェスの駒には次のようなスプライトがあります。 .作品の色です。 #作品の色の逆です。 /基になる正方形の色です。 King Queen Bishop //////// //////// //////// ///#.#// /#.#.#.# ///#.#// //#...#/ //#...#/ //##..#/ ///#.#// ///###// //#.#.#/ ///###// //#...#/ ///###// //#...#/ //#...#/ //#...#/ //#...#/ //#...#/ //#...#/ //#.#.#/ //#.#.#/ //#.#.#/ …

30
サンタはいつ地下室に入るのですか?(AOC 1日目)
Advent of Codeの初日の2番目の部分を、作成者の許可を得て複製しています。 サンタは大きなアパートの建物でプレゼントを配達しようとしていますが、正しい階を見つけることができません-彼が得た方向は少し混乱しています。彼は1階(フロア0)から開始し、一度に1文字ずつ指示に従います。 開き括弧、(は彼が1フロア上に移動することを意味し、閉じ括弧)、は彼が1フロア下に移動することを意味します。 アパートの建物は非常に高く、地下室は非常に深いです。彼は最上階や最下階を見つけることはありません。 一連の指示が与えられたら、地下室に入室させる最初のキャラクターの位置を見つけます(階-1)。 例として: 入力する)と、文字位置1で地下室に入ります。 入力する()())と、彼は文字位置5で地下室に入ります。 ソリューション1797を生成する長い入力をここに示します。 これはコードゴルフであるため、最短のソリューションが勝ちです!
20 code-golf 

18
クロス積を見つける
外積 2つの3次元ベクトルの及びユニークベクターでように:a⃗ a→\vec ab⃗ b→\vec bc⃗ c→\vec c c⃗ c→\vec c双方に直交する及びa⃗ a→\vec ab⃗ b→\vec b 大きさによって形成される平行四辺形の面積に等しい及びc⃗ c→\vec ca⃗ a→\vec ab⃗ b→\vec b 方向、、および、そのためには、続く右手の法則を。a⃗ a→\vec ab⃗ b→\vec bc⃗ c→\vec c クロス積にはいくつかの同等の式がありますが、1つは次のとおりです。 a⃗ ×b⃗ =det⎡⎣⎢i⃗ a1b1j⃗ a2b2k⃗ a3b3⎤⎦⎥a→×b→=det[i→j→k→a1a2a3b1b2b3]\vec a\times\vec b=\det\begin{bmatrix}\vec i&\vec j&\vec k\\a_1&a_2&a_3\\b_1&b_2&b_3\end{bmatrix} ここで、i⃗ i→\vec i、j⃗ j→\vec j、およびk⃗ k→\vec kは、1次元、2次元、および3次元の単位ベクトルです。 チャレンジ 2つの3Dベクトルが与えられたら、完全なプログラムまたは関数を記述して、それらの外積を見つけます。特に外積を計算する組み込み関数は許可されていません。 …

2
言葉の視覚化
小文字のみで構成される単語がある場合、次の操作を行います。 各文字について、アルファベットの位置の素因数分解を取得します。 各素因数pについて、辺の長さpのひし形を描き、ひし形の中央に文字を貼り付けます。 最大のダイヤモンドは中央にあり、後続の小さなダイヤモンド(最大から最小)が下部または上部に移動します。 注:文字aには1の横の長さを使用します。 例:猫 c:3 = 3 a:1 = 1 t:20 = 5 * 2 * 2 ダイアグラム: . . . . t . . . . . . . . . . . . . . . . . . . . c . .a. . t …

9
Repunitsの新しい主要な要因
背景 人々はチャットで素因数分解について話していましたが、私たちはレプユニットについて話していました。Repunitsはrepdigitsとして知られる数字のサブセットです。これは、222またはなどの繰り返し数字のみで構成される数字ですが、repunitsはのみで4444444444444444構成されます1。 最初のカップルrepunits従ってあり1、11、111など、これらによって参照されるR Nので、R 1 = 1、R 2 = 11、等、及び式によって生成されるR(n) = (10^n - 1)/9と、n > 0。 これらのレプユニット番号の素因数分解は、OEISのシーケンスA102380に従います。例えば: R 1 = 1 R 2 = 11 R 3 = 111 = 3 * 37 R 4 = 1111 = 11 * 101 R 5 = 11111 = 41 * 271 R …

11
数値リストコンバーターを作成する
あるプログラムから別のプログラムに数字のリスト(ベクトル、配列...)をコピーアンドペーストしたいのですが、あなたが数字を持っている形式は必要な形式と一致しません? たとえば、MATLABでは、次のようなスペースで区切られたリストを使用できます。 [1 2 3 4 5] (you can also have it comma separated, but that's not the point) Pythonでは、そのリストを有効な入力にするためにコンマを挿入する必要があるため、次のように変換する必要があります。 [1, 2, 3, 4, 5] それを機能させるために。C ++では、次のようなものが必要になる場合があります。 {16,2,77,29} 等々。 すべての人の生活を簡素化するために、任意の形式のリストを取得*し、別の指定された形式のリストを出力するリストコンバーターを作成しましょう。 有効な括弧は次のとおりです。 [list] {list} (list) <list> list (no surrounding brackets) 有効な区切り文字は次のとおりです。 a,b,c a;b;c a b c a, b, c <-- Several …

18
Salesforceの15文字のIDを18文字に変換します
Salesforce CRM、すべてのオブジェクトは、大文字と小文字が区別される15文字の英数字のIDを持っています。好奇心urious盛な人は、実際にはbase-62番号です。ただし、データの移行と統合に使用されるツールは、大文字と小文字の区別をサポートする場合としない場合があります。これを克服するために、IDは大文字と小文字を区別しない18文字の英数字IDに安全に変換できます。そのプロセスでは、3文字の英数字のチェックサムがIDに追加されます。変換アルゴリズムは次のとおりです。 例: a0RE000000IJmcN IDを3つの5文字のチャンクに分割します。 a0RE0 00000 IJmcN 各チャンクを逆にします。 0ER0a 00000 NcmJI すべてのチャンクの各文字を1大文字の場合、または0そうでない場合は置き換えます。 01100 00000 10011 5桁の2進数ごとにi、位置の文字を取得しますi、大文字のアルファベットと数字の0〜5(ABCDEFGHIJKLMNOPQRSTUVWXYZ012345)を連結ます。 00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5` 降伏: M A T これらの文字、チェックサムを元のIDに追加します。 出力: a0RE000000IJmcNMAT 入力として15文字の英数字(ASCII)文字列を取り、18文字のIDを返すプログラムまたは関数を作成します。 入力の検証は、この質問の範囲外です。プログラムは、無効な入力で値を返すかクラッシュする場合があります。 このような式として(この課題些細な作りのSalesforce propretiary言語機能を使用しないでくださいCASESAFEID()変換、IdにString APEX&Cで)。 テストケース …
20 code-golf  string 

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