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

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

23
素因数を見つける
このタスクでは、数値の素因数を計算するプログラムを作成する必要があります。入力は自然数1 <n <2 ^ 32です。出力は、次の形式の数値の素因数のリストです。指数は1の場合、省略する必要があります。素数のみを出力します。(入力が131784であると仮定): 131784 = 2 ^ 3 * 3 * 17 ^ 2 * 19 同じ量の空白を使用する必要はありません。空白は適切な場所に挿入できます。プログラムは、入力があれば10分以内に完了するはずです。最短のキャラクター数のプログラムが勝ちます。

26
老婦人がいた
あなたの目標は、次の詩をここに表示されているとおりに印刷するプログラムを作成することです。 There was an old lady who swallowed a fly. I don't know why she swallowed that fly, Perhaps she'll die. There was an old lady who swallowed a spider, That wriggled and iggled and jiggled inside her. She swallowed the spider to catch the fly, I don't know why …

30
Forループの再発明[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 For ループは多くの言語で広く使用されていますが、言語がそれらをサポートしていない場合はどうしますか? 基本的に実行する方法作成for(任意の繰り返し構造を使用せずにループをfor、foreach、while、do、など)。 複製する必要がある基本的なforループは、このように設定されています for(i=0;i<1000;i++) 繰り返し構造を使用せずにこれを複製できる必要があります。また、ループの本体にある言語でコードを実行する必要があります。任意の形式をeval使用できforますが、ループを単独で実行することはできません。 iスペースを100回印刷してコードをテストし、このテストケースを回答の最後に追加して、他の人とコードを検証します。 正確に何をするかについての制限はありませんfor。ループを複製するだけです。 勝者は、選択された時点での投票に基づいて決定されます。

30
文字列Xは文字列Yのサブシーケンスですか?
ストリングX及びYが与えられると、Xがあるかどうかを決定サブ空の文字列がすべての列のサブシーケンスとみなされるYの。(たとえば、''およびの'anna'サブシーケンスです'banana'。) 入力 X、空の可能性がある大文字と小文字を区別する英数字文字列 Y、空の可能性がある大文字と小文字を区別する英数字文字列 出力 TrueまたはFalse(または同等のもの)。XがYのサブシーケンスであるかどうかを正しく示します。 I / Oの例 X Y output '' 'z00' True 'z00' 'z00' True 'z00' '00z0' False 'aa' 'anna' True 'anna' 'banana' True 'Anna' 'banana' False 基準 ソースコードのバイト数で決まる最短のプログラムが優先されます。 サンプルプログラム 適合できるいくつかのプログラムがこの関連投稿にあります。
23 code-golf  string 

11
この番号は密かにフィボナッチですか?
バックグラウンド あなたのほとんどはフィボナッチ数が何であるか知っています。ツェッケンドルフの定理によれば、正の整数はすべて、1つ以上の異なるフィボナッチ数の合計として表現できることを知っている人もいるかもしれません。整数の最適なツェッケンドルフ表現の項の数n自体がフィボナッチ数である場合、n「密かに」フィボナッチと呼びます。 例えば: 139 = 89 + 34 + 13 + 3 This is a total of 4 integers. Since 4 is not a Fibonacci number, 139 is not secretly Fibonacci 140 = 89 + 34 + 13 + 3 + 1 This is a total of 5 integers. Since …

6
ガウス整数の因数分解
ガウス整数は、その実部と虚部の整数である複素数です。 ガウス整数は、通常の整数と同様に、ガウス素数の積として一意の方法で表すことができます。ここでの課題は、指定されたガウス整数の主な構成要素を計算することです。 入力:0ではなく、単位ではないガウス整数(つまり、1、-1、i、および-iは入力として指定できません)。賢明な形式を使用してください。例: 4-5i -5 * j + 4 (4、-5) 出力:素数(つまり、2つの非単位ガウス整数の積として表現できないもの)で、その積が入力数に等しいガウス整数のリスト。出力リストのすべての数値は、1、-1、i、または-iではなく、自明でないものでなければなりません。適切な出力形式を使用できます。入力形式と同じである必要はありません。 出力リストに複数の要素がある場合、いくつかの正しい出力が可能です。たとえば、入力9の場合、出力は[3、3]または[-3、-3]または[3i、-3i]または[-3i、3i]になります。 テストケース(この表から取得、テストケースごとに2行) 2 1+i, 1-i 3i 3i 256 1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i,1+i 7+9i 1+i,2−i,3+2i 27+15i 1+i,3,7−2i 6840+585i -1-2i, 1+4i, 2+i, 3, 3, 6+i, 6+i ガウス整数を因数分解するための組み込み関数は許可されていません。ただし、組み込み関数による通常の整数の因数分解は許可されています。

30
文字通り素数の素数テスト
指定された数の素数性をテストし、出力をブール値(Trueは素数)として与えるプログラムを作成します。プライムテストは、番号1に対して有効である必要があります(必須ではありません)。 ここで問題になるのは、プログラム自体を合計して素数にする必要があることです。すべての文字(スペースを含む)をUnicode / ASCII値(表)に変換します。次に、これらの数値をすべて加算して、プログラムの合計を取得します。 たとえば、Python 3.3で書いたそれほど素晴らしいプログラムではありません。 q=None y=int(input()) for x in range(2,int(y**0.5)+1): if y%x==0: q=False if not q: q=True print(q) すべての文字を対応するUnicode / ASCII値に変換すると、次のようになります。 113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 …

13
ロングタイプの署名を作成する
チャレンジ 最長のタイプシグネチャを持つ最大100バイトの式を見つけます。 ルール 型推論を持つ静的型付け言語はすべて許可されます 型は曖昧でない必要がありますが、定義されたインスタンスのない型を含めることができます。例えばNum [a]とEq [a]も定義されたインスタンスなしに、許可されています STDIN / STDOUTを使用してプログラムをコンパイルするために最低限必要な以外のインポートはありません 無限型は許可されていません 回答に複数の表現がある場合、スコアに貢献できるのは1つだけです。たとえば、作曲のタイプシグネチャは(.) :: (b -> c) -> (a -> b) -> a -> c20のスコアですが、25コピーの回答(.)\nのスコアは500ではなく20です。 式は最大100バイトでなければなりません スコアは、関数の名前と空白を除く、タイプシグネチャの文字数です。たとえばf :: (a -> b) -> a -> b、12のスコアがあります 最高のスコアが勝ちます! 例 他の言語も使用できますが、次の例はHaskellにあります。 Score: 112 map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map.map f :: (a -> b) -> [[[[[[[[[[[[[[[[[[[[[[[[[a]]]]]]]]]]]]]]]]]]]]]]]]] -> [[[[[[[[[[[[[[[[[[[[[[[[[b]]]]]]]]]]]]]]]]]]]]]]]]] Score: …

13
パブを処理できますか?
バックグラウンド 金曜日の午後遅く、あなたとあなたの友人はその夜遅くにパブに行くことにしましたが、パブに行く前に、いくつかの飲み物が必要だと思います。ただし、事態は急速に拡大します。友人のシャドックパンプルムースが今週初めに宝くじに当選し、さまざまな飲み物の入った木箱に木箱を持ち込むことにしました。パブでのセキュリティは非常に厳しく、敷地内に入ろうとする前に過度に消費する場合、中に入ることはできません。あなたはすべてプログラマーです-だからとにかく物事がうまくいくと思います。 チャレンジ あなたが合理的なパブの制限を上回っている/下回っている場合、真実/偽を出力するアルコールメーターをプログラムする必要があります。パブに行く前にstdin、測定プログラムが読み取る夕方に消費した量と飲料の種類を入力します。それが真実を出力する場合、あなたはパブの制限を超えており、家にいます。それが偽物を出力する場合、あなたは行ってもいいです。 入力 0体重をキログラムで表し、改行が続く整数よりも大きい整数。この入力の後に、次の形式で一連の1桁の金額と飲料が続きます。 <amount><amount type>o<beverage type> ビール1本の場合、これは次のようになります。 1Bob 各入力はスペースで区切られます。 入力仕様 各飲料には、それに起因する衝撃に対応する単位があります。体重を2で割った数より多くのユニットを消費する場合、パブはもう選択肢ではありません。 (これは現実を反映する場合としない場合があります) 以下は、有効な飲料および飲料の対応するアルコール単位です。 ビール:b、1単位 エネルギードリンク:e、0単位 ホットソース:h、2ユニット(強力なもの) ジュース(有機果実などからなる)j、0単位 ラム:r、6単位 テキーラ:t、7単位 ウォッカ:v、6単位 ワイン:w、3単位 さまざまな金額タイプがあります。 ボトル: B 木枠: C ガラス: G 樽: K 一口: S 各金額タイプには、それに含まれる飲料のアルコール単位を乗算する乗数があります。 ボトル: 3 木枠: 25 ガラス: 2 樽: 50 一口: 0.2 出力 プログラムは、消費量が体重を2で割った値より上/下である場合に、真実/偽を出力しstdoutます。消費量が体重を2で割った値と等しい場合、偽を出力する必要があります。 可能な入力および出力のサンプル 入力 …

1
キリンがキリンではないのはいつですか?
この種の「なぞなぞ」がプログラミングパズルとコードゴルフで話題になっていることを願っています。 以下のC#メソッドが返さfalseれる状況の例を示します。 public class Giraffe : Animal { public bool Test() { return this is Giraffe; } } 規則:上記のコード行は決して変更してはなりませんが、「プロジェクト」がコンパイルされてメソッドが呼び出されるように、コードをアプリケーションに配置します。実行すると、メソッドはを返す必要がありfalseます。私が念頭に置いている解決策は、実行時または類似の「エキゾチックな」事でそれ自身のILを放出せず、通常のインスタンスメソッド呼び出しです。

19
ダイクストラの挑戦
今年50歳を迎えるインタラクティブなツールとしてAPLに敬意を表して発表 バックグラウンド ケン[アイバーソン]は、1963年8月、ニュージャージー州プリンストンで開催された機械言語構造に関する作業会議で、論文「プログラミング言語の形式主義」を発表しました。(バッカス、カレー、ダイクストラ、フロイド、アイバーソン、ニューウェル、ペルリス、ウィルクス)。この論文はまた、プレゼンテーション後に行われた議論を記録し、最後にケンと[Edsger] Dijkstraの間のやり取りが行われました。 チャレンジ たとえば、対応する行と列のインデックスの合計に等しい行列Mのすべての要素の合計など、より複雑な演算をどのように表現しますか? スニペットまたは式(完全なプログラムまたは関数は不要)を記述して、インデックスの合計に等しい特定の整数行列の各要素の合計を計算します。または、FryAmTheEggmanが言うように、要素a ijの行列Mが与えられると、a ij = i + j である各a ijの合計を返します。 マトリックスが既に変数またはメモリの場所にあると仮定することも、引数または入力として受け取ることもできます。0または1ベースのインデックスを使用できます。 テストケース 0 空行列用 2 00ベースのインデックスまたは21 ベースのインデックス 1 5 2 9 4 2 5 9 6 20ベースまたは101ベース 0 3 0 4 0 4 1 4 4 3 1 2 -2 4 -2 -1 11 3 …

2
絵文字自動販売機
絵文字が表示されませんか?こちらをクリックしてください。 自動販売機をシミュレートします。アイテムは56種類の絵文字で、:( U + D83C U + DF45)から🍼(U + D83C U + DF7C)までの2つの代理UTF-8文字として表すことができます。HTMLでは、これらの絵文字は&#x1F345から&#x1F37CとしてUTF-16形式で表すことができます。ベース10では、最初のUTF-8文字の値は55356です。二番目の文字の値は、より範囲の57157に57212。これは、関連するすべての絵文字を生成するCJamプログラムです。混乱を避けるため、このチャレンジはbytesではなく文字でスコアリングされます。一部の絵文字は2文字で、一部は3文字です。http://www.lettercount.comは、このチャレンジの正確なカウントを提供します。 価格設定💵💵💵 8つの異なる価格カテゴリがあります。 $ 1.00:🍅🍆🍇🍈🍉🍊🍋 $ 1.50:🍌🍍🍎🍏🍐🍑🍒 $ 2.00:🍓🍔🍕🍖🍗🍘🍙 $ 2.50:🍚🍛🍜🍝🍞🍟🍠 3.00ドル:🍡🍢🍣🍤🍥🍦🍧 $ 3.50:🍨🍩🍪🍫🍬🍭🍮 $ 4.00:🍯🍰🍱🍲🍳🍴🍵 4.50ドル:🍶🍷🍸🍹🍺🍻🍼 自動販売機の展示 これは、プログラムの開始時および購入後にユーザーに表示されるものです。絵文字番号の代わりに通常の番号を使用できますが、絵文字番号には他の絵文字と同じ幅であるという利点があります。絵文字番号を使用する場合、絵文字番号はそれぞれ3文字であるため、スコアから14文字を差し引くことができます。 1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣ A 🍅🍆🍇🍈🍉🍊🍋 B 🍌🍍🍎🍏🍐🍑🍒 C 🍓🍔🍕🍖🍗🍘🍙 D 🍚🍛🍜🍝🍞🍟🍠 E 🍡🍢🍣🍤🍥🍦🍧 F 🍨🍩🍪🍫🍬🍭🍮 G 🍯🍰🍱🍲🍳🍴🍵 H 🍶🍷🍸🍹🍺🍻🍼 ユーザーが入力するG5と、thatが選択されます。入力するとE6🍦が選択されます。 現金の追加💸💸💸 …
23 code-golf 

27
シーケンスの並べ替え
前書き 次のシーケンス(非負の整数)を観察してみましょう。 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ... たとえば、最初の3つの数字を見てみましょう。これらは0, 1, 2です。このシーケンスで使用される番号は、6つの異なる方法で注文できます。 012 120 021 201 102 210 それで、F(3)= 6としましょう。別の例はF(12)です。これには数字が含まれます。 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 または、連結バージョン: 01234567891011 これを再配置する方法を見つけるには、まずこの文字列の長さを調べる必要があります。この文字列の長さは14です。14を計算します!。ただし、たとえば、最終的な文字列を中断することなく場所を交換できます。2つのゼロがあるため、2つあります!順序を乱すことなくゼロを変更する方法。4つもあるので、4つあります!切り替える方法。合計をこれらの2つの数値で除算します。 これは14個あります!/(4!×2!) = 1816214400文字列を配置する方法01234567891011。したがって、F(12)= 1816214400と結論付けることができます。 タスク 与えられたN、出力F(N) …

13
is_gaussian_prime(z)?
仕事 a,bガウス整数z = a+ib(複素数)を表す2つの整数を受け入れる関数を作成します。プログラムa+ibは、ガウス素数であるかどうかに応じてtrueまたはfalseを返す必要があります。 定義: a + bi 次の条件のいずれかを満たす場合にのみ、ガウス素数です。 aそしてb、両方とも非ゼロでa^2 + b^2あり、素数です aゼロ、|b|素数、|b| = 3 (mod 4) bゼロ、|a|素数、|a| = 3 (mod 4) 詳細 関数のみを記述する必要があります。言語に関数がない場合、整数が2つの変数に格納されていると仮定して、結果を出力するか、ファイルに書き込むことができます。 isprimeor prime_listやnthprimeorなどの言語の組み込み関数は使用できませんfactor。最も少ないバイト数が優先されます。プログラムは、32ビット(符号付き)整数a,bである場所で動作する必要がa^2+b^2あり、30秒以内に終了するはずです。 プライムリスト ドットはガウス平面上の素数を表します(x=実数、y=虚数軸): いくつかのより大きな素数: (9940, 43833) (4190, 42741) (9557, 41412) (1437, 44090)

7
コードクロスワード
これは警官と強盗の挑戦です。あなたが警官(クロスワードメーカー)である場合はここに答え、強盗(クロスワードソルバー)であればコンパニオンの質問に答えてください。両方の役割を引き受けることができます。 警官(パズル) あなたの仕事は、10×10のクロスワードパズルを書くことです。ここでは、単語やフレーズの代わりに、コードの断片が手がかりの解決策になります。各手掛かりは、それが参照するコードのスニペットを実行するとシーケンスが標準出力に出力されるように、文字の空でないシーケンスになります。 投稿には次の3つが含まれている必要があります。 あなたの空白の 10×10クロスワードグリッド、使用#のための明暗(手掛かりセパレータ)と_のためにライト(セルに充填されます)。 2つ以上のライトの水平または垂直のシーケンス(暗部またはグリッドエッジで囲まれている)はすべて、ヒントを書く必要があるエントリです。便宜上_、各エントリの先頭を一意の文字識別子(1、2、...、A、Bなど)に置き換えて、通常の方法(左から右、上から下)で番号を付ける必要があります、...)。 グリッドには任意の数のダークが含まれる場合があります。 グリッドにはいくつもの手がかりがあります。 水平エントリは常に左から右に、垂直エントリは上から下に読み込まれます。 クロスワードのすべてのエントリを含む手がかりのリスト。 手がかりには、少なくとも1〜10文字を含める必要があります。 手がかりにスペースが含まれている場合は、投稿をフォーマットするときにそれらが明白であることを確認してください。 ヘッダーとフッターのコードスニペット、それぞれ20文字以下。 これらは、ソリューションスニペ​​ットの前後でそれぞれ実行され、長いビルトインなどの名前を変更するのに役立ちます。 手がかりが対応するコードスニペットと一致するようにする手順は次のとおりです。 ヘッダー、スニペット、およびフッターを連結します[header][snippet][footer]。 これを通常のプログラム(過去の実行とは無関係)として実行し、stdoutに出力されたものを確認します。 これが手がかりと一致する場合、スニペットは有効なソリューションです。 簡単にするために、印刷可能なASCII(16進コード20〜7E)のみを使用できます。ヘッダーとフッターだけにタブと改行を含めることもできます。 その他の注意事項 どのスニペットで[header][snippet][footer]も、最新のコンピューターで実行するのに1分以上かかることはありません。 プログラミング言語(およびバージョン)を指定する必要があります。 一般的なハッシュアルゴリズムは使用できません。 外部ライブラリを使用することはできません。 コード内のすべてのものは決定論的で、時間不変でなければならず、ネットワーク接続を必要としません。 #そして、_スニペット(またはどこか他の)で発生する可能性があります。 COTOが行ったように、クロスワードでいくつかのキャラクターを明らかにすることができます。それらはまだライトとしてカウントされます。強盗はこれらを使用する必要はありません、彼らはちょうどいいヒントです。 例 Python 3を使用した簡単な例。ヘッダー:p=print;t=5;。フッターなし。 未解決のグリッド: ########## 1___2___## _###_##### _###_##### _###_##### ####_##### ####_##### ###3______ ####_##### ####_##### 手がかり: ACROSS 1: 8 3: A! DOWN 1: …

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