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

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

28
これらの識別子は同等ですか?
言語Nimでは、識別子を区別するための規則は、他のほとんどの言語よりもわずかに緩和されています。これらのルールに従う場合、2つの識別子は同等であるか、同じ変数に対応します。 両方の最初の文字は同じです (大文字と小文字が区別されます) 両方の文字列が同じである(場合に敏感な)除去した後、すべてのインスタンスの文字を-と_ チャレンジ Nim識別子を表す2つの文字列を受け取り、上記のルールで同等であるかどうかに基づいてtrueまたはfalseの値を出力するプログラム/関数を作成します。 仕様書 標準のI / Oルールが 適用されます。 標準的な抜け穴は禁止されています。 文字列にはASCII印刷可能文字のみが含まれます。あなたはしていない、それは有効な識別子だかどうかを確認する必要があります。 文字列は、2つの個別の入力、文字列のリストなどとして使用できます(ドリルを知っています)。 空の文字列を処理する必要はありません。 出力は、真偽値と偽値の両方で一貫している必要があります。 この課題は、すべての言語で最短のアプローチを見つけることではなく、各言語で最短のアプローチを見つけることです。 あなたのコードがされるバイト数で得点特に指定がない限り、通常はエンコーディングUTF-8で、。 このタスクを実行する組み込み関数は許可されますが、組み込みに依存しないソリューションを含めることをお勧めします。 「実用的な」言語であっても説明が奨励されます。 テストケース Input Output count, Count falsey lookMaNoSeparator, answer falsey _test, test falsey test, tset falsey aVariableName, a_variable_name truthy numbers_are_cool123, numbersAreCool123 truthy symbolsAre_too>_>, symbols_areTOO>> truthy Ungolfedリファレンス実装 これはNimで書かれています。 import strutils, re proc …

22
行列入力を簡素化する!
マトリックスに関連するいくつかの課題を書きましたが、すべての場合に共通するのは、マトリックスを表現するときに、例とテストケースの両方で、次のような形式を使用することです。 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 これは、多くの言語では面倒な形式である可能性があります。 チャレンジ: 入力としてtopで指定された形式の行列を取得できるプログラム/関数を作成し(この投稿から直接コピー/貼り付け)、以下に示す他の3つの従来の形式すべてで同じ行列を出力します。 入力形式: さまざまな数のスペースで区切られた数字、および行を表す改行(テストケースを参照)。 数字間のスペースの数は、一貫しているとは限りません。ただし、各列の最後の桁が揃っていると想定することもできます(それが役立つ場合)。 整数と浮動小数点の両方があり、それらは正、負、またはゼロです。マトリックスには、整数と浮動小数点数が同時に含まれません。 負の浮動小数点数のマイナスと小数点を含めて、10文字より長い数字はないと想定できます。 各行と各列に同じ数のエントリがあると仮定できます。 空の入力マトリックスはありませんが、単一の数値、または行または列が1つだけのマトリックスを使用できます。 これらの場合、テストケースに示されている出力形式から選択できます。 プログラム/関数は、この投稿から直接コピーされ、インタープリターに貼り付けられた場合(STDINまたは関数の引数または同等のものとして)入力を処理する必要があります。マトリックスの前後に、好きなもの(括弧、引用符、括弧)を置くことができますが、マトリックスを変更できない文字列(改行を含む)と見なす必要があります。 明確にするために:関数/プログラムが呼び出さfれ、マトリックスが次のとおりであると仮定します。 1 -2 3 5 6 7 次に、このような関数引数として行列を与えることができます(そして他の無限に多くのオプション): f(1 -2 3 5 6 7) f([1 -2 3 5 6 7]) f("""1 …

4
四辺形を分類する| 数学の試験で私を助けてください!
助けて!私の数学の試験はすぐに来て、私は勉強しませんでした!1試験の一部は、頂点座標を指定して四角形を分類することです。残念ながら、その方法はわかりません。2 だから、あなたの挑戦は私のためにこれを行うプログラムを書くことです。そうすれば私は失敗しません! チャレンジ 3つの頂点が同一直線上にない4つの頂点が与えられた場合、それらの4つの頂点によって形成される四辺形の最も具体的な分類を決定します。 「最も具体的な分類」とは、すべての正方形が長方形であっても、形状が正方形である場合、長方形であることを示すのではなく、正方形であることを示す必要があるということです。 入力 入力は4つの(x、y)座標として与えられます。これらは、長さ2のリスト/タプルの長さ4のリストとして取得できます。また、入力をx座標のリストおよびそれぞれのy座標のリストとして取得することもできます。 私の形状がポイントで頂点を持っている場合たとえば、(0, 0)、(5, 0)、(6, 1)、そして(1, 1)、あなたは以下の形式または類似のもののいずれかの入力を取ることを選択することがあります。 [(0, 0), (5, 0), (6, 1), (1, 1)] ([0, 5, 6, 1], [0, 0, 1, 1]) 四辺形は自己交差しておらず、ポイントは正しい順序で与えられていると想定できます(つまり、入力内の連続する2つのポイントは、四辺形の線分で接続されます)。 出力 次の四辺形のクラスごとに一意の出力が必要になります。 平方 矩形 ひし形 平行四辺形 台形/台形 カイト 四辺形 これは、正確な名前そのもの、文字、整数などです。 ルール 標準的な抜け穴が適用されます プログラミング言語にこの正確なタスクを実行するビルトインがある場合、そのビルトインは許可されません。 2点間の距離を見つけるためのビルトインが許可されています。 2本の線の間の角度を見つけるためのビルトインが許可されています。 この時点で、すべての用語を知っていれば、プログラミングを開始できます。(テストケースは最後にあります) 用語 このセクションは、さまざまな形状の定義を明確にする必要がある人を対象としています。 平方 四辺形は、その4辺すべての長さが等しく、隣接する辺のすべてのペアが垂直である(つまり、長方形と菱形の両方である)場合にのみ、正方形です。 矩形 …

16
マトリックスの行/列にN個の連続した番号がありますか?
入力として正の整数と単一の正の整数Nで構成される行列Aを取り、少なくとも内の行または列に同じ数の連続した出現が N個ます。 水平方向と垂直方向のテストのみが必要です。 テストケース N = 1 A = 1 Result: True ---------------- N = 3 A = 1 1 1 2 2 3 Result: True ---------------- N = 4 A = 1 1 1 2 2 3 Result: False ---------------- N = 3 A = 3 2 3 4 …

4
公園に木を植える-できるだけ早く!
この挑戦は、このアプリに触発されています。テストケースはそのアプリから借用しています。 これは、最短の時間で最大のテストケースを解決することを目的とする、最速のコードチャレンジです。アルゴリズムをより速くテストできるように、いくつかの小さなテストケースが用意されています。 もし寸法、正方形入力グリッドを与えられるだろうn行N 9 <= N <= 12。このグリッドはn個のエリアに分割され、各エリアのセルには一意の識別子があります(ここではテキストでalの小文字を使用しますが、整数1-12など、好きなものを選択できます) 。 入力は次のようになります(オプションの入力形式)。 aabbbbbcc adddbbbcc adeeecccc adddefgcc hhhdifggg hdddifffg hhhiifffg hihiifffg iiiiiiggg または、視覚化が簡単です: チャレンジ: あなたは配置になっている2本の* nは、以下の規則に従って、この公園で木を: 正確がなければならない2列ごとに木々 、そして2行あたりの木 すべてのエリアには正確に2本の木があります。 他のツリーに垂直、水平、斜めに隣接するツリーはありません 上記のレイアウトの解決策は次のとおりです。 注:各パズルには1つのソリューションしかありません 追加のルール: 入力および出力形式はオプションです 出力は、たとえば、インデックスのリスト、その位置にツリーがあるかどうかを示す1/0のグリッド、またはツリーが示されている入力の修正バージョンです。 実行時間は決定的でなければなりません プログラムは@isaacgのコンピューターで1分以内に終了する必要があります 仕様:4 CPU、i5-4300U CPU @ 1.9 GHz、7.5G RAM。 プログラムが1分ごとに2つの最大のテストケースを解決できない場合、2番目に大きい時間(n = 11)がスコアになります。最大のケースを解決するソリューションに負けてしまいます。 テストケース: これらのテストケースに合わせて提出物がカスタマイズされているようであれば、このリストを編集できます。 12行12列: --- Input --- …

30
私は自己同型の数ですか?
Automorphic番号は、10を底とする正方形の接尾辞である番号です。これは、OEISのシーケンスA003226です。 あなたのタスク: 入力がオートモーフィック数であるかどうかを判断するプログラムまたは関数を作成します。 入力: 0〜10 ^ 12(両端を含む)の整数。これは、オートモーフィック数である場合とそうでない場合があります。 出力: 入力がオートモーフィック数であるかどうかを示す真実/偽の値。 例: 0 -> truthy 1 -> truthy 2 -> falsy 9376 -> truthy 8212890625 -> truthy 得点: これはcode-golfであり、バイト単位の最低スコアが勝ちます。

30
適切な除数マッシュアップ
適切な除数がある除数数のNはない、N自体。たとえば、12の適切な除数は1、2、3、4、6です。 あなたは与えられます整数 X、X ≥2、X≤1000。あなたの仕事は、2からxまでの整数のすべての最高の適切な除数を合計することです(包括的)(OEIS A280050)。 例(とx = 6): 2〜6(両端を含む)の間の整数をすべて検索します:2,3,4,5,6。 それらすべての適切な除数を取得し、各数値から最も高い除数を選択します。 2-> 1 3-> 1 4-> 1、2 5-> 1 6-> 1、2、3。 最高の固有除数を合計します1 + 1 + 2 + 1 + 3 = 8。 最終結果は8です。 テストケース 入力| 出力 ------- + --------- | 2 | 1 4 | 4 6 | 8 8 | …

6
より効率的な米国の州コード
その米国の州を略してください!楽しかったのですが、現在のシステムでは米国の州名を効率的に短縮するのは難しいことがわかりました。効率的なゴルフのための代替の州コード体系を考えてみましょう。 あなたのタスク: 有効な米国の州名(通常の50州のみが必要)を指定して、それを識別する一意の2文字のコードを大文字で返す関数(またはプログラム)を作成します。コードは次の要件を満たしている必要があります。 最初の文字は、州の最初の文字と同じでなければなりません。 2番目の文字は、州の他の文字の1つでなければなりません(スペースではありません)。 同じ入力に対して常に同じ出力を与える必要があり、2つの異なる有効な入力に対して同じ出力を与えてはなりません。 たとえば、「アラバマ」を指定すると、関数は「AL」、「AA」、「AB」または「AM」を返すことができます-アラスカ、アーカンソーなどのいずれに対してもその値を返さない限り(「AA "は、州名に" A "が2回以上現れるためにのみ可能です。) 標準的な抜け穴は禁止されています。標準入出力は大丈夫です。これはコードゴルフであるため、バイト単位での最短のソリューションが勝ちです。 可能な入力の完全なリストは次のとおりです。 Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa Kansas Kentucky Louisiana Maine Maryland Massachusetts Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada New Hampshire New Jersey New Mexico New York North Carolina …
20 code-golf  string 

9
その文字列を文字化けします!
文字列を入力として、次のような文字列の1つ以上のバリアントを出力します。 元の位置にキャラクターがいない 最初に隣接していたキャラクターに隣接するキャラクターはありません これは、指定された文字列に対して常に可能であり、単一の大文字のアルファベット文字のみを含むと想定できます([a-z]または必要に[A-Z]応じて) 同じ文字の重複は一意と見なされないことに注意してください。 たとえば、inputを指定するprogrammingと、出力にm7番目または 8番目の文字を含めることはできずg、4番目または 11番目の文字に含めることはできません(1インデックス付き) 例: 文字列を取る abcdef 有効な出力は次のとおりです。 daecfb ただし、次のfdbcae例は無効です。この例のようにc、bまだ隣接しています。 隣接関係はまた、あなたが行うことができなかったという意味、ラップfdbecaなどfとaまだ隣接しています。 テストケース: 指定された入力に対して有効な出力はこれらだけではないことに注意してください として書かれたinput -> output: helowi -> ioewhl mayube -> euabmy stephens -> nhseespt aabcdeffghij -> dbfhjfigaeca 得点: これはコードゴルフなので、各言語で最少のバイトが勝ちます!

18
繰り返しますか?
同等の連続する2つの部分文字列が含まれている場合、文字列は繰り返されます。 たとえば、2034384538452含まれているとおりに繰り返す3845、連続 2回ます。 したがって、あなたの課題は、文字列に繰り返し部分文字列が含まれているかどうかを判断することです。入力は文字列または文字の配列として取得できます。 空の入力を受け取ることはありません。また、部分文字列の長さ(存在する場合)は1以上になる場合があります。 私が使用1し、0ここに私のtruthyとfalsy値として、しかし、あなたは限り、彼らはあなたの言語でtruthyとfalsyあるとして、異なる値を使用することができます。 例: abcab -> 0 bdefdefg -> 1 Hello, World! -> 1 pp.pp/pp -> 1 q -> 0 21020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021012102012101202102012021012102012021020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120210121020120210201210120210201202101210201210120210121020120210201210120210121020121012021020120210121020121012021012102012021020121012021020120210121020120210201210120210121020121012021020120 -> 0 (最後の例は、Thue-Morseシーケンスの各ゼロ間の1の量から生成されました)

7
巡回番号ですか?
循環数とは、1、2、3、... nを掛けると同じ数字になるが順序が異なる「n」桁の数字です。 たとえば、142,857 x 2 = 285,714、142,857 x 3 = 428,571、142,857 x 4 = 571,428などのように、142,857という数値は循環的な数値です。整数の入力が与えられた場合、真理値を出力し、そうでない場合は偽値を出力することにより、それが循環数であるかどうかを判断します。 また、明確にするために、入力には先行0を含めることができます。例:0344827586206896551724137931 これは、先行ゼロが数字で許可されていない場合、142857が10進数の唯一の循環数であるためです。 コードゴルフなので、バイト単位の最短回答が勝ちです!

19
大きなASCII Xを描く
問題 同様のことをする前の挑戦に触発された 正の整数入力n出力が与えられた場合、このパターンに従う形状: 入力n=1: * * * * * 入力n=2: ** ** **** ** **** ** ** 入力n=3: *** *** *** *** ***** *** ***** *** *** *** *** 等々... 次のプロパティがあります。 n*2+1 背の高い線 「腕」はn幅が広い 中心線がn広い 場合n偶数ラインの上および中央未満であるn*2広いです n奇数の場合、中心の上下の線はn*2-1幅が広い ルール 末尾の改行を受け入れました 標準的な抜け穴が適用されます 最短バイトが勝つ 出力は、印刷または文字列または文字列の配列です。 編集 n=0 処理する必要はありません 末尾のスペースを許可

13
線画文字を使用して数独ボードを描画する
これはコードゴルフです。この課題では、メソッドを受け入れます(完全なプログラムは必要ありません)が、メソッドシグネチャはバイトカウントにカウントされるため、完全なシグネチャ(lamdbaではなく)を表示したいです。メソッドの入力は、81個の要素を持つ整数配列です。メソッドからの出力/戻り値は、ASCII数独ボードとして配列を表す文字列です。 難解な言語またはメソッドをまったく持たないものを使用している場合は、適応できますが、言語がこれをサポートしている場合は、たとえメソッド本体自体は作業が苦痛です。要件は、Jellyや05AB1Eなどの言語をブロックすることではなく、Javaのような言語がそのプラットフォームにとって意味のあるものを簡単に作成できるようにすることです。 入力の場合、整数値1〜9には明確な意味があります。0は常に空白セルとして解釈される必要があります。また、1〜9の範囲外のものを空白セルとして解釈することもできますが、これは必須ではありません。配列からパズルへの配置は左上から始まり、各行を左から右に埋めてから次の行に移動します。 ボックスの場合、外側と各3x3領域の間に二重線が、他のセル間に単一線が必要です。これらは線画文字で描画する必要があります(I / O形式が文字列ではなく文字列をバイト列として表す場合、UTF-8やコードページ347などのよく知られたエンコーディングで表現する必要があります)。 この挑戦のために、私はあなたに数独パズルを生成することを求めていません。それが関数の入力です。パズルを解くことをお願いしているのではありません。与えられたものを(できる限り少ないバイト数で)「描画」する文字列を生成するようにお願いしています。 入力例: 配列の値: { 8, 5, 0, 0, 0, 2, 4, 0, 0, 7, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 2, 3, 0, 5, 0, …

6
ムーンフェイズを描く
チャレンジ 月の満ち欠けを考えて、ASCIIアートを使用して描きます。 プログラムは、新月、三日月、ワックス、ギブス、満月、ギブスの減少、最後の四分の一、三日月の減少を処理する必要があります。入力は整数になります。 0 -> new moon 1 -> waxing crescent 2 -> first quarter 3 -> waxing gibbous 4 -> full moon 5 -> waning gibbous 6 -> last quarter 7 -> waning crescent ASCIIアートはすべて、16x8グリッドに配置されます(文字の寸法比のため)。.任意の文字および#他の非空白文字に置き換えることができます。 新月の出力は次のようになります。 ................ ................ ................ ................ ................ ................ ................ ................ 三日月ワックス用: ..........###### ............#### .............### .............### …

18
無関係な番号を見つける
入力として2つの非負整数が与えられた場合、2つの入力で数学演算子を使用して作成できない非負整数を出力します。 たとえば、与えられた入力2とは3、6, 0, 5, 1, 9, 8, 23, 2すべて無効な出力です。 考慮する必要がある操作は次のとおりです。 Addition (a + b) Subtraction (a - b) and (b - a) Multiplication (a * b) Division (a / b) and (b / a) Modulus (a % b) and (b % a) Exponentiation (a ** b) and (b ** a) …

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