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

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

13
比較チェーンを拡張
ほとんどの言語と異なり、Python a<b<cは数学で行われるように評価し、ブール値a<bをと比較するのではなく、実際には3つの数値を比較しcます。これをC(および他の多くの)で記述する正しい方法は、a<b && b<c。 この課題の課題は、このような任意の長さの比較チェーンをPython /直感的な表現から他の言語でどのように記述するかまで拡張することです。 仕様書 プログラムは演算子を処理する必要があります。 ==, !=, <, >, <=, >=。 入力には、整数のみを使用した比較チェーンがあります。 途中の比較の真実性について心配する必要はありません。これは、純粋に構文解析/構文上の課題です。 入力には、スペースで分割することで解析を簡単にする回答を防ぐための空白はありません。 ただし、出力には、&&' のみ、または比較演算子と&&'の両方のいずれか、または両方を囲む単一のスペースがある場合がありますが、一貫性があります。 テストケース Input Output --------------------------------------------------------------- 3<4<5 3<4 && 4<5 3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9 3<5==6<19 3<5 && 5==6 && 6<19 10>=5<7!=20 10>=5 && 5<7 && …
9 code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

5
楕円システム
前書き 平面に5つの点があるとすると、これらの点を通る楕円の面積を計算する必要があります。 与えられた入力値を使用して、縮退していない楕円を1つだけ作成できると想定できます。 ルール 入力は、ポイントのおよびの座標に10対応する任意の便利な形式の整数です。たとえば、入力を整数のリスト、またはなどとして取ることができます。10進数も処理できますが、必要なのは整数のみです。xy10[x1, y1, x2, y2, ..., x5, y5][[x1, y1], [x2, y2], ..., [x5, y5]] 出力は楕円の領域の表現です。これは、いくつかのシンボリック式、または少なくとも8桁数の精度を持つ10進数値です。 これはコードゴルフなので、バイト単位の最も短い答えが優先されます。 入力と出力の例 入力: [-2、3、2、5、5、3、4、0、1、-3] 出力: 62.15326783788685 これらの点を通る楕円の描写: その他の例: f(60, -92, -31, -10, 78, -19, -27, -35, 91, -37) = 9882.59540465108 f(-9, -4, 7, 7, 10, 1, -7, -10, 0, 7) = 269.5966648188643 …

3
n桁の精度の近似浮動小数点数
r0と1の間の浮動小数点数と整数がありpます。 r少なくともp-桁の精度で近似する最小の分母を持つ整数の割合を見つけます。 入力:(r浮動小数点数)およびp(整数)。 出力:aとb整数、どこ a/b(floatとして)桁rまで近似しpます。 b そのような正の整数の可能な最小のです。 例えば: 場合r=0.14159265358979とp=9、 そして結果はa=4687and b=33102、 なぜなら4687/33102=0.1415926530119026。 理論的には、任意のソリューションは任意精度型で機能する必要がありますが、実装の固定精度型によって引き起こされる制限は問題になりません。 精度とは、「0.」の後の桁数を意味しrます。したがって、との場合r=0.0123、p=3でa/b始まる必要があり0.012ます。pの小数部の最初の桁rが0の場合、未定義の動作は許容されます。 勝利基準: アルゴリズム的に最も速いアルゴリズムが優先されます。速度はO(p)で測定されます。 最速のアルゴリズムが複数ある場合は、最短のアルゴリズムが優先されます。 私の回答は、勝者候補から除外されています。 Ps数学の部分は実際にはかなり簡単に見えるので、この投稿を読むことをお勧めします。

4
バドゥージ、誰が勝つ?
この課題に触発され、これに関連しています。 バックグラウンド Badugi [bæduːɡiː]はローボールドローポーカーバリアントです。 Pokerstarsワールドカップオブオンラインポーカーの$ 1Kイベントは3時間以内に始まります。ハンドがどれだけ優れているかを知る必要があります。 ゲームは、4つのスーツと13のランクの52枚のカードの標準デッキを使用します。スーツは順不同であり、ラベルが付けられcdhsます。ランクは、最高Kから最低の順に並べられAていKQJT98765432Aます。そのため、デッキ全体は次のように表されます(スペースで区切られています)。 Kc Kd Kh Ks Qc Qd Qh Qs Jc Jd Jh Js Tc Td Th Ts 9c 9d 9h 9s 8c 8d 8h 8s 7c 7d 7h 7s 6c 6d 6h 6s 5c 5d 5h 5s 4c 4d 4h 4s 3c 3d 3h …

7
範囲内の日付?
与えられたMM/DD(日付12/24)および開始/終了日付範囲(11/01 - 06/24日付が記載されている日付のスパン内にあるかどうか)、フィギュア。 日付範囲は連続的(05/01 - 11/01)または翌年にラップアラウンド()できます11/01 - 05/01。 例: 12/24ある11/01 - 06/24= True 06/24ある11/01 - 06/24= True 06/24ある06/24 - 06/24= True 06/24ある11/01 - 06/23= False 07/24ある11/01 - 06/24= False 07/24ある05/01 - 11/01= True 07/24ある07/23 - 07/20= True 年は従わない。日付および/または日付範囲は、過去または将来の任意の年に適用されると想定されています。 終了日は常に開始日より後の日付になります。終了日が開始日より数値的に小さい場合、翌年に折り返していると見なされます。 3つの入力変数は、任意のメソッド(args、HTTP、stdinなど)を介して、任意の形式(文字列、JSON、配列など)で入力できます。 応答booleanは、yes / no / correct / etc ..文字列の任意の形式にすることができます。最短のコードが勝ちます。 単純に引数を組み込み関数に渡すことはできません。

30
int入力nを指定して、n * reversed(n)を出力します
整数nを指定して出力n * reversed(n) reversed(n)は、reverseの桁を取得したときに取得する数値ですn。 reverse(512) = 215 reverse(1) = 1 reverse(101) = 101 >>>>>>>> func(5) = 5*5 = 25 func(12) = 12*21 = 252 func(11) = 11*11 = 121 func(659) = 659*956 = 630004 最短のコードが勝ちます! リーダーボード コードスニペットを表示 var QUESTION_ID=144816,OVERRIDE_USER=71625;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var …
9 code-golf  math  arithmetic  code-golf  math  integer  code-golf  arithmetic  integer  code-golf  sequence  base-conversion  palindrome  code-golf  math  primes  integer  code-golf  parsing  conversion  syntax  code-golf  sequence  primes  code-challenge  geometry  optimization  code-golf  graph-theory  code-golf  number-theory  primes  integer  code-golf  source-layout  cops-and-robbers  code-golf  source-layout  cops-and-robbers  code-golf  sequence  primes  integer  code-golf  math  number-theory  primes  rational-numbers  code-golf  math  sequence  number-theory  primes  code-golf  string  code-golf  math  combinatorics  permutations  restricted-complexity  code-golf  array-manipulation  code-golf  number  sequence  code-golf  number  sequence  code-golf  binary-matrix  code-golf  math  tips  javascript  algorithm  code-golf  string  code-golf  number  sequence  code-golf  math  arithmetic  parsing  code-golf  number  sequence  primes  code-golf  string  ascii-art  geometry  integer  code-golf  geometry  code-golf  number  array-manipulation  code-golf  math  geometry  code-golf  number  sequence  arithmetic  integer  code-golf  string  kolmogorov-complexity  code-golf  number  code-golf  number  chess  code-golf  sequence  decision-problem  subsequence  code-golf  math  number  primes  code-golf  primes  permutations  code-golf  integer  probability-theory  statistics  code-golf  string  code-golf  sequence  decision-problem  parsing  board-game  code-golf  binary  graph-theory  code-golf  board-game  classification  tic-tac-toe  code-golf  ascii-art  polyglot  code-golf  date  code-golf  geometry 

14
増加、減少、なし、またはすべて?
数字1と2文字列を含む空でないベクトル/リストの2つの入力を受け取ります(いいえ、0/1代わりに受け取ることはできません)。文字列は次のいずれかになります(小文字で表記されているとおり)。 increasing decreasing ones twos all none 文字列が____の場合、インデックス___を返す必要があります。 increasing...リストがから1に変わる場所2(の2直後に続くすべて1) decreasing...リストがから2に変わる場所1(の1直後に続くすべて2) ones ...すべての桁の 1 twos ...すべての桁の 2 all ...すべての数字 none...数字のどれも。0リストが1インデックスの場合は問題ありません。リストのインデックスが0の場合、負の数でも問題ありません。空のリストまたは文字列を出力することもできます。 テストケース: これらは1インデックスです。1インデックスにするか0インデックスにするかを選択できます。テストケースの異なる文字列には同じベクトルが使用されます。 -------------------------------- Vector: 1 1 2 2 2 1 2 2 1 1 2 String - Output increasing - 3, 7, 11 decreasing - 6, 9 ones - 1, 2, …

3
2つの織り交ぜられたチェーン
で、この質問、私は機能と「チェーン」機能を定義しました。 順列です。つまり、すべての値が1つの値にマップされ、1つの値によってのみマップされます。 また、関数またはその逆を繰り返し適用することにより、他の値から任意の値を取得できます。 これを行う関数はたくさんあり、それらのいくつかは非常に単純です(その質問の回答を参照してください)。次に、「織り交ぜられた」関数と呼ぶ関数の別のクラスを定義します。織り交ぜ機能セットに機能であるA 2つの無限パーティション有し、0および1機能の両方に鎖関数であるように0と1。 値ことをこれは、0の値にマップすることができない1関数またはその逆の下で。 仕事 あなたの仕事は、正の整数に対して織り交ぜられた関数を実行または定義するコードを書くことです。織り交ぜの基準を満たしていれば、機能は何でもかまいません。答えに関数が織り込まれている理由についての説明を含める必要があります。 これはコードゴルフの質問なので、回答はバイト単位でスコアリングされ、バイト数が少ないほど優れています。

1
より大きく、より良い(壊れた)ジッパー
(この課題にかなりひらめきを与えた) 最初の課題では、水平ジッパーを作ることでしたが、私のパーカーを見下ろすと、私のジッパーははるかに垂直になります(そして少し壊れています):P 入力 単一の文字列(s)と、任意の形式の整数のペア(aおよびb)が与えられます。どこ: a < (length-of-s / 2) b <= ((length-of-s / 2) - (a + 1)) / 6 出力とスコアリング プログラムは、完全なプログラムか、選択した正しい書式または配列(1行に1項目)の単一の文字列を生成する関数です。出力の文字がすべて揃っている限り、先頭と末尾のスペースと改行はオプションです。例えば。 ["f r"],["u e"],["l p"],["l p"],["y i"],[" o z "],[" p n "],[" e "] または "f r\nu e\nl p\nl p\ny i\n o z \n p n \n e …

7
コードゴルフ組立ライン
注:この課題は、実際のアセンブリ言語とは関係ありません。 Code-Golf Factory Inc.の責任者として、特定のコードを生成するためのアセンブリラインを作成する必要があります。今日、職長はあなたにクインを生産するように頼みました。 仕様: この課題の目的は、適切なサブセクションがクインでもあるようなクインを記述することです。 これはコードゴルフなので、(メインプログラムの)最小バイトが勝ちます。標準の抜け穴は禁止されており、メインプログラムとサブセクションの両方が真のクインでなければなりません。 サブセクションはメインプログラムより少なくとも2文字短くする必要があります。つまり、最小スコアは3バイトです。 作業するには、選択したサブセクションが1つだけ必要です。

3
文字を使用して数字を短くする
チャレンジ 番号を取り、文字と数字を使用して4桁以下で出力します。例えば; 270,030に変わり270Kます。 キー 10億-> B ミリオン-> M 千-> K ルール 小数点以下3桁ごとに区切るコンマを含む入力番号を受け入れるように選択できます(など123,456,789)。 最も近い値に丸めます。 数字はまでしか上がりません999,499,999,999。 回答の仮数部は少なくとも1でなければなりません。 すべての文字は大文字で、上記で指定したとおりでなければなりません。 出力は4桁以下でなければなりません。(例えば、文字を含むB、Kおよび、M) 出力は、数学的にできるだけ正確でなければなりません。例: 15,480- > 20K NOT OK 15,480-> 15.5K 良い 同じ数学的精度の出力が複数ある場合は、どちらか1つを返します。例: 1000-> 1000 良い 1000-> 1K 良い 例: 1,234,567-> 120万 999,500-> 100万 999,499-> 999K 102-> 102 1000-> 1K 1001-> 1001 100,000-> 10万 12,345,678,912-> 12.3B …
9 code-golf 

14
バイナリバイナリ拡張
通常、係数を2のべき乗で割り当てることにより、数値を2進数に分解します。 01します。各項のまたはです。 25 = 1*16 + 1*8 + 0*4 + 0*2 + 1*1 選択0とは1非常にバイナリではない...です。2の累乗で拡張することにより真のバイナリ拡張を実行しますが、係数は1か、-1代わりに: 25 = 1*16 + 1*8 + 1*4 - 1*2 - 1*1 今、これはバイナリになります。 正の数が与えられた場合、次のことを確認することは簡単です。 すべての奇数には、無限に多くの真のバイナリ展開があります すべての偶数には真のバイナリ展開はありません したがって、真のバイナリ展開を明確に定義するには、展開を最小にする、つまり最短にする必要があります。 正の奇数の整数を指定するnと、最上位の桁から最下位の桁まで(または逆の順序で)、その真のバイナリ展開を返します。 ルール: これはcode-golfであるため、可能な限り短いバイト数でこれを行うことを目指す必要があります。ビルトインは許可されています。 係数を表してリストできる出力であればどれでも許容されます:配列、セパレータ付きの係数の文字列など... 標準のゴルフ抜け穴が適用されます。 プログラムは、言語の標準整数サイズ内の値で動作するはずです。 テストケース 25 -> [1,1,1,-1,-1] 47 -> [1,1,-1,1,1,1] 1 -> [1] 3 -> [1,1] 1234567 …

3
古いコードレス電話
友達に電話する必要がありますが、コードレス電話のボタンが正しく機能しません。押すことができるボタンは、[上へ]、[下へ]、[通話]のみです。[上へ]および[下へ]を使用して最近の通話をナビゲートし、[通話]を使用して選択した名前を呼び出すことができます。私の電話にはN最近の通話を保持するリストがあり、私が呼び出す必要があるすべての友達がこのリストに含まれていることを知っています。 仕事: 番号Nと名前のリストが表示されますL。 N 私の電話が覚えている最近の通話の数です。 L 私が呼ぶ必要がある順序で名前を持っています 最近の通話リストを最適に配置するために必要なボタンを押す回数を出力する必要があります。 例: ->入力: アンナ、ボブ、そしてアンナを再び呼び出します。サイズ5の最近の通話リスト。 5 Anna Bob Anna ->出力: 可能な最適配置: Anna, Foo, Bar, Foobar, Bob 5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna その他のテストケース: Input: 5, Anna, Bob, Carl Output: 5 Input: 5, Anna, Bob, Carl, Anna …

30
コードの長さと同じ桁数のpiを持つ出力
あなたの課題は、あなたのコードの長さxであるpiの桁を印刷xすることです。 例: Source code (length) -> output foo! (4) 3.141 foobar (6) 3.14159 kinda long (10) 3.141592653 +++++ (5) 3.1415 123456789 (9) 3.14159265 を使用して、印刷する必要がある桁数を決定できます。小数点はpiの桁として数えられないことに注意してください。したがって、長さ3のコードは長さ4の出力を持っている必要があります。floor(π/10 * 10code_length) / 10code_length - 13.14 ルール: コードの長さは3文字より長くなければなりません。 標準の抜け穴は使用できません。 標準で許可されている出力方法を使用できます。 コード長を決定するためにソースを読み取ることはできません。 組み込みのpi定数は使用できません。 Piは完全に正確で、近似されていない必要があります。 出力には小数点が必要です。戻り値による出力を選択した場合は、浮動小数点整数を返す必要があります。 この課題の目標は、ソリューションの最短の言語ではなく、各言語で最短のソリューションを見つけることです。ソリューションが別の方法を使用している限り、短いソリューションが同じ言語で投稿されている場合でも、ソリューションを言語で投稿することを恐れないでください。

2
ワードチェーンリローデッド
これは、「単語の連鎖を再生する」と「単語の長い連鎖を構築する」の変形です。 入力は、[az]の文字で構成された2文字以上の一意の単語の空でないリストです。可能な限り長いチェーンの長さを出力する必要があります。後続の各単語は、前の単語の最後の文字で始まります。リストの任意の単語から始めることができます。 別のひねりは、あなたがリスト上の任意の単一の単語を繰り返すことを許可されていることです。ただし、2ワードブロックを繰り返すことはできません。たとえば、2ワードのブロック()を繰り返したため、 cat->tac->catは許可されていますが、許可されていcat->tac->cat->tacませんcat->tac。また、同じ単語を2回続けて使用することはできません(例:)eye->eye。 例: cat dog tree egg => 3(猫->木->卵) new men ten whim => 5(ten-> new-> whim-> men-> new) truth fret heart his => 5(フレット->真実->ハート->真実->彼) we were stew early yew easy => 9(シチュー->あった->早い->イチ->いた->イージー->ユー->ウィー>>イージー) tac cat tac cot tac can => 6(tac-> cat-> tac-> cot-> tac-> can) (私がこれらの例のいずれかで間違いを犯したかどうか、またはあなたがもっと思いついた場合はお知らせください。)

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