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

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

7
XNORデジタルタイミング図を描く
以下は、XNOR論理ゲートの(概略)デジタルタイミング図です。 ┌─┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐ ┌───┐ A ──┘ └─┘ └─┘ └─┘ └─┘ └─┘ └── ┌───┐ ┌───┐ ┌─┐ ┌─────┐ ┌─┐ ┌─┐ B ┘ └─┘ └─┘ └─┘ └───┘ └─┘ └ ┌─────┐ ┌─┐ ┌─┐ ┌───┐ X ──┘ └───┘ └───┘ └───┘ └──── 目標は、描かれているとおりに正確に再現することです。 ルール: 印刷するか、複数行の文字列を返すことができます。 任意の数の追跡および/または先頭の改行が許可されます。 末尾の(先頭ではない!)空白は許可されます。 拡張ASCIIボックス描画文字を使用できない場合は、Unicodeの同等の文字に置き換えることができます(バイトペナルティなし)。 これはコードゴルフなので、バイト単位の最短回答が優先されます。 バイナリ表現 便宜上、上の図のバイナリ表現は次のとおりです。 INP A=0101011101010110 …

4
抽象構文木ゴルフ:FizzBu​​zz、Python
概要 可能な限り少ないトークンで、FizzBu​​zzをPythonで実装します。 チャレンジ 1から100までの10進数を出力するプログラムを作成します。しかし、3の倍数の場合は数字ではなく「フィズ」、5の倍数の場合は「バズ」が印刷されます。3と5の両方の倍数である数字の場合、「FizzBu​​zz」と印刷します。プログラムは、Pythonの何らかのバージョンで作成する必要があります。 詳細については、1、2、Fizz、4、Buzzを参照してください 得点 スコアは、Python 3のこのプログラムまたはPython 2のこのプログラムによって報告されたコードの抽象構文ツリーのノードの数に等しくなります。プログラムを実行するには、プログラムのコマンドライン引数としてコードのファイル名を指定します。例えば: python simple_counter.py fizzbuzz.py これらのプログラムは、Pythonのastモジュールに基づいています。何か問題がある場合はお知らせください。 実際のプログラムで長い文字列を実行したり、出力をハードコーディングしたりといった些細な解決策を防ぐために、いくつかの追加の制限があります。 コード内のトークンは15文字を超えることはできません。上記のプログラムは、この要件を確認します。実装を簡単にするために、上記のプログラムはコメントをトークンとしてカウントすることに注意してください。 コードの実行/評価は禁止されています。 何かが許可されているかどうかについて質問がある場合は、私に尋ねてください。 スコアリングヒューリスティック 通常、プログラムのスコアを計算するには、次のルールで十分です。 ブロック文は1ポイントです:if、for ... in ...、while、else、など スタンドアロン文は1ポイントです:printPythonの2にbreak、passなど、 変数は2ポイントです シングルトークンリテラルは1ポイントです:2131、"Hello, world!"、True 関数は3つのポイント(変数を使用するための2つ、余分な1つ)です:printPython 3 rangeなど オペレータは2ポイントです:+、*、%、and、not、など = 1ポイントです :拡張割り当ては2点であり+=、|=等 括弧、インデントなどは0ポイントです。 代入または式ではなく、式を含む行は+ 1ポイントです。 コードを持っていることは1ポイントです。 チャレンジ: 最も低いスコアが勝ちます。幸運を!

1
ISO 8601日付の検証で純粋な正規表現を破る
ではRXによって検証ISO 8601、挑戦はするだけで、標準的な正規表現を使用していた標準の日付形式検証と値を(前者はRXのための共通の仕事で、後者は異例でした)。勝った答えは778バイトを使用しました。この課題は、特別な日付関数またはクラスを使用せずに、選択した任意の言語を使用してそれを克服することです。 チャレンジ 最短のコードを見つける Proleptic Gregorianカレンダーのすべての可能な日付を検証します(これは1582年に最初に採用される前のすべての日付にも適用されます)。 無効な日付と一致しない 事前に定義された関数、メソッド、クラス、モジュールなどを使用して日付(および時刻)を処理しません。つまり、文字列および数値演算に依存します。 出力 出力は真実または偽です。日付を出力または変換する必要はありません。 入力 入力は、3つの拡張ISO 8601日付形式のいずれかの単一文字列です。 最初の2つは±YYYY-MM-DD(年、月、日)と±YYYY-DDD(年、日)です。両方ともうるう日に特別なケーシングが必要です。これらは、これらの拡張RXによって個別に単純に照合されます。 (?<year>[+-]?\d{4,})-(?<month>\d\d)-(?<day>\d\d) (?<year>[+-]?\d{4,})-(?<doy>\d{3}) 3番目の入力形式は±YYYY-wWW-D(年、週、日)です。複雑なうるう週パターンのため、複雑なものです。 (?<year>[+-]?\d{4,})-W(?<week>\d\d)-(?<dow>\d) 条件 うるう年予期的グレゴリオ暦のカレンダーでは、含まれているうるう日 …-02-29、したがって、それは長い366日で、それ故に…-366存在します。これは、(おそらく負の)序数が4で割り切れる年に発生しますが、400で割り切れる場合を除き、100で割り切れません。 このカレンダーにはゼロ年が存在し、うるう年です。 長い年のISO週のカレンダーでは、第53週が含ま…-W53-…1は「という用語ができ、飛躍の週を」。これは、1月1日が木曜日であるすべての年に発生し、さらに水曜日であるすべてのうるう年に発生します。0001-01-01そして2001-01-01月曜日です。通常、5年または6年ごとに、一見不規則なパターンで発生することが判明しています。 年は少なくとも4桁です。10桁を超える年は、宇宙の年齢(約140億年)に十分近いため、サポートする必要はありません。先頭のプラス記号はオプションですが、実際の標準では、4桁を超える年数は必須であることを示しています。 部分的な日付または切り捨てられた日付、つまり日精度未満の日付は受け入れられません。-すべての場合にハイフンを分離する必要があります。(これらの前提条件により、リード+は常にオプションになります。) ルール これはコードゴルフです。バイト単位の最短コードが優先されます。以前の回答が引き分けになります。 テストケース 有効なテスト 2015-08-10 2015-10-08 12015-08-10 -2015-08-10 +2015-08-10 0015-08-10 1582-10-10 2015-02-28 2016-02-29 2000-02-29 0000-02-29 -2000-02-29 -2016-02-29 +2016-02-29 200000-02-29 -200000-02-29 +200000-02-29 2016-366 2000-366 0000-366 -2000-366 …
12 code-golf  date 

2
これはどの有限アーベル群ですか?
説明 f(m, G)引数としてmapping m、および明確な非負整数のセット/リストを受け入れる関数を作成しますG。 mの整数のペアGをの新しい整数にマッピングする必要がありますG。(G、m)は有限のアーベル群を形成することが保証されていますが、の任意の要素はG恒等式である可能性があります。 次のような重要な定理があります。 [各有限アーベル群]は、素数次数の巡回群の直接積に同型です。 f[p1, ... pn]次のような昇順で素数のリストを返す必要があります 例 f((a, b) → (a+b) mod 4, [0, 1, 2, 3])返さなければならない[4]パラメータは、グループ記述として、Z 4。 f((a, b) → a xor b, [0, 1, 2, 3])[2, 2]パラメータはZ 2 ×Z 2に同型なグループを記述するため、返されるはずです。 f((a, b) → a, [9])[]パラメータは自明なグループを記述するため、を返す必要があります。すなわち、ゼロの巡回グループの積。 m次のように定義します。 (a, b) → (a mod 3 + b …

3
アスキーアートチェス盤
この課題では、下にチェス盤を描き、動きを可能にします。 1.描画 白い正方形にはそれぞれ5x9のスペースがあります。 各黒い正方形には5x9のコロンがあります。 ボードはコロンの境界線に囲まれています。 ピースの幅は5文字で、中央の正方形の一番下の行にあります。 ポーンの幅は4文字です。中央から少し右にずれており、左側に3つの空白の正方形、右側に2つの空白の正方形があります。彼らは、正方形の底の1行上に座っています。 オプションの末尾の改行を除き、ボードの領域の外側に空白があってはなりません。 ボードとチェスマンは、以下を除き、示されているとおりに正確に描かれなければなりません。 あなたはsubsituteも:異なるシンボルのための黒い四角との国境で、あなたが置換してもよい@異なるシンボルのための黒い部分での(黒い四角のために使用したのと同じものをではなく。) 必要に応じて、ポーンを1文字左に移動できます。 。 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : ::::::::: :::www::: _+_ ::::::::: :::::::::: : |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|::: : |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|:::: : |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|:::: : …

9
T9キーボードを作成する
この質問は、非常に興味深い問題である機能に一致するT9辞書を求めています。ただし、T9には別の入力方法があり、それは文字ごとに入力することです。このキーボードを実装するために辞書は必要ありません。 忘れた場合のT9キーボードのキーマップは次のとおりです。 +-------+-------+-------+ | 1 | 2 | 3 | | .?! | ABC | DEF | +-------+-------+-------+ | 4 | 5 | 6 | | GHI | JKL | MNO | +-------+-------+-------+ | 7 | 8 | 9 | | PQRS | TUV | WXYZ | +-------+-------+-------+ | * …

5
モンキーアイランド:ナビゲーターの頭
警告:このチャレンジには、The Secret of Monkey Islandの軽度のネタバレが含まれています。 ゲームの終わりに向かって、魔法のように保存されたナビゲーターの頭がカタコンベを通り抜けます。 あなたはその眼球のネックレスを必要としますが、頭はあなたにそれを与えることに消極的です。それを得る一つの方法は、ただ物beいをすることです: Guybrush:ネックレスを頂けますか? 頭:いいえ、でも丁寧に質問してくれてありがとう。 ガイブラシ:おいおいおい 頭:あなたはあなたが望むすべてを請うことができますが、あなたはそれを持つことはできません。 ガイブラシ:可愛がって? 頭:あなたはあなたが望むすべてを請うことができますが、あなたはそれを持つことはできません。 ガイブラシ:プリティプリティください? 頭:あなたはあなたが望むすべてを請うことができますが、あなたはそれを持つことはできません。 Guybrush:砂糖を上に乗せてください。 頭:ああ、大丈夫、あなたは大きな赤ちゃん。きみにあげる。ねえ、肩がなければネックレスは何がいい? チャレンジ 上記のダイアログを印刷する完全なプログラムを作成します。キャッチは、プログラムが呼び出されるたびに、2行(GuybrushとHeadの応答によって訴えられる1行)だけを印刷することです。たとえば、投稿がPythonで記述されている場合、使用方法は次のようになります。 $> python please.py Guybrush: May I please have that necklace? Head: No, but thanks for asking so politely. $> python please.py Guybrush: Oh come on, pleeeeease? Head: You can beg all …

9
n番目のハイパーオペレーションを評価する
私はこれが少し数学的なものであることを理解していますが、ここに行きます。 数学では、ハイパーオペレーションシーケンスは、後継者の単項演算で始まり、加算、乗算、べき乗のバイナリ演算で続行する算術演算(ハイパー演算と呼ばれる)の無限シーケンスであり、その後、シーケンスはさらにバイナリ演算を超えて進みます右結合を使用した累乗。 あなたの目標は、入力として3つの整数x、y、およびnを取り、xおよびyに対するn番目のハイパーオペレーションの結果を出力するプログラムを作成することです。 例えば 1 1 1 出力2 2 4 4 出力65536 3 3 4 出力7625597484987 プログラムは、コードの最短ビットで作成する必要があります。 STDINファイルからまたはファイルから入力を取得できます。 ライブラリ関数は許可されていません。 入力制約:nは1以上です。 http://en.wikipedia.org/wiki/Tetrationには、これで頭を包めない場合の良い説明があります。

9
フラグセマフォエンコーダ
あなたの目標は、Wikiで説明されているセマフォシステムに従って、特定の文を対応するフラグセマフォ文字に変換するフラグセマフォエンコーダを作成することです。 入力は、stdin(または同等のもの)を介して提供される単一の文であると想定します。出力は一連のセマフォ文字である必要があり、各行は文の1つの単語を表します。アルファベット(AZ)のみを扱う必要があり、他のすべての非スペース文字を無視する必要がありますが、大文字と小文字の両方を処理できる必要があります。出力には余分な空白を含めることができます。 セマフォ文字は3x3の正方形で表示されO、中央にがあり、フラグの位置が文字で表されている必要があり| - / \ます。各セマフォ文字は、隣接する文字とスペースで区切る必要があり、各行は空白行で区切る必要があります。表示するには長すぎる単語の折り返しを心配しないでください-行の長さが無限であることを装います。 サンプル入力: abcdefg hijklmn opqrstu vwxyz サンプル出力: \ | / O -O O O O O- O /| | | | | | |\ \ | | / -O O O- O O O- O / / / / / / \ \ | / …

12
コードゴルフ:ボールの配布(I)
チャレンジ このタスクでは、すべてのセルが少なくとも1つのボールを持つ状態で、AのボールをBのセルに分配する方法の数を計算しました。 入力AとBは空白で区切られた1行で与えられ、入力はEOFで終了します。 こちらでソリューションを確認できます。 入力 0 0 1 0 12 4 6 3 18 17 20 19 15 13 18 9 20 20 17 14 9 2 14 13 18 11 出力 1 0 14676024 540 54420176498688000 23112569077678080000 28332944640000 38528927611574400 2432902008176640000 21785854970880000 510 566658892800 334942064711654400 制約 すべてのAとBは区別できます。 0 <= A、B …

2
nを法とする数論のインタープリター
(私たちの目的のための)数論の文は、次の記号のシーケンスです。 0および'(後継者)-後継者は+1、0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加算)と*(乗算) = (に等しい) (と)(括弧) 論理演算子nand(a nand bis not (a and b)) forall (ユニバーサル数量詞) v0、v1、v2、など(変数) ここに文の例があります: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) ここでnot xは省略形ですx nand x-実際の文が使用する(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

11
1D Life-of-Life-ishモデルのシミュレーション
この質問は、コードレビューで傾向が出てきたばかりで、コードゴルフのチャレンジとして採用した方がいいと思いました。 ブール値として表されたx個の家の空でないリストが表示されます。毎日、家は隣接する家と競争しています。1は「アクティブ」な家を表し、0は「非アクティブ」な家を表します。特定の家の両側の隣人が両方ともアクティブまたは両方とも非アクティブである場合、その家は翌日に非アクティブになります。それ以外の場合はアクティブになります。 def get_state_as_pos(thelist, pos): if thelist[pos-1] == thelist[pos+1]: return 0 else: return 1 たとえば、隣人のグループ[0、1、0]がある場合、[1]の家は、左側と右側の家が両方とも非アクティブであるため、0になります。両端のセルは反対側もチェックするため、インデックス0の隣接length-1セルはインデックスとindexn1にあり、その逆も同様です。セルを更新した後でも、他のセルを更新するときは以前の状態を考慮して、各セルの状態情報が同時に更新されるようにする必要があります。 この関数は、状態の配列といくつかのステップを受け取り、指定されたステップ数の後の家の状態を出力する必要があります。 input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1 output should be [0, 1, 0, 0, 1, 0, 1, 1] input: states = [1, 1, 1, 0, 1, 1, …

4
スターバックスから英語へ
これらの新しいステッカープリンターとワイヤレスドライブスルーヘッドセットパームトップスキャナーの契約が結ばれる前のスターバックスの昔、スターバックスは、2000年代の繁忙期に、厳密な構文と付随するエンコード形式で飲料を説明する簡潔なシステムを備えていました。 カップの垂直方向には、特定の値を含む一連のラベル付きボックスがあります。 Decaf [ ] -blank- X 1/2 1/3 2/3 Shots [ ] -blank- 0 1 2 3 ... 20 followed by S T G V Syrup [ ] -blank- V M C H Milk [ ] -blank- Wh % N B Custom [ ] -blank- ((-|x)?(F|WC|M|CR) )+ Drink [ …
12 code-golf 

6
線形方程式系を解く
一連の線形方程式をできるだけ短く解決するプログラムを記述します。任意の数の方程式の問題を解く必要があります。それらは好きなように入力できますが、拡張行列の係数がおそらく最も簡単です。プログラムは、整数以外の係数やソリューションを処理する必要はありません。退化したケースや無効なケースはテストされません。プログラムは、各変数の値または縮小された行の階層形式を出力する必要があります。 方程式解法ライブラリ、行列関数、または自動解法は許可されていません。配列またはリストを使用して行列をシミュレートできます。 入力例(または同等のもの): m={{2,1,-1,8},{-3,-1,2,-11},{-2,1,2,-3}} これは 2x+y-z=8, -3x-y+2z=-11, -2x+y+2z=-3 出力例(または同等のもの): {2,3,-1} これは x=2, y=3, z=-1
12 code-golf  math 

5
順列の構成–グループ製品
互いに素なサイクル形式で2つの順列が与えられた場合、それらの製品/組成を互いに素なサイクル形式で出力します。 構成を見つけるには、分離したサイクルを2行表記の順列に変換します。サイクルのばらばらの部分の各番号は、同じ部分でそれに続く番号にマッピングされます。包み込みます。ですから1 -> 5、5 -> 1、2 -> 4、4 -> 2。番号が見つからない場合は3 -> 3、それ自体にマップされます。最初のばらばらのサイクルも書くことができます(1 5)(2 4)(3)。これらのマッピングは、次のように2行に変換されます(PとQの順序が逆になっていることに注意してください)。 2つの順列の積は、最初の行が最初の(最も右の)順列の2番目の行と同じになるように、2番目(左端)の順列の列を再配置することによって得られます。次に、積を、変更された2番目の順列の2番目の行に対する最初の順列の最初の行として書き込むことができます。 ウィキペディアの記事 ルール: 入力はリストのリストまたは同様の形式で与えられます のように、すでに2行の形式(インデックスから値へのマッピング)をとることはできません。(1 5)(2 4)[5, 4, 3, 2, 1] すべての数値が各グループで発生する必要はないので(1 5)·(1 2)、発生する可能性があり、結果としてになり(2 5 1)ます。 出力は入力として使用できるはずです。 空のサイクルでの入力をサポートする必要はありません(1 5)·()。代わりに、(1 5)·(1)または同等のものとして与えられます。 サイクルは循環するため、結果が正しければ、順序は関係ありません。 ゼロまたは1から開始できます。結果は同じなので、問題ではありません。 数値はより大きい場合があり9ます。 同じ番号を出力に複数回含めることはできません。だから、[[1],[1]]許可されていません。 この操作は可換ではないことに注意してください!私はPの前にQを置きました。任意の順序を選択できますが、順序が異なる場合は指定してください。 最短コードの勝利 組み込みは許可されますが、組み込みを使用する場合は、それを使用せずにソリューションを表示します。 例: 同等の出力の可能性がすべて示されているわけではありません Input Output [[1, 5], [2, 4]], [[1, …

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