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

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

28
1Dのルークの動きを数える
ルークの列または空のスペース、あるいはその両方の位置が与えられた場合、いくつの異なるルークの動きが可能なかを出力します。ルークは左または右に空のスペースに移動できますが、別のルークを通過する必要があるスペースには移動できません。ルークが移動しても、他のルークはそのまま残ります。 たとえば、この位置から、6つの移動が可能です。 .R..RRR. 最初の(左端の)ルークは、左に1スペース、または右に1または2スペース移動できます(3移動) 次のルークは、左に1つまたは2つのスペースしか移動できません(2つの移動) 3番目のルークは、他の2つのルークの間で圧迫されているため、まったく移動できません(0移動) 最後のルークは右に1スペースしか移動できません(1移動) ポジションにはルークがまったくないか、空のスペースがまったくないことに注意してください。 入力:ルークと空のスペースの空ではないリスト(文字列、配列など)。それらは、True/ False、1/ 0、'R'/ '.'、または任意の2つの一貫した異なるシングルバイト文字または1桁の数字として表すことができます。どれがルークを意味し、どれが空きスペースを意味するかはあなた次第です。 出力:負でない整数。整数の浮動小数点数でも問題ありません。 テストケース 出力は左側の数字です。 6 .R..RRR. 0 . 0 R 4 R..RR 3 ...R 8 ..R..R.. 0 ...... より多くのテストケースについては、長さ5までのすべての入力があります。 0 . 0 R 0 .. 1 .R 1 R. 0 RR 0 ... 2 ..R 2 .R. 1 .RR …

23
ソースコードを転置し、入力を転置します!
ぼったくりのぼったくりのぼったくりのぼったくり。それらに賛成票を投じてください! 受け入れたい場合、あなたのタスクは、入力/引数を出力/返すプログラム/関数を書くことです¹。扱いにくい部分は、ソースコード²を転置する場合、出力/結果も転置する必要があることです。 ソリューションが受け入れることができる2Dデータの種類を選択できます。たとえば、リストのリスト、マトリックス、文字列のリストなど。どのリストを処理するかを指定します。入力は常に長方形で、各次元に沿って1以上の長さを持つと仮定できます。 転置のために、ソースコードの短い行は、長方形になるまで末尾のスペースが埋め込まれていると見なされますが、これらの埋め込まれた末尾のスペースはコードの長さに影響しません。 これはcode-golfであるため、ターゲットは元のソースコード(転置バージョンではなく)のバイトカウントを最適化することです。 例 ソリューションが数値行列を取り、ソースコードが AB DEF そしてその入力/引数は[[1,2],[3,4],[5,6]]です。書いたら AD BE F 代わりに実行してください[[1,3,5],[2,4,6]]。出力/結果はでなければなりません。 あなたのソリューションが改行で区切られた文字列を取り、ソースコードが ABC そしてその入力/引数は"96\n"です。書いたら A B C 代わりに実行してください"9\n6\n"。出力/結果はでなければなりません。

3
虹の終わりのセル
最も有名で影響力のある難解な言語の1つであるbrainfuckを知っているか、少なくとも聞いたことはあります。最近ではほとんどの実装で無限テープが使用されていますが、UrbanMüllerの元のコンパイラには30000セルのテープがありました。少し知られている事実*は、テープの最後に実際に特別な値があるということです。これは、典型的なブレインファックプログラムではほとんど対話されません。 この値を29999 >sとa .で印刷できますが、brainfuckは短く簡潔な解決策で知られているため、目的はこの値を最小文字数で印刷することです。 *フィクション ルール: Brainfuck命令の復習: +/ -:現在のセルをインクリメント/デクリメントし、255がインクリメントされると255から0に折り返し、その逆も同様 </ >:テープ上でポインターを左右に移動します .:現在のセルの値を出力します。 [:]セルの値が0の場合、対応するものにジャンプします ]:[セルの値が0でない場合、対応するものにジャンプします この場合,(元のコンパイラーはEOFでセルを変更せずに残すため)(入力の取得)は何も行いません。このプログラムは入力を受け取りません。 テープは最初はすべて0で満たされていますが、セル30000には不明な値が含まれています。 ポインターはセル1から始まり、セル30000で終了し、印刷されます。 1の左側と30000の右側のセルには未定義の動作があるため、ソリューションはこれらのセルにアクセスしないでください。 30000の値はあなたがゼロ以外のセルは動作しませんヒットするまで、そう単純にループし、0かもしれません。 セル30000の値のみを印刷する必要があります 最短のソリューションが勝ちです! タイブレーカーは、より効率的なプログラム(最小ステップで実行)であり、その後に最短の送信時間が続きます。 ヒント: Esolanging Fruitでは、https : //copy.sh/brainfuckを使用してコードをテストすることをお勧めします。仕様はこの課題で説明されているabortとおりであり、範囲外になった場合にプログラムが停止するようにオプションを選択できます。

30
2の累乗の合計
チャレンジ 整数の入力を指定xすると1 <= x <= 255、を合計したときに与える2のべき乗の結果を返しますx。 例 入力が与えられた場合: 86 プログラムは以下を出力するはずです。 64 16 4 2 入力: 240 出力: 128 64 32 16 入力: 1 出力: 1 入力: 64 出力: 64 特定の2のべき乗が合計に存在しない場合、出力にはゼロが含まれる場合があります。 たとえば、入力65はを出力する場合があります0 64 0 0 0 0 0 1。 得点 これはcode-golfであるため、各言語で最も短い回答が優先されます。
31 code-golf  binary  code-golf  sequence  integer  chess  code-golf  number  arithmetic  matrix  code-golf  code-golf  combinatorics  grid  set-partitions  code-golf  array-manipulation  graph-theory  code-golf  number  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  3d  code-challenge  restricted-source  printable-ascii  code-golf  board-game  code-golf  geometry  grid  code-golf  word-puzzle  code-golf  matrix  sorting  code-golf  code-golf  string  decision-problem  code-golf  matrix  cellular-automata  code-golf  decision-problem  code-golf  math  number  arithmetic  restricted-source  code-golf  code-golf  number  integer  matrix  code-golf  date  code-golf  matrix  code-golf  sequence  combinatorics  chemistry  code-golf  array-manipulation  popularity-contest  code-golf  code-golf  natural-language  code-golf  number  integer  sorting  substitution  code-golf  string  number  date  encode  code-golf  decision-problem  code-golf  string  subsequence  code-golf  string  alphabet  code-golf 

10
Rationalsの内積を見つける
私は友人の家に夕食に行って、彼らは「素因数ベクトル空間」のアイデアを提案しました。この空間では、正の整数はベクトルとして表現され、ベクトルのn番目の要素はn番目の素数が数を分割する回数になります。(これは、ベクトルに無限の数の項があることを意味することに注意してください。)たとえば、20は 2 0 1 0 0 0 ... その素因数分解は2 * 2 * 5であるためです。 素因数分解は一意であるため、各数値は1つのベクトルに対応します。 エントリをペアごとに追加することで、ベクトルを追加できます。これは、関連付けられている数値を乗算するのと同じです。また、スカラー乗算を行うこともできます。これは、関連する数値を累乗するようなものです。 問題は、逆行列がないため、この空間は実際にはベクトル空間ではないことです。先に進んで逆行列を追加してベクトル空間を閉じると、すべての正の有理数をベクトルとして表現する方法ができました。ベクトルの加算が乗算を表すという事実を保持する場合。そして、自然数の逆数はその逆数です。 たとえば、数20のベクトルは 2 0 1 0 0 0 ... したがって、1/20の端数はその逆です -2 0 -1 0 0 0 ... 我々のような割合に関連したベクトル見つけたい場合は14/15を我々は見つけるだろう14 1 0 0 1 0 0 ... および1/15 0 -1 -1 0 0 0 ... そして、ベクトル加算を実行してそれらを乗算します 1 …

3
1つの命令セットコンピューターを設計する!
通知:私は、おもしろいと思った答えに報奨金を差し上げます。 あなたの課題は、チューリング完全な 1命令セットコンピューター(OISC)を設計することです。 OISCは、1つの命令のみを使用する抽象マシンであり、機械語のオペコードが不要です。OISCは、単一の命令を賢明に選択し、無限のリソースを提供することで、複数の命令を持つ従来のコンピューターと同じ方法でユニバーサルコンピューターになることができます。 ここではチューリング完全OISCを作る単一のコマンドの例をいくつか示します。 ルール: その解釈または証拠を提供する必要があります あなたの言語の通訳者を提供する必要があります。このインタプリタは、メモリ/時間によってのみ制限される必要があります(たとえば、ユーザーが課した制限がない必要があります)。(怠laz以外の理由で)あなたの言語の通訳者を提供しない場合、あなたはそれが書かれることが可能であることを証明しなければなりません。通訳が可能でなければなりません。 チューリング完全性を証明する必要があります あなたの言語がチューリング完全であることの正式な証拠を含める必要があります。これを行う簡単な方法は、他のチューリング完全言語と同じ動作を解釈できることを証明することです。解釈する最も基本的な言語はBrainf ** kです。 たとえば、Brainf ** kと同じコマンド(およびユーザーが課すメモリ制限の同じ欠如)をすべて備えた通常の言語は、Brainf ** kで実装できるものはすべて言語で実装できるため、チューリング完全です。 。 これは、非常に実装しやすいチューリング完全言語のリストです。 追加のOISC要件 このOISCには1つの命令のみを含める必要があります。複数の命令を使用して、そのうちの1つをチューリング完全にすることはできません。 OISCは任意の構文を使用できます。あなたはあなたの答えの中で何が命令であり、何がデータであり、何がノーオペレーション(例えば空白)であるかを定義すべきです。クリエイティブに! 引数は整数である必要はありません。たとえば、///はチューリング完全OISCの美しい例です。 入力と出力の取得方法と提供方法は、ユーザーに任されています。ほとんどのOISCは、特定のメモリ位置を介してI / Oを実装しますが、他の方法で実装することもできますので、見つけることをお勧めします。 有効な回答は、投稿に含めるか、言語で解決さ​​れた簡単な課題にリンクすることにより、OISCにサンプルコードを提供する必要があります。 投票 投票者は、退屈な投稿に賛成しないようにしてください。例: 言語 - 同等物 既存のOISCの実装(回答者は独自に作成してください!) 最初の引数が呼び出すコマンドを指定する「OISC」(例) ただし、次のような興味深いクリエイティブな投稿を提出する必要があります。 数学方程式に基づいたOISC ニューラルネットワークに基づくチューリング完全ZISC 特定のメモリ位置以外の方法で出力I / Oが発生するOISC 勝ち 同じように人気コンテスト、最も多くの票と答えが勝ち!がんばろう!

13
フライヤーシミュレーター
あなたの仕事は、食物に対する生地の影響をモデリングすることです。3層のクラストを追加してください。 [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0], // in [0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0], [0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] | V [[0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,1,2], [0,0,2,1,2,2,0,0,0,0,0,0,0,2,2,0,2,0], [0,0,2,1,1,1,2,0,0,0,0,0,2,1,1,2,0,0], [0,0,0,2,1,2,0,0,0,0,0,2,1,1,2,1,2,0], [0,0,0,0,2,0,0,0,0,0,0,0,2,1,1,1,2,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0]] | V [[0,0,3,2,3,3,0,0,0,0,0,0,0,3,3,2,1,2], [0,3,2,1,2,2,3,0,0,0,0,0,3,2,2,3,2,3], [0,3,2,1,1,1,2,3,0,0,0,3,2,1,1,2,3,0], [0,0,3,2,1,2,3,0,0,0,3,2,1,1,2,1,2,3], [0,0,0,3,2,3,0,0,0,0,0,3,2,1,1,1,2,3], [0,0,0,0,3,0,0,0,0,0,0,0,3,2,2,2,3,0]] | V [[0,4,3,2,3,3,4,0,0,0,0,0,4,3,3,2,1,2], // out [4,3,2,1,2,2,3,4,0,0,0,4,3,2,2,3,2,3], [4,3,2,1,1,1,2,3,4,0,4,3,2,1,1,2,3,4], [0,4,3,2,1,2,3,4,0,4,3,2,1,1,2,1,2,3], [0,0,4,3,2,3,4,0,0,0,4,3,2,1,1,1,2,3], [0,0,0,4,3,4,0,0,0,0,0,4,3,2,2,2,3,4]] ちょっとした視覚補助: コードスニペットを表示 body { background-color:#222; color:lightgray; } <pre> [[<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span style="color:gold">0</span>,<span …
31 code-golf  matrix 

9
ナンバープレートは何ポイントを与えますか?
(これは私の最初のコードゴルフの質問です) 私が子供の頃、父と私は、車にあるナンバープレートがいくつかの単純なルールに基づいて特定のポイントを与えることができるゲームを発明しました。 同じ文字または数字のX個の量は、X-1ポイントを与えます。例: 22 = 1 point aa = 1 point 5555 = 3 points 数字は互いに隣り合っている必要があるため3353、5は3のシーケンスを中断するため、1ポイントしか与えません。 昇順または降順のX番号のシーケンス、最低3、Xポイントを与えます、例: 123 = 3 points 9753 = 4 points 147 = 3 points ポイントシステムは1桁の数字に対してのみ機能するため1919、ポイントは与え14710ず、3(147)だけを与えます。 シーケンスを組み合わせて、より多くのポイントを作成できます。例: 1135 = 4 points (1 point for 11 and 3 points for 135) 34543 = 6 points (3 points …
31 code-golf  string 

30
爆発ダイスのシミュレーション
あなたの仕事は、整数を取り込んで片面ダイスのn > 1ロールを出力するプログラムを作成することnです。ただし、このサイコロはサイコロを爆発させるためのルールに従います。 サイコロを振るとき、どの値を振ったかを確認してください。その種類のダイの最大値(4になる標準d4、またはd6の6など)を取得した場合、もう一度ロールして、その合計に新しいロールを追加します。各ロールは、最大数をロールしなくなるまで、合計に追加され続けます。ただし、その最終番号はまだ追加されています。 あなたのプログラムは単一の整数を取りn、爆発する側のnダイスを振る必要があります。これがどのように見えるべきかを示すための配布例ですn=4。nは常に爆発するため、の倍数は出力しないでください。 再帰のスタックサイズは無限であり、ランダム関数はランダム性の標準(組み込みランダムジェネレーターまたは時刻/日付)を満たしている必要があります。ランダム関数も可能な限り均一である必要があります。これは幾何分布のようなものです。これらは私たちが話しているサイコロだからです。
31 code-golf  random 

19
敵対的な除数
正の整数の除数の中には、実際に互いに嫌いなものがあり、1つ以上の一般的な数字を共有することを好みません。 これらの整数は、敵対的除数(HDN) と呼ばれます 例 数値に9566は4除数があります1, 2, 4783 and 9566 (ご覧のとおり、同じ数字を共有するものはありません)。 したがって、9566はH ostile Dです。 ivisor Nアンバー 番号9567はHDNではありません除数(1, 3, 9, 1063, 3189, 9567)はいくつかの一般的な数字を共有するため、。 ここに最初のいくつかのHDNがあります 1,2,3,4,5,6,7,8,9,23,27,29,37,43,47,49,53,59,67,73,79,83,86,87,89,97,223,227,229,233,239,257,263,267,269,277,283,293,307,337... 仕事 上記のリストに続き、あなたの仕事はn番目の HDNを見つけることです 入力 正の整数nから1の4000 出力 nth HDN テストケース 以下に1インデックス付きのテストケースを示します。 混乱を避けるために、回答で使用するインデックスシステムを明記してください。 input -> output 1 1 10 23 101 853 1012 26053 3098 66686 4000 85009 これはcode-golfであるため、バイト単位の最低スコアが優先されます。 …

30
私は自己番号ですか?
自己番号(また、コロンビア又はDevlali数と呼ばれる)は自然数であり、x式は、n + <digit sum of n> = x任意の自然数の解がありませんn。たとえば、21は、n = 15結果としての自己番号ではありません15 + 1 + 5 = 21。一方、20 は自己数nです。これは、そのような等式を満足するものが見つからないためです。 この定義は数字の合計を参照するため、基数に依存します。この課題のために、OEISのシーケンスA003052である10 進数の自己番号のみを考慮します。バイナリ(A010061)およびベース100(A283002)自己番号も計算されました。 チャレンジ x入力として正の整数を指定すると、x10を底とする自己数の場合は真理値を出力し、そうでない場合は偽値を出力します。真理値と偽値の明確化については、このテーマに関するメタ投稿を参照してください。 完全なプログラムまたは機能を記述でき、通常のチャネルのいずれかで入出力を提供できます。もちろん、標準の抜け穴は禁止されています。 これはcode-golfですので、回答(バイト単位)が短いほど良いです! テストケース 真実: 1 3 5 7 9 20 31 86 154 525 偽: 2 4 6 8 10 15 21 50 100 500 サンドボックスリンク リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 …

30
バイナリフィボナッチ
チャレンジ 正の整数Nを取り、2進数でフィボナッチ数列の最初のN項を計算し、それを1つの2進数に連結し、その数値を10進数に変換してから10進数として出力するプログラムまたは関数を生成する必要があります整数。 例えば 1 -> [0] -> 0 to decimal outputs 0 3 -> [0, 1, 1] -> 011 to decimal outputs 3 4 -> [0, 1, 1, 10] -> 01110 to decimal outputs 14 ->、単に数値を出力する必要はありません(例えば、ユーザーが4、単にoutputと入力した場合14)。矢印は、プログラムが何をする必要があるかを説明するためのものです。 テストケース 1 -> 0 2 -> 1 3 -> 3 4 -> 14 5 …

3
楽譜ASCIIアートジェネレーター
注:Anders Kaseorgは、これは別の以前の質問と重複する可能性があると警告しています。そう思われますが、この質問を投稿する前にその質問を見つけられなかったのが残念です。それにもかかわらず、その質問は1つの答えしか受け取っておらず、この質問は皆さんが今回試してみたい場合に備えて、より簡単です。ただし、この質問が重複としてマークされてしまうかどうかは理解できます。 チャレンジ 次のような入力が与えられた場合: 8g 8Df 4cs 2C 1A 次のような出力を生成する最短のプログラム/関数を作成します。 /\ -o- | | ---|-|---------------------------------------------------|-| |/ | | ---/|--------|\----b-*-----------------------------------|-| / | | | | o | | -|--|--------|------|-----------------|------------------|-| | (| \ | | | | | | -|--|--)----*-------|/---------|------|------------------|-| \ | / | | | | -----|-------------------------|-------------------------|-| | | *_/ #-*- …

30
先端のとがった箱を作る
2つの正の整数WとHを指定すると、境界がスラッシュ(/および\)で構成されたASCIIアートボックスが出力されます。ボックスの内部はスペースで満たされています。 「スパイク」とは、2つのスラッシュが一緒になって矢印の形を形成することです。 /\ \/ / \ \ / だから、のための出力W = 4, H = 3になります /\/\/\/\ \ / / \ \ / / \ \/\/\/\/ 上に4つのスパイクがあり、下に4つ、下に3つ、左に3つ、右に3つあります。 他の入力/出力ペアは次のとおりです。 W H [spiky slash box] 1 1 /\ \/ 1 2 /\ \/ /\ \/ 2 1 /\/\ \/\/ 2 2 /\/\ \ / …

4
チェーン上の犬
私は屋根裏部屋の窓から隣人の庭を見ています。彼らは、庭の中央にあるポストに犬をつないでいます。犬は庭を駆け回っていますが、常にチェーンの端にいるので、最終的には泥の中に跡を残します。通常、このトラックは完全に円形ですが、私の隣人は庭に犬のチェーンが引っかかる他のポールを持っています。犬のチェーンがポールにぶつかるたびに、犬は新しいポールを中心に、半径として残っているチェーンの長さで回転し始めます。極、犬、チェーンの幅はすべてゼロなので(私の隣人は数学者です)、チェーンは円の半径を短くせずに無限に極に巻き付けることができます。チェーンがパス内にある場合、犬はチェーンを通過することもできます(カラーではありません)。この奇妙さをしばらく観察した後、私は隣人の犬をシミュレートするコードを書くことにしました。このコードは、犬が鎖でつながれたセンターポールの位置、隣の庭の他の棒の位置、鎖の長さ、犬の開始位置を取り、図を出力します犬が草をすり減らした経路。次の任意の組み合わせが一定であると想定できます(したがって、それらを入力として受け取らない)。 犬がチェーンされているポールの位置 チェーンの長さ 犬の出発地 太陽が昇るので、窓に照らされた屋根裏部屋の床のスペースが縮小し、コードを書くスペースがますます少なくなります。コードのバイトカウントを最小限に抑えて、屋根裏の床にドラフトするスペースを確保してください。 テストケース ここでは、犬はに位置するポール(赤い点)から3ユニット南に開始すると仮定し0,0ます。わかりやすくするために、極に点がある場所を示しましたが、出力にそれらを含める必要はありません。 Poles at 1,2 -1,2 Poles at 0,.5 Poles at 0,1 1,1 -2,1 -1,-.5 Poles at 0,1 1,1

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