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

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

14
64バイト以下で可能な限り多くの小数点以下のKhinchinの定数
キンチンの定数は奇妙な数学的定数であり、Wolfram MathWoldによれば、「高精度に計算するのは非常に難しい」。 ここでは、100桁までです。 2.685452001065306445309714835481795693820382293994462953051152345557218859537152002801141174931847697 ... Khinchinの定数を正しい小数点以下の最大数まで出力するプログラムを64バイト以下で作成します。 Khinchinの定数に直接関連する組み込みのライブラリ定数または関数を使用することはできません。(たとえば、Math.Khinchin(precision)は絶対に許可されません。) あなたは可能計算対数、総和などに数学ライブラリを使用します あなたはかもしれあなたの答えの一部または全部をハードコーディング。 プログラムは有限の出力を生成し、比較的近代的なコンピューター(ここにリストされているコンピューターなど)で1時間以内に実行する必要があります。 stdoutに出力する必要があります。入力はありません。 http://mothereff.in/byte-counterが 64バイト以下を登録する限り、任意の文字を使用できます。 得点 スコアは、2.68から始まる、プログラムが正しく出力するKhinchinの定数の連続する桁数です。間違った桁を出力できますが、最後の正しい桁のみがスコアにカウントされます。 たとえば、次の出力 2.68545200 2 06530644530971483548179569382038229399446295305115234555721 9ポイントを獲得します。数字ごとに1つ。2 6 8 5 4 5 2 0 0ただし、2の後は1である必要があります。

5
2014年世界IPv6デー
世界IPv6デーの記念日をマークするために、インターネット協会はOne Dayの2014年6月6日にIPv4を止めるキャンペーンを発表しました。 IPv6アドレスは、コロンで区切られた8つの16ビット16進値として長い形式で表されます。アドレスに応じて、RFC 3513のセクション2.2 アドレスのテキスト表現の項目2で説明されているように、短縮することもできます。 ゼロビットを含むアドレスの書き込みを容易にするために、ゼロを圧縮する特別な構文が利用可能です。「::」の使用は、16ビットのゼロの1つ以上のグループを示します。「::」は、アドレスに一度しか表示できません。「::」は、アドレスの先頭または末尾のゼロを圧縮するためにも使用できます。 このチャレンジのエントリは、長い形式または短い形式のいずれかでフォーマットされたIPv6アドレスを1つだけ受け入れ、長い形式と短い形式の両方で同じアドレスをこの順序で表示するプログラムです。 入力は、コマンドライン引数、STDIN、または選択した言語に適した他の入力ソースからのものです。 IPv6アドレスの解析専用のライブラリまたはユーティリティは禁止されています(inet_ {ntop、pton}()など)。 入力アドレスが無効な場合、出力は空になります(または、アドレスが無効であることを示す適切なエラーメッセージが表示されます) ::短縮が発生する場合、特定のアドレスに対して1つの短縮操作のみが発生する場合があります。特定のアドレスに対して複数の潜在的な短縮操作がある場合、全体の最短アドレスを提供する操作を使用する必要があります。この点で同点がある場合は、最初の操作が使用されます。これを以下の例に示します。 回避すべき標準的な抜け穴 例: Input Output 1080:0:0:0:8:800:200C:417A 1080:0:0:0:8:800:200C:417A 1080::8:800:200C:417A FF01::101 FF01:0:0:0:0:0:0:101 FF01::101 0:0:0:0:0:0:0:1 0:0:0:0:0:0:0:1 ::1 :: 0:0:0:0:0:0:0:0 :: 1:0:0:2:0:0:0:3 1:0:0:2:0:0:0:3 1:0:0:2::3 1:0:0:8:8:0:0:3 1:0:0:8:8:0:0:3 1::8:8:0:0:3 1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8 1:2:3:4:5:6:7:8 ABCD:1234 <Invalid address format - no output> ABCDE::1234 <Invalid address format - no …

7
家系図ソルバー
これは、カルバンの趣味によってコミュニティに残されたいくつかの課題の1つです。 次の形式の行を含む「家系図」ファイルを取得します。 [ID] [mother ID] [father ID] [gender] [full name] このようなhttp://en.wikipedia.org/wiki/Cousinの最初の家系図について説明します。 1 ? ? M Adam 2 ? ? F Agatha 3 ? ? M Bill 4 2 1 F Betty 5 2 1 M Charles 6 ? ? F Corinda 7 3 4 M David 8 6 5 F …

4
誰がコルモゴロフの複雑さの勝者になりたいですか?
今日の使命は、テキストコンプレッサーを発明することです。 仕事 次の2つの関数を作成します。 パッカーは、 ASCII文字(U + 007FにU + 0000)の文字列を受け取り、可能な最も少ない文字を含む、Unicode文字列(U + 10FFFFにU + 0000)を出力する機能です。 アンパッカーは、エンコードされたUnicode文字列を受け取り、正確に元のASCII文字列を出力する関数です。 入力 許可される入力は、ASCII文字列(パッカー用)とパックされたUnicode文字列(アンパッカー用)のみです。ユーザー入力なし、インターネット接続なし、ファイルシステムの使用なし。 あなたの関数はこの英語の単語のリストにアクセスできます。このリストをローカルのtxtファイルとして使用するか、ソースコードのコンテンツを文字列または文字列の配列としてコピーできます。 以下のスニペットを関数にハードコーディングすることはできません。 出力 両方の関数の唯一の許可された出力は文字列です。 アンパッカーの出力には、パッカーの入力とまったく同じ文字が含まれている必要があります。 入力と出力は、すべてのUnicode(UTF-8 / 16/32、GB18030、...)をサポートする任意の文字エンコードを使用できます。スコアは出力内のUnicode文字の数にのみ依存するためです。ただし、使用しているエンコードを正確に指定してください。 出力内のUnicode文字の数をカウントするには、次のツールを使用できます。http://mothereff.in/byte-counter 得点 エントリは、次の10個のテキストスニペット(このフォーラムで取り上げたもの)をパックおよびアンパックできる必要があります。 スコアは、10個のパックされた文字列のサイズ(Unicode文字)+ 2つの関数のサイズ(Unicode文字)の合計になります 辞書を使用する場合は、辞書のサイズをカウントしないでください。 エントリには、各スニペットの「スコア」とパックバージョンを含めてください。 最低スコアが勝ちます。 データ スコアを計算するためにエンコードするスニペットは次のとおりです。 1:Rick Rollの歌詞(1870b):ゴルフをコーディングするのは見知らぬ人ではありません。ルールを知っているので、私もそうです。 私たちは愛する見知らぬ人ではありません あなたはルールを知っているので、私もそうです 完全なコミットメントが私が考えていることです 他の男からこれを取得することはありません 私の気持ちを伝えたいだけです 理解させる あなたをあきらめるつもりはありません 失望させない 走り回ってあなたを捨てない 泣かないで さよならを言うつもりはない 嘘をついて傷つけない 私たちは長い間お互いを知っていました あなたの心は痛むが …

9
超スピーディなトーティエント機能
目標は簡単です。10秒以内にできるだけ多くの数のトーティエント関数を計算し、その数を合計します。 最後に結果を印刷し、実際に計算する必要があります。自動化されたtotient関数は許可されていませんが、bignumライブラリは許可されています。1から開始し、すべての整数を連続してカウントアップする必要があります。番号をスキップすることはできません。 あなたのスコアはあなたのプログラムがあなたのマシンで計算できる数/私のプログラムがあなたのマシンで計算できる数です。私のコードはC ++での単純なプログラム(最適化オフ)です。うまくいけば実行できます。 使用できる重要なプロパティ! もし gcd(m,n) = 1, phi(mn) = phi(m) * phi(n) if pが素数の場合phi(p) = p - 1(for p < 10^20) 場合nでもあり、phi(2n) = 2 phi(n) 最初のリンクにリストされている他の 私のコード #include <iostream> using namespace std; int gcd(int a, int b) { while (b != 0) { int c = a % …

29
最も近い回文数を見つける
数値Nを指定すると、N + Xが回文構造になるようにXを出力/返します。ここで、| X | できるだけ小さくする必要があります。 パリンドローム:数字は、左から右に読むときと右から左に読むときの数字の順序が同じである場合、回文です。 95359と6548456対称で123あり、そうで2424はありません。先行ゼロなどの数字020は回文ではありません。 入力は10 15より小さい正の整数です。メソッドパラメータとして、何でもstdinから読み取ります。 出力は整数(正または負)でなければならず、入力がすでに回文である場合は0でなければなりません。出力をstdoutに書き込んで、関数または任意の関数から返すことができます。要件を満たす2つの数値(2と-2)がある場合、そのうちの1つだけを出力します。 例: Input Output 3 0 234 -2 1299931 -10 126 5 or -5 (only one of them)

4
Brainfuckの縮小
次のルールに従って、Brainfuckコードを最小化することが課題です。 以外のすべてを削除し+-><[].,ます。 連続した文字+または-文字のグループで、+sと-sの量が同じ場合は、それらを削除します。 上記と同じですが、>とを使用し<ます。 +-><何もしない場合は、文字のシーケンスを削除します。たとえば、を削除する必要があります+>-<->+<。(これは実装するのが最も難しく、最も難しいものかもしれません。)のような誤検知が出ないよう+>-<+>-<にしてください。 テストケース: 入力 ++++++[->++++++<]>. prints a $ [-]< resets tape >,[>,]<[.<] reverses NUL terminated input string ++-->><< does nothing 出力 ++++++[->++++++<]>.[-],[>,]<[.<] 入力 Should disappear: ++>>+<+++<->-->-<<->-< Should disappear: +++>-<--->+< Should stay: +++>-<+>---< 出力 +++>-<+>---< 必要に応じて入力と出力を受け入れることができます-stdin / stdout、関数など。ただし、入力はハードコードされない場合があります。 これはcode-golfであるため、文字数の最も短いコードが優先されます。

6
ブロートウェアコンテスト:100個以上のMiB実行可能ファイルの作成[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 大きな(104857600バイト以上)実行可能ファイルにコンパイルする、お気に入りのコンパイル言語で短いソースコードを作成します。プログラムは実行可能でなければならず(1GBの空きメモリを想定)、何でもできます(hello worldのような単純なものが望ましい)。 非自明なトリックの使用が推奨されます。 Cでの退屈な例: int a[1024*1024*25] = { 1 }; int main(){} ボーナスは、実行可能ファイルのサイズを小さくできない理由を「説明」できる場合(つまり、すべての膨張が実際に何らかの形で使用される場合)にポイントします。

4
暗号化されたクイネ亜種
ソースのMD5合計を次の形式で出力するプログラムを作成します。 MD5 sum of my source is: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 不正行為はありません。ソースファイルを読み取ってその合計を計算することはできません。プログラムは外部情報を読み取ってはなりません。 もちろん、あなたの言語で利用可能なMD5ライブラリを使用できます。

5
湖を埋める、2D
この問題の1次元バージョンは非常に簡単だったので、ここではより難しい2Dバージョンです。 標準入力で土地の高さの2D配列が与えられ、雨が降ると湖が形成される場所を把握する必要があります。高さマップは、0から9までの数字の単なる長方形の配列です。 8888888888 5664303498 6485322898 5675373666 7875555787 同じ配列を出力し、水中にあるすべての場所をに置き換える必要があります*。 8888888888 566*****98 6*85***898 5675*7*666 7875555787 水は斜めに逃げることができるため、この構成では湖はありません。 888 838 388 最短のコードが勝ちます。コードは、最大幅80、高さ24までのサイズを処理する必要があります。 さらに3つの例: 77777 77777 75657 7*6*7 75757 => 7*7*7 77677 77677 77477 77477 599999 599999 933339 9****9 936639 => 9*66*9 935539 9*55*9 932109 9****9 999999 999999 88888888 88888888 84482288 8**8**88 84452233 => 8**5**33 …

30
自分自身を削除するプログラム
コンパイルされた言語を使用する場合、プログラムはコンパイルされた実行可能ファイルを削除する必要があります(ただし、ソースファイルを削除する必要はありません)。インタープリター言語を使用する場合、プログラムはソースファイルを削除する必要があります。 開始単価: Python(29文字) import os;os.remove(__file__) 編集:rm -rf /などの解決策を防ぐために、プログラムは実行可能ファイルまたはソースファイル以外を削除しないでください。 html,body{margin:0;padding:0;height:100%;overflow:hidden} <iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=19355" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe> コードスニペットを実行する結果を非表示スニペットを展開

9
ポーカーの手に名前を付ける
ポーカーの手に名前を付ける 5枚のカードが与えられたら、ポーカーハンドの名前を出力します。 High card One pair Two pair Three of a kind Straight Flush Full house Four of a kind Straight flush Royal Flush 疑わしい場合は、http://en.wikipedia.org/wiki/List_of_poker_handsのルールを参照してください。 入力 stdinまたはコマンドライン引数からの5 枚のカード。カードは、フォーム上の2文字の文字列で、RSRはランクで、Sはスーツです。ランクはある2- 9(番号カード)、T(10)、 J(ジャック)、(Q女王)、 K(王)、 A(エース)。スーツがありS、D、H、Cそれぞれスペード、ダイヤ、ハート、クラブのために。 カードの例 5H - five of hearts TS - ten of spades AD - ace of diamonds 入力の例=>望ましい出力 3H …
22 code-golf  game 

7
リバースエンジニアポーリング統計
前書き 投票の選択肢の割合のセットが与えられたら、それらの統計を生成するために投票に含まれる必要がある有権者の最小数を計算します。 例:お気に入りのペットは何ですか? 犬: 44.4% ネコ: 44.4% マウス: 11.1% 出力:(9投票者の可能な最小数) スペック プログラム/機能の要件は次のとおりです。 入力としてパーセンテージ値の配列が与えられます(標準入力、関数の引数など)。 各パーセント値は、小数点以下1桁に丸められた数値です(たとえば、 44.4 44.4 11.1。 (stdoutまたは関数の戻り値で)小数点以下1桁に丸めた場合、その結果が正確なパーセンテージになる投票の投票者の最小数を計算します。 ボーナス:「自明ではない」方法で解決できる場合は-15文字(つまり、有効な最初の有権者が見つかるまで、可能な限りすべての有権者を反復処理する必要はありません) 例 >./pollreverse 44.4 44.4 11.1 9 >./pollreverse 26.7 53.3 20.0 15 >./pollreverse 48.4 13.7 21.6 6.5 9.8 153 >./pollreverse 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 99.6 2000 >./pollreverse …

11
piの適切な合理的近似
分母の順序が小さい順に、分母<1000000のpiのすべての適切な合理的近似を出力するプログラムを作成します。 a/bは、分母がを超えない他の有理数よりもpiに近い場合、piの「適切な有理数近似」ですb。 出力には合計167行が含まれ、開始と終了は次のようになります。 3/1 13/4 16/5 19/6 22/7 179/57 ... 833719/265381 1146408/364913 3126535/995207 最短のプログラムが勝ちます。

4
ASCIIアニメーション雪景色
ASCIIアートのあらゆる部分を、雪が降ってから形成され始めるアニメーションの雪景色に変える最短のプログラムを作成します(ゴルフ以外のJavaScriptの例は、 2011-12-19に最終更新されました)。 入力仕様:プログラムは、スペース、アスタリスク、および改行の任意の組み合わせを受け入れる必要があります。入力には、最大23行と1行あたり80文字が含まれます。空行はありませんが、行は空白のみで構成されます。単一の末尾の改行が含まれるため、無視する必要があります。 出力:ユーザーが手動でプログラムを終了するまで、オペレーティングシステムのテキストコンソールまたはターミナルエミュレーターのASCII文字(スペース、アスタリスク)および制御コード(キャリッジリターン、ラインフィード、ANSIエスケープコードなど)を出力します。オペレーティングシステムがその設定を許可している場合、ターミナルウィンドウは80x24文字であると想定できます。 ルール: アニメーションは滑らかで高速でなければなりません(15 fpsを推奨)。 雪の密度は5〜15%でなければなりません。 1秒間にスクロールできる雪の画面は1つだけです。(つまり、1秒間に24行を超える新しい雪を追加できないことを意味します。) 雪は、画面の上部に入るときに明らかなパターンを表示してはなりません。ランダムに見える必要があります。 プログラムは、起動時に画面のすべての行をできるだけ早く雪で満たす必要があります。画面の個々の行の最初の塗りつぶしは、視聴者に明白であってはなりません。 入力ASCIIアートの左下隅は、画面の左下隅になければなりません(さらに明確にするために、図1)。 ASCIIアートの内側または下の領域は、恒久的にアスタリスクで埋めてはいけません。ただし、アスタリスクはこの領域をスクロールできます(必須ではありません)。 雪は、入力に示されている場合を除き、画面の下部または既存の雪の上に堆積してはなりません。 スペースを逆順にすると、クリスマスツリーのアニメーションが元のコードの出力と非常に異なって見えるため、下のスペースは上のスペースよりも先に埋める必要があります。(2011-12-20を追加) 楽しい休日を! 図1:80x24画面のラベル付きエリア ---------------------------New snow added on this line-------------------------- | | ----------------------------------------------------------+ | **** | | Snow MUST fall Snow MAY fall ----------------> **** | | through this through these **** **** | Snow MUST fall …

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