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

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

9
2のべき乗の最後のk桁
整数rrr場合、最後のrrr桁が1または2 である2の累乗が存在します。 rrrxxx2xmod10r2xmod10r2^x\bmod{10^r} 以下のために、、以降 の場合、、以来、 注:場合、は(もう一度)r=2r=2r=2x=9x=9x=929=51229=5122^9=5\color{blue}{\textrm{12}}r=3r=3r=3x=89x=89x=89289=618970019642690137449562112289=6189700196426901374495621122^{89}=618970019642690137449562\color{blue}{\textrm{112}}r=4r=4r=4xxx=89=89=89 入力:r≤100r≤100r \leq 100 出力:xxx 例えば。 入力:2 出力:9 入力:3 出力:89 プログラムは妥当な時間内に実行する必要があります。 編集:このチャレンジのoeisシーケンスはA147884です。

4
ASCIIアートで長い分割を視覚化する
ASCIIアートで長い除算を視覚化するプログラムを作成します。入力は、選択した入力形式を使用して、分子と分母の2つの整数で構成されます。 例: 1234÷56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012÷12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0÷35 0 - 35|0 ルール: プログラミング言語の除算演算子の使用は許可されています。 大きな整数のサポートの使用も許可されています。 一貫性のために: 商がゼロの場合、ダイビングボードの最後にゼロを1つ出力します。 余りがゼロの場合、印刷しないでください。 数字に先行ゼロを印刷しないでください。 末尾の余分な改行と右側の末尾のスペースは許可されます。 最小の文字数のソリューションが勝ちです。 制限: 0 <=分子<= 10 72 - 1 1 <=分母<= 9999999 …

4
JavaScriptの最短URL正規表現一致
JavaScriptで実行したときにテキスト内のURLにほぼ一致する最短の正規表現を作成します 例: "some text exampley.com".match(/your regular expression goes here/); 正規表現は httpおよびhttps用の有効なURLをすべてキャプチャします。 実際に有効なURLではないURLのような文字列に一致しないことを心配しないでください super.awesome/cool JavaScript正規表現として実行するときに有効である テスト基準: 一致: http://example.com http://example.com/ http://example.com/super https://example.com/super example.com/super example.com example.com/su-per_duper/?add=yes&subtract=no example.com/archive/index.html twitter.com/#!/reply example.com/234ret2398oent/234nth codegolf.stackexchange.com/questions/464 crazy.wow.really.example.com/?cat=nth%3E example-example.com example1.com 合わない: 例 超クール おはようございます できます こんにちは。 http://jsfiddle.net/MikeGrace/gsJyr/を少し明確にするのに役立つテストを次に示します。 明快さの欠如をおizeびします。一致するURLがどれほどひどいものであるかを理解していませんでした。

6
2つの数字の間の大きな小数の数を数える
平均桁値が7より大きい場合、「重い」(つまり「重い」)である負でない整数があるとしましょう。 次の理由により、番号6959は「多額」です。 (6 + 9 + 5 + 9)/ 4 = 7.5 次の理由により、番号1234はそうではありません。 (1 + 2 + 3 + 4)/ 4 = 2.5 任意の言語で関数を記述し、 HeftyDecimalCount(a, b) これは、2つの正の整数aおよびbが提供されると、間隔[a..b]内に含まれる「多」整数の数を示す整数を返します。 たとえば、a = 9480およびb = 9489の場合: 9480 (9+4+8+0)/4 21/4 = 5.25 9481 (9+4+8+1)/4 22/4 = 5.5 9482 (9+4+8+2)/4 23/4 = 5.75 9483 (9+4+8+3)/4 24/4 …

8
モジュラー逆数の計算
2つの正の数xとnwithが与えられたx<2^n場合、計算する最短の関数を記述しx^-1 mod 2^nます。言い換えれば、yそのようなことを見つけますx*y=1 mod 2^n。 少なくともの間n=64、関数は妥当な時間内に完了する必要があるため、完全な検索は機能しません。 逆が存在しない場合は、何らかの方法で呼び出し元にそれを示す必要があります(例外をスローする、センチネル値を返すなど)。 どこから始めたらよいかわからない場合は、拡張ユークリッドアルゴリズムを試してください。
16 code-golf 

23
与えられた括弧を使用して文字列をインデントします
プログラムへの次の入力がある場合: ブロック開始文字のリスト ブロック終了文字のリスト フォーマットする文字列 インデントされた2つの文字セットで区切られたブロックで文字列をフォーマットします。 フォーマットはレベルごとに2つのスペースを使用して行われ、下の例に示すように括弧が配置されます。開始文字と終了文字のセットがばらばらであると仮定することができます。 用など{[(<と}])>開口部と文字セットを閉じると、次の文字列として: abc{xyz{text[note{comment(t{ex}t)abc}]}} 次の出力が期待されます。 abc { xyz { text [ note { comment ( t { ex } t ) abc } ] } } 「括弧」文字のリストをハードコーディングすることはできません。ただし、入力方法は指定されていません。これは、必要に応じて、コマンドライン引数または標準入力を使用できます。

30
波数
波状数の間の桁代替番号でアップ及びダウン 2 <3ので、461902又は708143、あるいは1010101はなく、123以下の数など。 プログラムまたは機能番号がある場合truthy値を返す書き込み波状、さもなければfalsy値。最短のコードが優先されます。 注:1桁の数字は有効な入力ですが、udulantとは見なされないisUndulantため、n <10に対してfalseを返します。


30
VBAでのゴルフのヒント
これ、これ、およびこの質問に似ています... ゴルフの一般的なヒントは何VBAですか?私は、少なくともある程度特定のゴルフ問題全般のコーディングに適用できるアイデアを探していますVBA(たとえば、「コメントの削除」は答えではありません)。回答ごとに1つのヒントを投稿してください。 私は他の言語で仕事をしてきましたが、私はで最も強く、このサイトでVBA使用VBAしているゴルファーはあまりいません。
16 code-golf  tips  vba  basic 

3
ASCIIアルファベットのN回シフトすると常にNを印刷するプログラムを作成する
入力を必要としない印刷可能なASCII文字のみを使用してプログラムを作成します。参考のために、95個の印刷可能なASCII文字を順番に示します。 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ プログラムを実行する0と、(オプションの末尾の改行を加えて)stdoutに出力され、その後正常に終了します。 プログラム内の各文字が印刷可能なASCIIの右側の文字Nスペースで置き換えられ、スペースからループに戻る~と、結果として印刷可能なASCII文字列は理想的には、入力および出力Nを取らない同じ言語で実行可能なプログラムになります(プラスN = 1〜94の場合、stdoutへのオプションの末尾の改行)、その後正常に終了します。 たとえば、元のプログラムが @Cat~(88 !) それを実行する0と、すべての文字が出力可能になり、印刷可能なASCIIスケールで1つシフトされます。 ADbu )99!"* を出力する別のプログラムが生成されます1。再度そうすることは理想的には出力する別のプログラムになります2 BEcv!*::"#+ そして、3回と4回など、94回シフトするまで ?B`s}'77~ ( 理想的には、出力するプログラムです94。 安心は、これが理想的な動作にすぎないということです。あなたのプログラムとその94の派生物はすべて動作する必要はありませんが、最初から連続して行うほど良いです。(機能しないプログラムは、何らかの動作をする可能性があります。) 得点 スコアは、元の(出力するプログラム)から始まる連続したプログラムの数です0。つまり、対応するNを正しく出力します。最高スコア(最大95)の答えが勝ちます。同点の場合、バイト単位で最短の長さのプログラムが勝ちます。 たとえば、@Cat~(88 !)出力0とADbu )99!"*出力1がBEcv!*::"#+エラーの場合、スコアは2になります。?B`s}'77~ (正確に出力94しても、N = 30〜40のすべてのプログラムが機能していても、2 です。ゼロから始まる連続した作業プログラムの数のみがカウントされます。 ノート 潜在的な競合や抜け穴と戦うために、競合する回答は、先頭にゼロや記号や小数点がない(つまり、プレーン0 1 2... 94)10進数で数値を出力する必要があります。 異なる基数または数値形式を使用する言語は許可されますが、勝つ資格はありません。 オプションの末尾の改行の存在は、プログラム間で一貫している必要はありません。 関数とREPLコマンドは許可されず、完全なプログラムのみが許可されます。

14
出力グラハム数
ウィキペディアからグラハムの数のこの表現の64層すべてを出力するプログラムを作成します。 あなたの出力が正確に一致する必要があります(ここで、このASCIIバージョンを^表しKnuthのアップ矢印スラッシュとアンダースコアの組み合わせとは、大規模な水平方向の中括弧を表します): 3^^...............................................................................................................................^3 \_______________________________________________________________ _______________________________________________________________/ \/ 3^^.............................................................................................................................^3 \______________________________________________________________ ______________________________________________________________/ \/ 3^^...........................................................................................................................^3 \_____________________________________________________________ _____________________________________________________________/ \/ 3^^.........................................................................................................................^3 \____________________________________________________________ ____________________________________________________________/ \/ 3^^.......................................................................................................................^3 \___________________________________________________________ ___________________________________________________________/ \/ 3^^.....................................................................................................................^3 \__________________________________________________________ __________________________________________________________/ \/ 3^^...................................................................................................................^3 \_________________________________________________________ _________________________________________________________/ \/ 3^^.................................................................................................................^3 \________________________________________________________ ________________________________________________________/ \/ 3^^...............................................................................................................^3 \_______________________________________________________ _______________________________________________________/ \/ 3^^.............................................................................................................^3 \______________________________________________________ ______________________________________________________/ \/ 3^^...........................................................................................................^3 \_____________________________________________________ _____________________________________________________/ \/ 3^^.........................................................................................................^3 \____________________________________________________ ____________________________________________________/ \/ …

12
数字を0で除算する
人生のある時点で、0で割ることは不可能だと言われています。そしてほとんどの場合、その声明は真実です。しかし、禁止された操作を実行する方法があった場合はどうでしょうか?私の最新作へようこそ:b-numbers。 b-数字は虚数に少し似ています:関係する主な数字は数学的に不可能ではない式をi表します(表し)。この場合、は式を表すと言われます。ここから、が何に等しいかを簡単に判断できます。−1−−−√−1\sqrt{-1}bbb1010\frac{1}{0}x0x0\frac{x}{0} x0=x1⋅10=xbx0=x1⋅10=xb \frac{x}{0} = \frac{x}{1} \cdot \frac{1}{0} = xb タスク 0による除算を含む式が与えられた場合、単純化された値をに関して出力します。入力は、nが任意の有理数または10進形式の任意の数値の形式になることに注意してください。先頭の0と末尾の0は含まれません。bbbn/0b 入力例 4/0 1/0 0/0 80/0 -8/0 1.5/0 2.03/0 -1/0 -3.14/0 b/0 3b/0 -b/0 121/0 出力例 4b b 0 80b -8b 1.5b 2.03b -b -3.14b b 3b -b 121b スコア これはコードゴルフであるため、最も少ないバイトが勝ちます。標準的な抜け穴は禁止されています。 リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes …
16 code-golf  math  number 

18
可変長の数量をデコードする
可変長数値表現(とも称されるVLQまたはuintvar)必要なバイト数としてのみ使用して28ビット整数値まで符号化する方法です。これは、特定のイベントデータのサイズを最小化する方法として、MIDIファイル形式で使用されていました。 仕組みはかなり簡単です。ビッグエンディアンの一連のバイトとして、各バイトの最上位ビット(MSB)1は、別のVLQバイトが続くことを示すためのものです。各バイトの残りの7ビットは、デコードされた値を構成します。 例(ウィキペディアから): [ 0x86, 0xc3, 0x17 ] => 106903 その他の参照:ウィキペディア、いくつかの男。 チャレンジ: 可変長の数量を指定して、整数値に変換します。 入力: 整数の有効なVLQを表す1〜4バイトまたは32ビット値タイプのリスト。 出力: VLQ入力の整数値。 ルールとスコアリング: これはコードゴルフなので、各言語のバイト単位の最短回答が勝ちです。 標準ルールとデフォルトのI / Oルールが適用されます。 (もちろん)禁止されている抜け穴。 コードのテスト(TIO.runなど)のリンクを提供してください。 回答の明確な説明を強くお勧めします。 この変換を処理するビルトインは禁止されていませんが、それらを使用しないほうがはるかに興味深いです。 テストケース: Input (VLQ) Output (int) [ 0x00 ] => 0 [ 0x07 ] => 7 [ 0x7f ] => 127 [ 0x81, 0x00 ] …

3
コンコルドのlight状
バックグラウンド 巡回セールスマン問題(TSP)は最短回路を尋ね訪問その都市の指定されたコレクション。この質問の目的のために、都市は飛行機内の点であり、それらの間の距離は通常になりますユークリッド距離(最も近い整数に丸められます)になります。サーキットは「往復」でなければなりません。つまり、出発都市に戻る必要があります。 コンコルドTSPソルバは、ユークリッド巡回セールスマン問題のインスタンスを解決することができ、正確かつはるかに高速1が期待するよりも。たとえば、コンコルドは85,900ポイントのインスタンスを正確に解決できました。その一部は次のようになります。 ただし、一部のTSPインスタンスは、コンコルドの場合でも時間がかかりすぎます。たとえば、誰も解決できませんでした、モナリザに基づいてこの100,000ポイントのインスタンスを。(あなたがそれを解決できるなら、1,000ドルの賞金が提供されます!) Concordeは、ソースコードまたは実行可能ファイルとしてダウンロードできます。デフォルトでは、組み込みの線形プログラム(LP)ソルバーQSoptを使用します使用しますが、CPLEXなどのより良いLPソルバーを使用することもできます。 チャレンジ Concordeに5分以上かかる、生成できる最小のTSPインスタンスは何ですかが解決するますか? インスタンスを出力するプログラムを作成するか、他の方法を使用できます。 得点 インスタンス内のポイントが少ないほど良い。インスタンスのファイルサイズによって関係が壊れます(以下を参照)。 標準化 異なるコンピューターはより高速または低速で実行されるため、ランタイムの測定基準としてConcorde用NEOSサーバーを使用します。次の単純な2次元座標形式でポイントのリストを送信できます。 #cities x_0 y_0 x_1 y_1 . . . x_n-1 y_n-1 NEOSで使用する必要がある設定は、「コンコルドデータ(xyリストファイル、L2ノルム)」、「アルゴリズム:コンコルド(QSopt)」、および「ランダムシード:固定」です。 ベースライン TSPLIBrl1889.tspからの1,889ポイントのインスタンスには、「合計実行時間:871.18(秒)」がかかります。これは5分以上です。次のようになります。

8
全方位電卓を作成する
インスピレーション。 逆。 指定されたオムニフィックス式を評価します。 Omnifixは通常の数学の挿入記法に似ていますが、引数を囲む各記号のコピーが追加されています。外側のシンボルは括弧の代わりになるため、追加の括弧は必要ありません。 加算、減算、乗算、除算、および正の実数(負の数を書き込むことができます-0-n-)を、言語の妥当な範囲内でサポートする必要があります。 プラスとマイナスでなければならない+と-、しかし、あなたは使用することができます*または×回および/または÷除算のために。リクエストに応じて、その他の妥当な記号を使用できます。 ブラウニーは、説明と追加機能(追加の演算、負の数、文字列など)を指摘します。回答にこれらの機能がない場合でも、それがどのようにできるかをお気軽に示してください。 可能であれば、ソリューションをテストするためのリンクを提供してください。 例 明確にするために、以下の説明では高いマイナス(¯)を使用して負の数を示しています。適切な形式を使用して負の数を返すことができます。 -5-2- → 3 +2+×3×2×+→ 8 (+2+×3×2×+→ +2+6+→ 8) -14--3-1--→ 12 (-4--3-1--→ -14-2-→ 12) +2.1+×3.5×2.2×+→ 9.8 (+2.1+×3.5×2.2×+→ +2.1+7.7+→ 9.8) ×3×÷-0-6-÷2÷×→ -9 (×3×÷-0-6-÷2÷×→ ×3×÷¯6÷2÷×→ ×3ׯ3×→ ¯9) ÷4÷-3-÷1÷2÷-÷→ 1.6 (÷4÷-3-÷1÷2÷-÷→ ÷4÷-3-0.5-÷→ ÷4÷2.5÷→ 1.6)

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