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

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

2
ストローポールを作る
Strawpollsは素晴らしく、物事に関する意見を得るために常にチャットで使用しています。しかし、それらを作成するにはWebブラウザーが必要なので、作成するのは面倒です。また、私はSE APIとcurlを介してのみPPCGにアクセスすることを誰もが知っています。だから、StrawpollのAPIを使用するコードを書いてほしいをして、指定されたオプションでwithを作成するを作成してほしい。 スペック 入力として、文字列としてオプションの適切な形式のリストと、文字列でもあるタイトルを取ります。次に、APIを使用して、そのタイトルとそれらのオプションでstrawを作成し、URLを出力します。 倍数は許可されるべきではなく、重複チェックは実施されるべきであり、キャプチャは必要ではありません。 例 "My Awesome Poll" ["option 1", "I like pies", "I also like cakes"] 出力:http : //strawpoll.me/7275997 これはcode-golfなので、バイト単位の最短コードが勝ちです!

4
キングオブザヒルボットのヒント
キングオブザヒルチャレンジに参加するボットを作成するための一般的なヒントは何ですか?チャレンジを検討してからボットを作成するまでの戦略は何ですか?どのデータ構造が最も便利だと思いますか? 回答ごとに1つのヒントを投稿してください。

23
多角形の数字
多角形の数は、kサイズの1角形のドットの数ですn。 とが与えられn、kあなたの仕事は、対応する番号を出力/印刷するプログラム/関数を書くことです。 得点 これはcode-golfです。バイト単位の最短ソリューションが勝ちです。 例 3RD六角数は(k=6, n=3)で28あるので、28上記のドットが。 テストケース このPythテストスイートから生成できます。 使用法:テストケースごとに2行、n上、k下。 n k output 10 3 55 10 5 145 100 3 5050 1000 24 10990000 さらに詳しい情報 ウィキペディア:https : //en.wikipedia.org/wiki/Polygonal_number Wolfram Mathworld:http : //mathworld.wolfram.com/PolygonalNumber.html OEIS Wiki:http : //oeis.org/wiki/Polygonal_numbers さまざまなnのn対角数のOEISシーケンス:3 (A000217)、4 (A000290)、5 (A000326)、6 (A000384)、7 (A000566)、8 (A000567)、9 (A001106)、10 (A001107)、11 (A051682)、12 (A051624)、13 (A051865)、14 (A051866)、15 …

9
文字列を「階段状にする」
「階段状の」文字列を作成するプログラムまたは関数を作成する必要があります。文字列を「階段状に」する方法は次のとおりです。 文字列の各文字に対して: 文字が「y」を含まない大文字または小文字の母音の場合は、出力してから、文字列の残りを列の上に移動します。 文字がスペースまたはタブ、出力された場合には、その文字列の残りの部分を移動ダウン colum。 文字がどちらでもない場合、正常に出力します。 IOは、合理的な形式で作成できます。入力には改行は含まれません。必要に応じて、末尾の空白を削除できます。 文字列を印刷するのではなく返すことを選択した場合は、文字列を視覚化できるように印刷する短いプログラムも含めてください。これは必須ではなく、バイトカウントにもなりません。これは、ゴルフやエソラン(私のような)を理解していないユーザーにとっては、出力を検証したり、コードをいじったりできるようにするための便利なものです。 サンプルIO: 「bcdef ghijkl」の出力: f jkl bcde ghi 「プログラミングパズルとコードゴルフ」の出力: lf -Go s nd de ng zzle A Co mmi Pu gra Pro 「Abcdefghijklmnopqrstuvwxyz」の出力: vwxyz pqrstu jklmno fghi bcde A いつものように、これはコードゴルフなので、バイト単位の最短回答が勝ちです。
12 code-golf  string 

4
線形方程式を解く
この課題は、より良い仕様です。 スペック プログラムは、単一の変数を含む線形方程式を取り、xの値を出力しますx。 入力/解析 入力には、数字、演算子、括弧(())、、xおよび=記号のみが含まれます(これは空白がないことを意味します)。 括弧は常にバランスが取れています。 常に少なくとも1つありxます。のx前に数字を付けることができます。 すべての方程式の結果は1つになります。 番号は、以下の手順で定義することができます。数値は、正規表現で定義できます-?(\d+(\.\d+)?|\.\d+)。 正規表現を話さない場合:数字は次のように定義されます 0-9 それがあるかもしれません -冒頭に負の意味 そして、そこにもいくつかの桁です。それらが数字でない場合、小数点があります 小数点が存在する場合、少なくとも1桁がそれに続きます 最大の数値/値は、言語の機能によって定義されます。 オペレータは、のいずれかであります:+-*/、彼らは常に数字、または括弧の間に表示されます これは(5)(5)、簡単にするために有効な入力ではないことを意味します。 カッコ内には、常に有効な式(数字や演算子の有効な組み合わせ)が含まれます。「バランスのとれた」括弧は、すべて(に関連する終了があるため定義されます) 評価 操作の順序に従う必要があり、優先順位は(最高から最低)です。 括弧(最も深くネストされた最初) 乗算と除算 加算と減算 同じ優先順位の2つの演算子が発生した場合は、左->右に進むことをお勧めします 出力 結果を何らかの方法で出力する必要があります。数値の結果だけを出力しない場合は、出力の出力方法を回答で明確にします。出力形式は一貫している必要があります。出力は小数でもかまいませんが、常に合理的であり、精度は言語の精度に制限されます。ご使用の言語が浮動小数点演算をサポートしていない場合にのみ、サポートする必要はありません。 ルール このタスクを単純化するビルトインは許可されますが、明確に追加する必要があります[uses built-in]その答えのヘッダに明確に。これはあなたの答えが勝つことを免除します 「このタスクを単純化する組み込み」は、次のいずれかです。 方程式を取り込み、a /変数の値を出力するもの 方程式を完全に単純化するもの evalまたは関連する関数を使用して、かなりの量の解析を行います。eval線形方程式を解くために(入力の変更を最小限に)使用する場合、および関連する関数の使用は許可されません。 疑問がある場合は、コメントを求めてください。 方程式を解析するビルトインが許可されています 例 3+4=x 7 4+x=5 1 3+3*3=x 12 3x-4=7+2x 11 3--1=x 4 3*(2+4x)=7x-4 -2 …

2
ワード検索ヘルパー
私は最近、単語の検索を行ってきた、と私は可能だろうと思ったので、言葉のすべてが読めばはるかに簡単に左から右へ。しかし、すべての行を書き換えるには多くの労力が必要です!だから私はコードゴルファーを助けるために参加しています。 (免責事項:上記のストーリーは、リモートで正確である場合とそうでない場合があります。) コードは長方形のグリッドを取り、すべての行を両方向に出力します。 出力には、グリッドの8つのすべての回転(基数と主対角線)が含まれている必要があります。(これは、すべての「行」が複製されることを意味します-一度前方に、一度後方に。) 行分割は、スペースまたは改行のいずれかです。スペースを選択する場合、グリッドの回転分割は改行にする必要があります。それ以外の場合、グリッド回転区分は2つの改行でなければなりません。 入力例(文字の配列、複数行の文字列、またはその他の適切な形式として取得) ABCDE FGHIJ KLMNO PQRST 出力例(部門の最初のオプションを使用) ABCDE FGHIJ KLMNO PQRST E DJ CIO BHNT AGMS FLR KQ P EJOT DINS CHMR BGLQ AFKP T OS JNR EIMQ DHLP CGK BF A TSRQP ONMLK JIHGF EDBCA P QK RLF SMGA TNHB OIC JD E PKFA QLGB …

3
バイナリ文字列の半逆
これは私のPuzzling.SEの質問のフォローアップの質問です。ブール文字列をブール文字列にマッピングする関数fがあり、すべての入力文字列b に対してf(f(b))= reverse(b)があるかどうかを尋ねました。(reverseとは、ビットの順序を逆にする機能を意味します。) 上記のリンクには、優れたf ''による証明付きの肯定的な答えが含まれていますが、見る前に自分で質問を熟考することをお勧めします。 そのような関数fをできるだけ少ないバイトで実装します。 STDINから入力を読み取るか、関数の引数を取ることができます。そして、結果文字列をSTDOUTに書き込むか、それを返します。 どちらの方法でも、選択した2つの異なるバイトまたは文字の実際の文字列(0and 1、or \x00、andなど\x01)、またはtrueおよびfalse値の配列/リストを操作できます。ただし、2つの値を選択し、それらに固執します。 fを 1回適用した結果は、バイナリ文字列そのものでなければなりませんb -> if b starts with 'x' then reverse(b[1:]) else 'x' + b。 あなたの機能は合計する必要があります。特に、入力は空の文字列、または1ビット長などです。文字列の長さの上限はありません。 また、純粋でなければなりません。関数呼び出し間でグローバルな状態を保持しないでください。入力文字列は出力文字列を完全に決定する必要があります。
12 code-golf  string 

7
依存関係に基づいてアイテムを並べ替える
ゴール アイテムのリストをソートして、各アイテムが指定された依存関係の後にリストされるようにします。 入力 整数の配列の配列。各整数は、このアイテムの後に来る必要がある別のアイテムの0ベースまたは1ベースのインデックスを指定します。入力は、配列または文字列、または人間が読めるものであれば何でもかまいません。 たとえば、0ベースの入力: [ [ 2 ], // item 0 comes after item 2 [ 0, 3 ], // item 1 comes after item 0 and 3 [ ], // item 2 comes anywhere [ 2 ] // item 3 comes after item 2 ] 循環依存関係はなく、常に少なくとも1つの有効な順序があると仮定します。 出力 依存関係の番号。あいまいな順序は確定的である必要はありません。出力は、配列またはテキスト、または人間が読み取れるその他のものです。 …

7
ハイパーキューブの端に
あなたの仕事はn>0、入力または入力として整数を受け取り、- n次元ハイパーキューブのエッジのリストを出力する関数またはプログラムを作成することです。グラフ理論では、エッジは接続された2組の頂点(または必要に応じてコーナー)として定義されます。 例1 1次元の超立方体はラインであり、我々は呼ぶ2つの頂点、特徴aとしますb。 したがって、出力は次のようになります。 [[a, b]] 例2 4次元のハイパーキューブ(またはtesseract)は32のエッジで構成され、そのグラフは次のようになります 出力は次のようになります [[a, b], [a, c], [a, e], [a, i], [b, d], [b, f], [b, j], [c, d], [c, g], [c, k], [d, h], [d, l], [e, f], [e, g], [e, m], [f, h], [f, n], [g, h], [g, o], [h, p], …

1
この単語にはいくつの文字がありますか?
Project Euler#17に触発され、これがあなたの挑戦です。入力として数値を受け取る完全なプログラムまたは関数を作成し、その数値までカウントするのに必要な文字数(1から始まる)を印刷または返します。スペース、コンマ、ハイフンは含めませんが、単語を含める必要がありますand。例えば。342のスペルは次のとおりThree Hundred and Forty-Twoです。これは23文字の長さです。 入力は正の整数になります。無効な入力を処理する必要はありません。数値を英語に変換する組み込みまたはライブラリは許可されていません。 数字のつづり方に関するすべてのルールを次に示します。(注:一部の人々は、数字のつづり方に異なる規則のセットを使用していることを認識しています。これは、このチャレンジの目的のための公式規則にすぎません) 1から20 1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20 21から99 これらに参加してください: 20、30、40、50、60、70、80、90 これらに: -one、-two、-three、-four、-five、-six、-seven、-eight、-nine、 4にはuが40あることに注意してくださいしません! 例: 53: Fifty-three 60: sixty 72: seventy-two 99: ninety-nine 100から999 数百(百、二百、三百など)、「および」、および上記の残りの数字を書きます。とあなたの手紙のスコアにカウントされます。 例: 101: One hundred and one 116: One hundred and sixteen 144: One hundred and forty-four 212: Two hundred and twelve 621: Six Hundred …
12 code-golf  math  number 

6
バイナリ検索のステップ数
入力が正の整数の場合、1から始まるバイナリ検索で入力を見つけるために必要なステップ数を出力します。 入力として与えられた整数のバイナリ検索をシミュレートします。シミュレートされたサーチャーは整数を繰り返し推測し、整数が高すぎる、低すぎる、または正しいかどうかを確認できます。整数を見つけるための戦略は次のとおりです。 nを、検索しようとしている入力として与えられた整数とします。 1の推測から開始します(推測ごとに(正しいかどうかに関係なく)ステップ数を増やし、推測が正しい場合は直ちにステップの合計数を停止して出力します。) 推測がn(ターゲット数)よりも大きくなるまで繰り返し推測を繰り返します。(または、それが正しい場合でも、上記の正しい推測ルールで既にカバーされています。) ここで、n(つまり、推測された数)よりも大きい2の最初の累乗の上限を設定し、その直下に2の累乗の下限を設定します。 上限と下限の平均(切り捨て)を繰り返し推測します。高すぎる場合は、上限として設定します。低すぎる場合は、下限として設定します。この手順により、最終的に正しい推測が行われることが保証されます。 n = 21の入力の例を次に示します。 1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 24 -> 20 -> 22 -> 21 \__________________________/ repeated doubling \________________________/ repeated averaging これはcode-golfであるため、バイト単位の最短コードが優先されます。 以下は、n = 1からn = 100までのすべての出力です。 1 2 4 3 6 5 6 4 8 …

4
担当者の再計算にご協力ください!
数か月前に、質問に対する賛成票で与えられる評判を高めることについて、メタについて議論しました。投票の現在の評判システムの基本は次のとおりです。1 質問に賛成票を投じるU価値は5つあります。 回答の賛成票uは10名の価値があります。 質問または回答のダウン票dは、-2評判に値します。 新しいシステムにはさまざまな提案がありましたが、現在最も人気のあるものは上記と同じですが、質問の賛成票が+10 repにスケーリングされています。この課題は、このシステムが導入された場合にどれだけ多くの担当者を獲得できるかを計算することです。 例を見てみましょう。投票アクティビティがの場合、UUUUuuuuUUUUUduuudUU現在のシステムでは121を獲得します。 U x 4 x 5 = 20 = 20 u x 4 x 10 = 40 = 60 U x 5 x 5 = 25 = 85 d x 1 x -2 = -2 = 83 u x 3 x 10 = 30 …

3
騎士と騎士
これはcode-golfです。 この課題では、「Knights and Knaves」パズルを解決するプログラム/関数を作成します。 バックグラウンド あなたは島にいることに気づく...など...あなた以外の島にいる人は皆、騎士か悪魔のいずれかです。 騎士は真の発言のみを行うことができます。 Knavesは虚偽のステートメントのみを作成できます。 「ステートメント」を厳密に定義したくありませんが、ステートメントは「true」または「false」のいずれかであると言います。これは逆説的な文章を除外することに注意してください。 この挑戦の目的のために、あなたは島民のグループに出くわします。彼らはあなたに声明を出します。 あなたの仕事は誰が騎士で誰がKnaveであるかを決定することです。 入力: 次の情報が(合理的な形式で)提供されます。 出席者のリスト。大文字のアルファベット文字「AZ」で名前が付けられます。これにより課せられる人数の制限を超えることはありません。 各人が行う声明。これに関する重要な詳細については、以下を参照してください。 出力 次に、各人が何であるかを(合理的な形式で)出力します。例えば、そこにあれば選手だったA B C DとA騎士ですが、残りknavesである、あなたは出力ができました A: 1 B: 0 C: 0 D: 0 重要な詳細: 大文字のアルファベットA〜Zは島民を指します。 文字0(ゼロ)と1(1)は、それぞれ「Knave」と「Knight」を表します。(指定する限り、他の2つの非AZ文字を使用できます) 出席している各島民は、自然な数の発言を行うか、何も言わないことを選択する場合があります。 通常の論理演算子はステートメントで使用できます(IS *、AND、OR、NOT)。これに加えて、De Morganの法則と条件式を使用できます。以下は、音声パズルでどのように表示されるか、その後にプログラムに入力される方法の例です。 (*より技術的な注意。「IS」演算子は実際には封じ込めとして使用されます(論理演算子ではありません)。「Aは騎士です」と言うとき、私は本当に「AはKnights」。使用される真の演算子は「ϵ」です。簡単にするために、代わりに「=」を使用します。) 私は以下を使用します(合理的で一貫性がある限り、何でも使用できます)。 ^ そして v または = IS ~ ない => 実装 X:X人は... 人Zは、次のタイプのステートメントの任意の組み合わせを作成できます。 人Zは言う... …
12 code-golf 

21
シーケンシャル乗算
あなたの目的は、入力を受け取り、時間を連鎖させたときにN「順次乗算」を実行するプログラムを作成することです。逐次乗算とは何ですか?このaように定義されたシードを持つシーケンスです: f(0) = a f(n+1) = f(n)*(f(n)-1) だから、みましょうa = 5。このように、f(0) = 5、f(1) = f(0)*(f(0)-1) = 5*4 = 20、とf(2) = f(1)*(f(1)-1) = 20*19 = 380。 あなたのプログラムであった場合ABC、その後、ABC入力すべきであるaと出力をf(1)。プログラムABCABCはf(2)などを出力する必要があります。プログラムシリーズは入力を1回のみ、出力を1回のみにする必要があります。 これはコードゴルフなので、バイト単位の最短プログラムが勝ちです。標準的な抜け穴は禁止されています。

14
多肢選択式テストの準備
前書き 注:これは、不正行為を助長する何らかの方法ではありません。以下のようCᴏɴᴏʀO'Bʀɪᴇɴは 3:すでに言った、勉強はテストに合格するための最適なソリューションです。 複数選択テストに対する次の回答を検討してください。 ABCBCAAB 回答が一致するかどうかを示す表は次のとおりです。 A B C B C A A B A 1 0 0 0 0 1 1 0 B 0 1 0 1 0 0 0 1 C 0 0 1 0 1 0 0 0 これにより、次の数字が得られます。 10000110, 01010001, 00101000 課題は、これらの2進数を印刷することです。ただし、複数選択テストでどの文字が使用されているかを確認することが重要です。例えば: ABCDCDBCDABC この最高文字はD、アルファベットの4番目の文字です。したがって、4つの異なる 2進数を出力する必要があります。すなわち: 100000000100, …

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