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

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

2
リーマンシータ関数の特殊なケースの近似
この課題は、計算が困難な無限和を実行できる高速コードを記述することです。 入力 マトリックスよりも小さい整数のエントリを持つ絶対値です。テストするときは、コードに必要な適切な形式でコードに入力を提供できてうれしいです。デフォルトは、マトリックスの行ごとに1行で、スペースで区切られて標準入力に提供されます。nnP100 Pなります正定それは常に対称になる暗示います。それ以外は、チャレンジに答えるために正の明確な意味を本当に知る必要はありません。ただし、実際に以下に定義する合計に対する答えがあることを意味します。 ただし、行列ベクトル積とは何かを知る必要があります。 出力 コードで無限和を計算する必要があります。 正解のプラスまたはマイナス0.0001以内。ここではZ整数の集合であり、これZ^nですべての可能なベクトルであるn整数要素とeある有名な数学定数は約2.71828に等しいです。指数の値は単なる数値であることに注意してください。明示的な例については、以下を参照してください。 これはリーマンシータ関数とどのように関係しますか? リーマンシータ関数の近似に関するこの論文の記法では、計算しようとしています。私たちの問題は、少なくとも2つの理由で特別なケースです。 zリンクされたペーパーで呼び出される初期パラメーターを0に設定します。 P固有値の最小サイズがになるような方法で行列を作成します1。(マトリックスの作成方法については、以下を参照してください。) 例 P = [[ 5., 2., 0., 0.], [ 2., 5., 2., -2.], [ 0., 2., 5., 0.], [ 0., -2., 0., 5.]] Output: 1.07551411208 より詳細には、このPの合計に含まれる1つの用語のみを見てみましょう。 および x^T P x = 30。これe^(-30)は約で10^(-14)あり、与えられた許容範囲まで正しい答えを得るために重要ではないことに注意してください。無限和は、要素が整数である長さ4のすべての可能なベクトルを実際に使用することを思い出してください。明示的な例を示すために1つだけを選択しました。 P = [[ 5., 2., 2., …

30
次の数字を引く
説明 N番号から次のP番号を引きます。Nの次の数はN + 1です。 例を見て、意味を理解してください。 例: Input: N=2,P=3 Calculate: n - (n+1) - (n+2) - (n+3) //Ending with 3, because P=3 Calculate: 2 - 2+1 - 2+2 - 2+3 //Replacing N with 2 from Input Calculate: 2 - 3 - 4 - 5 Output: -10 Input: N=100,P=5 Calculate: n - …

9
Microsoft MS-DOS 5.0 FATディレクトリエントリをデコードする
Microsoft FATファイルシステムには、ディスク上のどの "フォルダ"にどの "ファイル"があるかを表すディレクトリテーブルがあります。当分の間、これらのエントリは多くの情報を少量のビットに詰め込みました。好奇心the盛な人のためにWikiには多くの技術仕様がありますが、ここでの課題は、エントリの「単純な」デコードに焦点を当てることです。 各エントリは32バイトのバイナリワードで構成され、いくつかのセクションに分かれています。この課題に一貫性を持たせるために、MS-DOS 5.0バージョンを使用します。バイトはビッグエンディアンとして順序付けられ、バイト0x00を左端、バイト0x1Fを右端として呼び出します。 以下は、関連するセクションの簡単な概略図と、各セクションの出力(太字)を示しています。 最初の11バイトはASCII形式のファイル名です(これが有名な8.3ファイル名の由来です-ファイル名に8バイト、拡張子に3バイト)。これらは単純なASCIIエンコーディングであり、ピリオド(。)を含むASCIIとして出力する必要があります。 注:8部分と3部分の両方にスペースを埋めて、完全な長さのエントリを作成します。出力はスペースを無視する必要があります(つまり、出力しないでください)。 ファイル拡張子は空(つまり、すべてのスペース)である場合があります。その場合、出力はドットを出力しません。 ASCIIは下位7ビットのみを使用するため、バイトにはすべて先頭に0。が付きます。 次のバイト(0x0b)は、次のビットマスクです。 0x01読み取り専用-出力RO 0x02非表示-出力H 0x04システム-出力S 0x08ボリュームラベル-出力VL。ファイルサイズ(以下)は、実際のエントリに関係なく0として出力される必要があります。 0x10サブディレクトリ-出力SD。ファイルサイズ(以下)は、実際のエントリに関係なく0として出力される必要があります。 0x20アーカイブ-出力A 0x40デバイス-このチャレンジでは無視されます。 0x80予約済み-このチャレンジでは無視されます。 これはビットマスクであるため、複数のフラグが可能です-適用可能なすべての出力は、任意の順序で連結する必要があります。例えば、0xffとすることができるROHSVLSDA(または他の任意の組み合わせ)。 次の2バイト(0x0cおよび0x0d)は、MS-DOS 5.0では使用されません。 次の2バイト(0x0eおよび0x0f)は、次の作成時間です。 ビット15〜11は、24時間形式の時間である-出力00に23 ビット10から5は分である-出力00に59 ビット4から0は秒/ 2です-出力00から58(秒は2秒の解像度のみであることに注意してください) 明確にするために:hhhhhmmmmmmsssssビッグエンディアンで書かれたとき。 次の2バイト(0x10および0x11)は、次の作成日です。 ビット15から9は年です- 最大2107で1980を出力します0127 ビット8から5は月です-出力1から12(先行ゼロの有無にかかわらず) ビット4から0は日-出力0から31(先行ゼロの有無にかかわらず) 明確にするために:yyyyyyymmmmdddddビッグエンディアンで書かれたとき。 次の2バイト(0x12および0x13)は最終アクセス日です。MS-DOS 5.0で使用されていますが、この課題ではこの部分を無視しています。 次の2バイト(0x14および0x15)は、MS-DOS 5.0では使用されません。 次の2バイト(0x16および0x17)は最終更新時刻であり、上記の作成時刻と同じ形式に従います。 次の2バイト(0x18と0x19)は最終更新日で、上記の作成日と同じ形式に従います。 次の2バイト(0x1aおよび0x1b)は、ディスク上のファイルのクラスターの場所です。この課題ではこの部分を無視しています。 最後の4バイト(0x1c、0x1d、0x1e、および0x1f)は、VLまたはSDフラグが設定されている(上記)場合を除き、符号なし整数として出力されるファイルサイズです。0 視覚的表現 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \______________________________FILENAME________________________________________________/\_ATTR_/\___NOTUSED____/\_CREATIONTIME_/\_CREATIONDATE_/\__LASTACCESS__/\___NOTUSED____/\_MODIFIEDTIME_/\_MODIFIEDDATE_/\___NOTUSED____/\___________FILESIZE___________/ 入力 便利な形式の単一の32バイトワード(256ビット)。 これは、文字列としてかもしれない1と0、いくつかの符号なしとしてintS、ブール値のアレイ、等 入力に使用している形式を回答で指定してください。 …

3
濁ったクワタタ魚をきれいにする
この課題は、年カテゴリの受賞者のルーキーの名誉であるPPCG 2015のベスト:muddyfish(のために!私はあなたが探している言語ではありませんよ)とquartata(のために真実-マシンを実装します)。おめでとうございます! バックグラウンド 海の最も深い海溝には、珍しいとらえどころのない四角い魚が生息しています。Game of Lifeセルラーオートマトンのグライダーのように見えます。以下に、サイズの異なる2つのクオタタ魚を示します。 -o- --o ooo --oo-- --oo-- ----oo ----oo oooooo oooooo あなたは何とかクオタタ魚の写真を撮ることができましたが、魚は泥で覆われているので見るのはかなり難しいです。ここで、写真をクリーンアップするプログラムを作成する必要があります。 入力 入力は、.-o#改行で区切られた文字列として指定された、文字の長方形の2Dグリッドです。必要に応じ|て、区切り文字として改行の代わりにパイプを使用できます。1つの末尾および/または先行区切り文字を想定できます。 入力には、海辺を表す周期で囲まれた正の整数である3*n、辺の長さの1つのクオタタ魚が含まn ≥ 1れます.。魚は常に上記の向きになります。このグリッド上にオーバーレイされると、ハッシュの空でない長方形の領域が1つだけ存在し#、泥の塊を表します。ブロブは、クオタタ魚を部分的または全体的に覆うことがあります。入力例は次のようになります ............ ..--oo--.... ..--oo--.... ..---#####.. ..---#####.. ..ooo#####.. ..oooooo.... 出力 すべてのハッシュを文字.-oで置き換えることにより、入力から出力が生成されます。これにより、グリッドに正確に1つの四角魚が含まれるようになります。この置換を適切に実行するための独自の方法が常にあります。特に、泥の塊は魚のサイズが3×3の場合にのみ魚を完全に覆います。出力は、入力と同じセパレーターを使用します。上記の入力の場合、正しい出力は次のようになります ............ ..--oo--.... ..--oo--.... ..----oo.... ..----oo.... ..oooooo.... ..oooooo.... ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。時間の制限はありません。時間とリソースが無制限の場合、提出物が最終的に停止する場合は問題ありません。 テストケース Input: ....... ...-o-. ...--o. ##.ooo. ##..... Output: ....... ...-o-. ...--o. …

4
Gravity Guyはそれを実現できますか?
Gravity Guyは、ユーザーの入力が重力の方向を反転させる1つのキーのみであるゲームです。ASCIIアートレベルが与えられたら、Gravity Guyが最後に到達できるかどうかを判断します。 ルール 重力の初期方向は下向きです。 入力の最初の列には常にGravity Guy が開始する1つのみ が含まれます。# 繰り返しごとに、彼は右側のキャラクターに直接移動します。 彼のパスがブロックされて彼がに移動するなら#、プレーヤーは負けます。 移動後、プレーヤーは重力を下から上、または上から下にオプションで切り替えることができます。 Gravity Guyは、次に#(重力の現在の方向に)次へ進みます。 #上に落ちるものがなく、彼がグリッドから落ちる場合、プレーヤーは負けます。 Gravity Guy が入力グリッドの右側から移動すると、プレーヤーが勝ちます。 例 これが入力グリッドの場合: ### # # # ### Gravity Guyはx、各反復の後、これらの位置から開始します。^=重力を上に、v=重力を下に切り替えます。 v ^ v ------------------------------------------------------------- ### | ### | ### | ### | ### | ### x | | x | x | x …

30
無効なInvali Inval
このアイデアは、@TùxCräftîñgのチャットメッセージに大まかに基づいています。 以下のシーケンス例をご覧ください。 INVALID0、INVALID1、INVALID2 INVALID3、INVALID4...INVALID9 後INVALID9、次のようになります。 INVALI0、INVALI1、INVALI2、INVALI3...INVALI9 そしてINVALI9、次のようになります: INVAL0、INVAL1、INVAL2、INVAL3...INVAL9 その後、次INVAL9のようになります。 INVA0、INVA1、INVA2、INVA3、...INVA9 INVALID毎回単語から文字を削除し続けていることに注目してください。 単一の文字、つまり文字に到達するまで、これを繰り返しますI。 I0、I1、I2、I3、I4...I9 さて、あなたの仕事は、単語の入力を取得し、上記の例のようにそれからシーケンスを生成することです。コードも1文字で動作する必要があり、その場合、結果のシーケンスは短くなります。 任意の入力および出力形式を選択できます(必要に応じて、セパレーターの有無にかかわらず)が、選択したものを指定する必要があります。 シーケンスは、正確に指定された順序である必要があります。 このチャレンジを正常に完了する最短のコード(バイト単位)がチャレンジに勝ちます。 上記の例の完全なシーケンス: INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, …

15
重複して切り替えられたケースを削除する
ゴール このチャレンジの目標は、入力として文字列を指定し、ペアの2番目の項目が大文字と反対の場合、重複する文字のペアを削除することです。(つまり、大文字は小文字になり、その逆も同様です)。 ペアは左から右に交換する必要があります。たとえば、にaAaなるべきでaaあり、ではありませんaA。 入力と出力: Input: Output: bBaAdD bad NniIcCeE Nice Tt eE Ss tT T e S t sS Ee tT s E t 1!1!1sStT! 1!1!1st! nN00bB n00b (eE.gG.) (e.g.) Hh3lL|@! H3l|@! Aaa Aa aaaaa aaaaa aaAaa aaaa 入力は、印刷可能なASCIIシンボルで構成されます。 重複した数字やその他の文字以外の文字を削除しないでください。 了承 この課題は、@ nicaelの"Duplicate&switch case"の反対です。逆にできますか? サンドボックスからのすべての貢献者に感謝します! カタログ この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language …
27 code-golf  string 

3
ボルト、アンペア、ワット、オーム:2つ与えられた場合、他の2つを計算します
オームの法則によれば、電圧(V)が印加されたときにオームの抵抗(R)を流れるアンプの電流(I)は次のように与えられます。 V = I / R 同様に、その抵抗によって消費されるワット単位の電力(P)は次のようになります。 P = V * I 再配置と置換により、他の2つのうちのいずれかが与えられたときに、これらの量のうちの2つを計算するための式が導出されます。これらの式は次のように要約されます(この画像はボルトのE代わりに使用していることに注意してくださいV)。 文字列内のこれらの数量のいずれか2つの入力が与えられた場合、他の2つを出力します。 入力数値は、言語に適した形式の小数になります。精度は、少なくとも小数点以下3桁にする必要があります。(IEEE 754-2008 binary32 floatで十分です。) 各入力番号の末尾には単位が付きます。これはV A W R、電圧、アンペア数、電力、抵抗のいずれか(または同等の小文字)です。また、のΩ代わりに使用することもできますR。単位には10進数の接頭辞(キロ、ミリなど)はありません。 2つの入力量は、1つの文字列で任意の順序で与えられ、単一のスペースで区切られます。 入力量は常に0より大きい実数になります。 出力は入力と同じ形式になります。 方程式を解く組み込み関数は許可されていません。 入力例 1W 1A 12V 120R 10A 10V 8R 1800W 230V 13A 1.1W 2.333V 対応する出力 1V 1R 0.1A 1.2W 1R 100W 120V 15A 2990W 17.692R …

10
クォータニオンの解析
まだ知らない場合、クォータニオンは基本的に4部構成の数字です。この課題のために、実コンポーネントと3つの虚コンポーネントがあります。虚数成分は、接尾辞i、jで表されkます。例えば、1-2i+3j-4kと四元数である1実数成分であり、かつ-2、3及び-4虚数成分です。 この課題では、文字列形式のクォータニオン(例"1+2i-3j-4k")を解析して、係数のリスト/配列(例[1 2 -3 -4])にする必要があります。ただし、クォータニオン文字列はさまざまな方法でフォーマットできます... それは正常かもしれません: 1+2i-3j-4k これは、不足している用語を持っている可能性があります1-3k、2i-4k(あなたが不足している用語を使用している場合は、出力0これらの用語について) これは、係数が欠落している可能性がありますi+j-k(この場合、これは、と等価である1i+1j-1k言い換えれば、。 、i、jまたはk前の数字を有するものとすることなく、1デフォルトで前方に) 正しい順序ではない可能性があります。 2i-1+3k-4j 係数は、単に整数または小数にすることができます。 7-2.4i+3.75j-4.0k 解析中に注意すべきことがいくつかあります。 常に用語+または-用語の間にあります 少なくとも1つの用語を含む有効な入力が常に渡され、文字は繰り返されません(j-jsはなし) すべての数値は有効であると想定できます あなたがしたい場合の解析後に別の形式に番号を変更することができます(例:3.0 => 3、0.4 => .4、7 => 7.0) 解析/クォータニオンのビルトインと標準の抜け穴は許可されていません。これにはevalキーワードと機能が含まれます。入力は単一の文字列で、出力はリスト、配列、空白で区切られた値などになります。 これはcode-golfであるため、バイト単位の最短コードが優先されます。 多数のテストケース 1+2i+3j+4k => [1 2 3 4] -1+3i-3j+7k => [-1 3 -3 7] -1-4i-9j-2k => [-1 -4 -9 -2] 17-16i-15j-14k => [17 -16 …

18
回転対称性のある数
整数、出力所与truthyのそれは同じ逆さまである場合、値または(180°回転)falsyそうでない場合、値を。 0、1、及び8回転対称性を持っています。6となり9、逆もまた同様です。 真実の結果を生み出す一連の数字:OEIS A000787 0, 1, 8, 11, 69, 88, 96, 101, 111, 181, 609, 619, 689, 808, 818, 888, 906, 916, 986, 1001, 1111, 1691, 1881, 1961, 6009, 6119, 6699, 6889, 6969, 8008, 8118, 8698, 8888, 8968, 9006, 9116, 9696, 9886, 9966, 10001, 10101, 10801, 11011, 11111, 11811, 16091, …
27 code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

22
A190810を計算する
タスクは非常に簡単で、A190810の n番目の要素を計算します。 A190810の要素は、次の規則に従って計算されます。 最初の要素は1です シーケンスは増加しています xシーケンス内で発生する場合、2x+1そして3x-1また行う 1ベースまたは0ベースのインデックスを使用できますが、0ベースのインデックスを使用する場合は、回答でそれを言ってください。 テストケース a(1) = 1 a(2) = 2 a(3) = 3 a(4) = 5 a(5) = 7 a(10) = 17 a(20) = 50 a(30) = 95 a(55) = 255 これはコードゴルフなので、バイト単位の最短回答が勝ちです!

5
ハイパーキューブを回転させる
前書き ハイパーキューブ/テセラクトは、通常のキューブに相当する4次元です。キューブネットを取得して3次元に拡張し、4次元を使用してハイパーキューブに折り畳むことで作成されます。基本的には立方体で、各辺は立方体です。 ハイパーキューブを作成するには、16個の4Dベクトル(のベクトルを必要とするx、y、zおよびwコンポーネント)。これらのベクトルは次のとおりです。 A(0, 0, 0, 0); B(1, 0, 0, 0); C(1, 0, 1, 0); D(0, 0, 1, 0); E(0, 1, 0, 0); F(1, 1, 0, 0); G(1, 1, 1, 0); H(0, 1, 1, 0); I(0, 0, 0, 1); J(1, 0, 0, 1); K(1, 0, 1, 1); L(0, 0, 1, …

30
ソースファイルの名前を逆にするプログラムを書く
単一のファイルに、入力を必要とせず、出力も生成しないプログラムを作成します。実行すると、コードが変更されたり、その他の永続的な副作用が発生したりすることなく、名前が何であるかに関係なく、含まれているファイルの名前が逆になります。 これを達成する方法はどれでも結構です。プログラムが実行されると、唯一の永続的な変更は、そのファイル名が逆になっていることだけです。たとえば、ディレクトリに新しいファイルを配置しないでください。 プログラムを再度実行すると、名前が逆になります。実際、プログラムは何度でも任意に実行できるはずです。 この課題のために: ファイル名は、常に1〜127文字の小文字(az)の文字列であると想定できます。(実行するために拡張子がファイルに必要な場合は、拡張子の前の部分を逆にします。例:mycode.bat→edocym.bat コードファイルはそれ自体がディレクトリにあるため、名前の競合はありません(それ自体を除く)。 あなたはありません逆にするときと同じつまり、ファイル名は回文ではないと仮定します。パリンドロームであるファイル名は、そうでないファイル名と同じように機能するはずです。 ファイルのコンテンツまたはメタデータを読むことができます。ここに馬の制限はありません。 すべてのシェルに同じコマンドセットがあるわけではないため、プログラムは特定の最新の一般的なオペレーティングシステム(Windows / Linuxなど)で実行されると仮定できます。 具体的な例として、mycode独自のディレクトリで呼び出されるファイルにPythonプログラムがあるとします 。ランニング python mycode ターミナルでは、ファイル名がに逆になるはず edocymです。ファイルedocymはディレクトリ内で単独である必要があります-指定されたファイルmycodeはもう存在しないはずです。ランニング python edocym 名前をに戻しmycode、その時点でプロセスを無期限に繰り返すことができます。 racecar(コードを変更せずに)同じPythonファイルの名前を変更してから実行した場合 python racecar 「レースカー」はパリンドロームであるため、目に見える変化はありません。ファイル名が、たとえば、aまたはの場合も同様xxです。 バイト単位の最短コードが優先されます。Tiebreakerは、より高い投票数の回答です。

23
ケース順列
大文字と小文字のすべての順列を生成できる場合、大文字と小文字を区別せずに比較する必要があるのは誰ですか?誰も!それが答えです。誰もしません。あなたの仕事はこの偉業を達成することです。与えられた入力に対して大文字/小文字のすべての可能な順列を生成します。 入力 印刷可能な標準ASCII文字列。入力をすべて小文字と見なしてはなりません。入力は常に少なくとも1文字です。 出力 入力された文字列の大文字と小文字のすべての置換(重複なし)。これは、小さいバージョンと大きいバージョンの文字のみを変更する必要があります(数字は同じままです)。各順列は、文字列または文字のリストとして出力する必要があります。シングルトン文字列のリストは許可されていません。 例 a1a ['a1a', 'a1A', 'A1a', 'A1A'] abc ['abc', 'abC', 'aBc', 'aBC', 'Abc', 'AbC', 'ABc', 'ABC'] Hi! ['hi!', 'hI!', 'Hi!', 'HI!'] 得点 これはcode-golfであるため、最短回答(バイト単位)が優先されます。 おもしろいので、拡張アスキー文字を処理するのにどれだけの労力がかかるかを見てみましょう。追加のテストケースを次に示します。 ž1a -> ['ž1a', 'ž1A', 'Ž1a', 'Ž1A'] (プログラムはこれをサポートする必要はありません)

4
私の言葉を見つけてください!
この挑戦のアイデアは、文字のグリッド上の辞書からすべての単語を見つけることです。入力は、stdinまたは関数argから取得する必要があり、次の形式で入力します。 [your dictionary as a list of space sep words] [a grid of letters] Example: The cool car looc thea jopr 一致を見つけるためのルール 一致は、ボード上で斜め、水平、または垂直に見つかった場合に有効です(大文字と小文字は区別されません)。方向は関係ありません(例:look一致kool)。同じ単語に複数の一致がある場合は、それらすべてにマークを付けます。 出力: 出力は、指定されたグリッドになります-文字がスペースで区切られ、行が2倍になります。例: Input: looc thea jopr Output: l o o c t h e a j o p r マッチを表すために、一緒に行く文字の間に矢印を置きます。矢印(/\-|X)は、一致でグループ化された文字の各ペアを指します。交差するX場合に使用され/\ます。 例: Input: The cool car looc thea …

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