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

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

25
高調波シーケンスの部分和!
定義 数学では、調和シーケンスとは、次のシーケンスを指します。 つまり、シーケンスのn 番目の項はnの逆数に等しくなります。 前書き この課題では、入力として正の整数nが与えられ、調和シーケンスの最初のn項の部分和を出力します。 入力 (あなたの言語でサポートされている数値の範囲内で)正の整数が与えられます。チャレンジには正の整数のみが必要なため、SignedとUnsignedのいずれかになります(ユーザーによって異なります)。 入力は、事前定義された変数に存在すると想定する以外の方法で取得できます。ファイル、ターミナル、モーダルウィンドウ(prompt()JavaScript)などからの読み取りが許可されます。入力を関数の引数として使用することもできます。 出力 プログラムは、高調波シーケンスの最初のn項の合計を、有効数字5桁の精度のfloat(または出力が1で割り切れる場合は整数)として出力する必要があります(nは入力を参照)。数学の専門用語で同じことを伝えるには、計算する必要があります ここで、nは入力を指します。 出力を変数に書き込む以外の方法で出力できます。画面、端末、ファイル、モーダルウィンドウ(alert()JavaScript)などへの書き込みが許可されます。関数return値として出力することもできます。 追加の規則 入力番号は、0インデックスまたは1インデックスのいずれかです。投稿でそれを指定する必要があります。 組み込みを使用して、最初のn個の要素の部分和を計算しないでください。(ええ、あなたのためですMathematica!) 問題を平凡にするために、ネイティブの数値型を乱用してはなりません。 標準の抜け穴が適用されます。 テストケース テストケースでは、入力が1インデックスであると想定しています Input Output 1 1 2 1.5 3 1.8333 4 2.0833 5 2.2833 受賞基準 これはcode-golfなので、バイト単位の最短コードが勝ちです!

13
フィボナッチキンを実装する
A クワインは、実行時にそのソースを出力するプログラムです。 この課題では、フィボナッチキンを作成する必要があります。 フィボナッチキンとは何ですか? フィボナッチキンとは、次の規則に従ってソースの変更を出力するプログラムです。 最初のソースはである必要があります...2...。つまり、ソースにはが含まれている必要があります2。(なぜ2?1だった場合、それが最初の1であるか2番目であるか、プログラム自体でさえ誰も知らないでしょう) 実行すると、ソースを出力する必要がありますが、特定の番号(この段階では)のみ2がフィボナッチ数列の次の番号に変更されます。たとえば、...3...。出力、出力の出力なども同様です。最大2 ^ 32-1の整数をサポートできます。その制限を超える整数の場合、次の出力は選択できます。 OPのメモ 私はこのための創造的な解決策を本当に見たいです。チャレンジの2つの重要な側面であるフィボナッチとクインの両方は簡単ではないため、これに対する単一の解決策を考えることはできませんでした。待ってます!

1
ゲーデルのβ関数を手伝う[終了]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 閉じた2年前。 ゲーデルのβ関数は、3つの自然数を引数として取ります。 次のように定義されます β(x,y,z) = rem(x, 1 + (z + 1) · y) = rem(x, (z · y + y + 1) ) ここで、rem(a、b)は、aをbで整数除算した後の剰余を示します。 β補題は次のように述べています: 自然数のシーケンス(k_0、k_1、…、k_n)には、i≤nごとにβ(b、c、i)= k_iとなる自然数bとcがあります。 ゲーデルは見つけるために助けを必要とbし、c任意の入力のために(k_0, k_1, … , k_n), k_i ∈ ℕ。 n自然数で満たされたlengthの配列を受け取り、配列のb,c補題を満たす可能性のある出力を与える関数を作成します。 総当たりで解決策を得ないでください! (私の完全に非専門家の意見では、最初に数字を取得してから計算するときは総当たりです。それは数字を推測し、次に推測が正しいかどうかを調べることです。ここでコーディングしたいのは、それらはそうするように計算されたため、補助定理を満たしているかどうかをチェックする必要はありません。) 与えられた方程式と情報でそれらを構築します。最短コード勝ボーナスポイントあなたがそれを行う場合Javascript、私はちょうどそれに取得していますので、:) 例: [5, 19, 7, 8] -> (1344595, 19) 1344505 …

7
最大一致エッジのセットを見つける
接続された無向グラフについて考えてみましょう。エッジの整合組このグラフには、エッジように設定共有内の2つのエッジが共通の頂点の集合として定義されます。たとえば、左の図は一致するセットを緑で示し、右の図は一致しないセットを赤で示します。 一致するセットはと呼ばれますmaximally matching。またはmaximal matching、グラフの別のエッジを一致するセットに追加することが不可能な場合。したがって、上の例は両方とも最大一致セットではありませんが、下の青のセットは両方とも最大一致です。最大一致は必ずしも一意ではないことに注意してください。さらに、グラフの各可能な最大マッチングのサイズが別のマッチングと等しいという要件はありません。 この課題の目標は、グラフの最大一致を見つけるプログラム/関数を作成することです。 入力 入力グラフのすべての頂点に、選択した任意の開始整数値から始まる連続した整数番号があると仮定します。エッジは、エッジが接続する頂点を示す順序付けられていない整数のペアで記述されます。たとえば、上記のグラフは、次の順序のないエッジのセットで説明できます(頂点の番号付けが0で始まると仮定)。 [(0,1), (0,2), (1,3), (1,4), (2,3), (3,4), (3,5), (5,6)] グラフを記述する別の方法は、隣接リストを使用することです。上記のグラフの隣接リストの例を次に示します。 [0:(1,2), 1:(0,3,4), 2:(0,3), 3:(1,2,4,5), 4:(1,3), 5:(3,6), 6:(5)] プログラム/関数は、入力として任意のソース(stdio、関数パラメーターなど)からグラフを取得する必要があります。追加の重要な情報がプログラムに伝達されない限り、任意の表記を使用できます。たとえば、入力エッジの数を示す追加のパラメーターを使用することは完全に受け入れられます。同様に、エッジの順序なしマルチセット、隣接リスト、または隣接行列を渡すことは問題ありません。 あなたは仮定するかもしれません: グラフは接続されています(たとえば、開始頂点があれば、どの頂点にも到達できます)。 少なくとも1つのエッジがあります。 エッジが頂点をそれ自体に直接接続することはありません(例:エッジ(1,1)は入力として与えられません)。サイクルがまだ可能であることに注意してください(例:上記のグラフ)。 入力頂点は任意のインデックスで開始する必要があります(たとえば、最初の頂点は0、1、-1など)。 頂点の番号付けは、選択した開始インデックスから順番に増加します(例:1,2,3,4,...、または0,1,2,3,...)。 出力 プログラム/関数は、最大一致セットを示すエッジのリストを出力する必要があります。エッジは、そのエッジが接続する2つの頂点によって定義されます。例 左の青いセットの出力(入力頂点の順序の例を使用): [(1,4), (2,3), (5,6)] 頂点の順序は重要ではないことに注意してください。したがって、次の出力は同じ一致セットを示しています。 [(4,1), (2,3), (6,5)] 出力は、標準出力、ファイル、関数の戻り値などになります。 例 次に、いくつかの入力例を示します(隣接リスト形式を使用)。これらの例では、で頂点のカウントを開始してい0ます。 出力例は示されていないことに注意してください。代わりに、Python 3検証コードが含まれています。 [0:(1), 1:(0)] [0:(1,2), 1:(0,3,4), 2:(0,3), …

30
指定されたインデックスの文字列の要素
文字列sとnの長さよりも負でない数sを指定すると、のn-番目の位置にある文字を出力しsます。 0インデックスと1インデックスが許可されます。1-indexingの場合、n正で、の長さ以下ですs。 s 印刷可能な文字のみで構成されます。 合理的な入力/出力が許可されます。標準の抜け穴が適用されます。 テストケース(0インデックス付け): n s output 0 "abcde" a 1 "abcde" b 2 "a != b" ! 3 "+-*/" / 4 "314159" 5 テストケース(1-indexing): n s output 1 "abcde" a 2 "abcde" b 3 "a != b" ! 4 "+-*/" / 5 "314159" 5 これはcode-golfであるため、バイト単位の最短回答が優先されます。
13 code-golf  string 

18
SEはいつダウンしますか?
SEは本日 2017-05-04の00:00 UTCに00:20 UTCまでダウン/読み取り専用になります。 あなたの課題は、SEがダウン/読み取り専用の場合は真の値を出力し、SEがそうでない場合は偽の値を出力することです。入力がない場合があり、SEがダウン/読み取り専用であるかどうかを確認するために、日付ビルトインを使用する必要があります(実際にSE APIを照会しない!)出力例: 12:34 UTC 03 May 2017 -> false 00:00 UTC 04 May 2017 -> true 00:20 UTC 20 May 2017 -> undefined, see below それは未定義の振る舞いです。なぜなら、それは時間の窓から離れすぎているからです。明確にするために、プログラムは8:00今日のUTC (5/3/17)から1:00明日(5/4/17)のUTC まで実行されると想定できます。 00:21 UTC 04 May 2017 -> false 00:20 UTC 04 May 2017 -> true 00:10 UTC 04 May …

3
最も効率的なバイナリ関数を計算する
今日は、最も効率的なバイナリ関数を計算します。より具体的には、定数入力0または独自の出力に関数を適用して式を作成する場合、可能な限り短い式ですべての正の整数を表現できる関数を計算し、小さい整数に高い優先順位を付けます。 この関数は次のように構築されます。 1から始めて上に行く整数ごとに、まだ出力を割り当てていない最短の式を選択し、その整数をその式の出力にします。式の長さの関係は、左の引数が小さくなり、次に右の引数が小さくなります。仕組みは次のとおりです。 最初は、1は割り当てられていません。割り当てられていない最も短い式はf(0, 0)ですので、1に設定します。 現在、2は割り当てられていません。割り当てられていない最短の式はf(f(0, 0), 0)= f(1, 0)とf(0, f(0, 0))= f(0, 1)です。ネクタイは、より小さい左引数に向かって壊れていf(0, 1) = 2ます。 残っている最短の未割り当て式はf(f(0, 0), 0)=なのでf(1, 0)、f(1, 0) = 3です。 これで、2 fと3 のみの式がなくなった0ため、それぞれをもう1つ追加する必要があります。左の引数、右引数で絆を断ち切る、我々が得るf(0, 2) = 4ことから、f(0, f(0, f(0, 0))) = f(0, f(0, 1)) = f(0, 2)。 続いて、我々は持っていますf(0, 3) = 5、f(1, 1) = 6、f(2, 0) = 7、f(3, …

6
簡単なスプレッドシートを評価する
ルール セル範囲参照なし(A2:B3)。 最大9行9列です。 循環参照や数式エラーはありません。 空のセルはに評価され0ます。 データは数字のみですが、文字列として解釈される場合があります。 数式は文字列です。 実装の選択肢 次の事項について選択を述べる必要があります。 数式の前に任意の単一文字を付ける必要があります(例:=–かどうか)。 2番目の行の左端のセルは、Excelなどによって使用される2つの規則に従って、A2またはR2C1です。 セル参照に単一文字のプリまたはサフィックスが必要です(例:$-かどうか)。 0空のセルを表すnull、空の文字列、空のリストなどのいずれか(ただし、ではありません)。 提出の言語(スプレッドシートマネージャーは許可されません)。 数式の言語(上記と異なる場合があります)。* ソリューションを説明するためのブラウニーポイントまたはCookie。 例 選択肢:7:=; 8 A2:; 9:なし。10 "":; 12:Excel式言語 に: [[ 2, 3], ["=A1+B1",""]] でる: [[2,3], [5,0]] に: [[ 2,"=A1+B2"], ["=A1+B1", ""]] でる: [[2,2], [4,0]] に: [[ 3, 4,"=A1*B1"], [ 2, 5,"=A2*B2"], ["","","=C1+C2"]] でる: [[3,4,12], [2,5,10], …

13
粘り強いタイのカレンダー
でタイ暦 2560年に2017対応のタイ暦は543年先グレゴリオ暦のは常にあります。 観察者のコーダーは、2560がに等しい2^9 * 5、つまり10個の素因数があることに気付くでしょう。これは、さらに896年は再び起こりません!正確に10の素因数がある場合、1年は粘り強いと呼びます。 システムクロックに基づいて、タイのカレンダーを使用した現在の年が粘り強い場合は真実の値を出力し、そうでない場合は偽の値を出力するプログラムを作成します。 テストケース: プログラムが2017年に実行された場合、 true 2018年から2912年のいずれかにプログラムが実行された場合、 false プログラムが2913の間に実行される場合、true(2913 + 543 = 2^7 * 3^3)

28
ホットドッグを作ってください![閉まっている]
閉じた。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 閉じた2年前。 時々私は自分自身がホットドッグを望んでいることに気づき(私たち全員ではない)、私はそれを作ります。ホットドッグを作るのはとても簡単です。 1)ホットドッグを熱湯に入れる 2)一定時間待機します(詳細は下記) 3)時間が経過したらホットドッグを食べる。 あなたは私が言ったことに気づいたかもしれません 特定の時間(詳細は以下) そして、私は詳しく説明します。 多くの異なるブランドには、ホットドッグを調理する時間についてさまざまな推奨事項がありますが、正確に4分27秒間調理するのが最善であることがわかりました(尋ねないでください)。さまざまなタイマーを試しましたが、継続的に出力するプログラムが私の注意を引くための最良の方法であることがわかりました。 あなたのタスク Not ready yet正確に4分27秒間メッセージを出力するプログラムを作成する必要があります。この時間が経過した後、時間Eat your hot dogの終わりまで出力する必要があります。何も入力しないでください。 勝つ方法 これはコードゴルフであるため、勝つために最短のコードをバイト単位で記述する必要があります
13 code-golf  date 

26
順序付けられていないリストから2つの整数を見つけて、合計して入力します
これはGoogleのインタビューの質問です。YouTubeリンクについてはこちらをご覧ください。 タスク: 合計が指定された整数になる順不同リストから2つの整数を見つけます。 整数の順序付けられていないリストが与えられた場合、合計が指定された値になる2つの整数を見つけ、これら2つの整数を出力し、成功を示します(終了0)。特定の数値(つまり、最初の2つの整数が正しい数値に加算される)である必要はありません。値に加算されるペアはすべて機能します。 整数は正でゼロより大きい。 整数のリストは、整数のファイル(1行に1つの整数)を含む任意のデータ構造にできます。 整数が見つからない場合は、失敗を示します(終了1)。 リスト内の異なる位置にある2つの整数を返す必要があります。(つまり、同じ位置から同じ番号を2回返すことはできません) (注:ビデオでは、これらは厳密には要件ではありません。「インタビュアー」は彼を複数回変更しました。) 例えば。 sum2 8 <<EOF 1 7 4 6 5 3 8 2 EOF 印刷3および5終了ステータスは0 です。これ1,7で2,6は結果も許可されることに注意してください。 sum2 8 <<EOF 1 2 3 4 可能なコンボがないため、終了ステータス1を返します。4,4ルール5に従って許可されていません。

2
他のすべてからどれくらい離れているかを数えます
等しい長さの2つのストリング間のハミング距離は、対応するシンボルが異なる位置の数です。 してみましょうP長さのバイナリ文字列にするnとT長さのバイナリ文字列です2n-1。のすべての長さの部分文字列のn間のハミング距離を左から右に順番に計算し、それらを配列(またはリスト)に入れることができます。PnT ハミング距離シーケンスの例 させP = 101てくださいT = 01100。このペアから得られるハミング距離のシーケンスは2,2,1です。 近さの定義 次に、このようなハミング距離のシーケンスを2つ考えてみましょう。と言うx = (0, 2, 2, 3, 0)とy = (2, 1, 4, 4, 2)例として。私たちはそれを言ってxおりy、closeもしy <= x <= 2*yそうならx <= y <= 2*x。ここで、スカラー乗算と不等式は要素ごとに取られています。つまり、2つのシーケンスAとB、A <= B iff A[i] <= B[i]すべてのインデックスに対してi。 ハミング距離のシーケンスは、これらの比較方法では半順序を形成することに注意してください。言い換えれば、シーケンスの多くのペアは、互いに大きくも等しくも小さくも等しくありません。たとえば(1,2)と(2,1)。 したがって、上記の例を使用して、(0, 2, 2, 3, 0) <= 2*(2, 1, 4, 4, 2) = (4, …

9
Pali-n-dromeこのリスト
ここでの課題は、入力として以下を与えられた回文の実装を拡張することです。 n > 1およびリストl。 プログラムは、リストを垂直および水平の両方で回文化する必要があります。つまり、最初にリスト自体を回文化し、次にリスト内の各要素を後回しにする必要があります。またはその逆です。回文化の前に、すべての要素が同じ長さであることが保証されます。次に、パリンドロームアクションはn、目的の出力が満たされるまで順番に実行されます。予想される出力を表示する最も簡単な方法は、いくつかの例を実行することです。 で実行される1つの反復[123,456,789]: 最初にリストを回文化します[123,456,789,456,123]。 これは、一緒に結合された場合は回文ではありませんが、リストの観点では回文です。 [a,b,c]となった[a,b,c,b,a]ので、リストは回文化されました。 次に、各リスト要素を回文化します[12321,45654,78987,45654,12321]。 これが各反復の実行方法であり、本質的に全方向性回文です。 与えられたn=1 and l=[123,456,789]: 12321 45654 78987 45654 12321 与えられた n=2 and l=[123,456,789] 123212321 456545654 789878987 456545654 123212321 456545654 789878987 456545654 123212321 与えられたn=1 and l=[3,2,1]: 3 2 1 2 3 与えられたn=2 and l=["hat","mad"," a "]: hatahatah madamadam a a a …
13 code-golf 

20
カウンターフィボナッチ数列
与えられた3つの数字は、mは、N及びPは、タスクは、長さのリスト/配列印刷することでpは始まるMとNの後に、各要素pはそれより2数の差を表し、MN(反フィボナッチ数列) このチャレンジでは、関数を使用して、結果またはプログラム全体を返すか印刷することができます。 入力 言語がサポートしているものは何でも、改行/スペース/コンマで区切られた3つの整数m、n、およびpですが、入力形式を指定する必要があります。コードの挿入は許可されていません。 出力 Counter-Fibonacciシーケンスに含まれる数値。次の形式のいずれか(この例:)m = 50, n = 40, p = 6: 50,40,10,30,-20,50 (またはコンマの後のスペースを使用) [50,40,10,30,-20,50] (またはコンマの後のスペースを使用) 50 40 10 30 -20 50(または\nスペースの代わりに(改行)を使用) {50,40,10,30,-20,50} (またはコンマの代わりにスペースを使用) 例 Input => Output 50,40,10 => 50,40,10,30,-20,50,-70,120,-190,310 -100,-90,7 => -100,-90,-10,-80,70,-150,220 250,10,8 => 250,10,240,-230,470,-700,1170,-1870 ルール pが1より大きいことが保証されます 可能であれば、プログラムをテストする方法を提供する必要があります 上記のように、この抜け穴は禁止されており、コードの挿入は許可されていないことに注意してください スコアリングとリーダーボード これはcode-golfなので、コードはできるだけ短くする必要があります。この課題は言語による最短回答を見つけることを目的としているため、回答は受け入れられません。 コードスニペットを表示 var QUESTION_ID=113051,OVERRIDE_USER=59487;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 …

1
単位n次元ハイパーキューブの2点の平均距離
単位n次元ハイパーキューブを理解する簡単な方法は、すべての座標成分が[0、1]にある場合に取得できるn次元の空間領域を考慮することです。したがって、1次元では0から1までの線分であり、2次元では角(0、0)および(1、1)などの正方形です。 与えられたnが単位n次元超立方体から一様にランダムに選択された2点の平均ユークリッド距離を返すプログラムまたは関数を記述します。あなたの答えは実際の値の10 -6以内でなければなりません。あなたの答えがあなたの言語のネイティブnの浮動小数点型をオーバーフローさせても大丈夫です。 「多数」のポイントをランダムに選択して平均を計算しても、そのような精度は保証されません。 例: 1→0.3333333333 ... 2→0.5214054331 ... 3→0.6617071822 ... 4→0.7776656535 ... 5→0.8785309152 ... 6→0.9689420830 ... 7→1.0515838734 ... 8→1.1281653402 ... MathWorldから取得したデータ。 これはcode-golfであり、バイト数が最も少なくなります。

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