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

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

24
テキストをセンタリング!
テキストをセンタリング! この課題では、さまざまな線を中央に配置します。 例 Foo barbaz Foo barbaz Hello World Hello World Programming Puzzles & Code Golf Programming Puzzles & Code Golf 仕様書 各入力行には常に少なくとも1つの非空白文字が含まれます。空白文字はスペース()と改行のみであると想定できます。各入力行には、末尾の空白や先頭の空白はありません(改行を除く)。出力の末尾の空白は許可されません。 入力の最も長い行の中央に配置する必要があります。その行の長さが偶数の場合、プログラム/関数は左に中央揃えすることを選択する必要があります。行の最大長は言語で処理できるものであれば何でもかまいませんが、プログラムは少なくとも500行の行で機能する必要があります。 リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 # Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: # Ruby, <s>104</s> <s>101</s> 96 bytes ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。 # Perl, 43 + 2 (-p flag) = 45 bytes …

30
2016年の明けましておめでとうございます!
入力は1970年から2090年までの整数で、1年を表します。プログラムは、入力された年と同じ曜日に新年が当たる翌年を出力する必要があります。 テストケース: 以下はサンプルの入力と出力です 2001 => 2007 2047 => 2058 2014 => 2020 1970 => 1976 1971 => 1982 1977 => 1983 2006 => 2012 20%ボーナス:元旦の曜日を出力します 2001 => 2007 (Mon) 2047 => 2058 (Tue) 2014 => 2020 (Wed) 1970 => 1976 (Thu) 1971 => 1982 (Fri) 1977 => 1983 (Sat) 2006 …

30
ビットとバイトを使用したプログラミング
この課題では、私が作成した単純な言語のインタープリターを作成します。この言語は、1バイトのアキュムレーターAに基づいています。プログラムの開始時、A =0。これらは言語の指示です。 !:反転 この命令は、単にアキュムレータのすべてのビットを反転します。すべてのゼロが1になり、すべてのゼロがゼロになります。シンプル! >:右シフト この命令は、Aのすべてのビットを1つ右にシフトします。左端のビットはゼロになり、右端のビットは破棄されます。 <:左シフト この命令は、Aのすべてのビットを1桁左にシフトします。右端のビットはゼロになり、左端のビットは破棄されます。 @:ナイブルを交換 この命令は、Aの上位4ビットを下位4ビットと交換します。たとえば、Aが01101010で実行する場合、Aは次のよう@になります10100110。 ____________________ | | 0110 1010 1010 0110 |_______| それがすべての指示です!シンプルでしょ? ルール プログラムは、最初に入力を1回受け入れる必要があります。これはコード行になります。これはインタラクティブなインタープリターではありません!入力を1回だけ受け入れることができ、その行が実行された後に開始にループバックする必要はありません。 プログラムは、上記の入力を評価する必要があります。上記以外の文字はすべて無視されます。 プログラムは、アキュムレータの最終値を10進数で出力する必要があります。 有効なプログラミング言語の通常の規則が適用されます。 標準の抜け穴は許可されていません。 これはcode-golfであり、最小バイトカウントが優先されます。 以下は、提出物をテストするための小さなプログラムです。矢印の前にコードがあり、その後に予想される結果があります。 ! -> 255 !>> -> 63 !<@ -> 239 !nop!&6*! -> 255 楽しい!

23
ドーナツの聖なる穴、バットマン!
一部のキャラクターは他のキャラクターよりも神聖です。できるだけ神聖でない文字を使用して、上記のステートメントを表示します。 チャレンジ 完全なプログラムを作成Holy Hole In A Donut, Batman!して、STDOUTまたは最も近い代替に出力します。入力を圧縮してスコアを減らすことができる場合は、ワイルドに:) 入力 なし 出力 Holy Hole In A Donut, Batman! ルール これはコードチャレンジであり、最低スコアが勝ちます 目的の出力はファイルから読み取ることができますが、合計にカウントする必要があります。 出力の末尾の改行は問題ありません 標準的な抜け穴とT&Cが適用されます 得点 あなたのスコアはあなたのバイト数といくつかの修飾子です: 神聖なキャラクターを使用すると、0469abdegopqrADOPQR@#それぞれ2ポイントとしてカウントされます 余分な聖なる文字を使用8B%$&すると1ポイント(ペナルティなし) 不浄なキャラクター12357cfhijklmnstuvwxyzCEFGHIJKLMNSTUVWXYZ!"^*()[]{}-=_+|\/?,.<>:;'~を使用すると、ペナルティが大きくなり、キャラクターあたり10ポイントとしてカウントされます。 スペース、タブ、および改行は1ポイントです(ペナルティなし)。 リストされていないその他の文字は10ポイントです。 *私のキーボードでは、キー「$」と「&」は非常に神聖です。フォントのバリエーションが原因で文字が不浄になる場合は、上記のリストに従う 変更されていない文字列のHoly Hole In A Donut, Batman!スコア172 Ruby:puts "Holy Hole In A Donut, Batman!"スコア225 スコアチェッカー @DeadChexはスコアリングスクリプトを親切にまとめました 何か明確にする必要がある場合はお知らせください。必要に応じてキャラクターのリストを更新します-この時点では明らかなキーのみを含めました。アイデアは簡単ですが、キャラクターの穴は良いです。

8
9バイトで40個の数字
あります40個の方法有向ハミルトン経路は:3×3のグリッド上に配置することができる 。このグラフィック(感謝SP3000! )のみを示している20本の無向パスが。40の有向パスについて、各色の線を両方向にトラバースします。 チャレンジ 印刷可能なASCIIのみを使用して、次のような文字の3×3グリッドを書き込みます。 ABC DEF GHI 40本の有向パスのそれぞれは、40シングルライン、9文字のプログラムとして、このグリッドから読み込まれると、目標は1から40までの各プログラムの出力に一意の整数値を持つことであるためにこれを行うすべての 40本のパスすることは難しいとは考えられません、そのため、できるだけ多くのパスで機​​能させる必要があります。 40のパスプログラムが1〜40の最も明確な数字を出力する提出物が勝者になります。Tiebreakerは以前の提出に進みます。 エラーが発生するか、1〜40の整数を出力しないパスプログラム、または別のパスプログラムが既にカバーしている整数を出力するパスプログラムはカウントされません。具体的には: コンパイル、実行、または終了中にエラーが発生したプログラムはカウントされません。警告は大丈夫です。 1から40の整数を出力しないプログラム、-35または35 36カウントされない、またはカウントされないようなわずかに不正なものを出力するプログラム。 出力を生成するためにユーザー入力を必要とするプログラムはカウントされません。 終わらないプログラムはカウントされません。 今に、決定論的でないプログラムはカウントされません。 そうでない場合、別の有効なプログラムがすでに出力した1から40の整数を出力する有効なプログラムはカウントされません。(最初のプログラムがカウントされます。) 1〜40の整数の整数表現を出力するプログラムのみが合計にカウントされます。番号は、通常であると予想されている1、2、...、 39、40それはあなたの言語のための規範ではない場合を除き、形式。(出力の末尾の改行は問題ありません。) プログラムが出力する番号とその順序は関係ありません。有効なプログラムからの異なる整数の数のみが重要です。 すべてのパスプログラムは同じ言語で実行する必要があります。ただし、実際には、「プログラム」は、ターゲット整数を出力または返す完全なプログラムと同様に、関数(必要な引数なし)またはREPLコマンドである場合があります。関数、REPLコマンド、および完全なプログラムを組み合わせて使用​​できます。 9文字の印刷可能なASCII文字を区別する必要はありません。 例 3×3グリッドが ABC DEF GHI そして、あなたの40のプログラムと出力はこのように見えました ABCFEDGHI -> 26 ABCFIHEDG -> 90 ABCFIHGDE -> 2 ABEDGHIFC -> syntax error ADEBCFIHG -> prints 40 but then errors …

30
2文字のスクラブルワードをすべて印刷
チャレンジ: Scrabbleで使用可能な 2文字の単語を、できるだけ少ないバイト数で印刷します。ここにテキストファイルリストを作成しました。以下も参照してください。101個の単語があります。CやVで始まる言葉はありません。最適ではない場合でも、クリエイティブなソリューションが推奨されます。 AA AB AD ... ZA ルール: 出力された単語はどういうわけか分離しなければなりません。 大文字と小文字は区別されませんが、一貫している必要があります。 末尾のスペースと改行を使用できます。他の文字は出力されません。 プログラムは何も入力しないでください。外部リソース(辞書)は使用できません。 標準的な抜け穴はありません。 単語リスト: AA AB AD AE AG AH AI AL AM AN AR AS AT AW AX AY BA BE BI BO BY DE DO ED EF EH EL EM EN ER ES ET EX FA FE …

12
沈むか泳ぐか
問題 最悪のシナリオは、単一のライン上の3つの数字で記載されn、mおよびp。その行に続くのは、行ごとの値nをm持つ行です。各値は、各セルが保持できる水の合計単位を表します。 次のp行は、翌日の天気を説明していpます。1ユニットの雨が毎日1つのセルに降ります。セル内の水の量が保持できる量を超えると、そのセルはあふれます。複数の隣接するセルがフルキャパシティの場合、それらは共通の隣接セルを共有する1つのセルとして扱われます(空白のグループをクリックするとマインスイーパを考えてください)。 単一の中央セルには4つの隣接セルがあります 2つの隣接するフルキャパシティの中間セルは、6つの隣接セルを持つ1つのセルとして扱われます 単一のコーナーセルには2つの隣接セルがあります 1つの壁のセルには3つの隣接セルがあります セルがフラッディングすると、フラッドイベントが発生します。過剰な水はすべて、近隣に均等に分配されます。それが原因で1つ以上のネイバーがフラッディングする場合、別のフラッドイベントが発生します。これは、水が落ち着くか、都市が完全に浸水するまで続きます。 入力例 7 5 3 3 2 3 4 5 2 2 0 3 4 1 1 2 3 3 4 1 2 2 2 4 1 1 2 2 4 4 1 2 2 4 4 2 2 2 0 0 1 …
40 code-golf 

30
追加せずに追加(または4つの基本算術演算子のいずれか)
問題: 目標は、次の数学演算子を使用せずに2つの入力数値を追加することです+,-,*,/。 また、これらの数学演算子を置き換えるように設計された組み込み関数は使用できません。 得点: 最小のコード(バイト数)が優先されます。 更新 私が見たプログラムのほとんどは、番号を含む2つの配列を連結するかfirst number、文字で構成し、文字を追加second numberしてからすべてをカウントします。 最短配列カウンター:8文字のAPL、Tobia著 最短配列連結:Doorknobによる4文字のGolfscript 最短対数ソリューション:Quincunxによる19文字のTI-89 Basic 統合ソリューション:45文字のMathematica、マイケル・スターン クールな、私の意見では:javascriptのビット演算子、デイブ

30
正の整数を逆にする最も創造的な方法[終了]
入力を符号なし整数として提供しました: 13457 あなたの関数/サブルーチンは以下を返します: 75431 これは人気コンテストであるため、クリエイティブになりましょう。創造的なソリューションは、特定のタスクを達成するために、珍しいまたは巧妙なテクニックを使用します。 制約: 配列は使用できません。 文字列は使用できません。 RTLオーバーライドなし(&#8238) 創造的な算術を使用するためのブラウニーポイント。 これは人気コンテストなので%、コードでモジュロ()演算子を使用しないことをお勧めします。 先行ゼロについて: 入力が次の場合: 12340 次に、出力: 4321 許容されます。

22
ポイントが三角形の内側にあるかどうかを確認します
あなたの目標は、与えられた2DポイントXが与えられた頂点A、B、Cを持つ三角形の領域内にあるかどうかを判断することです。 テストポイントXと3つの三角形の頂点の座標(合計8座標)を取り、ポイントがその三角形の内側にある場合はTrueを返し、外側にある場合はFalseを返す関数を記述します。 エッジケースを心配しないでください。ポイントが三角形(エッジまたは頂点)の境界上にある場合、または三角形が実際に線分である場合、コードはクラッシュを含む何でもできます。また、数値の安定性や浮動小数点の精度について心配する必要はありません。 コードは名前付き関数でなければなりません。コードスニペットは受け入れられません。 最も少ないキャラクターが勝ちます。 入力: 座標を表す8つの実数。数値は範囲内にあります(-1,1)。 正確な入力形式は柔軟です。たとえば、8つの数字、8つの数字のリスト、それぞれタプルで与えられる4つのポイントのリスト、2 * 4マトリックス、4つの複素数、x座標とy座標の2つのリスト、等々。 入力は、追加データなしで、何らかのコンテナ内の数値である必要があります。入力を使用して前処理を行うことはできません。また、ポイントを昇順のy座標で指定する必要があるなど、入力に制約を必要とすることもできません。入力では、任意の8つの座標を許可する必要があります(ただし、前述のエッジケースではコードは任意に動作できます)。 入力形式を明記してください。 出力: 対応するブール値True/ False、対応する数値1/ 0、または使用言語の類似物。 テストケース 入力には[X,A,B,C]、最初にテストポイント、次に3つの三角形の頂点の4つのタプルのリストが与えられます。私は、その出力である必要があり、それらにそれらをグループ化してきましたTrueし、あるべきものFalse。 True インスタンス: [(-0.31961, -0.12646), (0.38478, 0.37419), (-0.30613, -0.59754), (-0.85548, 0.6633)] [(-0.87427, -0.00831), (0.78829, 0.60409), (-0.90904, -0.13856), (-0.80685, 0.48468)] [(0.28997, -0.03668), (-0.28362, 0.42831), (0.39332, -0.07474), (-0.48694, -0.10497)] [(-0.07783, 0.04415), (-0.34355, -0.07161), (0.59105, -0.93145), …

30
ランダムパスワードジェネレーター
ドメインサーバーでは、すべての従業員が次のルールに準拠した強力なランダムパスワードを持っている必要があります。 正確に15文字の長さ。 キーボードで入力可能な文字のみ(以下のコードタイプに示すとおり)。ALT + NUMPADコードを使用するように販売を教えることは許可されていません。 少なくとも1つの小文字: abcdefghijklmnopqrstuvwxyz 少なくとも1つの大文字: ABCDEFGHIJKLMNOPQRSTUVWXYZ 少なくとも1桁の数字: 0123456789 少なくとも1つのシンボル: `~!@#$%^&*()_+-={}|[]\:";'<>?,./ この目的のために、ITはすべての従業員にランダムパスワードジェネレーターを委託し、配布します。すべての従業員は、ランダムパスワードジェネレーターを使用する必要があります。ランダムパスワードジェネレーターの要件は、上記のパスワード制限に加えて次のとおりです。 すべての許容文字のすべての順列を生成できる必要があります。 生成されたパスワードを画面に表示する必要があります。 コードはできるだけ小さくする必要があります(バイト単位)。 提案されたソリューションを来週以内に提出してください。
40 code-golf  random 

30
ばかげたランタイムエラー[終了]
クレイジー、あいまい、ばかげた、または単なるナッツのランタイムエラーを生成するプログラムを作成します。難読化とゴルフの大きさ(短さ)は必要ありません。 正常に機能するように見えるソリューションが優れています。 ある方法を破るが、別の方法を破る必要があるように見えるソリューションが優れています。 非決定的であるソリューションは、再現性がある場合に限り優れています。 エラーの原因と症状との距離が長いソリューションの方が優れています。 不可能であるべきエラーを生成するためのボーナスポイント。 ランタイムをクラッシュさせるエラー(Pythonセグメント障害の作成など)またはオペレーティングシステムのボーナスポイント。 スコアの単位は、賛成票です。 補遺1 コンパイラの誤動作も問題ありません。

30
私の名前は何ですか?言語の名前を間接的に生成する[非公開]
言語自体の機能のみを使用して、プログラミング言語の名前のみを生成します。言語の名前は、間接的にのみ呼び出すことができます。つまり、非カスタム環境変数、組み込み関数またはメソッド、または言語のインタープリター/コンパイラーから呼び出すことができます。出力は言語の名前のみにする必要があります。 1つの例は次のとおりです。 $ awk --v | awk 'NR<2 { print $2}' # GNU Awk 3.1.8 Awk 私が選択した答えは、最も高い票を獲得したものになります。タイの場合、最短のゴルフバージョン(個別または唯一の回答)がタイブレーカーになります。

18
アヒル、アヒル、消えた!
これは(非常に怖い)5つの小さなアヒルの歌です(長くはありません): Five little ducks went out one day, over the hills and up away. Mother Duck said, "Quack Quack Quack Quack", but only four little ducks came back. Four little ducks went out one day, over the hills and up away. Mother Duck said, "Quack Quack Quack Quack", but only …
40 code-golf  string 

27
違いは変わらないはず
あなたの会社は最近、非常に熱心な新しいシステム管理者を雇いました。彼らは、コンピューターの画面を見るだけではかなり制限があると感じているので(つまり、60Hzのリフレッシュレートでは不十分です)、CPUデータバスをDACに接続し、サーバールームを介してスピーカーで再生して聞くことができます20kHzまで。1つの問題:彼らは電気技師ではなく、システム管理者であり、スピーカーのセットアップが壊れ続ける。ソフトウェアエンジニアがメインフレームでコンパイルするコードのバイト値の急激な変化が原因であると彼らは考えた。システム管理者は、スピーカーのセットアップに最も優しいコードを誰が作成できるかを確認するために、少し競争を行っています。 チャレンジ あなたの使命は、連続するバイト間で可能な限り差のない、選択した言語でプログラムまたは関数を作成することです(計算セクションを参照)。このプログラムには、独自のスコアを計算するタスクがあります。 入力 ASCII文字列、stdinまたは言語に最も近いもの、または関数を作成する場合は関数入力として。プログラムはスコアを計算するための入力として自分自身を取得する必要があるため、プログラムにUnicodeが含まれている場合は、Unicodeをサポートする必要があります。それ以外の場合は、ASCIIで十分です。入力は少なくとも2バイト長であると想定できます。 計算 文字列の各文字は、ASCII標準を使用して、同等の数値に変換されます。次に、すべての文字の差が最初に2乗されてから合計されます。たとえば、文字列abdはのスコアを取得し1²+2²=5ます。 出力 出力はエントリのタイトルになります。つまり、先頭に#改行を付けるか、改行と-ダッシュ(ダッシュ)を追加する必要があります。次に、プログラミング言語の名前を出力し、その後にコンマ、スペース、計算結果を表す整数を出力します。例えば #C++, 98 有効な出力になります。出力はstdout、言語または同等の最も近い言語で、または関数の戻り値として提供する必要があります。 得点 スコアは、プログラムによって計算された値になり、プログラム自体が入力になります。 編集:今すぐ改行を処理する必要があります。 ここではスコア計算を検証するPythスクリプトです。

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