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

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

12
三目並べの勝者を決定する(ラウンドベース)
いくつかのコードゴルフをプレイしましょう! 課題は、三目並べゲームの勝者を見つけることです。 これは、明確な勝者が1人いるボードを提供することで何度も行われてきましたが、ここにひねりがあります。 セルには次のように番号が付けられます。 1|2|3 -+-+- 4|5|6 -+-+- 7|8|9 そのように正確に9つの動きの配列を取得します: {3, 5, 6, 7, 9, 8, 1, 2, 3} これは次のように解析されます。 プレーヤー1がセル3をマークする プレーヤー2がセル5をマークする プレーヤー1がセル6をマークする プレーヤー2がセル7をマーク プレーヤー1がセル9をマークする プレイヤー1が勝ちました 注:1人のプレーヤーが勝った後もゲームは停止しません。負けたプレーヤーは勝ったプレーヤーの後に3連勝することができますが、最初の勝ちのみがカウントされます。 あなたの仕事は、入力として9個の数字を取得し、勝ったプレイヤーと勝ったラウンドを出力することです。誰も勝てない場合は、選択した定数を出力します。任意の標準的な平均/形式で入力を受け取り、出力を提供できます。 楽しむ! 要求されたいくつかの例: {2,3,4,5,6,7,1,8,9} => Player 2 wins in round 6 {1,2,4,5,6,7,3,8,9} => Player 2 wins in round 8 {1,2,3,5,4,7,6,8,9} => Player 2 …

18
私は「Redivosite」番号ですか?
Redivositeは、この課題の唯一の目的のために考案されたポルトマン語です。リダクション、ディビジョン、コンポジットの組み合わせです。 定義 整数N> 6が与えられた場合: Nが素数の場合、NはRedivosite番号ではありません。 Nが複合の場合: N 'が素数になるまでN' = N / d + d + 1を繰り返し計算します。dはNの 1より大きい最小除数です Nは場合Redivosite数であり、最終値のみならばNは」の除数であり、N 以下は、最初の100のRedivosite番号です(投稿時にはOEISエントリはありません): 14,42,44,49,66,70,143,153,168,169,176,195,204,260,287,294,322,350,414,462,518,553,572,575,592,629,651,702,726,735,775,806,850,869,889,891,913,950,1014,1023,1027,1071,1118,1173,1177,1197,1221,1235,1254,1260,1302,1364,1403,1430,1441,1554,1598,1610,1615,1628,1650,1673,1683,1687,1690,1703,1710,1736,1771,1840,1957,1974,2046,2067,2139,2196,2231,2254,2257,2288,2310,2318,2353,2392,2409,2432,2480,2522,2544,2635,2640,2650,2652,2684,2717,2758,2760,2784,2822,2835 例 N = 13:13は素数なので、13はRedivosite番号ではありません N = 32:32/2 + 3 = 19; 19は除数でも32でもないため、32はRedivosite番号ではありません N = 260:260/2 + 3 = 133、133 / 7 + 8 = 27、27 / 3 + 4 = …

29
回転合計
入力として正の整数を含む正方行列を取得し、行列の「回転和」を計算します。 回転合計: 元の行列と同じ行列を90、180、270度回転させた合計を取ります。 マトリックスが次のとおりであると仮定します。 2 5 8 3 12 8 6 6 10 回転した合計は次のようになります。 2 5 8 8 8 10 10 6 6 6 3 2 3 12 8 + 5 12 6 + 8 12 3 + 6 12 5 = 6 6 10 2 3 6 8 5 …

30
ちょっと上へ!
整数Nを指定して、次の手順を実行します(例として9を使用)。 入力Nを受信します。(9) Nをbase10からbase2に変換します。(1001) すべてのビットを1ずつ増やします(2112) 結果をbase3として扱い、それをbase10に変換します。(68) 結果を返す/出力します。 入力 合理的な番号形式で受け取ることができます。 N> 0の場合のみ処理する必要があります。 出力 数値または文字列として返すか、に出力しstdoutます。 ルール これはcode-golfで、バイト単位の最短コードが勝ちです。 デフォルトの抜け穴は禁止されています。 テストケース 1 -> 2 2 -> 7 5 -> 23 9 -> 68 10 -> 70 20 -> 211 1235 -> 150623 93825 -> 114252161

18
じゃんけんで繰り返してはいけない
CodegolfがRock-Paper-Scissorsトーナメントを開催するとの噂があるので、スクエアフリーワードのトピックを調べます。手紙で作られた言葉はR、P、Sである無平方それが二回繰り返し、そのシーケンスが含まれていない場合。つまり、単語は次のように書くことはできません a x x b ここで、aおよびb任意の長さの単語であり、x長さの単語すべての文字からなる少なくとも一つですR、P、S。 仕事 生成するプログラムを書く正方形無文字の単語R、P、S長さのn数を1 <= n <= 10入力としたが。 例 たとえば、長さ3 の正方形のない単語は RPR、RSR、RPS、RSP、SPS、SRS、SRP、SPR、PRP、PSP、PSR、PRS 長さ4のものは RPRS、RPSR、RPSP、RSRP、RSPR、RSPS、PRPS、PRSR、PRSP、PSRP、PSRS、PSPR、SRPR、SRPS、SRSP、SPRP、SPRS、SPSR そして、例えば、SPSPまたはPRPR正方形ではないことに注意してください ルール これはcodegolfで、最短のプログラムが勝ち、標準的な抜け穴が閉じられます。 単語を印刷したり、メモリに作成したりできます。 プログラムは関数として書かれている場合があります。 参照資料 スクエアフリーの単語に関するウィキペディアのエントリ 指定された長さの正方形のない三項単語の数はhttps://oeis.org/A006156にあります 関連:任意長の3項Squarefreeワード

30
非ゼロデジタル製品の課題
もともと乗法的デジタルルート チャレンジ 基本的にタイトルが言うことをする 方法 標準入力メソッドのいずれかで正の整数1 <= N <= 100000000が与えられた場合、 ゼロを無視してすべての数字を乗算します。 例:数字を入力して361218402ください: 3* 6=18 18* 1=18 18* 2=36 36* 1=36 36* 8=288 288* 4=1152 1152* 1 (ゼロを無視するか、1に変換します) =1152 1152* 2=2304 の出力361218402は2304 テストケース 1 => 1 他のすべての数字> 0 =>それ自体 10 => 1 20 => 2 100 => 1 999 => 729 21333 …

15
МногочленыЧебышёва(チェビシェフ多項式)
チェビシェフ多項式は、数学のあらゆる種類の場所に現れる直交多項式のファミリーであり、非常に興味深い特性がたくさんあります。それらの1つの特徴は、それらが満たすユニークな多項式であるということです。Tn(cos(x)) = cos(n*x) チャレンジ 非負の整数nを指定すると、n-th Chebyshev Polynomialを出力する必要があります。。Tn(x) 定義 n番目のチェビシェフ多項式は、3項の再帰を以下の式で与えられます。 T0(x) = 1 T1(x) = x Tn+1(x) = 2*x*Tn(x) - Tn-1(x) 詳細 言語にネイティブの多項式タイプがある場合は、それを出力として使用できます。それ以外の場合は、係数のリストを昇順または降順で、または多項式を表す文字列として出力する必要があります。 例 T0(x) = 1 T1(x) = x T2(x) = 2x^2 - 1 T3(x) = 4x^3 - 3 x T4(x) = 8x^4 - 8x^2 + 1 T5(x) = 16x^5 …

30
それは整数ですか?
数は全体それが小数部分を有する負でない整数である場合。そう0と8して233494.0、全体が、しばらく1.1して0.001と233494.999はありません。 入力 お使いの言語のデフォルトのベース/エンコーディングの浮動小数点数。 たとえば、デフォルトの整数表現バイナリラムダ計算はなり教会の数字。ただし、Pythonのデフォルトの整数表現は、10進数の10進数であり、単項ではありません。 出力 truthyの入力は、全体であれば値falsyそうでない場合、値。 ご使用の言語が8桁までの小数精度のみをサポートしている場合は、1.000000002全体と見なすことができます。 入出力は、任意の標準I / Oメソッドを介して実行できます。 テストケース Input -> Output 332 -> true 33.2 -> false 128239847 -> true 0.128239847 -> false 0 -> true 0.000000000 -> true 1.111111111 -> false -3.1415926 -> false -3 -> false 得点 同様に、コード・ゴルフ、最短提出勝利。がんばろう!

30
時間を90度で出力します
今日、子供たちと遊んでいる間、私は公園にある一見シンプルなおもちゃが課題を隠していることに気付きました。 ホイールには、数値を指す三角形がありますが、最初の数値から90度ごとに数値を指す3つの円もあります。そう: チャレンジ(本当にシンプル) 1〜12の整数(三角形が指すもの)を受け入れ可能な形式で指定すると、受け入れ可能な形式でも出力し、円(90度ごとの番号)が指す3つの数字を並べます。 テストケース In Out 1 4, 7, 10 2 5, 8, 11 3 6, 9, 12 4 7, 10, 1 5 8, 11, 2 6 9, 12, 3 7 10, 1, 4 8 11, 2, 5 9 12, 3, 6 10 1, 4, 7 11 2, 5, …

14
分岐したテキスト
ASCII文字列(大文字または小文字、あるいはその両方)を指定すると、各文字で分岐する文字列を表示するために必要な生のMathJaxを上付き文字と下付き文字に出力します。たとえば、入力catとhorse出力は、MathJaxがそれぞれ次のようにレンダリングする出力になります。 必要な入力は1つだけであることに注意してください。これら2つは、単に垂直方向のスペースを節約するために並べてリストされています。 マークアップの意味 _ 添え字を示します。 ^ 上付き文字を示します。 すべてが同じレベルにならないようにするために、上付き文字または下付き文字をさらに含む上付き文字または下付き文字列を囲む中かっこが必要です。 テストケース テストケースの形式はですinput : output。最初のテストケースでは、入力として空の文字列が表示され、出力として空の文字列が生成されます。 "" : "" "a" : "a" "me" : "m_e^e" "cat" : "c_{a_t^t}^{a_t^t}" "frog" : "f_{r_{o_g^g}^{o_g^g}}^{r_{o_g^g}^{o_g^g}}" "horse" : "h_{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}^{o_{r_{s_e^e}^{s_e^e}}^{r_{s_e^e}^{s_e^e}}}" "bifurcate" : "b_{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}^{i_{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}^{f_{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}^{u_{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}^{r_{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}^{c_{a_{t_e^e}^{t_e^e}}^{a_{t_e^e}^{t_e^e}}}}}}}" 出力をmathurl.comに貼り付けると、これらがどのようにレンダリングされるかを確認できます。 冗長な括弧なし MathJaxは、冗長なブレースを含むマークアップを喜んでレンダリングします。レンダリングされたときたとえば、以下はすべて同じになりますa、{a}、{}{a}、{{{{a}}}}。 ただし、このチャレンジの有効な出力には冗長な括弧はありません。特に、出力の単一文字は中括弧で囲まれていないことに注意してください。 注文 下付き文字と上付き文字の順序は重要ではありません。以下は同等であり、レンダリング時に区別できません(すべて等しく有効な出力です)。 c_{a_t^t}^{a_t^t} c_{a^t_t}^{a_t^t} c_{a_t^t}^{a^t_t} c_{a^t_t}^{a^t_t} c^{a_t^t}_{a_t^t} c^{a^t_t}_{a_t^t} c^{a_t^t}_{a^t_t} c^{a^t_t}_{a^t_t} 得点 言語ごとに、勝者はバイト単位の最短コードです。 通知が多すぎますか?添え字</sub>を解除するタイプ
26 code-golf  string 

30
N番目の違い
数学では、与えられた関係のタイプ(線形、二次など)を把握する1つの方法は、差を計算することです。これを行うには、対応するx値間のギャップが同じy値のリストを取得し、その上の数値からそれぞれを減算し、前のリストより1つ短い数値のリストを作成します。結果のリストが完全に同一の数値で構成されている場合、関係には1の差があります(線形です)。同一でない場合は、新しいリストでプロセスを繰り返します。それらが現在同一である場合、関係には2の差があります(2次です)。それらが同一でない場合は、それらが同一になるまでこのプロセスを続行します。たとえば、x値を増分的に増やすためのy値[1,6,15,28,45,66]のリストがある場合: First Differences: 1 6 1-6 =-5 15 6-15 =-9 28 15-28=-13 45 28-45=-17 66 45-66=-21 Second differences: -5 -9 -5+9 =4 -13 -9+13 =4 -17 -13+17=4 -21 -17+21=4 As these results are identical, this relation has a difference of 2 あなたのタスク: 入力として整数の配列が与えられると、上で説明したように、配列によって記述された関係の差を返すプログラムまたは関数を書きます。 入力: 整数の配列。長さは1より大きい場合があります。 出力: 入力によって記述された関係の差を表す整数。 テストケース: Input => …

30
ユーロ硬貨と紙幣
ユーロを使用している国の大部分で ,は小数点区切り文字が使用されているため、それも使用する必要があります。 タスクは、ユーロ硬貨と紙幣のすべての値を昇順で出力することです。また,00、整数値の末尾に配置する必要があります。 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00 stdoutへの出力または配列/リストを返す関数の両方を受け入れます。出力がstdoutの場合、値の間の許容可能な区切り文字は次のとおりです:スペース、タブ、または改行。 私が非常に創造的であると思うものを見つけない限り、受け入れられた答えはありません。 code-golfなので、言語ごとの最短回答を知りたいです。 更新: 先行0ゼロは受け入れられません。申し訳ありませんが、前に明確にする必要があります。 アップデート2: 文字列を返す関数も使用できます。

3
無駄のない、平均的な豆の機械
離散確率分布の概念を人々に紹介する古典的な例は、Beanマシンです。このマシンには、上部の狭い通路から大量のビー玉が落下し、その後、インターレースピンの列にヒットします。各ピンでビー玉がヒットすると、ピンの左右に落ちる場合があります。最後に、ピンはマシンの下部にある垂直ビンに集められます。このマシンの簡単な図は次のようになります。 | O | | ^ | | ^ ^ | | ^ ^ ^ | | ^ ^ ^ ^ | | ^ ^ ^ ^ ^ | |_|_|_|_|_|_| この図では、Oはビー玉が落ちる場所を示しています。それぞれ^は、大理石がピンの左または右のいずれかの正方形に移動する確率が50%であるピンです。次に、ビー玉はデバイスの下部のビンに集まります。十分な数のビー玉の場合、ビン内のビー玉スタックの高さは離散的な二項分布に似ています。 チャレンジ この課題では、上記のような図に基づいて、Beanマシンの結果の確率分布を計算します。図は、側面のフィールドまたは現在のフィールドの下のフィールドに向かって、ビー玉が通過する2次元の「プログラム」として解釈されます。ビー玉が機械の底に達すると、確率分布としてカウントされます。面白くするために、これらの図には、単純なソースとピン以外のフィールドがいくつか含まれています。ダイアグラムの例は次のとおりです。 | O | | ^ | | ^ / | | ^ | ^ | | <^- …

8
A083569:m + nが素数になるように最小のmが先に発生しない
次のように1インデックス付きシーケンスを定義します。 A083569(1) = 1 A083569(n)ここで、nはより大きい1整数m+nです。これは、素数であるなど、以前に発生していない最小の整数m です。 あなたの仕事は取り入れてn戻ることA083569(n)です。 n A083569(n) 1 1 2 3 3 2 4 7 5 6 6 5 7 4 8 9 9 8 10 13 11 12 12 11 13 10 14 15 15 14 16 21 17 20 18 19 19 18 20 17 より多くのテストケースはこちらにあります。OEISの元のシーケンスはここにあります。 …

30
入力への斜めのアルファベット
この投稿に触発されました。この質問を重複としてマークしている場合は、実際に質問を読んで、私の質問がリンクされた質問の修正であることを確認してください。リンクされたものは入力を要求せず、アルファベットを斜めに印刷するだけです。 チャレンジ 1〜26の範囲の入力を指定すると、アルファベットを斜めに印刷しますが、指定した入力のインデックスで垂直に印刷を開始します。 例 入力が与えられた場合: 16 プログラムは以下を出力するはずです。 a b c d e f g h i j k l m n o p q r s t u v w x y z 入力: 4 出力: a b c d e f g h i j k l m n …

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