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

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

1
悪いニュース、誰か
フューチュラマエピソードでは、乗組員のベンダの囚人のメンバーが遺体を交換しましたが、遺体のペアが2度以上心を交換することはできません。 チャレンジ 既に発生している心身のスワップの有効なコレクションを受け入れ、それぞれの心を元の体に戻す正当なスワップのセットを出力するプログラムまたは関数を記述します。これらの心身のコレクションの識別子は、改行を含まない文字列である必要があります。入力グループには、以前にスワップしたことがない2人まで(明確に名前が付けられた)人を追加できます。(必要な証明は、追加のボディが2つだけであること)ただし、問題を解決するために必要な最小限の人数を追加する必要があります。 入力と出力はどのような形式でもかまいませんが、追加の情報を格納することはできません。常に有効であると考えるかもしれません。これはコードゴルフなので、バイト数が最も少ない送信が勝者です。 例 [('A','B'),('C','D')] -> [('A','C'),('B','D'),('A','D'),('B','C')] ['A','B'] -> ['C','D','A','C','B','D','A','D','B','C'] [('A','B'),('C','D'),('A','C'),('A','D')] -> [('B', 'E'), ('A', 'E'), ('C', 'B'), ('C', 'E')] "A\nB\nC\nD\n" -> "A\nC\nB\nD\nA\nD\nB\nC\n" ショーからのもの: [("Amy","Hubert"),("Bender","Amy"),("Hubert","Turanga"),("Amy","Wash Bucket"),("Wash Bucket","Nikolai"),("Phillip","John"),("Hermes","Turanga")] 以下に示すショーのソリューションは無効です。 [("Clyde","Phillip"),("Ethan","John"),("Clyde","John"),("Ethan",Phillip"),("Clyde","Hubert"),("Ethan","Wash Bucket"),("Clyde","Leela"),("Ethan","Nikolai"),("Clyde","Hermes"),("Ethan","Bender"),("Clyde","Amy"),("Ethan","Hubert"),("Clyde","Wash Bucket")] イーサンとクライドはフライフィリップ、ゾイドバーグジョン、ヘルメスヘルメスがマシンをほとんど使用しなかったので不要なので、これは無効です。この場合の有効な解決策を以下に示します。 [("Philip","Hubert"),("John","Wash Bucket"),("Philip","Turanga"),("John","Nikolai"),("Philip","Hermes"),("John","Bender"),("Philip","Amy"),("John","Hubert"),("Philip","Wash Bucket")] 有効な入力には、明らかに多くの回答が考えられることに注意してください。いずれも有効です。
10 code-golf  math 

12
配分のパラドックス
与えられた: 自然数S。 合計が1になるN個の有理重みWのリスト。 次のようなN個の非負整数のリストLを返します。 (1) sum(L) = S (2) sum((S⋅W_i - L_i)^2) is minimal 言い換えると、S⋅W_isをできるだけ整数で近似します。 例: 1 [0.4 0.3 0.3] = [1 0 0] 3 [0 1 0] = [0 3 0] 4 [0.3 0.4 0.3] = [1 2 1] 5 [0.3 0.4 0.3] = [2 2 1] or [1 …

5
ジャンブラーvsリビルダー:テトリスレンガを使用したコーディング-リビルダーの回答の領域
これは、Jumblers対Rebuilders: Rebuildersがソリューションを投稿できるTetris Bricksを使用したコーディングに付随する質問です。 強盗をどこに置くべきかで論じたように?それは強盗のためのより多くのフォーマットの自由を可能にし、彼らが担当者を獲得することを可能にします。 Jumblers vs Rebuilders:Coding with Tetris Bricksへの解答がまだ解読されていない場合にのみ、この質問に答えてください。回答にはその回答へのリンクを含め、回答にリンクする回答にはコメントを含めてください。 この質問に対する受け入れられた答えは、勝利した再構築者になります。 スコアボードは他の質問にのみ表示されます。 COTOは寛大になりましたJSFiddleを簡単にコードのレンガを操作します。私はこのフィドルを更新したので、ES 6は不要であり、このStack Snippetでは最小化しました。 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function parseSpec(s){function first(){var e,t;t=S.findIndex(function(t){return(e=t.findIndex(function(e){return/\S/.test(e)}))!=-1});return t==-1?null:[e,t]}function at(e){var t=e[0],n=e[1];return n>=0&&n<S.length&&t>=0&&t<S[n].length?S[n][t]:" "}function wipe(e){var t=e[0],n=e[1];if(n>=0&&n<S.length&&t>=0&&t<S[n].length)S[n][t]=" "}var P,S=s.split("\n").map(function(e){return e.split("")});var oPats=$(".proto-tet [pat]").get().map(function(e){return{sPat:eval("["+$(e).attr("pat")+"]"),e:e,block:function(e){return[at(e)].concat(this.sPat.map(function(t){return at([e[0]+t[0],e[1]+t[1]])}))},wipe:function(e){this.sPat.forEach(function(e){return wipe([P[0]+e[0],P[1]+e[1]])})},match:function(e){return!/\s/.test(this.block(e).join(""))}}});window.oPats=oPats;while(P=first()){var oPat=oPats.find(function(e){return e.match(P)});if(!oPat){orphan(at(P));wipe(P);continue}createPiece(oPat.e,oPat.block(P));wipe(P);oPat.wipe(P)}}function createPiece(e,t){function r(e){var t=$(this).position();G.isIgnoreClick=false;G.eDrag=this;G.iOffsets=[e.clientX-t.left,e.clientY-t.top]}function i(){if(G.isIgnoreClick)return;var e=$(this);s($(".proto-tet ."+e.attr("rr")),function(e,t){return n[t-1]},e.css("left"),e.css("top"));e.remove()}function s(e,t,n,s){e.clone().html(e.html().replace(/@(\d)(\d)/g,t)).appendTo("body").on("mousedown",r).click(i).css({left:n,top:s})}var n=[];s($(e),function(e,r,i){return n[r-1]=t[i-1]},18+G.iSpawn%8*18*4+"px",18+~~(G.iSpawn/8)*18*4+"px");G.iSpawn++}function init(){$(document).on("mouseup",function(){return G.eDrag=null}).on("mousemove",function(e){if(G.eDrag){var t=$(G.eDrag),n=Math.round((e.clientX-G.iOffsets[0])/18)*18,r=Math.round((e.clientY-G.iOffsets[1])/18)*18,i=t.position();if(n!=i.left||r!=i.top)G.isIgnoreClick=true;t.css({left:n+"px",top:r+"px"})}})}function orphan(e){error("Spec …

9
rot32エンクリプターを構築する
ASCII文字空間では文字がすべて同じ順序であるため、ゴルフrot13暗号化機能の構築は簡単すぎます。代わりにrot32エンジンを試してみましょう。 あなたの仕事は、Base64文字列を入力として受け取り、同じ文字列を返すが、各文字が元の文字から32シンボル回転した(本質的に、最初のビットが反転した)関数を作成することです。 この問題に使用するbase64エンコード文字列には0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+/、埋め込み文字が含まれてい=ます。これは、通常では文字列がで始まる組み込みのBase64ライブラリを使用またはインポートするソリューションを防ぐためAです0。 Example inputs and outputs: > rot32("THE+QUICK+BROWN+FOX+JUMPS+OVER+THE+LAZY+DOG=") nb8ukoc6eu5liqhu9irudogjmuip8lunb8uf4tsu7ia= > rot32("NB8UKOC6EU5LIQHU9IRUDOGJMUIP8LUNB8UF4TSU7IA=") h5Eoei6C8oBfckboFclo7iadgocjEfoh5Eo9AnmoDc4= > rot32("Daisy++daisy++give+me+your+answer+true/I+/+m+half+crazy++all+for+the+love+of+you") 7GOY2uuJGOY2uuMO/KuSKu2U+XuGTY0KXuZX+KvcuvuSuNGRLuIXG32uuGRRuLUXuZNKuRU/KuULu2U+ どの言語でもそうするための最短のプログラムが勝利します。
10 code-golf 

1
シャブルとスモル-パートI
セットアップ 下の図1に示すように、29の番号の付いたセルを含む奇妙な形のボックスを考えます。 この2Dボックスの内側には、2つの種の正方形の動物があります。シャブルとスモウルです。図1(a)は、青のシャブルと赤のスモウルを示しています。各クリーチャーは、1つのグリッドセルを占有します。ボックスには0から26のシャブルが含まれますが、常に2つのスモルが含まれます。 重力の影響を受けて、シャブルとスモールがボックスの底に座って、その下にあるものの上に積み重ねられます。両方の種は非常に怠惰であり、永久に動かないままです。 ボックスには、黒い正方形として描かれた、1つのグリッドセルを占有するstotも含まれています。ストットは重力の影響を受けません。 図に示されているように、ボックスにはセル28の底部に1つの開口部があります。 テキストでボックス内shubbles、smolesの構成、およびSTOTを表現するために、我々は29文字の文字列を使用して、グリッドセルごとに一つの文字、列挙された順に、と.、空のセルを表すo、shubbleを表すxsmoleを表します、@ストットを表す。たとえば、図1(a)の構成は文字列で表されます.........@...o....ooo..xox...。 操作 ボックスは90度の任意の倍数で回転できます。ボックスが回転している間、シャッフルとスモールはグリッドセル内で静止したままです。回転が完了するとすぐに、それらは次のいずれかになるまで直接下に落ちます:i)下の壁によってブロックされるii)下の小槌、くす、またはstotによってブロックされる、またはiii)セル28の穴から落ちるボックスを終了します。ストットは落ちません。生き物がその上に乗っていても、現在のセルに固定されたままです。 クリーチャーが落下して新しい安定した構成に達するまで、ボックスを再び回転させることはできません。 テキストでは、ボックスの回転は+、時計回りの90度回転、|180度の回転、および反時計回りの90度の回転によって示され-ます。 さらに、ストットは、1つのグリッドセルの増分で4つのコンパス方向に移動できます。移動は:i)ストットとクリーチャーの間で衝突を引き起こす(つまり、宛先グリッドセルは空でなければならない)、ii)ストットと壁の間で衝突を引き起こす、またはiii)ストットがボックスから出るセル28の穴。 また、(現在の重力に対して)その上にクリーチャーが置かれている場合、ストットは移動しない可能性があります。 テキストでは、ストの動きは<、左、>右、^上、v下で示されます。ストットムーブは常に、図に示されている「標準」(回転されていない)フレームを基準に指定されます。つまり、ストットがセル10にある場合、移動^すると常にセル5に移動し、移動>すると常にセル11に移動します。ボックスの向きは、移動の方向には影響しません。 操作のシーケンスは、左から右への文字列を使用してエンコードされます。たとえば、文字列+<<^-は、ボックスが時計回りに90度回転し、次にstotが(標準フレームに対して)左に2回、上に移動し、次にボックスが反時計回りに90度回転して元の方向に戻ることを示します。 チャレンジ 完全に正当な理由(私が開示することはできません)のために、1つの臭いを放出することなく、すべてのシャッフルを箱から放出したいと考えています。これを達成するために、上で具体的に説明した操作を使用できます。 この問題を解決する前に、さまざまな操作がボックスの内容にどのように影響するかをシミュレーションする必要があります。これがこの課題の焦点です。 stdin(または同等のもの)から2つの引数を受け入れるプログラムを記述する必要があります。 ボックスの初期状態を説明する文字列 一連の操作 両方の引数が構文的に有効であり、ボックスが標準の向きで始まり、ボックスの初期状態が安定していて合法であると想定する場合があります。 プログラムはstdout、次のいずれかに(または同等の)出力する必要があります。 (ケース1)ボックスの最終状態。文字列として表されます。移動のシーケンスが合法で(ストット移動ルールに違反していない)、smoleがボックスから出ない場合。ボックスの最終的な向きは重要ではありません。 (ケース2)!移動のシーケンスが不正である、またはsmoleがボックスから出た場合は、単一の感嘆符 得点 優勝したプログラムは、バイト数で最も短いプログラムであり、非常に有利なボーナス乗数がいくつかあります。 ケース1のエンコードされた出力を印刷する代わりに、0.65の乗数を要求します。プログラムは、シャブル、スモル、ストト、空のセルの仕様文字を使用して、ボックスの最終的な状態と方向でASCII画像を出力し、*セル28の穴のすぐ外側のセル内。先頭と末尾の空白は無視されます。 たとえば、図1(a)を90度回転すると、出力は次のようになります。 . . ..... .o... xo.@. *ooo.. x . ケース1のエンコードされた出力を印刷する代わりに、プログラムがイメージファイルを出力するか、最終的な状態と向きのボックスの写真を含むGUIウィンドウを表示する場合、0.22の乗数を要求します。写真は図1(a)のスタイルである必要があり、グリッドセル、壁、および色付きのボックスを使用した生き物/ストットを示しています。 ケース1のエンコードされた出力を印刷する代わりに、0.15の乗数を要求します。プログラムは、アニメーションの.gifまたはアニメーションのGUIウィンドウを1秒間隔でシミュレーションのすべての中間状態を表示して出力します。0.22乗数と同じ画像規則が適用されます。アニメーションの最初のフレームは、シミュレーションの初期状態を示している必要があります。さらに、アニメーションは「非表示」の中間状態を表示する必要があります。 回転後、アニメーションフレームごとに1セルずつ安定した構成に落ちるシャッブル/スモル ボックスの中間の90°回転状態、180°回転 請求0.12の乗算器をプログラムは、上記のスタイルのアニメーション.gifまたはアニメーションGUIウィンドウを生成する場合、しかし20のFPSやショーで実行 ボックス回転のスムーズで連続的なアニメーション stotの動きのスムーズで連続的なアニメーション、および安定した構成に落ちるシャブル/スモルのアニメーション セル28の穴から落下するシャッブルは、ボックスから出て行くように示され、完全に外に出ると消えます。1秒あたり1回以下の操作が実行される限り、アニメーションのタイミングを独自に選択できます。 合計スコアはfloor( base score * multiplier …

5
t9のような機能を実装する
今日の課題は、t9のような機能を実装することです。 2つのパラメーターのみを持つ関数を実装します。 文字列で1つの電話番号と、単語のリストを含むテキストファイルのコンテンツを受け取ります(特定の改行スタイルは想定しないでください)。 リンクhttps://raw.githubusercontent.com/eneko/data-repository/master/data/words.txtを使用して機能をテストするか、使用することができます/usr/share/dict/words(詳細については、単語のリストを含むテキストファイルをチェックしてください[閉じる]情報)。 常に少なくとも2つの番号を受け取ると想定できます。 番号を指定すると、単語のリストから読み取って、それらの単語にマッピングされている文字で始まる単語を返します。これは、入力は2から9までの数字でなければならないことを意味し ます。無効な入力を受け取った場合は、何でも好きなことができます。 一致が見つからない場合は、空のリストnull/ nilまたはを返すことができます0。 携帯電話のキーは同等の文字にマッピングされていることに注意してください: 0と1は無効です 2件一致[abc] 3一致[def] 4試合[ghi] 5一致[jkl] 6一致[mno] 7一致[pqrs] 8試合[tuv] そして9試合[wxyz] 例: f('52726') //returns ["Japan","japan","Japanee","Japanese","Japanesque"...,"larbowlines"] f('552') //returns ["Kjeldahl","kjeldahlization","kjeldahlize"...,"Lleu","Llew"] f('1234') //makes demons fly out your nose or divide by 0 f('9999') //returns ["Zyzzogeton"] f('999999') //returns [] or null/nil or 0 関数を実行した後、任意の方法で関数を印刷できます。 ルール: 標準の抜け穴は無効です …

24
警官と強盗のボウリング(強盗)
強盗のスレッド この課題の目標は、警官が作成したコード(コードはこちら)を変更して解読することです。次の場合は、コードをクラックしています。 変更されたコードの最大レーベンシュタイン距離は10であり、文字数が少ない 同じ有効な入力が与えられた関数は、同じバージョンの同じ言語で同じ出力を生成します 変更後のバージョンを元の投稿から168時間(1週間)以内に投稿した。 変更したコードには、印刷可能なASCIIのみを含める必要があります。 クラックされたバージョンを投稿した後、元のコードにコメントを残して、クラックへのリンクが含まれていることを示す必要があります。 あなたのスコアは、あなたのすべての答えの中でのレーベンシュティエン距離の合計です。最も高いスコアが勝ちます。 付随する警官のスレッドはここにあります。

10
魔方陣を確認
魔方陣は、別個の正の整数1、2、...、からなる側面を有する数字の正方形アレイnは、nは ²の和ように配置n個の任意の横の数字、垂直、又は主対角線は常にに同じ数。これはマジック定数として知られています。 プログラムは、標準入力を介して、正方形の辺の長さを指定する数値を入力し、次に正方形内の数値を入力する必要があります。いいえ番号は複数回使用することはできません、以下の数より大きなNは ²使用することはできません、そして全ての数は、プログラム番号の組み合わせは魔方陣であるか否かを決定しなければならない0より大きくなければなりません。
10 code-golf  math 

4
アナグラムコード
もう一度やってみましょう。 このコンテストの目的は、互いにアナグラムである2つのコードを作成することです(2つは同じバイトを異なる順序で含む必要があります)。次のタスクを実行します。 入力された数値が幸せか素数かをテストし、数値がどちらかである場合は出力する7必要があります(たとえば、出力happy primeと4出力が必要sad non-prime)。 もう1つは、コードサイズをバイト単位でワードとして出力する必要があります(60バイトのプログラムが出力しsixty、39バイトのプログラムが出力しますthirty-nine)。 ルールの説明が必要な場合は、遠慮なく教えてください。 これはコードゴルフ大会なので、最短のプログラムが勝ちます!

1
テトリスのゲームで最高の動きを見つける
私はテトリスが大好きですが、私はあまり得意ではありません。宇宙船が私の目の前で飛び立つのを一度だけ見たい!そして、コンピュータはすべてが非常に優れているので、唯一の可能な解決策は、私のためにそれを再生するプログラムを作成することです... テトロミノ(4つの正方形でできた形状)と競技場のマップが与えられたら、テトロミノを配置して、最大数の行をスコアし(最大数の行を完全にブロックで満たす)、最小数を作成します新しい穴(競技場の最上部「見る」ことができない空きスペース1)。 入力 入力には、ドロップするテトロミノを表す1行の文字が含まれ、その後にスペース()とプラス記号()の10 * 18グリッド2が続きます。+ キャラクターは、テトリスで見つかった7つの基本テトロミノのいずれかを表します。すべてのピースを90度回転できますが、反転させることはできません。すべてのテトロミノとその回転は次のとおりです。 # S = ## ## ## # # Z = ## ## ## # # ### ## L = # # # # ## # ### # ### ## J = # # # # ## # ### # # # T = …
10 code-golf  tetris 

15
できるだけ正方形に近いグリッドを作成します
グリッドをできるだけ正方形に近づける関数またはプログラムを作成する 入力として整数N、整数(1、2、3、25など)が与えられます 出力は、できるだけ正方形に近いN文字の完全な長方形グリッドである必要があります (志望)正方形は、ユーザーが指定したOまたはXの文字のいずれかで構成されている必要があります ポイント: OまたはXのみにハードコード:+1 出力を回転するためのparam(0/1、true / false、類似のもの)(5または8など):-10 正方形を設計します(何らかのパターンでOとXの両方を使用します):-5 両方のタイプの文字(x / y軸> = 3)を含み、水平方向または垂直方向に反転してもパターンは同じである場合、パターンは有効と見なされます(XとOsの交換が許可されています)。 例 INPUT: 4 INPUT: 5 INPUT: 8 INPUT: 9 OO OOOOO XXXX XOX OO XXXX OXO or rotated 90deg XOX 許可されない例(同じ長さの行または列ではない) BAD RESULT: 5a BAD RESULT: 5b BAD RESULT: 8 OOO OO OOO OO OO …

4
単項数はどのくらい強いですか?
通常どおり、0から8までの数字で構成される9進数の非負整数が与えられます。ただし、この数値の桁数(先行ゼロなし)は完全な正方形です。 このため、数字は正方形のグリッドに配置できます(読み取り順序は保持されます)。 1480(1125ベース10)の例: 14 80 ここで、そのような単項グリッドのすべての桁が、別のグリッドスペースへの動き(周期的な境界条件)を示しているとしましょう。 432 501 678 これは言っている 0 = stay still 1 = move right 2 = move right and up 3 = move up ... 8 = move right and down したがって、1480グリッドで4から開始する場合は、上に移動して(pbcを覚えてください)、左に8に移動します。つまり、右と下に移動して4に戻り、期間2のサイクルを開始します。 一般に、このプロセスは0になるか、サイクルに気づくまで続きます。(0は期間1のサイクルと見なされます。) 1480の場合、4つの開始桁のそれぞれで最終的に到達する期間は2 2 2 1それぞれです。 グリッドが大きい場合、これらの数値は8よりも大きくなる可能性がありますが、新しい単項数の「数字」として使用することもできます(単に9 ^ nの係数が数字であるかのように): 2*9^3 + 2*9^2 + 2*9 + …

2
ブックライターを書く
以下は、開いた本のかなり単純なASCIIの描写です。 |\ | \ | \ | \ | \__________ | || | | || Lorem i | \ || psum do | \ || lor sit | \ || amet, | \ || consect | \||_________| テキスト部分は右側のページにのみあり、幅7文字、高さ5であることに注意してください。また、本の上端には5つのバックスラッシュと10のアンダースコアがあることに注意してください。10はテキスト幅に3を加えたもので、5は10の半分です。 同じスケーリング形式を使用して、テキスト領域をw文字幅、h高さのテキスト領域に変更できます。ここで、wは奇数の正の整数、hは任意の正の整数です。 一部のw × h本:1×1、1×2、3×2 |\ |\ | \ |\ | \____ | …

3
mathpack数値リテラル
序文 非常に白熱した状況では、ゴルフをさらに進める必要があります。 (例えば、あなたの答えが100文字で、それを99にすることができなかったことが恥ずかしいチャレンジの 場合)その場合、これからはこのチャレンジの勝者のアルゴリズムを使用します:) ゴール uint32を取り、最も圧縮された形式を返すプログラムを作成する必要があります。 $ mathpack 147456 9<<14 数に対して複数のソリューションがあります。一番短いものを選んでください 圧縮されたフォームが元の数以上の場合、元の数を返します ルール 任意の言語で記述-任意の言語で出力 私はCのそれを知ってる'abc'で6382179、あなたは、この変換でかなり良い結果を得ることができます。しかし、この課題では言語が分離されているので、失望しないでください 外部変数の使用は禁止されています。演算子とリテラルと数学関連の関数のみ! 得点 テストケースは次のとおりです。pastebin.com / 0bYPzUhXスコア(パーセント)は、byte_size_of_your_output / byte_size_of_the_list 改行なしの比率になります。 (万が一に備えて最高のコードを確認するので、自分でこれを行う必要があります) 勝者はスコアと出力の言語によって選択されます! 例: $ mathpack 147456 | mathpack 97787584 | mathpack 387420489 9<<14 | 9e7^9e6 | pow(9,9)

5
安く、速く、良い-共通要素(最大)[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、 Code Golf Stack Exchangeのトピックとなるようにします。 3年前休業。 Cheap、Fast、Goodに触発され、 2つだけのアルゴリズムを実装します。 数学 ゼロ以外の2つの整数aおよびbが与えられた場合、GCF dは、aとbの両方を余りなく除算する最大の整数です。係数Bézout整数のペアである(x、y)のようにAX +による= D。ベズー係数は一意ではありません。たとえば、次の場合: a = 15, b = 9 我々は持っています d = 3 x = 2 y = -3 以来15*2 + 9*(-3) = 30 - 27 = 3。 GCFとBézout係数のペアを計算する一般的な方法は、ユークリッドのアルゴリズムを使用することですが、これが唯一の方法というわけではありません。 コード プログラムは、2つの整数を入力として受け取る必要があります。最大の共通因子と1組のベズー係数を出力/返すはずです。 入力例: 15 9 出力例 3 (2, -3) …

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