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

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

1
探求者
私は最近、本当に奇妙な不規則なチェス盤を手に入れました。正方形はあちこちにあり、すべてがつながっているわけでもありません。少なくとも通常のグリッドに配置されています。チェスのルールを調整してボード上でプレイできるようにしたいのですが、まずは実際にボード上のどこにでも行けるピースが必要です。それはリーパーが最善の策だと思われます。 リーパーは、騎士の妖精のチェスの一般化です。Leapersは、二つの整数でパラメータ化されたm個及びN及び移動することができるM個の、別の一方向に正方形をし、n個のいずれかの垂直方向に正方形。標準的なナイトでは、(m、n)=(2、1)があります。移動全体は単一のジャンプと見なされるため、ターゲットに向かう途中のマスは空である必要はなく、存在する必要さえありません。 チャレンジ ボードの一部である正方形を表す正の2D整数座標のリストの形式で「チェス盤」が与えられます。あなたの仕事は、十分な動きがあれば、ボード上の任意のマスに到達できるリーパーを見つけることです。 いくつかの例を見てみましょう。標準のチェス盤は、8x8の正方形の規則的なグリッドを使用します(このチャレンジでは、白い正方形と黒い正方形を区別しません)。 ######## ######## ######## ######## ######## ######## ######## ######## 標準のナイトはそれらすべてに到達できるため(2, 1)、有効な出力になります。ただし、(1, 1)たとえば、このようなピースはどこから開始しても正方形の半分にしか到達できないため、有効ではありません。(1, 0)一方、すべての正方形は直交して接続されているため、有効な出力にもなります。 次のような不規則なボードがある場合: # # # # # # # # # # # そして、可能な解決策がある(1, 1)と(3, 1)。次のような完全に切断された領域を持つボードを使用することもできます。 #### #### #### #### #### #### #### #### 標準の騎士(2, 1)は、ここですべての正方形に到達できますが、実際には唯一の解決策です。 最後に、次の単純なボードには、跳躍者が完全に到達することはできません。 # ## 入力形式はASCII表現ではなく、代わりに座標のリストになることに注意してください。たとえば、上記の2番目の例は次のように指定できます。 [[1, 1], [5, 1], …

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]

5
ハードオブジェクトまたはソフトオブジェクトはもっとありますか
What-Ifブックのオープニングに触発されました。 入力は、文字列、文字列のリストなどとしてのスペースの長方形で、#内部にで作成されたオブジェクトがあります。 ######## # # ######## ### #### ### #### ### オブジェクトは常に交差せず、触れない長方形になります。ソフトオブジェクトは#、中央がで埋められておらず、境界のみであるオブジェクトとして定義されます。ハードオブジェクトは、塗りつぶされたオブジェクトです。幅または高さのあるオブジェクト<=2はハードと見なされます。すべてのオブジェクトはハードまたはソフトです。 入力にさらに硬いオブジェクトがある"Hard"場合、output 、より柔らかい場合、output "Soft"、それらが等しい場合、output "Equal"。 これはcode-golfなので、バイト単位の最短コードが勝ちです! テストケース これらのケースは完全な入力ではなく、各オブジェクトを特徴付けるべきものです。実際の入力は、質問の上部にあるascii-artのようになります。 ハード # #### ## ## ########## ########## ########## 柔らかい ### # # ### ################### # # # # # # ################### #### # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

3
PPCGシニアいたずら
すぐにフルサイトに卒業します。卒業前にやるべきことはあと1つです。古典的な「廊下を水で満たす」ギャグを変更すべきだと思います。 チャレンジ プログラムはテキストを読み、そのテキストを出力し、上下逆さまの水で覆います。水の逆さまのカップは次のようになります:/~\ これらのカップは、入力の空白にのみ配置でき、カップの3文字すべてが非空白文字の真上にあるようにのみ配置できます(そうしないと水がこぼれます)でる!)。カップを他のカップの上に積み重ねることはできません。カップは利用可能なすべての開口部に配置する必要があり、すべての入力は空白の無限フィールドに囲まれていると想定されています。 入力がスペースのある長方形に埋め込まれていると仮定することができます。 誰にも気付かれずに、いたずらをすばやく解消する必要があるため、各言語で最も少ないバイトが勝ちます。 テストケース 入力: ____________________________________________ / ___ / ___ / ______/ ________/ / /__/ / /__/ / / / /_______ / _______/ _______/ / / //__ / / / / / / /_____/ /___/ / /___/ /___/ /_________/___________/ 出力: /~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\/~\ ____________________________________________ / ___ / ___ / …

20
文字列のヒストグラムエントロピー推定を計算します
特定の文字列のシャノンエントロピーを推定するプログラムまたは関数を作成します。 文字列にn個の文字、d個の 個別の文字、x iがi番目の個別の文字、P(x i)が文字列に出現する確率である場合、その文字列のシャノンエントロピー推定は次のようになります。 このチャレンジでの推定では、文字列内で文字が出現する確率は、出現回数を文字の総数で割ったものであると想定しています。 回答は、ピリオドの後に少なくとも3桁まで正確でなければなりません。 テストケース: "This is a test.", 45.094 "00001111", 8.000 "cwmfjordbankglyphsvextquiz", 122.211 " ", 0.0

19
階段を作りましょう
初心者には十分な(半)簡単な課題がありません。ますます多くの簡単なものがすでに採用されています。それで、私は初心者が達成できるかもしれない何かを考え出そうとしましたが、それは複製ではありません。 入力: OSの改行(つまり\r\n)で区切られた単一の文字列、 または複数の文字列を含む配列。 出力- 階段: アルファベットおよび数字以外のすべての記号を削除します。残っているのはだけです[A-Za-z0-9]。そして、「階段を作る」。基本的には、長さの順に、一番上が一番小さく、一番下が一番大きい順に並べます。 チャレンジルール: 2つの文字列の長さが等しい場合、それらを1つの大きな文字列として互いにマージします(順序は関係ないため、最初から最後まで、または最後から最初まで、どちらかを選択できます)。 上記のルールは、マージされた文字列の長さが同じ場合にスタックできます(テストケース2を参照)。 一般的なルール: 入力はSTDINで、ASCII文字のみが含まれます。そして、出力はSTDOUTです。 出力の大文字と小文字は、入力と同じでなければなりません。 各サブミッションは、メソッド/関数だけでなく、コンパイルおよび実行できる完全なプログラムでなければなりません。編集:私はかなり新しいので、おそらく自分で完全なプログラムを好むとしても、今後はデフォルトを使用する方が確かに良いでしょう。既に完全なプログラムを投稿したすべての人に申し訳ありません。気軽に編集してください。次回チャレンジ中に投稿を変更しないようにします。 これはcode-golfであるため、バイト単位の最短回答が優先されます。私はおそらく今から一年で最短回答を受け入れます。 code-golfの回答が、C#などのゴルフ用の非codegolf言語を投稿することを妨げないようにしてください!プログラミング言語の最短回答を考えてみてください。 この質問よりも新しい言語を使用してください。 テストケース: 入力1: This is a sample text, that you will have to use to build stairs. The wood may be of excellent quality, or pretty crappy almost falling apart and filled with termites. …

3
ハンガリー語のアルファベット順
古いスペイン語のアルファベット順よりもさらに挑戦したい人のために、ハンガリー語のアルファベット順を見てみましょう。 a、á、b、c、cs、d、dz、dzs、e、é、f、g、gy、h、i、í、j、k、l、ly、m、n、ny、o、ó、 ö、ő、p、q、r、s、sz、t、ty、u、ú、ü、ű、v、w、x、y、z、zs 実際には、q、w、xおよびyハンガリー語の単語で使用されていないが、彼らは外来語と外国名に含まれています。ハンガリー語のアルファベットの一部ではない外国語のアクセント付き文字(などñ)は、アクセントなしの文字と同じ優先順位を持っていますが、この課題については無視します。 要約されたルール: ダイグラフ(cs、szなど)およびトリグラフ(dzs)は、それ自体が文字であると見なされます。 cudar cukor cuppant csalit csata :同じ有向グラフまたはトリグラフは言葉でお互いの直後に2回出現する場合、それらは簡略化された方法で書かれているssz代わりにszsz、ddzs代わりのdzsdzsが、非単純化順序が使用されているアルファベット順のため。例えばkasza、< kaszinó、< kassza、ためkasszaとして使用されるk+ a+ sz+ sz+ a発注のために。複合語の場合、単語で非契約バージョンを見つけることができます。 kasza kaszinó kassza kaszt nagy naggyá nagygyakorlat naggyal nagyít 大文字化は問題ではありませんが、大文字化しないと2つの単語がまったく同じになる場合は例外です。 jácint Jácint Zoltán zongora アクセント母音の短い及び長いバージョンが同じ優先度を有する(a - á、e -é、i - í、o - ó、ö - ő、u - ú ü - ű)、単一の例外を除いて2つの単語が他とまったく同じであるならば、短母音は長母音優先を有します。ウムラウト(öおよびü)を持つ母音は、oおよびから完全に異なる文字であることに注意してくださいu。 Eger egér író …

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

6
安定したゲームオブライフ
チャレンジ: 0と1のマトリックス(または2D配列)が与えられた場合、Conwayのゲームオブライフが安定状態に到達するまでのステップ数を出力します。1に到達しない場合は-1を出力します。安定状態とは、各ステップでセルがオンまたはオフにならない状態です。ゲームは、指定されたマトリックスで実行され、上部と下部が接続され、側面が接続されている必要があります。(つまり、4x3トーラス上で実行される4x3マトリックスが与えられた場合)入力マトリックスは15x15より大きくなりません。 注:マトリックスが安定した状態で開始する場合、出力は0になります。 サンプル: 入力: [[0,0,0], [0,1,1], [0,1,0]] 出力: 2 プロセス:(表示する必要はありません) [[0,0,0], [0,1,1], [0,1,0]] [[1,1,1], [1,1,1], [1,1,1]] [[0,0,0], [0,0,0], [0,0,0]] 入力: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] 出力: 2 プロセス: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] [[0,0,0,0], [0,1,0,1], [0,0,0,0], [0,1,0,1]] [[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]] 入力: [[0,1,0,0], [0,1,0,0], [0,1,0,0], [0,0,0,0]] 出力: -1 プロセス: [[0,1,0,0], [0,1,0,0], …

27
EとE
あなたの仕事は、5つの入力が与えられたときに、下の文字「E」の形をしたASCIIアートを表示することです。 例: 入力:(7,2,+,|,-注:この正確な入力形式に従う必要はありません。使用しない場合は、独自の入力形式の仕組みを説明する必要があります) 説明: 7 左端と右端の文字を含む合計幅。 2 垂直文字の数。 + 端に表示する文字。 | エッジの間に垂直に表示される文字。 - 水平に表示する文字。 上記の例の出力: +-----+ | | +-----+ | | +-----+ 他の例: 入力: 7,2,@,|,- 出力: @-----@ | | @-----@ | | @-----@ 入力: 7,2,+,|,# 出力: +#####+ | | +#####+ | | +#####+ 入力: 8,3,+,|,# 出力: +######+ | | | …

30
Nより小さい奇数の二乗数を合計します
入力よりも小さい奇数の二乗和(OEIS#A016754)を出力するプログラムまたは関数を作成します。 n シーケンスの最初の44の数字は次のとおりです。 1, 9, 25, 49, 81, 121, 169, 225, 289, 361, 441, 529, 625, 729, 841, 961, 1089, 1225, 1369, 1521, 1681, 1849, 2025, 2209, 2401, 2601, 2809, 3025, 3249, 3481, 3721, 3969, 4225, 4489, 4761, 5041, 5329, 5625, 5929, 6241, 6561, 6889, 7225, 7569 シーケンスの式はa(n) = ( …

2
チャットPingカウンターを書く
あなたの仕事は、チャットメッセージのリストを指定して、各人がpingされる回数をカウントするプログラムを作成することです。そのため、私は誰もがどれだけ人気があるかを知ることができます。しかし、私はひそかにそれをしなければならないので、コードを隠すことができるように、できるだけ小さくする必要があります。 スペック 入力は2タプルのリストで、各アイテムはの形式("username", "message")です。 別のユーザーへのping @は、そのユーザーを明確に参照する3つ以上の文字が続くものとして定義されます。 ただし、返信を検討する必要もあります。返信は:messageid、スペースで始まります。 最初のメッセージにidがある0と仮定して、順番に進みます。 各ユーザーを出力し、各ユーザーに何回pingを送信したかを伝えます。 出力は、任意の順序/合理的な形式にすることができます。 これはcode-golfなので、バイト単位の最短コードが勝ちです! テストケース [["AlexA.", "I am wrong"], ["Quartatoes", "@Alex you are very wrong"], ["AlexA.", ":1 I am only slightly wrong"]] AlexA.: 1 Quartatoes: 1 [["Doorknob", "I have never eaten an avocad."], ["AquaTart", ":0 I will ship you an avocad"], ["AlexA.", ":0 …

3
円上のテキスト
可能な最小半径を持つ離散円の周りに入力文字列を印刷するプログラムまたは関数を作成します。たとえば、inputのThis is an example場合、プログラムは次を出力する必要があります。 a si n s i e h x T a m p le サークル生成 あなたは使用しなければならない中点円アルゴリズムを離散円の各点の座標を計算します。このウィキペディアのページで、このアルゴリズムを実装する方法の例を見つけることができます。 アルゴリズムの擬似コードは次のとおりです(WikipediaのCの例に基づいています)。 integer x = radius integer y = 0 int decisionCriterion = 1 - x while y <= x point at coordinates (x,y) belongs to the circle // Octant 1 point …

5
Stack Exchangeサイトのアイコンには何人のキャラクターがいますか?
独自のデザインをまだ持っていないStack Exchangeサイトの名前を考えて、アイコンにASCII文字(非ASCII文字は個別にカウントされる)の数を決めます。コードでは、次の4つのケースを区別する必要があります。 1文字: Astronomy Beer Freelancing Health History Law Music: Practice & Theory Parenting The Great Outdoors Writers 2文字: 3D Printing Amateur Radio Biblical Hermeneutics Bitcoin Board & Card Games Buddhism Chinese Language Coffee Community Building Computational Science Computer Graphics Data Science Earth Science Ebooks Economics Emacs Engineering Expatriates French …

4
区切りのない文字列で不足している番号を見つける
課題は、区切りのない整数の文字列で欠落している数を識別することです。 数字の文字列が与えられます(有効な入力は正規表現に一致します^[1-9][0-9]+$)。文字列は整数のシーケンスを表します。たとえば、1234567891011。シーケンスのすべての数字は、範囲内にあるから1と2147483647包括的。 シーケンスは一連の数字で、各数字はその前の数字よりも1つ大きくなっています。ただし、このシーケンスには、シーケンスから欠落している番号が1つだけ含まれている場合があります。指定された文字列には、シーケンスから欠落している数値が含まれていない可能性もあります。文字列には、シーケンスから少なくとも2つの数字が常に含まれます。 コードは、欠損値を出力または返す必要があります。欠損値が見つからなかった場合0は、(これは0偽の値ではなく-です) 有効な入力とその出力/戻り値は次のとおりです。 input output actual sequence (for refrence) 123467 5 1 2 3 4 _ 6 7 911 10 9 __ 11 123125126 124 123 ___ 125 126 8632456863245786324598632460 8632458 8632456 8632457 _______ 8632459 8632460 123 0 1 2 3 8632456863245786324588632459 0 8632456 8632457 8632458 8632459 これはすべて入力として「文字列」として説明されていますが、言語が任意の大きな数値を処理できる場合(dcおよびmathematica、私はあなたを見ています)、入力はコードを簡単に。 …

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