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

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

22
弱い素数ですか?
最も近い他の素数がそれより小さい場合、素数は弱いです。同点がある場合、素数は弱くない。 たとえば、71は素数ですが、75は複合であるため、73は弱い素数です。 仕事 入力として2より大きい素数を指定すると、それが弱い素数であるかどうかを判断するコンピューターコードを記述します。これは標準の決定問題であるため、2つのケース(weakおよびなどnot weak)ごとに2つの一意の値を出力する必要があります。 これはコードゴルフなので、タグの標準ルールが適用されます。 OEIS 以下は、最初の47の弱い素数です。 3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, …

8
チューブのどこかに…しかし、どの行に?
The London Underground AKA The Tubeは、世界最古の地下鉄です。現在、267の名前の駅(「Edgware Road」と「Hammersmith」以降は厳密に269 **の駅)にサービスを提供する11路線で構成されています。 チャレンジ 入力として名前で指定されたステーションにサービスを提供する回線の名前を出力します。 入力: 文字列または文字のリスト これは、有効なステーション名であると想定される場合があります(以下のコードブロックにリストされています)。 必要に応じ&て、入力内のいずれかが一貫して単語and(またはAnd)であると想定し、回答に明確に記述してください。 出力: 分離そのステーションにサービスを提供する11行の出力をリストする出力: 文字列のリスト、文字のリストのリスト、印刷されたテキスト、文字列、文字のリスト。疑問がある場合は尋ねてください。 あなたはよい一貫出力単語をand(またはAndいずれかの場所で)&希望場合ますが、答えにこれを明記してください。 セパレーター部分文字列が使用する文字列または文字のリストを印刷または返す場合、行名のいずれにも存在しない(&またはandorまたはAnd使用済みを含む)-したがって、セパレーターとしての単一のスペース文字の使用は除外されることに注意してください。 チューブネットワーク: -注:スペルミスが発生した場合でも、これは最終状態です(回答の前に対処しない限り)。 Input (Station Name) : Output (list of tube line names) ---------------------------------------------------------------------------------------------------------------- "Acton Town" : ["District","Piccadilly"] "Aldgate" : ["Circle","Metropolitan"] "Aldgate East" : ["District","Hammersmith & City"] "Alperton" : ["Piccadilly"] "Amersham" : …

30
セミプライムですか?
驚くべきことに、数値が準素数であるかどうかを判断するためのコードゴルフの質問があるとは思わない。 半素数とは、2つの(必ずしも別個ではない)素数の積である自然数です。 十分にシンプルですが、非常に重要な概念です。 正の整数を指定して、それがセミプライムかどうかを判断します。出力は、trueまたはfalseの値に対して同じ出力を提供する限り、どのような形式でもかまいません。また、パフォーマンスやオーバーフローが問題にならないほど入力が適度に小さいと仮定することもできます。 テストケース: input -> output 1 -> false 2 -> false 3 -> false 4 -> true 6 -> true 8 -> false 30 -> false (5 * 3 * 2), note it must be EXACTLY 2 (non-distinct) primes 49 -> true (7 * 7) still technically …

24
それは秩序だった言葉ですか?
(Puzzlingに関するこの投稿に触発されました。注意:そのパズルのネタバレは下にあります。) 標準の電話キーパッドは、次のように文字と数字を関連付けます。 1 -> 2 -> ABC 3 -> DEF 4 -> GHI 5 -> JKL 6 -> MNO 7 -> PQRS 8 -> TUV 9 -> WXYZ 0 -> 上記を使用してキーパッドプレスに変換したときに、結果の数値が非減少または非増加である場合、特定の入力単語は順序付き単語として定義されます。言い換えれば、結果の数は増加も減少もできません。 たとえば、単語はにCAT変換され228ます。これは減少しないため、順序付けされた単語です。ただし、単語DOGは364であり、これは増加と減少の両方であるため、順序付けされた単語ではありません。 チャレンジ 単語が与えられたら、それが順序付けられているかどうかを出力します。 入力 ASCIIアルファベット([A-Z]または[a-z])文字のみで構成される適切な形式の単語(必ずしも辞書の単語である必要はありません)。 入力がすべて大文字またはすべて小文字の場合の選択ですが、一貫性が必要です。 単語の長さは少なくとも3文字になります。 出力 入力語が順序付けられている(真実)か、順序付けされていない(偽)かについての一貫した真実/偽の値。 ルール 完全なプログラムまたは機能のいずれかが受け入れられます。関数の場合、出力する代わりに出力を返すことができます。 可能であれば、他の人があなたのコードを試すことができるように、オンラインテスト環境へのリンクを含めてください! 標準的な抜け穴は禁止されています。 これはコードゴルフなので、通常のゴルフルールがすべて適用され、最短のコード(バイト単位)が勝ちます。 例 ここにいくつかの順序付けされた単語(つまり、真実)があり、リンクされたパズルパズルにはもっとあります。 CAT TAC AAA …

22
それは良い2048ボードですか?
これがここでの私の最初の質問ですので、コメントの提案は大歓迎です!ありがとう;) 前書き 以下のための1つの非常に一般的な戦略2048のゲームはありません下にスワイプ今までにありません。これにより、すべての大きな数字が上部に、下部の数字が下部に配置されます。したがって、この戦略を正しく適用すると、ボードは常に次のパターンに一致します。 チェックするパターン/あなたのタスク 提出は、完全なプログラムか、ボードが次のように記述できる場合に真実の値を返す関数のいずれかである必要があります。最初の数字以下など。適切な2048ボードは、一番上の数字が一番上にあるボードとして定義されます。これはcode-golfであるため、言語ごとの最短コード(バイト単位)が優先されます。 I / O 入力は、それぞれが4つの数字を含む4つの配列の配列、または16の数字の配列など、任意の適切な方法で取得できます。合計で、4x4ボードを表す合計16の数値に なります。出力は入力の真の値である必要があり、それ以外の場合は偽の値です。 例 真実: |-------------------| | 16 | | 64 | 8 | |-------------------| | 8 | | 32 | 8 | |-------------------| | 4 | | 32 | 2 | |-------------------| | 2 | | | | |-------------------| |-------------------| | 16 …

15
スペインのナンバープレートゲーム
この質問はに基づいて、私は尋ねた質問ではスペイン語。はい、スペイン語のアルゴリズムを要求しました。:) スペインでは、現在のナンバープレートには次のパターンがあります。 1234 XYZ ここで、XYZはスペイン語の子音の完全なセットから取られた3つの子音です(「Ñ」を除く)。 時々、妻と旅行するとき、私たちはゲームをするのに使います。ナンバープレートが表示されたら、3つの子音を取得し、これら3つの子音を含む単語を作成して、ナンバープレートと同じ順序で表示します。例(スペイン語): BCD BoCaDo (valid) CaBezaDa (not valid) FTL FaTaL (valid) FLeTar (not valid) FTR FleTaR (valid, wins) caFeTeRa (valid, loses) 最後の例でわかるように、勝者は最も少ない文字数を使用した人です。 チャレンジ 単語のリストと3つの子音のセットを受け取り、3つの子音を同じ順序で含むリスト内の最短の単語を見つける最短のプログラムまたは関数を作成します。このゲームでは、大文字と小文字は区別されません。 単語リストの入力(最初のパラメーター)は、言語stringタイプの配列になります。2番目のパラメーター(3つの子音)はanotherになりstringます。ご使用の言語に適している場合stringは、3つの子音でパラメーターのリスト全体の最後の項目を検討してください。出力は別のものになりstringます。 単語リスト内の単語は、発明された単語や無限の単語ではなく、標準の辞書にある単語になります。制限が必要な場合は、単語リストに50文字を超える単語がないと仮定します。 有効な答えになる可能性のある同じ長さの単語が複数ある場合は、それらのいずれかを返すことができます。必ず1つの単語を返すか、3つの子音のパターンに一致する単語がない場合は空の文字列を返すようにしてください。 グループ内で子音を繰り返すことができるため、3つの子音の有効な入力は両方FLRとGGGです。 スペイン語の子音は英語とまったく同じですが、「Ñ」が追加されています。母音は、強調された母音の追加と同じです: "áéíóúüü"。「-」や「 '」など、他の種類のマークはありません。 単語リストと3つの子音の両方で大文字と小文字が常に同じであると仮定できます。 スペイン語の単語の実際のコレクションを使用してアルゴリズムをテストする場合は、100万を超える単語を含むファイル(15.9 MB)をDropboxからダウンロードできます。 テストケース Input: 'psr', {'hola' 'repasar' 'pasarais' 'de' 'caída' 'pequeñísimo' 'agüeros'} Output: 'repasar' …

8
エラー、どこにいるの?
あらいやだ!私は大きな森に閉じ込められています(わかりましたが、そうではありませんが、ただそれを仮定してください)。 ありがたいことに、私はラップトップを持ってきました。しかし、「マップ」を検索したとき、「結果なし」と表示され、これを最後の手段として求めています。 私の場所の経度と緯度を任意の2つの数値形式で出力するプログラムを作成してください。any two number format含まれるもの: タプル。 経度と緯度を含む文字列。 JSONオブジェクト。 等.. 任意のAPIまたはライブラリを使用できます。つまり、Googleマップなどを照会できます(APIを破棄しなかったのではないかと思います:\)
26 code-golf 

7
旗を振ります
このようなフラグを取ります: ----------------------------- | | | | | | |=============+=============| | | | | | | ----------------------------- そして、数値入力:「波長」 波長が5だったとします。次に、先頭から行に沿って5文字ごとに、次の文字a -を置き換え、\1行下のすべての文字をシフトします。これを最後まで繰り返します。次のようになります。 -----\ | -----\ | -----\ |===== | -----\ | ====== | ----- | ==+=== | -----\ | ====== | -----\ | ====| -----\ | -----\ | ----- 最後に完全な波長を作成できない場合、フラグは終了します。最後まで平らにしてください。 すべての行が同じ長さで、上部と下部の行が完全に-(0x2D)で構成され、残りの文字がに!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~あるか、スペース()であると想定できます。(つまり、ASCII値はでx、ここで31 < x …

30
ほとんどの非ゼロ要素を持つ行のインデックス
これは単純なものです。整数の行列を入力として受け取り、ゼロ以外の要素が最も多い行のインデックスを出力します。ゼロ以外の要素が最も多い行は1つだけであると想定できます。 テストケース: これらは1インデックス付きです。0インデックスまたは1インデックスを選択できます。 1 0 row = 1 --- 0 -1 0 0 row = 1 --- 1 1 0 0 0 0 0 5 0 0 2 3 0 0 0 0 5 6 2 2 row = 4 --- 0 4 1 0 0 0 -6 0 0 …
26 code-golf  matrix 

7
1つの式、多くの値
使い慣れた数学記号:+、x、括弧、および任意の有理数を使用して、希望する数に評価される式を簡単に作成できます。例:1+(2x3)=7など(1+2)+(3x6.5)=22.5。十分に退屈。 この課題では、新しい演算子を使用します±。使用±あなたは置き換えることにより、式を評価する必要がある表現手段で±でさんの+か、-すべての可能な方法で、すべての可能な値のセットを返します。例えば: 1±2±3 = {-4,0,2,6}理由1±2±3のいずれかとすることができる1+2+3、1+2-3、1-2+3と1-2-3、その値は6,0,2,-4それぞれ。 (±2)x(2±3) = {-10,-2,2,10} 同様の理由で。 さて、それは明確な実数の任意のセットを考えると、結局のところ、それが持つ式を作成することが可能だ+、x、(、)、±、および実数評価される指定されたセットに。 仕事 あなたの仕事はのシーケンスを取り、お好みの言語でプログラムや機能、(リスト/配列/任意の便利な形式)書くことである整数から成る(文字列として)の発現と出力を+、x、(、)、±、および有理数与えられた数のセットに評価されます。 正確な文字±は重要ではないことに注意してください。使用している他の文字と区別できる限り、他の任意の文字を使用できます。ただし、提出に使用しているキャラクターに言及する必要があります。 入力は、使用される有理数の小数近似(妥当な精度まで)で構成されることが許可されます。 入力と出力は、標準的な方法で取得できます。 標準的な抜け穴は禁止されています。 指定された整数は明確であり、昇順で提供されると想定できます。 出力にはスペースと改行が含まれる場合があります。 受賞基準 これはcode-golfなので、バイト単位の最短コードが優先されます。 例 入力| 可能な出力 ------------- + ----------------------------- [1,2,3] | 2±0.5±0.5 [-7、-3,1,21] | (1±2)x(3±4) トーナメントオブタウンズ、2015年秋の質問からのアイデア。

5
同じコードの異なる文字
注:このチャレンジでは、コンパイルされた言語での回答のみが許可されます 仕事 タスクは非常に単純で、コンパイル時に同じ出力になる2つの異なるプログラムを作成します。 得点 ここからが楽しみです。スコアは、1つのプログラムに存在する一意のバイト数になります。たとえば、2つのプログラム(IBMコードページ437でエンコードされている)が ☻☻Program A そして ☺Program B 正確に1つのプログラムに含まれる文字は ☻☺AB したがって、スコアは4です。☻最初のプログラムでは2回表示されますが、1回しかカウントされないことに注意してください。 あなたの目標は最高のスコアを取得することです。可能な最高のスコアは256です。 これは、ASCIIエンコードプログラムで機能するスコアリングプログラムです。 規定 両方のプログラムのすべてのバイトを別のバイトに置き換えて、プログラムを別の結果にコンパイルするか、すべて一緒にコンパイルできないようにする必要があります。バイトを削除しても同じことが行われます。 両方のプログラムが同じフラグで実行される限り、コンパイルフラグを使用できます。 結果がマシンごとに異なる場合、実行するマシンが示されている場合、結果のコンパイルは静的でなければなりません(つまり、実行ごとに変化してはなりません)。 コンパイルの出力は、「同等」または「十分に類似」ではない同一のバイトのバイトである必要があります。 コンパイルの出力は空ではないはずです 警告/エラーはコンパイル間で同じである必要はありません プログラムまたはコンパイルのいずれかに印刷できない文字が含まれている場合は、hexdumpを必ず含めてください。技術的には必要ありませんが。

30
日付はいつですか?
チャレンジ 奇妙なことに、これはまだ行われていません。現在の日付を出力します。 ルール 従うべき日付形式は次のとおりです。 YYYY-MM-DD 月と日が10未満の場合、ゼロを埋め込む必要がある場所。 たとえば、プログラムが2017年5月24日に実行される場合、出力する必要があります 2017-05-24 日付は常にUTCまたはローカル日付のいずれかです。 あなたは飛躍年を処理する必要があります。つまり、うるう年の2月は29日ですが、通常の年は28日です。 勝ち バイト単位の最短コードが優先されます。
26 code-golf  date 

21
頻度によるリストのグループ化
整数のリストが与えられたら、最も最初に出現する要素をグループ化し、次にリスト内の各一意の要素が一度グループ化されるまで、2番目に多くの要素をグループ化します。 例: 入力: [1,2,3] 出力: [[1,2,3]] 入力: [1,1,1,2,2,3,3,4,5,6] 出力: [[1],[2,3],[4,5,6]] 入力: [1,1,1,4,5,6,6,6,7,7,8,8,8,8,8,8,8,9,5,6,5,6,5,6,5,6,-56] 出力: [[6, 8],[5],[1],[7],[9,4,-56]] 入力: [] 出力: [] 入力: (empty input) 出力: ERROR/Undefined/Doesn't matter ルール グループ化は、最大頻度から最小頻度まで行わなければなりません。 グループ化の内部順序は任意です(EGの例3が[8,6]代わりに持つことができます)。 これはcode-golfであり、バイト数が最も少なくなります。 関連する リストの個別の要素を頻度で降順に並べ替えます

9
GCD / LCMポリグロット!
あなたの課題は、入力のGCDをある言語で出力し、入力のLCMを別の言語で出力するプログラムまたは関数を作成することです。GCDまたはLCM(Mathematicaを探しています)の組み込みは許可されていますが、推奨されていません。入力は2つあり、常に正の整数で、1000を超えることはありません。 テストケース 各行は、次の形式の1つのテストケースですx y => GCD(x,y) LCM(x,y)。 1 1 => 1 1 1 2 => 1 2 4 1 => 1 4 3 4 => 1 12 7 5 => 1 35 18 15 => 3 90 23 23 => 23 23 999 1000 => 1 999000 1000 999 => …

30
チェッカーボードマトリックスを作成する
入力として正の整数nを取り、1と0で構成されるn行n列のチェッカーボード行列を出力します。 左上の数字は常に1でなければなりません。 テストケース: n = 1 1 n = 2 1 0 0 1 n = 3 1 0 1 0 1 0 1 0 1 n = 4 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 入力および出力形式はオプションです。行列をリストのリストとして出力することができます。

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