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

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

2
文字列をエンコードするために自分自身を並べ替えるプログラム(クインバリアント)
次の80文字の行を印刷するプログラムを作成します。 codegolf.stackexchange.comのこのプログラムは、文字列をエンコードするためにそれ自体を置換します。 その後、1行の入力を受け入れ、そのコードポイントを並べ替えてソースコードを出力します(追加も削除もされません)。そのコードが実行されるとき、印刷された行が入力の最新の行であることを除いて、同じことが起こる必要があります。 Perlスタイルの正規表現^[A-Za-z0-9. ]{80}$は、任意の入力行に一致します。追加の仮定を行うことはできません。 提出のスコアは、ソースコードのコードポイントの数から94を引いたものです。低いほど良い。 コードはQUINE(に受け入れられない何もないしなければならない例えば、ファイルの読み取りを)。特に、負のスコアを持つ投稿は、なんとか93として不正行為でなければなりません!64 80未満です。 2014-04-21を追加しました。プログラムのソースコード全体が、コードポイントをカウントする文字エンコーディングで整形式でなければなりません。たとえば、UTF-8の末尾のバイト範囲(80..BF)で80個の連続したバイトを使用し、それぞれを単一のU + FFFD REPLACEMENT CHARACTERとしてカウントすることはできません(さらに悪いことに、コードポイントではないため)。 また、エンコードは複数のコードポイント(コード化する方法を許可する場合など SCSUを、)、あなたのプログラムだけでなく、それが直接的または間接的に発生し、すべてのプログラムをのみ、そのうちの1つ(または少なくともすべてを使用しなければならないコード全体同等に扱われなければなりません)。
16 code-golf  quine 

18
最下層パリンドローム
数を指定してn、base の回文であるb ≥ 2ような最小のベースを見つける関数を記述します。たとえば、28の3進表現が1001であるため、入力は基数を返す必要があります。基数2と基数5の両方で回文ですが、出力は2 <5でなければなりません。nb283932 入力 正の整数n < 2^31。 出力 b ≥ 2の基底b表現がn回文であるような最小の基底を返します。先行ゼロを想定しないでください。 サンプル(入力=>出力): 11 => 10 32 => 7 59 => 4 111 => 6 ルール 最短のコードが優先されます。

2
ブール式の圧縮
構文 ~ない /\と \/もしくは t真 f偽 P、Q、FISH、など:変数 (演算子は優先順位の順に与えられます) 前書き 一部のブール式は、短くするために異なる形式に変更できます。たとえば、式 ~(~P /\ ~Q) 短い形式に変更できます P\/Q 数式 P \/ ~P 短い形式に変更できます t チャレンジ この課題では、のみ使用して、任意のブール式が与えられると、そのプログラムの書き込みに必要とされる/\、\/、~、t、f複数の最短形態が存在し得るので、括弧、ブール(大文字で)変数、および空白を、(最短形式を出力します)変数のすべての割り当てに相当する式の文字。最短のコード(すべての言語)が勝ちます。I / Oは、合理的な方法で実行できます。 また、答えを確認するのは難しいので、コードがどのように機能するかの簡単な説明を含めると役立ちます(ただし、必須ではありません)。

2
アスキーアート円グラフ
あなたの目標は、ASCIIアートの円グラフを出力することです。これはコードゴルフなので、最短のプログラム(文字ではなくソースコードのバイト数をカウントする)が優先されます。 外部ソフトウェアまたはAPIは許可されていません。各言語のネイティブ言語のみ。 円の開始角度と方向(時計回り/反時計回り)は重要ではありません。文字の高さは常に幅よりも優れているため、出力は楕円形に見えることがあります。 「背景」(パイの左または右の文字)はスペースでなければなりません。 入力として、3つの変数があります(初期化するためのコードを投稿してください。これらの変数の初期化はスコアにカウントされません): k:文字の配列。各文字は、円グラフで使用する必要があるものです v:フロートの配列。それは各キャラクターの割合です。の長さはの長さvと等しくなりkます。その要素の合計は常に1.0です r :整数&gt;1。これは円グラフの半径です。 ボーナス:不完全なパイを出力できる場合は、スコアの20%を差し引きます(∑| v |i = 1v私)&lt; 1(∑私=1|v|v私)&lt;1(\sum_{i=1}^{|v|} v_i)<1)。

5
高速トリガー計算
高速三角法計算 あなたの仕事は、角度のサイン、コサイン、タンジェントを度で計算できるプログラムを作成することです。 ルール 組み込みの三角関数はありません(言語にこれらの関数がある場合は、割線、余割、余接もありません)。 ルックアップテーブルを使用できますが、それらの合計サイズは3000メンバーを超えてはなりません(3つの操作をすべて合わせて)。trig.lookupそれらがコードを混同しないように、ファイル(例えば)からテーブルを読むようにしてください。 ネットワークアクセスなし。 以下で説明するように、出力を正しく丸める必要があります。床や天井を使用しないでください。 有効桁数が7桁である限り、連続分数など、任意の方法を使用して値を計算できます。 あなたのコードはそれ自体で時間を計ることができなければなりません。ファイルI / O操作を時間から除外します。トリガーと丸めを行う関数の時間を計ってください。 私はあなたのコードを実行できなければなりません。自由に利用できるコンパイラ/インタプリタへのリンクを投稿し、コードをコンパイル/実行するために必要な指示を与えてください(GCCに渡すオプションなど)。 標準の抜け穴が適用されます。 入力フォーマット trig.inご使用の言語がファイルI / Oをサポートしていない限り、呼び出されたファイルから読み取ります。 角度は0から360までです。 入力は、改行で区切られた10桁の10桁の有効数字までの角度で構成されます。例えば: 90.00000000 74.54390000 175.5000000 出力フォーマット 指定された各角度に対して、スペースで区切られた7つの有効数字のサイン、コサイン、タンジェントを1行で出力する必要があります。1.745329E-5for tan 0.001や1.000000E+0for などの「科学表記」を使用しsin 90ます。 無限大またはNaNを表します。nたとえば、の出力はである90.00000000必要があります1.000000 0.000000 n。 入力が改行で区切られた3つの角度の場合、出力は3つのラインで構成され、各ラインにはサイン、コサイン、タンジェントが含まれます。 他には何も出力できません。 trig.outご使用の言語がファイルI / Oをサポートしていない限り、呼び出されたファイルへの出力。 得点 最速のコード。課題は、これらの3つの値をできるだけ迅速に計算するプログラムを作成することです。最も速い時間が勝ちます。 誰もが多くの角度の同じテスト入力を受け取ります。 時間は私のマシンに記録されます。 スコアは、同じ入力での3回の実行の平均です(実行の間に何も保存できないことは明らかです)。 コンパイル時間は含まれていません。この課題は、言語よりも使用される方法に関するものです。(誰かがJavaなどの言語のコンパイル時間を除外する方法を教えてくれたら、とても感謝しています) 私のマシンはUbuntu 14.04インストールです。プロセッサの統計はPastebinにあります(実行により取得されますcat /proc/cpuinfo)。 私はそれをテストしたときにあなたの答えにあなたの時間を編集します。

16
T-SQLでのゴルフのヒント
T-SQLでゴルフをするための一般的なヒントは何ですか?私は、少なくともT-SQLに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています。回答ごとに1つのヒントを投稿してください。 元のアイデアをくれたMarcogに感謝します。:)
16 code-golf  tips  sql 

10
クラッシュ(つまり、インタプリタが動作を停止して強制的に閉じる)Python [閉じた]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 誰がPythonを最もクリエイティブなコードで致命的なクラッシュに陥らせることができるかを知りたいです。これは、たとえばWindowsがプログラムを実行すると、「IDLEが動作を停止しました」などのメッセージが表示され、Linuxがプログラムのクラッシュ時にLinuxが実行することを意味します。 ルール: これはPython 2.7以降で行う必要があります(したがって、Pythonの将来のバージョンで修正された古いバグは悪用されません)。 「クラッシュ」の定義は、「意図しない方法でIDLEまたはPythonを終了させる」です。これは、「IDLEまたはPythonを停止してトレースバックを与える」という意味ではありません。これは、exit、sys.quit、abortなどが有効な回答ではないことも意味します。たとえば、これは受け入れられません。 import sys try: print c # Crashes Here, as c is not defined. except NameError, SyntaxError: print "Oh No!" sys.exit() Pythonが応答しなくなることは受け入れられません。 コードは、クラッシュするために何をするかについて説明する必要があります。バグレポートへのリンクは問題ありません。 10日後に最も支持された答えが勝ちます!ベギン!! 編集: 目的は、Pythonがトレースバックを使用してプログラムの実行を停止するだけではないことを明確にすることができます。目的は、Pythonを完全にクラッシュさせるか、動作を停止させることです。これは、このタスクが正常に完了した場合、Windowsがこれを提供することを意味します(ここでWordをクラッシュさせることはありません。これは、別のプログラムで何が起こるかの一例に過ぎません)。 またはこれ:

3
キング+ルークvsキング
それは別のよくプレイされるチェスゲームの終わりです。あなたは白人プレイヤーであり、まだルークとあなたの王がいます。対戦相手のキングは残っています。 あなたは白人なので、あなたの番です。このチェスの試合をプレイするプログラムを作成します。その出力は、一連の動き、gifアニメーション、ASCIIアートなど、何でもかまいません。 当たり前のように思えますが、明示的に述べます。ゲームに勝つ必要があります(限られた数の動きで)。このポジションから勝つことは常に可能です。そのルークを失うことはありません。遅らせないでください。 プログラムは、開始位置と各黒の動きに対して人間の入力を受け入れる場合と受け入れない場合があります(これは正当な位置、つまりキングが互いに触れていないことを安全に想定できます)。そうでない場合、黒王のランダムな開始位置とランダムな動きで十分です。 スコア スコアは、コードのバイト単位の長さ+ボーナスになります。すべての言語が許可され、最低スコアが勝ちます。 ボーナス プログラムで人間が定義した開始位置とランダムな位置の両方を許可する場合は-50。人間は標準入力、ファイル、GUIから入力できます... プログラムで人間とランダムの両方のプレイヤーが黒王を動かすことができる場合は-100 外部チェスソルバーまたは組み込みのチェスライブラリに依存している場合は+12345 幸運を! 更新! 追加ルール:試合はチェックメイトまでプレイする必要があります。黒は辞任せず、チェス盤の外に飛び出さず、エイリアンに誘getされません。 ヒント あなたは、おそらくから助けを得ることができ、この質問にchess.se。
16 code-golf  chess 

14
自己完結型ログ
問題" 関数log(または他の3文字の名前)を定義します。この関数は、呼び出されたときに、命令(ソースとして)と最初の引数の両方を記録/印刷/書き込み(問題の言語のデフォルト)します。言い換えると: i=777 j=333 log(i) //outputs: "log(i) 777" log(i+j+1) //outputs: "log(i+j+1) 1111" すべての実用的な目的のために出力i: 777は十分ですが、一部の言語ではそのための非常に特定のリフレクションライブラリがあり、それは挑戦ではないため、命令全体を出力する必要があります。 ひらめき このためのインスピレーションは、私と他のプログラマが、それは(悪いデバッガで)、多くの場合それである刺激、あなたがのようなものを書く方法を議論したconsole.log("i:", i)我々は(ノードのみ)ソリューションは、(それが出力する(かなりクレイジー)JavaScriptを作っ横、i: 777行全体ではなく、出典)これは驚くほど長く、コードゴルフを思い出させて、他の(特にコードゴルフ)言語がどれほど優れているかと思いました。 ボーナス -10%:ファイル読み取りなし(コンパイラーを超えて) PS。これがここでの私の最初の「質問」なので、私が犯した間違いを気軽に指摘してください。
16 code-golf 

24
古いマクドナルド関数
選択した言語で次を出力する関数を作成します。 Old MacDonald had a farm, E-I-E-I-O, And on that farm he had a cow, E-I-E-I-O, With a moo moo here and a moo moo there, Here a moo, there a moo, everywhere a moo moo, Old MacDonald had a farm, E-I-E-I-O! ここで、cow及びmoo関数のパラメータの文字列であり、そのように変更することができpig及びoink又はsheep及びbaa、例えば。 大文字、ハイフン、句読点、スペース、改行を考慮する必要があります。 コードに最小限のUnicode文字を入力することを目指します。

17
ヒントを計算する
あなたと友人がバーに入ってきます。バーテンダーはあなたを上手に扱っているので、あなたは彼にチップを渡すことにします。それで、あなたはあなたの信頼できるポケットコンピュータを引き出して、あなたにあなたのためのヒントを計算するための簡単なプログラムを書きます。ちょっと待って!演算子キーが壊れています!あなたの仕事は、与えられた入力量に対して20%のチップを計算することです。テスト入力はxx.xxの形式(20.96など)になります。ルールは次のとおりです。 数学形式の演算子では以下を使用しません:+ - * / %(Wally Westに感謝) 組み込みパーセント関数またはAPIの使用なし ネットワークにアクセスできません 使用なしevalまたは類似 Windows計算機はありません(はい、以前に答えたことがあります) ヒント関数は組み込まれていません(どの言語にも含まれていません) 出力は小数点以下2桁に切り上げてください。 スコアはバイト単位の長さに基づいています。 プログラムが任意のチップ量を受け入れられる場合、-20%。金額の入力はxxの形式で与えられます(例:0.35ではなく35)

18
名前の匿名化-並べ替え
編集:ランダムマスキングには-20のボーナスがあります 仲間の内部告発者と秘密知識のキャリア。 私は郵送による面接のおかげです。もちろん、特定の名前を完全に言うことはできません。しかし、あまり明白ではない方法で開示したいので、あなたの助けが必要です。 これらの名前を次の形式で提供します 「evil_company_that_makes_me_shiver」 しかし、私はそれを完全に綴りたくありません。私と全世界を支援するあなたの仕事は、あなたが上記を変える素晴らしいプログラムを提供することです "ev**************************" または "**il************************" あるいは "****_c**********************" わかったと思う。しかし、1つの欠点があります。名前を全部公開したいので、出現回数と単語自体をスクリプトに渡す必要があり、文字を少しずつ公開します。例は ~$ ./whistle NSA 3 &gt; "N**" &gt; "**A" &gt; "*S*" または ~$ ./whistle nuclear 3 &gt; "nu*****" &gt; "***lea*" &gt; "**c***r" または ~$ ./whistle nuclear 2 &gt; "nuc****" &gt; "***lear" あなたが私を助けてくれることを願っています。サイズが重要であることを知っているので、最短のコードが勝ちます。この世界をより良い場所にしよう!
16 code-golf 

7
10進数表現の期間
単一の正の整数nを取り、1 / nの 10進表現の期間を返す関数を作成します。 テストケース: 1 -&gt; 1 # 1/1 = 1.0000...... = 1._0 2 -&gt; 1 # 1/2 = 0.5000...... = 0.5_0 3 -&gt; 1 # 1/3 = 0.3333...... = 0._3 7 -&gt; 6 # 1/7 = 0.14285714.. = 0._142857 13 -&gt; 6 14 -&gt; 6 123 -&gt; 5 …

6
Perl 6でのゴルフのヒント
Perl 6でゴルフをするための一般的なヒントは何ですか?少なくともPerl 6に固有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。 Perl 6はPerl 5ではないため、この質問は重複していません。Perl 5ゴルフのヒントのほとんどは、Perl 6には当てはまりません。
16 code-golf  tips 

24
追加番号ゲーム
追加番号ゲーム 2つの整数パラメーター、 整数パラメーターまたは整数変数、開始番号、および最大反復カウントを取る関数/プログラムを作成します。コードは、次のゲーム例を実行して新しい数字を作成し、数字が1桁左になるまで繰り返します。例えば。 3 7 2 = (3 + 7) &amp; (7 + 2) = 10 9 1 0 9 = (1 + 0) &amp; (0 + 9) = 1 9 1 9 = (1 + 9) = 10 1 0 = (1 + 0) = 1 基本的に、個々の数字を取得してその数字を隣に追加し、次の追加の結果も追加します。 最大反復回数は、無限ループを保護するためのものであり、最大値に達すると、コードは最後の5つの数値ステップをダンプする必要があります。同じ出力は、1桁に達して終了するときに発生するはずです。発生したステップが5つ未満の場合は、有効な数値のみを出力します。 出力はStep: …
16 code-golf 

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