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

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

3
解釈された算術
あまり知られていない事実は、十分な言語拡張(ghc)をオンにすると、Haskellが動的に型付けされたインタープリター型言語になるということです。たとえば、次のプログラムは加算を実装しています。 {-# Language MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances #-} data Zero data Succ a class Add a b c | a b -> c instance Add Zero a a instance (Add a b c) => Add (Succ a) b (Succ c) これは本当にHaskellのようには見えません。オブジェクトを操作する代わりに、タイプを操作します。各番号は独自のタイプです。関数の代わりに、型クラスがあります。機能的な依存関係により、型間の関数として使用できます。 では、コードをどのように呼び出すのでしょうか。別のクラスを使用します class Test a | -> a where test …

2
パウダートイでのゴルフのヒント
これを楽しんでください。パウダートイは、特にフィルトロジックに関して、ゴルフにとって興味深い挑戦です。 TPTが課題となるのは、問題に取り組むための多くの方法です。 Should I use Cellular Automaton rules, SWCH logic, Filt logic, subframe filt logic, and/or wall logic? そのため、TPTゴルフのヒントの場所は非常に役立つので、この質問のスレッドを作成しました。 このスレッドは、多くの略語を使用する可能性があります。それらの多くはゲーム内の要素になるため、Wikiでそれらを検索すると、それらが何であるかなど、それらに関する多くの情報が表示されます。 以下は、このスレッドに表示される可能性が最も高いもので、検索に行きたくない人のために、ゲーム内の説明(およびフルネーム)が添付されています。 SPRK:電気。TPTのすべての電子機器の基礎は、ワイヤーおよびその他の導電性要素に沿って移動します。 FILT:フィルター。フォトンをフィルターし、色を変更します。 ARAY:レイエミッター。レイは、衝突したときにポイントを作成します。 BTRY:バッテリー。無限の電力を生成します。 DRAY:複製光線。その前にあるパーティクルのラインを複製します。 CRAY:パーティクルレイエミッタ。tmpによって設定された範囲で、ctypeによって設定されたパーティクルのビームを作成します。 SWCH:スイッチ。スイッチを入れたときにのみ導通します。(PSCNはオン、NSCNはオフ) すべての要素のリスト
9 code-golf  tips  the-powder-toy  code-golf  number  array-manipulation  integer  code-golf  string  decision-problem  boggle  code-golf  array-manipulation  average  code-golf  math  code-golf  decision-problem  restricted-source  code-golf  code-golf  math  primes  code-golf  random  code-golf  tips  perl  code-golf  string  parsing  code-golf  math  number  decision-problem  code-golf  math  number  code-golf  string  alphabet  code-golf  math  geometry  code-golf  interpreter  brainfuck  code-golf  code-golf  decision-problem  boggle  code-golf  math  number  sequence  code-golf  math  code-golf  ascii-art  code-challenge  restricted-source  quine  code-golf  math  decision-problem  number-theory  primes  code-golf  ascii-art  code-golf  integer  graph-theory  chess  code-golf  math  interpreter  code-golf  code-golf  code-golf  ascii-art  code-golf  arithmetic  number-theory  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  code-golf  primes  factoring  encode  code-golf  decision-problem  code-golf  geometry  grid  code-golf  quine  code-golf  matrix  code-golf  matrix  code-golf  code-golf  number  array-manipulation  code-golf  array-manipulation  sorting  code-golf  matrix  code-golf  brain-flak 

10
リストのリストのエントリを順番にステップ実行することによるタプル
チャレンジ: 空でない整数のリストのリストを指定すると、次の形式のタプルのリストを返します。最初のリストの各要素で始まり最初のリストのタプルの後に後続のすべてのリストの最初の要素が続くため、i番目のタプルはになります[ith element of first list, first element of second list, ... , first element of last list]。例えば: [[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ... 次に、フォームのタプルを実行する[last element of first list, ith element of second list, first element …

5
TwoMegaを解釈する
この課題では、あなたがのために通訳書き込みます2 Ω(として転写TwoMega)、ゆるくに基づく言語brainfuck無限次元の収納スペースとを。 言語 2 Ωは、状態の3枚が含まれています。 テープ全て0に初期化ビットの無限のリストである、それは、左端の要素、ない右端の要素を有しています。 メモリポインタテープの要素のインデックスである非負整数です。上位のメモリポインタは、さらに右側のテープセルを指します。0のメモリポインタは、左端の要素を参照します。メモリポインタは0に初期化されます。 ハイパーキューブ概念的であり、∞ハイパーキューブの幅はわずか2細胞にすべての次元で結合したが、寸法の無限の数を意味している0に初期化ビットを含む各々がセルの次元「ボックス」、細胞は数えられない。 ハイパーキューブへのインデックスは、ハイパーキューブ内のセルを参照するビットの無限リストです(ビットの有限リストを使用して有限次元のハイパーキューブを参照するのと同じ方法で)。テープはビットの無限リストであるため、テープ全体は常にハイパーキューブの要素を参照します。この要素は参照対象と呼ばれます。 2 Ωは、 7種類の文字に意味を与えます: < メモリポインタを1だけデクリメントします。0未満にデクリメントすることは未定義の動作であるため、処理する必要はありません。 > メモリポインタを1だけインクリメントします。 ! リファレントでビットを反転します。 . リファレントでビットを出力します。 ^テープ上のメモリポインターが指すセルのビットを、参照先のビットの逆に置き換えます。 [x]xリファレントのビットが1である限り、コードを実行します。 チャレンジ あなたの仕事は、文字列を入力として受け取り、その入力を2Ωプログラムとして実行するプログラムを作成することです。 これはcode-golfなので、有効な最短の回答(バイト単位)が優先されます。 ノート プログラムは文字のみで構成され、適切にネストされる<>!.^[]と想定でき[]ます。 インタプリタは、システムで利用可能なメモリによってのみ制限されるべきです。サンプルプログラムを妥当な時間で実行できるはずです。 サンプルプログラム 印刷1: !. 印刷010: .!.!. 永久に0を印刷します。 ![!.!] 永遠に0を出力します!。 [.]![!.!]

5
4つのらせん状の軸
数字0, 1, 2, 3, 4, ...を取り、それらを時計回りのらせん状に配置し、下から始めて、各桁を個別の正方形に書き込みます。 次に、軸を表す4つの異なる一貫したASCII文字(選択)の1つと、入力整数を指定して、対応する軸に沿って正方形を選択することにより、説明されたシーケンスのn最初のn項を出力します。 たとえば、以下は、の途中まで配置されたスパイラル29です。をu / d / l / r表す4つの文字にを使用するとしますup / down / left / right。次に、u入力として与えられ0, 5, 1, 4 ...、n次の項まで(正のy軸)を出力します。代わりにl入力として与えられた場合、それ0, 3, 1, 1 ...はnth項までになります。 2---3---2---4---2---5---2 | | 2 1---3---1---4---1 6 | | | | 2 2 4---5---6 5 2 | | | | | | 1 …

22
最低値を使用して削減
チャレンジ 数値の配列を取り、各要素から、まだ他の要素から差し引かれていない配列の最も低い要素を差し引く関数を作成します。 最低値を使用した後は、再使用できません。 配列の数値は10進数であり、必ずしも整数ではありません。 例: Input: [6, 4, 7, 8, 9, 2, 1, 4] Next lowest value: Output: [6, 4, 7, 8, 9, 2, 1, 4] [6, 4, 7, 8, 9, 2, 1, 4] ^ ^ 6-1 = 5 [6, 4, 7, 8, 9, 2, -, 4] [5, 4, 7, …

1
+-ナップザック問題
それぞれに重みと値が設定されたアイテムのセットを前提として、コレクションに含める各アイテムの数を決定します。これにより、合計の重みが特定の制限以下になり、合計値ができるだけ大きくなります。 詳細についてはウィキペディア たとえば、最大重みを15、値/質量が最大のオブジェクトを指定すると、スコアが36の場合に7つのオブジェクトと1 つのオブジェクト[5,2], [7,4] [1,1]が出力さ[7,0,1]れます。[5 <value>, 2 <mass>][1 <value>, 1 <mass>] ルール 入力は適切な形式で取得できます 出力も柔軟な形式で、 非標準のライブラリを使用することはできません。初期セットアップとは別に使用するためにライブラリをインストールまたはダウンロードする必要がある場合、それは許可されていません オブジェクトは負の質量と値を持つ可能性があります(つまり、-1、-1) 最適な回答が必要です 勝利 最短コードの勝利 負の質量と値? これは、この課題の重要な部分です。などのアイテム(質量、値)を持つオブジェクトと[4,3],[-1,-1]、容量が15のバッグがあるとします。最初のアイテムの3つを入れてスコアを9にするか、最初のアイテムの4つと-1、-1の1つを入れます。スコア11のオブジェクト。

1
ターピットからの脱出(警官)
これは、言語の定義とそれらが完全なチューリングであることを証明することに基づく警官と強盗の挑戦です。 これは警官のスレッドです。強盗のスレッドはこちらです。 警官 警官として、次の2つを準備します。 プログラミング言語またはその他の計算システムの正式な仕様。(計算システムは以下に定義されています。) 以下のやや厳密な定義に従って、システムがチューリング完全であることの証明。 あなたはあなたの言語の仕様を投稿し、強盗はそのチューリングの完全性を証明することによってそれを「クラッキング」しようとします。提出物が1週間以内にクラックされない場合は、安全なものとしてマークし、証拠を投稿できます。(あなたがそれを修正できない限り、誰かがあなたの証明に欠陥を見つけた場合、あなたの答えは無効になる可能性があります。) これは人気コンテストなので、投票数が最も多く、クラックや無効化されていない答えが勝者になります。挑戦は自由回答です-私は答えを受け入れません。 この課題のために、計算システムは次の4つとして定義されます。 「プログラムセット」P。これは、数え切れないほど無限のセットになります。たとえば、文字列、整数、バイナリツリー、グリッド上のピクセルの構成などです(ただし、以下の技術的な制限を参照してください)。 「入力セット」I。これも数え切れないほど無限のセットであり、と同じセットである必要はありませんP(ただし、そうである場合もあります)。 「出力セット」はO、同様に無数に無限のセットであり、Pまたはと同じであってもなくてもかまいません。I 出力生成のための決定論的、機構的手順oプログラムからpの入力i、p、iおよびoのメンバーでありP、IそしてOそれぞれ。この手順は、原則として、チューリングマシンまたは他の抽象的な計算モデルに実装できるような手順にする必要があります。もちろん、プログラムとその入力によっては、手順が停止しない場合があります。 セットP、IそしてOあなたが計算可能な方法で文字列としてそれらを表現できるようなものでなければなりません。(ほとんどの賢明な選択の場合、これは重要ではありません。このルールは、停止しないチューリングマシンのセットなどの奇妙なセットを選択しないようにするために存在します。) チューリング完全性は次のように定義されます。 任意の計算部分の機能のためにfからIのO、プログラムが存在するp中でP、そのような与えられたp入力i、出力されf(i)た場合f(i)の値を有します。(それ以外の場合、プログラムは停止しません。) 上記の定義で「計算可能」という用語は、「チューリングマシンを使用して計算できる」という意味です。 どちらのことを注意ルール110もビット単位のサイクリックタグは、彼らが必要な入出力構造を持っていないので、この定義にチューリング完全です。ラムダ計算は、私たちが定義IしO、教会の数字である限り、チューリング完全です。(一般的にラムダ式を採用するIと、チューリング完全ではありませんO。) 言語の実装を提供する必要はありませんが、必要に応じて回答に含めることもできます。ただし、言語を定義するために実装に依存するべきではありません。仕様自体が完全である必要があり、仕様と実装の間に矛盾がある場合、これは実装のバグとして扱われるべきです。

4
ボールをビンに入れる方法の数を数える
このタスクでは、奇数の白いボールと同じ数の黒いボールが与えられます。タスクは、各ビンに各色の奇数があるように、ボールをビンに入れるすべての方法を数えることです。 たとえば、3つの白いボールがあるとします。異なる方法は次のとおりです。 (wwwbbb) (wb)(wb)(wb) 2つの異なる可能性のために。 5つの白いボールがある場合、さまざまな方法があります。 (wwwwwbbbbb) (wwwbbb)(wb)(wb) (wwwb)(wbbb)(wb) (wb)(wb)(wb)(wb)(wb) 単一の整数である入力は、好きな方法で取得できます。出力は単一の整数です。 あなたのコードは、11個の白いボールが完全に見えるように十分に高速でなければなりません。 任意の言語またはライブラリを使用できます。

3
クラッシュする車のシミュレーション
前書き 速度と方向を持つASCII車がいくつかあります。それらの速度はそれらの数によって表されます。車は<>それなら停止しています。例えば: <> 1> 2> 3> 1秒後、 <> 1> 2> 3> 2つ後、私は得る <> 1> 2> 3> 2台の車が近すぎると、クラッシュします。 1> <1 1> <2 1秒後、これは ### ## 2台の車が交差する場合、それらは本来あるはずのハッシュタグになります。 一方の車がもう一方の車を「ホップ」するのに十分な速さであれば、クラッシュは発生しません。 3><1 2><1 4><> なる <13> ### <>4> 車が画面から外れると、(クラッシュが発生しない限り)車は消えます。車が画面の外に出る方法はありません。 <11> <1 1> 1 1> 1> チャレンジ 与えられた自動車の物理学に基づいて、未来に1秒ずつタイムステップできるプログラムを作成する必要があります。入力は、スペースと最大速度5(正規表現に一致(<[1-5]|[1-5]>|<>| )+)の車になります。シミュレーションは1行で行われますが、その行には固定サイズがありません。 テストケース <> 1> 2> 3> 4> 5> …

15
最大の広場
この質問は、グリッド内の最大の正方形に似ています。 チャレンジ 行列を考える1と、0文字列形式で"xxxx,xxxxx,xxxx,xx.."または配列形式を["xxxx","xxxx","xxxx",...]、あなたはすべてが含まれている最大の広場部分行列の面積を決定する関数を作成します1。 正方形の部分行列は、幅と高さが等しいものであり、関数はのみを含む最大の部分行列の領域を返す必要があります1。 例えば: "10100,10111,11111,10010"この場合、これは次のマトリックスのようになります。 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 太字で1作成されたサイズ2x2の最大の正方形の部分行列を確認できるため、プログラムは4の領域を返すはずです。 ルール 部分行列は、幅と高さが同じでなければなりません サブマトリックスには値のみが含まれている必要があります 1 関数は最大の部分行列の領域を返す必要があります 部分行列が見つからない場合は、 1 あなたはの数をカウントすることにより、部分行列の面積を計算することができ1部分行列に テストケース 入力: "10100,10111,11111,10010" 出力: 4 入力: "0111,1111,1111,1111" 出力: 9 入出力 "0111,1101,0111" : 1 これはcode-golfなので、バイト単位の最短の回答が優先されます。

12
アスタリスクバイラル
正の整数N(「バイラリティ」)が与えられると、プログラムは、長さNの 2つのブランチが左上隅から下向きまたは右向きに伸びる、ASCIIアートのツリーの描画を作成する必要があります。 最初のアスタリスクの後に各ブランチが取る方向は、右向きでも下向きでもかまいません。この選択は、次のステップごとにランダムに1にする必要があります。 たとえば、入力が5の場合、出力は次のようになります。 *** * *** ** ** 2つのブランチは(隣接するセル上にある)タッチすることはできますが、(同じセル上にある)オーバーラップすることはできないため、以下は許可されません。 *** * * ***** * * 例 inputの1場合、可能な出力は次のとおりです。 ** * (これは、2つのブランチが同じパスをたどるとオーバーラップするため、すべての有効な出力に存在します。) 入力の可能な出力は3次のとおりです。 *** * * ** ** *** * * 入力用7: **** * ** * ** * *** * 入力用10: **** * * ********* * ***** これはcode-golfなので、有効な最短の回答(バイト単位)が優先されます。 1.これは均一にランダム(つまり、各方向の50/50の確率)、または通常のハードウェアで取得できる限り均一にランダムでなければなりません。

5
爆弾をくすぐる!
チャレンジ: 整数入力を受け取るプログラムまたは関数を作成します。これは、以下に指定されているように新しいプログラム/関数を出力します。 入力: 整数n:時限爆弾が爆発するまでの秒数。 出力: 秒単位の時間nを入力として使用した元のプログラムは、次のことを行う新しいプログラム/関数を出力します。 しているn以前のプログラムが実行されてからの秒が経過しますか?印刷するBOOM! それ以外の場合:プログラム/関数を出力します。それ自体を実行すると、タイマーがn秒にリセットされます(最初に出力されたプログラム/関数と同じように動作します)。 注:開始時刻が変更されているため(少なくともほとんどの言語では)、最初に出力されたプログラム/関数とまったく同じではありません(以下の説明の例を参照)。 疑似コードの例: 元のプログラムがABCあり、入力が60秒であるとしましょう: ABC&60出力DEF(60)。 をDEF(60)60秒以内に実行すると、が出力されますDEF_G(60)。これはとまったく同じようDEF(60)に機能しますが、新しい開始時刻が指定されます。 場合はDEF(60)、60秒後に実行され、それの出力は以下となりますBOOM!。 私が「開始時間」とはどういう意味かを明らかにする例: 入力60秒の基本プログラムはで実行され12:00:00ます。開始時刻がの最初の出力プログラムを出力します12:00:00。 の開始時間を含むこの最初の出力プログラム12:00:00は、で実行され12:00:45ます。開始時刻がの2番目の出力プログラムを出力します12:00:45。 開始時刻がこの3番目の出力プログラムは、12:00:45で実行され12:01:25ます。開始時刻がの4番目の出力プログラムを出力します12:01:25。 開始時刻がこの4番目の出力プログラムは、12:01:25で実行され12:05:00ます。出力しますBOOM!。 最初の出力がのBOOM!後12:01:00にどのように印刷されるかに注意してください。ただし、出力プログラムは12:01:25ステップ3であっても、次のプログラムをBOOM!出力します(出力プログラムはその最初の出力プログラムよりも開始時間が長いため)。 。 チャレンジルール: デフォルトのクインルールが適用されます。 少なくともn数秒は経過しているはずです。だから、入力された場合60、時間を開始した12:00:00時に、12:01:00それが出力v2のプログラムをまだしますが、で12:01:01、それが出力しますBOOM!。 出力プログラムは入力を受け取りません(短い場合は空の未使用パラメーターを除きます)。開始時間は、「ハードコードされた」値として次のプログラムに与える必要があります(そのため、出力プログラムの出力は、前のプログラムとほとんど同じではありません(ほとんどの言語)。 メインプログラム/関数のサイズのみがバイトでカウントされます。 プログラム/関数は、文字列(またはバイト/文字配列/リストなどの同等の適切な形式)、言語がこれをサポートしている場合は関数として、または他の適切な形式(不明な場合は問い合わせてください)として出力できます。 一般的なルール: これはcode-golfなので、バイト単位の最短の回答が優先されます。 コードゴルフ言語では、コードゴルフ言語以外の言語で回答を投稿しないようにしないでください。「あらゆる」プログラミング言語について、可能な限り短い答えを考え出すようにしてください。 回答には標準規則が適用されるため、STDIN / STDOUT、関数/メソッドを適切なパラメーターと戻り値の型の完全なプログラムで使用できます。あなたの電話。 デフォルトの抜け穴は禁止されています。 可能であれば、コードのテストを含むリンクを追加してください。 また、必要に応じて説明を追加してください。
9 code-golf  quine  date 

5
抽象書き換えチャレンジ(強盗)
これは、いくぶん証明的なゴルフのような警官と強盗の挑戦です。これは強盗のスレッドです。警官のスレッドはこちらです。 強盗 警官は抽象的な書き換えシステムを投稿します。あなたの仕事は、書き換えルールを適用して、ターゲット文字列にソース文字列から到達できるかどうかを証明することにより、提出をクラックすることです。(これを行うには、ソース文字列で始まりターゲットで終わる一連の書き換えルールをポストするか、これが存在するかしないかを数学的に証明します。) 詳細と定義については、警官のスレッドを参照してください。

2
複数行にわたる関数の作成
複数行にわたって関数を作成しようとしています。 課題のパラメータ: 関数は 'barbarian'を返します 1行に2文字のみ 最大40行。私はファットアローを使用して関数を宣言しようとしていますが、ファットアローを接続していないと機能しません。 チャレンジのソース:https : //www.codewars.com/kata/multi-line-task-plus-plus-hello-world 私の現在の仕事: f= ( )=> '\ b\ a\ r\ b\ a\ r\ i\ a\ n\ s\ ' これは機能しますが、「)=>」は3文字です。関数の作成を拡張することさえ可能かどうかを知りたいだけです。明らかにあまり実用的ではないので、どこにも情報はありません。

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