タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

25
ピジョンホールの原理とコードゴルフ
鳩の巣原理と述べています N > Mの場合、N個のアイテムをM個のボックスに入れる場合、少なくとも1つのボックスに複数のアイテムを含める必要があります。 多くの人にとって、この原則は他の数学的発表と比較して特別な地位にあります。EWダイクストラが書いたように、 それはいくつかの神秘に囲まれています。それを使用する証明は、しばしば特別なもの、特に独創的なものと見なされます。 チャレンジ この課題の目的は、ASCIIアート表現を使用して鳩の巣の原理を説明することです。具体的には: 入力N(アイテムの数)およびM(ボックスの数)として、N非負とM正を取ります。Nより小さい場合がありますM(その場合、原則が適用されない場合でも)。 ボックスへのアイテムの可能な割り当ての1つをランダムに選択します。各割り当てには、選択される確率がゼロ以外である必要があります。 次のように、割り当てのASCIIアート表現を作成します。 M行があり、それぞれがボックスに対応しています。 各行は、などの非空白文字で始まり|ます。 その文字に続いて、などの別の非空白文字が続き#、そのボックス内のアイテムの数だけ繰り返されます。 たとえばN = 8、考慮してくださいM = 5。ボックスへのアイテムの選択assigmentである場合に4、1、0、3、0、表現であります |#### |# | |### | 同じプログラムの異なる実行(異なる割り当てをもたらす)は、 |# |## |# |# |### 表現に関してある程度の柔軟性があります。下記参照。 特定のルール コードはおよびの値に対して理論的に実行する必要がNありMます。実際には、メモリサイズまたはデータ型の制限によって制限される場合があります。 出力を観察するだけでは、すべての割り当てにゼロ以外の確率があるかどうかを判断するのに十分ではないため、各サブミッションでは、コードがどのようにそれを達成するかを説明する必要があります。 次の表現バリエーションが許可されます。 異なる非空白文字の任意のペアを選択できます。これらは、プログラムの実行全体で一貫している必要があります。 リプレゼンテーションの90度回転は許容されます。繰り返しますが、選択は一貫している必要があります。 末尾または先頭の空白は許可されます。 異なる表現形式と、のための一例としてN = 15、M = 6プログラムの2つの実行の結果は、可能性が VVVVVV @@@@@@ @@ @@@ @ @@ @ …

24
整数がキューに加わるとき
前書き キューは、要素は抽象データ型である前部に添加(エンキュー)及び背面から除去(デキュー)。これは、FIFO(先入れ先出し)原理とも呼ばれます。 例で最もよく示されています。 チャレンジ 所与の非空含む配列正の整数と示す要素デキュー(元素を除去する)、出力キューの最終的なリストを。 Xこの例でデキューを示しているとしましょう。次のリストを見てみましょう。 [45, X, X, 37, 20, X, 97, X, 85] これは、次のキュー擬似コードに変換できます。 Queue Enqueue 45 -> 45 Dequeue -> Dequeue -> (dequeue on an empty queue is a no-op) Enqueue 37 -> 37 Enqueue 20 -> 20 37 Dequeue -> 20 Enqueue 97 -> 97 20 …

28
ボートをRowいで
誰もがおそらく音楽的なラウンドである次の歌に精通しているでしょう: バックグラウンド 少数の友人とこの4人用バージョンを歌おうとして失敗したことを思い出す人は少ないでしょう。異なる調和のとれたピッチで曲の歌詞をオフセットすることは、「ラウンド」を歌うこととして知られています。それは、静的出力を使用して今日シミュレートするためにここにいることです。以下は誰かが実際に作品を演奏している例です(オーディオ/ビデオへのリンク、音がします)。 チャレンジ この課題は、次のように正確にテキストを出力することです。 Row, row, row your boat, |-----------------------------------|-----------------------------------|----------------------------------- Gently down the stream. |Row, row, row your boat, |-----------------------------------|----------------------------------- Merrily, merrily, merrily, merrily,|Gently down the stream. |Row, row, row your boat, |----------------------------------- Life is but a dream. |Merrily, merrily, merrily, merrily,|Gently down the stream. |Row, row, row your …

3
バブルを配置する
math.stackexchangeで尋ねられた質問からコピーされたチャレンジに注意してください。 最近、私は泡を吹く技術をかなり習得しました。最初は次のように泡を吹きます: しかし、その後、物事は奇妙になり始めました: しばらくして、かなり奇妙な泡を吹いていました。 数百個、場合によっては数千個のそのような泡を吹き飛ばした後、私の額は次の質問で突然しわになりました。たとえば、n = 1の場合、配置は1つだけです。n = 2の場合、2つの配置があります。n = 3の場合、4つの配置があります。n = 4の場合、9つの配置があります。 4つのバブルの9つの配置を次に示します。 これらすべての素晴らしい泡を吹き飛ばした後、私は彼らとのアレンジメントを数える喜びをあなたと共有すべきだと決めました。あなたの仕事は次のとおりです。 ゴール nバブルを配置できる方法の数を数えるプログラム、関数、または同様のものを作成します。 入力 n、泡の数。n> 0 出力 これらのバブルを配置できる方法の数。 受賞基準 あなたのコードの周りにバブルを吹き込むことができれば、本当にクールだろう。コードを小さくすればするほど簡単になります。したがって、最小バイト数でコードを作成した人がコンテストに勝ちます。 追加情報 OEIS

10
シンボリック行列乗算
行列の乗算を説明する方法はたくさんあります。ここのほとんどの人はそれに精通していると思うので、私は単一の図に固執します(そして図は非常に記述的です)。より詳細な情報が必要な場合は、ウィキペディアの記事、またはWolframMathWorldの説明をご覧になることをお勧めします。 簡単な説明: あなたは二つの行列、持っていると仮定AとB、Aが 3行2であり、Bは 2行3です。これらに対してAB、BAのいずれかの行列に行列乗算を実行すると、以下の結果が得られます。 チャレンジ: 言語にシンボリック行列乗算を実装します。入力として2つのマトリックスを使用します。ここで、マトリックス内の各要素は非空白ASCII文字(コードポイント33〜126)で表されます。これらの行列の積を出力する必要があります。 出力に関する規則: 2つのエントリの製品には、間に記号を入れてはなりません。それはだab、ではないa*b、a·b、times(a,b)または類似した何か。でaaはありませんa^2。 用語の合計には、間にスペース(ASCIIコードポイント32)が必要です。それa bはa+b、ではなく、plus(a,b)または類似したものです。 これら2つのルールの理論的根拠は次のとおりです。すべての非空白文字は行列内の記号として許可されているため、数学記号として使用するのは面倒です。だから、あなたが普通に書くことができるものはそうa*b+c*dなりますab cd。 条件の順序を選択できます。ab cd、dc abおよびcd ba数学的に同じことを話しているので、あなたもここに順序を選択することができます。数学的に正しい限り、順序は一貫している必要はありません。 マトリックスのフォーマットに関する規則: マトリックスは、行間に区切り文字のない単一の文字列を除き、任意の形式で入力できます(これは、出力が完全に台無しになるためです)。両方の行列は同じ形式で入力する必要があります。以下の例はすべて、マトリックスを入力および出力する有効な方法です。 "ab;cd" <- This will look awful, but it's still accepted. "a,b\nc,d" [[a,b],[c,d]] [a, b] [c, d] これにより面倒に見える多くのフォーマットが可能になることは承知していますが、課題は出力のフォーマットではなく行列の乗算です。 一般的なルール: 有効な入力を想定することができます。行列の乗算は、指定された次元で常に可能です。 マトリックスは2つしかありません。 行列が空でないと仮定することができます 組み込み関数が受け入れられます(ただし、書式設定の要件のため、おそらく少し面倒です)。 もちろん、必要に応じて(\'ではなく')入力にエスケープ文字を使用できます。 標準の入出力方法はすべてOKです。 テストケース: 2つの入力行列は、間に空の行が表示されています。出力はの後に表示されOutput:ます。2つの出力マトリックスがある場合、受け入れられる他の出力を表示するだけです。 テストケース#1 Inputs: [a] [b] Output: …

8
中かっこを右中かっこに変換(悲しい中かっこ)
右中括弧は、中括弧とセミコロンがすべてaaファイルの右側の単一ポイントに揃えられるコードブラケットのスタイルです。 一般的に、これはいくつかの理由で悪い習慣と考えられています。 チャレンジ 任意の方法で複数行の文字列を取得し、そのブレーススタイルを右手ブレースに変換します。 この課題では、Javaコードでのみ動作する必要がありますが、理論的にはブレースとセミコロンを使用するコードで動作するはずです。 すべての{};文字を連続して取得する必要がありますが、それらの間に空白を入れてください。例えば。}}、; } }\n\t\t}、および空白を使用してファイルの右側にそれらを並べます。 例えば: a { b; {c になるはずです a { b ;{ c または、より抽象的に、すべての左から任意のすべての空白をプッシュします {};右へ、。 それ以外の場合は、行のインデントを保持する必要があります。移動後の空白のみを含む行{};オプションで削除できます。 例えば: a{ b{ c; } } d; どちらかになります a { b { c;}} d ; または a { b { c;}} d ; 右に押すと、すべての {};文字が最も長い行よりも短くない位置に揃えられます。それ以降のスペースは許容されます。 したがって、以下はすべて受け入れられます。 a { …

6
ゲームボーイでの効率的な入力
多くの古いGame Boyゲームでは、ユーザーからの文字列入力が必要になることがよくありました。しかし、キーボードはありませんでした。これは、次のような「キーボード画面」をユーザーに提示することで処理されました。 「文字ポインタ」は、ユーザが各所望の文字に移動なる文字Aで始まるであろうD-パッドの4つのボタン(UP、DOWN、LEFTおよびRIGHT)を押しBUTTON A、最終的な文字列に追加します。 ご注意ください: グリッドが回り込むのでUP、文字Aを押しながら押すとTに移動します。 「文字ポインタ」は、文字を追加した後もそのままになります チャレンジ 上記のキーボードには、大文字と小文字を変更するオプションがあり、不規則な形状です。そのため、簡単にするために、この課題では次のキーボードを使用します(右下はASCII文字32、スペースです)。 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . このようなキーボードでの入力は非常に遅いため、これを簡単にするために、与えられた文字列を入力するための最速の方法をユーザーに伝えるプログラムを書くことがタスクです。最速の方法が複数ある場合、表示する必要があるのは1つだけです。 出力キーは次のとおりです。 > ために RIGHT < ために LEFT ^ ために UP v ために DOWN …

11
ビットフリップ耐性複合数
時には、プログラムを作成するときに、何らかの理由で暗号化などの素数を使用する必要があります。場合によっては、合成番号も使用する必要があると思います。場合によっては、少なくともここPPCGでは、プログラムが任意の変更に対処できる必要があります。また、興味深いPPCGの質問を作成するために便利に考案された状況では、おそらくあなたが使用している数字でさえ、腐敗に耐えなければならない… 定義 複合番号は、それが1 Aを超える2つのより小さな整数の積、すなわち、素数でない整数≥4 bitflip性複合数次のように定義されています。あなたはそれを書くならば、それは、のための複合正の整数です可能な最小ビット数のバイナリでは、その数値から任意の1ビットまたは2ビットを変更できますが、その数値はまだ合成されています。 例 たとえば、数値84を考え1010100ます。バイナリでは、それがです。以下は、それと2ビット以内に異なるすべての数値です。 0000100 4 2×2 0010000 16 4×4 0010100 20 4×5 0010101 21 3×7 0010110 22 2×11 0011100 28 4×7 0110100 52 4×13 1000000 64 8×8 1000100 68 4×17 1000101 69 3×23 1000110 70 7×10 1001100 76 4×19 1010000 80 8×10 1010001 81 9×9 1010010 …

12
n番目の分子
最初に分母、次に分子の順に並べることで、すべての有理数0 <r≤1のリストを作成できます。 1 1 1 2 1 3 1 2 3 4 1 5 1 2 3 4 5 - - - - - - - - - - - - - - - - - 1 2 3 3 4 4 5 5 5 5 6 6 7 7 …

30
一定の乱数のソースを使用して、0〜nの間の乱数を選択します
仕事 正の整数で考えるとn以下の2^30コードは、あなたが選択した任意の方法で入力として必要があり、指定された出力ランダムの間の整数0とn、包括的に。生成する数値は、ランダムに均一に選択する必要があります。つまり、0toの各値はn等しい確率で発生する必要があります(「規則と警告」を参照)。 ルールと警告 あなたのコードは、あなたの言語または標準ライブラリに組み込まれた、一様にランダムであると主張する任意の乱数ジェネレータが実際に一様であると仮定できます。つまり、使用しているランダムソースの品質を心配する必要はありません。しかしながら、 使用しているランダムソースが均一である場合、コードはから0まで均一なランダム整数を正しく出力することを確立する必要がありますn。 組み込みまたはライブラリのランダム関数を呼び出すときの引数は定数でなければなりません。つまり、入力値から完全に独立している必要があります。 コードは、終了が保証されているのではなく、確率1で終了する場合があります。 ノート randInt(0,n) 組み込み関数またはライブラリ関数への引数として入力を受け取るため、無効です。 rand()%nうではない一般的には一様乱数を与えます。betsegによって与えられた例として、場合intmax == 15やn = 10、あなたが取得する多くの可能性が高くなります0-5より6-10。 floor(randomfloat()*(n+1)) また、0と1の間の異なる浮動小数点値の有限数により、一般に均一な乱数を与えません。

21
これらの数字のみを含む最小のn桁の素数
n数字を含む最小の素数を生成する必要があり、リストに指定された数字のみが含まれますk。 例: 入力: 4 1 2 そのために4は、数字1を含む最小の素数を生成する必要があり、その素数には数字とのみが含まれている必要があります2。 出力: 2111 入力: 10 0 4 7 出力: 4000000007 入力: 6 5 5 5 5 5 5 5 5 5 5 1 5 5 5 5 5 5 5 5 5 5 出力: 115151 入力は常に指定した形式であることが保証でき、無効な入力(入力が1桁であるなどn、k。 入力に対するそのような解決策が存在しない場合、プログラムは次のいずれかを実行できます。 印刷する banana エラーを投げる 永遠に走る 他に何か これはcode-golfなので、最短のコードを目指してください。 入力は、指定した任意の形式にすることができます。たとえば、入力を次のいずれかにしたい場合は問題ありません。 …

2
任意の長方形を配置してスペースを埋める
これらの長方形は長方形のスペースを埋めることができますか? 長方形の束が与えられると、長方形のスペースを埋めるように配置できるかどうかを尋ねられます。 スペック 任意のm x n長方形の束が与えられた場合; 0 <= m, n <= 1000、穴や重なりのない長方形の領域を正確にカバーするように配置できるかどうかを判断します。長方形は回転できず、各長方形は一度しか配置できません。 入力 この入力は、2空間次元の何らかのリストを提供する限り、非常に柔軟です。たとえば、次の両方が有効です。 スペースで区切って、リターン 1 2 1 5 4 5 3 6 寸法表 [[1, 2], [1, 5], [4, 5], [3, 6]] 出力 true / false、0/1、T / F、True / Falseなどのあらゆる種類のtrue / false値。あまり明確でない出力メソッドを使用する場合は、回答で指定してください。 例 テストケース1 入力: 1 1 1 5 2 …

16
ベイビートークをデコード!
赤ちゃんが口を開くとき、彼らはただちらほらを吐いているだけではありません。彼らは実際、非常に先進的で大人に耐える暗号で話しています... ベビートーク暗号 赤ちゃんが話すとき、それは、gogooa gagooook aagaaoooy それぞれの単一スペースで区切られたセクションがキャラクターを表すように見えるかもしれません(したがって、上の例は3キャラクターを表します)。 セクションを解読するには、セクションに含まれるAsとOsの数を数える必要があります。ただし、他の母音に隣接するもののみをカウントします。たとえば、「gag」のAはカウントされませんが、「gaog」のAとOはカウントされます。 上記の例を数えると次のようになります。 Section | Num Os | Num As gogooa | 2 | 1 gagooook | 4 | 0 aagaaoooy | 3 | 4 次に、これらの値を使用して、入力をPolybius正方形のプレーンテキストに変換します。これは、英語のアルファベットを5x5で表したもので、「J」は省略されています(ベビートークでは、0カウント規則がテーブルに適用されることに注意してください)。 0 1 2 3 4 0 A B C D E 1 F G H I K 2 L …

19
ソート可能な年を見つける
2013年には興味深い特性がありました。ソートされたとき、数字は連続しています(0123)。このタイプの数値をソート可能な数値と呼びましょう。ソート後、10進数が連続する負でない整数です。残念ながら、これは2031年まで、その後2103年までは発生しません。あなたの課題は、標準的な方法で負でない整数が与えられたときに、次のソート可能な数値を出力または返すプログラムまたは関数を書くことです。 ルール 入力と出力は基数10でなければなりません。 出力は、任意の妥当な形式(数値リテラル、文字列リテラル、単一項目配列など)になります。 コードは、98764までのすべての入力に対して1分以内に適切な出力を生成する必要があります。 テストケース 0 -> 1 1 -> 2 9 -> 10 10 -> 12 11 -> 12 99 -> 102 233 -> 234 234 -> 243 243 -> 312 2016 -> 2031 2031 -> 2103 2103 -> 2130 2130 -> 2134 2134 -> 2143 9876 -> …

8
配列を視覚化する
任意の深さの配列を指定して、+-|各サブ配列の周囲の境界線でその内容を描画します。これらは、プラス、マイナス、および垂直パイプのASCII文字です。 たとえば、配列がの場合[1, 2, 3]、描画 +-----+ |1 2 3| +-----+ のようなネストされた配列の場合[[1, 2, 3], [4, 5], [6, 7, 8]]、draw +-----------------+ |+-----+---+-----+| ||1 2 3|4 5|6 7 8|| |+-----+---+-----+| +-----------------+ のような不規則な配列の場合[[[1, 2, 3], [4, 5]], [6, 7, 8]]、draw +-------------------+ |+-----------+-----+| ||+-----+---+|6 7 8|| |||1 2 3|4 5|| || ||+-----+---+| || |+-----------+-----+| +-------------------+ 描画後、より多くのスペースがあることに注意してください[6, …

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