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

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

3
Octaveの匿名関数を使用してベクターの要素を交換する方法は?
Octaveでは、ベクトル/マトリックス内の2つの要素を交換するのは非常に簡単です。 x='abcde'; x([4,1])=x([1,4]) x = dbcae 残念ながら、匿名関数内でこれを行う方法をまだ見つけていません。以下の関数は構文的には正しいですが、xベクトル全体ではなく、スワップされる2つの要素のみを返します。 f=@(x)(x([4,1])=x([1,4])) f(x) ans = ad 匿名関数を使用してゴルフのように望ましい動作を達成する方法はありますか?無名関数を使用して、この方法で複数の要素を交換できますか? 私は可能性がインデックスベクトルを作成しますf=@(x)x([4,2,3,1,5])が、動的なベクトルを作成する可能性があまりにもバイトの多くがかかります。

10
同じ桁の2倍ではなく、複数の基数
入力 正の整数の空でない配列。 仕事 各桁(ようにいずれかの2進数、8進数、10進数または16進数の各整数を変換0にFが)一度ほとんどで使用されています。 出力 パズルの解決に使用されたベースのリスト。 詳細な例 [16、17]の期待される出力は[8進数、10進数]です。 その理由は次のとおりです。 両方に1が含まれているため、両方の数値に単純に10進数を使用することはできません。 16は、このベース(10000)の表現に複数の0が含まれているため、バイナリに変換できません。 17は、このベース(10001)の表現がいくつかの0といくつかの1を含むため、バイナリに変換することもできません。 17は、この基数(11)の表現が2つの1で構成されているため、16進数に変換できません。 残りのすべての可能性を考えてみましょう。 +---------+---------+--------+ | oct(16) | dec(16) | hex(16)| | = 20 | = 16 | = 10 | +--------------+---------+---------+--------+ | oct(17) = 21 | 20,21 | 16,21 | 10,21 | | dec(17) = 17 | 20,17 | …

10
素因数エンコーディング
エンコードの仕組み ビットのリストが与えられた場合: プライムを保持する(で始まる2) リストを持っている 入力の各ビットに対して 前のビットと同じ場合、保持している素数をリストに追加します 異なる場合は、次の素数を保持してリストに追加します リスト内のすべての数値の積を返します 最初のビットについては、前のビットが 0 注:これらの手順は説明のみを目的としており、従う必要はありません。 例 Input: 001 hold 2 0: add 2 to the list 0: add 2 to the list 1: hold 3, add 3 to the list list: 2,2,3 Output: 12 Input: 1101 hold 2 1: hold 3, add 3 to …

9
部屋に参加する
それで、ダンジョンの地図、たとえば、 ########## # ##### # ##### ########## ########## ########## ########## #### ## #### ## ########## ヒーローが部屋A(左上)にいて、彼らの目標(苦しんでいる王子様?)が部屋B(右下)にいるとしましょう。このマップでは、ヒーローが目標に到達することはできません。 通路を追加する必要があります... ########## # ##### # ##### ####.##### ####.##### ####.##### ####.##### #### ## #### ## ########## そこに、はるかに良い! ルール ダンジョンマップ(ハッシュとスペースで構成され、行が改行文字で区切られている)を受け入れるプログラムまたは関数。 スペース文字間の直接パス上にあるすべてのスペース内の通路を示すためにドットが追加されたマップを出力します。 行の長さや行数は変更されません。 通路はすべて、スペースからスペースへの直線です。 通路は角を曲がれない スペースとマップの端の間にはありません。 任意の言語を使用します。 最小バイトで変換を実行してください。 通路を描画できない場合は、マップをそのまま返します。 マップには常にすべてのエッジの周りにハッシュが必要です(エッジのスペースを処理する必要はありません)。 入力マップは常に長方形で、各行は同じ幅でなければなりません。 テストケース #### #### # # => …

10
多かれ少なかれ出力数
チャレンジ とで構成される入力文字列(または配列)が与えられる<と>、次のような整数のシーケンス(配列または文字列)を出力します。 出力内の連続した数字の間に順番に適用すると、演算子はすべて正しい すべての整数は正(1以上) 整数の合計は数学的に可能な限り小さい 入力は、選択した言語の「より大きい」と「より小さい」に一致するように変更できます。 代替出力として、出力の数値の合計を指定するだけです。アンサータイトルに解決するバージョンを明記してください。 通常の除外とルールが適用され、最小バイトが優先されます。 入力文字列があなたの言語で整数オーバーフローを引き起こすことは決してないと仮定できます。 例 >与え2 1に合計しました3 >>>与え4 3 2 1に合計しました10 ><与え2 1 2に合計しました5 与え1に合計しました1 >>>>>>>>>与え10 9 8 7 6 5 4 3 2 1に合計しました55 >><<>><>>>与え3 2 1 2 3 2 1 4 3 2 1に合計しました24 ><>><>><>与え2 1 3 2 1 3 2 1 2 …

21
これは階段番号ですか?
チャレンジ: 指定された番号がaを形成するnumber staircaseかどうかを確認します 入力: 整数(10進数ではなく0より大きい)。注:入力は、文字列、数字の配列として取得できます。 出力: 数値が階段を形成するかどうかに応じた真実/偽の値 番号階段: 数の階段は、左から右に読んで整数です。 1から始まる 後に2が続く場合があります 3が続く場合があります などなど n その後、数字はn-1から始まります その後、n-2 その後、n-3 1に達するまでなど 注意 : することができる部分をそのままの順序が従わなければならない場合は長場合> 1より大きいことを示すために使用されます。すなわち:12321 例: 12321 ---> true 12345654321 ---> true 9 ---> false 1 ---> true 2 ---> false 123421 ---> false 112312318901323 ---> false 123456789101110987654321 ---> true 注意 : 指定された入力は常に0より大きい整数であり、小数ではありません。出力truthy …

10
ランニングで数を制限する
自己制限リスト 非負の整数を含む空でないリストLを考えます。実行中のLは長くすることができないに等しい要素の連続したサブリストです。たとえば、[0,0,1,1,3,3,3,2,1,1]の実行は[0,0]、[1,1]、[3,3,3]、[2 ]、[1,1]。リストLは、各整数N≥1について、Nの出現回数がN-1の実行回数以下の場合、自己制限的です。上記のリストは1が4回出現しますが、0の実行は1回だけなので、自己制限的ではありません。 自己制限リストの例を次に示します:[0,0,3,4,1,0,2,1,1,0,2,1,0,0,0,1,0]。持っている 5つのラン0と5つの出現1、 4回の1回の実行と2回の2回の実行、 2つの実験2との1つの発生3、 1回の3回の実行と1回の4回の実行、 4回1回実行、5回は発生しない、 他の整数は発生しません。 タスク あなたの仕事は、リストが自己制限的であるかどうかを決定することです。より明示的には、入力は負でない整数の空でないリストでなければなりません。リストが自己制限的である場合、出力は真実です。それ以外の場合は、偽造されます。入力と出力は任意の合理的な形式にすることができます。 各プログラミング言語の最小バイト数が勝者です。標準のコードゴルフ規則が適用されます。 テストケース 真実のインスタンス: [0] [1,0] [0,1,1,0,2] [3,1,1,0,0,2,0,0] [5,0,4,1,3,0,2,2,0,1,1,1,0] [0,0,1,1,0,0,1,1,0,0,2,2,0,0] [6,0,0,0,2,2,1,0,5,0,3,4,0,1,1,1] [5,0,1,0,0,0,0,4,0,3,1,1,1,2,2,0,0,0,0,0] [4,5,1,3,2,0,5,2,0,3,0,1,0,1,0,0,0,1,0,0,1,0,3,4,4,0,2,6,0,2,6] [0,4,1,3,10,6,0,1,3,7,9,5,5,0,7,4,2,2,5,0,1,3,8,8,11,0,0,6,2,1,1,2,0,4] 偽のインスタンス: [2] [1,1,0] [0,0,1,1,1,0,0,2] [0,1,0,1,1,2,2,3,0,0,4,6] [1,1,2,1,2,0,2,0,3,0,0,2,2,1,2,3,2,0,1,1,1,0,0,3,3,0] [3,4,1,0,0,0,5,5,0,2,2,0,0,0,0,0,2,0,1,1,0,4,3,5,4,3] [1,0,0,0,2,5,3,1,1,0,3,3,1,3,5,4,0,4,0,0,2,0,2,1,1,5,0,0,2,4,4,0,2,0,1,4,4,2,3,3,5,3,4,0,2,0,5] [4,3,1,0,0,4,6,6,1,0,1,2,1,3,0,1,0,2,0,3,4,0,2,1,1,3,0,2,2,2,0,5,5,0,5,2,5,5,0,4,3,2,3,1,1,3,5,1,4,1,6,2,6,2,4,0,4,0,4,5,3,3,0,0,6,1,0,0,0,6,2,1,0,1,2,6,2,4] [5,1,1,1,0,2,0,6,1,0,2,1,2,2,5,3,1,0,0,0,3,2,3,0,1,1,0,1,0,1,1,2,0,6,4,1,2,1,1,6,4,1,2,2,4,0,1,2,2,1,3,0,1,2,0,0,0,2,0,2,2,0,1,0,0,1,3,0,0,0,6,2,0,1,0,1,2,1,1,1,0,4,0,0,5,2,0,0,0,4,1,2,2,2,2,0,5,3,2,4,5,0,5]

14
多面体のオイラーポアンカレ特性
所定の三角測量多面体の表面のp、そのオイラー・ポアンカレ特性計算χ(p) = V-E+F、V頂点の数、あるEエッジの数とF顔の数。 詳細 頂点はとして列挙され1,2,...,Vます。三角形分割はリストとして指定されます。各エントリは、時計回りまたは反時計回りの順序で指定された1つの面の頂点のリストです。 名前にもかかわらず、三角形分割には3面以上の面を含めることもできます。面は単純に接続されていると想定できます。つまり、各面の境界は、1つの閉じた非自己交差ループを使用して描画できます。 例 テトラヘドロン:この四面体が凸であるとありχ = 2。可能な三角形分割は [[1,2,3], [1,3,4], [1,2,4], [2,3,4]] 立方体:この立方体は凸面で、を持っていχ = 2ます。可能な三角形分割は [[1,2,3,4], [1,4,8,5], [1,2,6,5], [2,3,7,6], [4,3,7,8], [5,6,7,8]] ドーナツ:このドーナツ/トロイド形状にはがありχ = 0ます。可能な三角形分割は [[1,2,5,4], [2,5,6,3], [1,3,6,4], [1,2,7,9], [2,3,8,7], [1,9,8,3], [4,9,8,6], [4,5,7,9], [5,7,8,6]] ダブルドーナツ:このダブルドーナツにはが必要χ = -2です。これは、上のドーナツの2つのコピーを使用して構築され[1,2,5,4]、最初のドーナツの側面[1,3,6,4]と2番目のドーナツの側面を識別します。 [[2,5,6,3], [1,3,6,4], [1,2,7,9], [2,3,8,7], [1,9,8,3], [4,9,8,6], [4,5,7,9], [5,7,8,6], [1,10,11,4], [10,11,5,2], [1,10,12,14], [10,2,13,12], …

13
そこで、私は(はさみで)それを壊した
チャレンジ 切断規則と別の文字列を記述する文字列が与えられた場合、最初の文字列によって記述された規則を使用して、2番目の文字列から一部を切り取ります。 両方の文字列は、文字a-zまたはのA-Zいずれかを選択します(同じ方法で表す必要はありません)。2番目の文字列を変更する方法を以下に説明します。 アルゴリズム 最初の文字列を取得し、隣接しない(増加する)文字間のギャップを=;で埋めることを想像してください。たとえば、abcfg=> abc==fg。次に、2つの文字列を並べて、等号の上にない最初の文字列のすべての文字を返します。例えば、所与abcfgおよびqrstuvw入力として: qrstuvw - Modify abc==fg - Modifier qrs--vw -> qrsvw 等号で埋めた後の修飾子が短い場合、2番目の文字列のすべての後続文字を含める必要があります。修飾子が長い場合、末尾の文字は無視されます。 修飾子はソートされることを保証されていません。 テストケース abcfg, qrstuvw -> qrsvw abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm za, qr -> qr azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn 参照実装(テストケースの生成に使用)-> TIO ルール 標準的な抜け穴が適用されます 入力は、2つの文字列、2つの文字のリスト、文字のマトリックスなどとして受け取ることができます(他の合理的な形式も受け入れられます) 文字列または文字のリスト(または文字列の他の標準形式)として出力できます これはcode-golfであるため、各言語のバイト単位の最短回答がその言語の勝者として宣言されます。回答は受け付けられません。 どちらの文字列も空にすることができます。 ハッピーゴルフ! Kevin Cruijssenの最近の2つの課題に触発され、「そこに、私はそれを修正しました(テープ / ロープで)」
15 code-golf  string 

8
素晴らしいAPIイースターエッグハント!
APIイースターエッグハント! http://easter_egg_hunt.andrewfaraday.comには、特別なイースターエッグハントを提供するAPIがあります。 上記のアドレスでAPIドキュメントを参照するか、ここから試してください。 API: このAPIへの呼び出しはすべてGETリクエストであり、JSON文字列を返します。 これらの例は、説明のためだけに5x5の庭にあります。APIは実際に100x100の庭で動作します(インデックス1から100まで) /new_game 内部的に、APIは庭園を作成し、その中に卵を隠します。 この例では、卵は4、4にあります +----------+ | | | | | | | | | E | | | | | | | | | | | +----------+ コール /new_game 戻り値 {game_id: 'abcde'} /guess/:game_id/:x/:y APIは庭を見て、あなたがどれだけ近いかを教えてくれます。 横2と縦8を推測すると、庭はこんな感じ +----------+ | | | | | | | | | …

3
言語のピラミッド
できるだけ多くのプログラミング言語で実行またはコンパイルするコードを記述し、以前および現在のプログラミング言語の名前の改行区切りリストを出力します。 使用されるすべての言語には、以前よりも1文字長い名前が必要です。例 C#、C++、Ruby、Jelly、Python... 各言語は、改行で区切られた言語名のリストを長さでソートして出力する必要があります。 出力はピラミッドである必要があります。リストには、実行中のスクリプト言語名+実行中のスクリプト言語名よりも短い使用言語名のみを含めることができます。 先頭と末尾の改行が許可されます。 標準的な抜け穴は禁止されています。 スコアを上げるためだけにカスタムプログラミング言語を作成することはできません。 バージョン番号は言語名にはカウントされませんが、言語の新しいバージョンに互換性のない変更がある場合は投稿で指定できます。 言語名のショートカットを使用するかフルネームを使用するかを決定できますが、1つの回答で両方のフォームを送信することはできません。exを使用できます。SPLまたはのいずれかShakespeare Programming Language。 言語名の長さには、文字、数字、ASCII記号、および単一スペース(先頭でも末尾でもない)のみが含まれます。 例 C、C#、C ++の出力例: C C C# C C# C++ C C# C++

12
この課題は再帰(警官のスレッド)に関するものです
警官のスレッド このスレッドでのタスクは、再帰ベースのプログラム/関数を作成して整数系列を生成することです。強盗は、強盗のスレッドでより短い非再帰的な解決策を見つけようとします。 チャレンジの概要 多くの言語では、再帰関数はプログラミングタスクを大幅に簡素化できます。ただし、適切な再帰の構文オーバーヘッドにより、コードゴルフでの使いやすさが制限される場合があります。 COPSは、単一の整数服用プログラムや関数作成するn最初の生成され、n整数系列のエントリをのみ再帰使用1。また、エントリを安全としてマークするために、シーケンスを生成する短い非再帰的な方法があることを確認する必要があります。 強盗は見つけようとします短く、同じ整数シリーズを生成し、同じ言語でプログラムまたは機能を一切再帰使用していない2。 警察官の提出物が10日(240時間)以内にクラックされない場合、警察官は独自の解決策を明らかにすることにより、より短い非再帰的アプローチが実際に可能であったことを証明します。その後、提出物を安全とマークすることがあります。 copsチャレンジの勝者は、安全とマークされた最短の(code-golfによる)再帰ベースのサブミッションです。 強盗チャレンジの勝者は、ほとんどのソリューションをクラックした強盗です。 1:構文が再帰的であれば十分です。テールコールの最適化などを心配する必要はありません。 2:繰り返しますが、構文は非再帰的です。そのため、末尾呼び出しの最適化のおかげで、再帰的なソリューションを投稿し、ループにコンパイルされたと主張することはできません。 提出要件 各提出には、単一の整数n(ゼロベースまたは1ベース)が必要です。送信するとn、選択した整数シリーズの最初のエントリが出力または返されます。(この整数系列はに依存してはならないことに注意してくださいn)。入力方法と出力方法は、再帰的アプローチと非再帰的アプローチで異なる場合があります。整数シリーズは、長さが5以上の任意の確定的シリーズです。シリーズは適切に説明する必要があります。 あなたの提出は任意の大規模nで働く必要はありませんが、少なくとも働くはずn=5です。非再帰的アプローチは、少なくともn再帰的アプローチと同じか、最大でn=2^15-1、どちらか小さい方まで機能する必要があります。 再帰 この課題のために、再帰は、それ自体を呼び出す関数(または関数に似た構造)を使用して目的のシーケンスを作成することとして定義されます(または、それ自体を呼び出すことになる関数のシーケンスを呼び出します。これには、Yコンビネーターのような構造が含まれます)。再帰の深さは、無限大になるnにつれて無限大になるはずです。非再帰的アプローチは、再帰的ではないものです。

6
ストリングレプリケーター
Vimのでは、あなたが番号を前置することにより、コマンドを繰り返すことができ、同様3ddに相当しますdd dd dd。さて、この繰り返しパターンはVimコマンドに限定されません。文字列もこの方法で複製できます。 仕様: 入力として、数字、アルファベット文字(大文字と小文字の両方)、およびスペースのみで構成される文字列を指定し、オプションで末尾の改行を使用して、次のジョブを実行するプログラムを作成します。 各「単語」は数字とアルファベットで構成されます。文字の前に数字が付いている場合(数字に複数の数字があるか、数字がゼロの場合)、その文字を指定された回数だけ繰り返します。例えば: a2bc -> abbc 3xx1yz -> xxxxyz 10ab0c0d0e -> aaaaaaaaaab # No 'cde' because there's a zero 2A2a2A2a -> AAaaAAaa 単語はスペースで区切られます。隣接する2つの単語ごとに最大1つのスペースがあります。 簡単ですね。追加のものは次のとおりです。 スペースの前に数字がある場合は、指定された時間だけ次の単語を繰り返します。番号は常に前の単語の末尾、または文字列の先頭に添付されます。例: a2bc3 2d -> abbc dd dd dd 3 3a -> aaa aaa aaa 33a -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 abcd0 efgh3 2x -> xx …
15 code-golf  string 

4
パリンドローム圧縮
チャレンジ ASCIIテキストを無損失で圧縮および圧縮解除するプログラムを作成します。大文字と小文字を区別しない、句読点と区別しないパリンドロームなど、パリンドロームとうまく機能するように専門化する必要があります。最小のソースで最高の圧縮が優先されます。 得点 total_bytes_saved / sqrt(program_size) -最高得点 total_bytes_saved圧縮された文字列が元の文字列よりも小さいバイト数で、以下のテストケース全体で合計です。program_size圧縮プログラムと解凍プログラムの両方のソースコードのバイト単位のサイズです。2つの間で共有されるコードは1回だけカウントする必要があります。 たとえば、10個のテストケースがあり、100バイトのプログラムが7個のテストケースで5バイト(2個ずつ10個)を保存したが、最後のテストケースが2バイト長かった場合、ソリューションのスコアは5.3になります。((7 * 5 + 10 * 2 - 2) / sqrt(100) = 5.3) テストケース tacocat toohottohoot todderasesareddot amanaplanacanalpanama wasitacaroracatisaw? Bob IManAmRegalAGermanAmI DogeeseseeGod A Santa at NASA Go hang a salami! I'm a lasagna hog. ルール 標準の抜け穴が適用されます。 圧縮は、回文だけでなく、印刷可能なすべてのASCII(32〜126バイトを含む)テキスト文字列で機能する必要があります。ただし、実際には入力のためのスペースを節約する必要はありません。 出力は、その実装または内部表現に関係なく、バイトまたは文字の任意のシーケンスにすることができます(たとえば、文字列、リスト、および配列はすべて公平なゲームです)。UTF-8にエンコードする場合、文字ではなくバイトをカウントします。ワイド文字列(UTF-16またはUTF-32など)は、使用される可能性のあるコードポイントが0〜255の間でなければ許可されません。 圧縮/解凍ビルトインは許可されていません。 私たち自身の楽しみのために、ソースコードとともに圧縮された文字列を投稿してください。 更新1:スコアリングをからtotal_bytes_saved / …

15
モジュロパリティパーティ
n≥2のn個の厳密に正の整数の配列Aが与えられます。 あなたの仕事は、各エントリA iを以下にマップすることです: 1場合A J MOD A iが各奇数であるJように1≤J≤N及びJ≠I A j mod A iが1≤j≤nかつj≠iであるようなjごとに偶数の場合は2 そうでない場合は0(混合パリティ) 例 用A = [73、50、61] 、我々が持っています: = 50 MOD 73 50、61 MOD 73 = 61 →混合 = 73 MOD 50 23、61 MOD 50 = 11 →すべての奇数 = 73 MOD 61 12、50 MOD 61 = 50 →全ての偶数 したがって、予想される出力は[0、1、2]です。 …

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