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

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

30
+または-記号を使用せずに追加する
これまでに「Do __ without _ _」という課題が数多くありましたが、これが最も難しい課題の1つであることを願っています。 チャレンジ STDINから2つの自然数(全数> 0)を取得し、2つの数の合計をSTDOUTに出力するプログラムを作成します。課題は、できるだけ少ない数+と-標識を使用する必要があることです。和のような関数や否定関数を使用することはできません。 例 入力 123 468 出力 591 入力 702 720 出力 1422 タイブレーカは: 2つのプログラムが同じ数のを持っている場合+や-文字、勝者が少ないと、人である/ * ( ) = . ,と0-9の文字。 許可されていない:標準の加算/減算演算子とインクリメント/デクリメント演算子が、許可されていない+または-許可されていない記号である言語。これは、言語の空白を許可しないことを意味します。

15
2,073,600のユニークな色で1920 x 1080のグラフィックを生成
チャレンジ: 幅1920ピクセル、高さ1080ピクセルのグラフィックファイルを出力するプログラムを作成します。グラフィック内の2,073,600ピクセルはすべて一意の色である必要があり、色の値は繰り返さないでください。色はRGBで指定し、0,0,0で開始し、255,255,255に向かって順番にカウントします。1920 x 1080ピクセルの画像には、黒、青、緑のみが多く含まれています。 たとえば、(より小さなカットダウンバージョン)。高さが5に設定され、幅が5に設定された場合、25ピクセルの正方形のグラフィックが出力され、各ピクセルは一意の色になります。RGBカラー配列は次のようになります。 Array ( [0] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [1] => Array ( [0] => 0 [1] => 0 [2] => 1 ) [2] => Array ( [0] => 0 [1] => 0 [2] => 2 ) [3] …


30
7セグメントディスプレイをエミュレートする
仕事 タスクは、7セグメントディスプレイの128の可能な状態のいずれかを 表示することです。 プログラムは、0またはの7文字(「ビット」)の文字列を受け入れる必要があります1。入力の最初のビットは、次の図のセグメントAに対応し、2番目のビットはBに対応します(無視dp)。 ディスプレイをどのように表現するかはあなた次第です-単一のUnicodeまたはASCIIシンボル、 ASCIIアート、グラフィック、またはあなたが思いつくものなら何でも。ただし、各入力には独自の個別の出力が必要です。あなたが何か素晴らしいものを思いついた場合、私はあなたがいくつかの例を見せることによって賛成票を収穫できると確信しています。 ディスプレイの128の可能な状態はすべて次のとおりです。 ルール コードゴルフ 先ほど言ったように、あらゆる種類の出力が許可されていますが、指定した方がいいでしょう。 入力は、stdinまたはコマンドライン引数です。 例 入力 1101101 出力 ASCII / Unicodeとして: 2 さまざまな種類のASCIIアート(これはあまり得意ではありません) _ ╺┓ ╒╗ --- _| ┏┛ ╔╝ | |_ ┗╸ ╚╛ --- | ---
24 code-golf 

16
アナログ時計を作成する
アナログ時計を作成する 目標:プログラミング言語を使用して動作するアナログ時計を作成する。 要件: 時計には、少なくとも時間と分のポインターが必要です。 生成された時計は、画像、アニメーション、またはASCIIアートの形式にすることができます。 時計は現地時間を示すことが期待されます。 オプション: 時計を作成して、分と時間のポインターに加えて、秒のポインターを表示することもできます。 必要に応じて、タイムゾーンを構成可能にすることもできます。 うるう秒に関する問題を無視するか処理するかを自由に選択できます。 ユーザーがシステムクロックを調整した場合、または夏時間の変更が発生した場合、プログラムに何が起こるかを考えるかもしれません。 これは人気コンテストなので、創造性を発揮し、賛成に値する素敵で美しい時計を描いてください。私は自分の答えを受け入れないという例外を除いて、ほとんどの投票された答えが勝ちます。 最後に、回答に時計の少なくとも1つのスクリーンショット(またはASCIIアートの場合はテキスト出力)を投稿することをお勧めします(必須ではありません)。これにより、人々はそれをコンパイルして実行する必要がなくなります。 この質問は、削除された質問の復活を目的としています。 それはこの他の質問の複製でないことに注意してください。その質問は、ASCIIアートを求めるコードゴルフでした。これはASCIIアートに限定されるものではなく、人気コンテストです。そのため、答えは大きく異なることが予想されます。

8
ビリヤードボールの衝突
衝突直前のビリヤードボールの2次元の位置と速度を考慮して、完全に弾性衝突した後の速度を計算します。ボールは、同じ半径、同じ質量、均一な密度、および摩擦のない理想的な球体(または同等:円)と見なされます。 入力は8個の数字から構成されています。p0x,p0y,v0x,v0y,p1x,p1y,v1x,v1yここで、p0x,p0y第1のボールの中心であり、v0x,v0yその速度、および同様にp1x,p1y,v1x,v1y第2のボールのために。入力を任意の順序で受け入れ、便利な方法で構造化できます。たとえば、2x2x2配列、またはpandの2x2配列とandの2つのlength-2配列v0などv1です。また、xyペアの代わりに複素数(言語でサポートされている場合)を使用しても問題ありません。ただし、デカルト座標以外の座標系では入力しないでください。つまり、極座標は使用できません。 ビリヤードボールの半径はp0x,p0yとの間の距離の半分であることに注意してください。そのp1x,p1yため、入力の明示的な部分としては与えられません。 便利なデカルト表現で4つの数値を出力または返すプログラムまたは関数を記述しますv0x,v0y,v1x,v1y。衝突後の値です。 可能なアルゴリズムは次のとおりです。 両方の中心を通る法線を見つける 2つの中心の中間点を通り、法線に垂直な接線を見つける 変更は、システムを調整し、打破v0x,v0yし、v1x,v1yその接線と通常の成分へv0t,v0nとv1t,v1n v0およびの法線成分を交換し、v1接線成分を保存します 元の座標系に戻す テスト(小数点以下5桁に丸められた結果): p0x p0y v0x v0y p1x p1y v1x v1y -> v0x' v0y' v1x' v1y' [-34.5,-81.8, 34.7,-76.1, 96.2,-25.2, 59.2,-93.3] [ 49.05873, -69.88191, 44.84127, -99.51809] [ 36.9, 77.7,-13.6,-80.8, -7.4, 34.4, 15.1,-71.8] [ 5.57641, -62.05647, -4.07641, -90.54353] [-51.0, 17.6, 46.1,-80.1, 68.6, 54.0,-35.1,-73.9] [ …

20
1、2、4、8、16、…33?
チャレンジ n'th要素または最初のn要素のいずれかを、よく知られた番号の順序で出力する関数/プログラムを作成します。 1, 2, 4, 8, 16 ... ああ、待って...最初の数個の数字を忘れてしまった: 1, 1, 1, 1, 2, 4, 8, 16 ... さて、良い測定のためにいくつか追加します。 1, 1, 1, 1, 2, 4, 8, 16, 33, 69, 146, 312, 673, 1463, 3202, 7050, 15605, 34705 ... 数値は、(ゼロインデックス付き)式で与えられる一般化されたカタロニア語の数値です。 a(n+1)=a(n)+∑k=2n−1a(k)⋅a(n−1−k)a(n+1)=a(n)+∑k=2n−1a(k)⋅a(n−1−k)a(n+1)= a(n) + \sum_{k=2}^{n-1} a(k)\cdot a(n-1-k) どこで a(0)=a(1)=a(2)=a(3)=1a(0)=a(1)=a(2)=a(3)=1a(0)= a(1)= a(2)= a(3) …

18
ウルトララジカルを計算する
ウルトララジカルとは ultraradical実数の、または持参ラジカル五次方程式の唯一の真のルートとして定義され、X 5 + X + A = 0。aaax5+x+a=0x5+x+a=0x^5+x+a=0 ここでは、UR(⋅)UR(⋅)UR(\cdot)を使用して超ラジカル関数を示します。たとえば、10 5 + 10 − 100010 = 0 なのでUR(−100010)=10UR(−100010)=10UR(-100010)=10です。105+10−100010=0105+10−100010=010^5+10-100010=0 チャレンジ 入力として実数を取り、その超ラジカルを返すか出力する完全なプログラムまたは関数を作成します。 必要条件 標準的な抜け穴は許可されていません。以下のテストケースの結果は、少なくとも有効数字6桁まで正確である必要がありますが、一般に、プログラムは有効な実数入力に対して対応する値を計算する必要があります。 テストケース 0に向かって丸められた9桁の小数部が参照用に提供されています。一部のテストケースについて説明が追加されています。 a | UR(a) ---------------------------+--------------------- 0 | 0.000 000 000 # 0 1 | -0.754 877 (666) # UR(a) < 0 when a > 0 -1 | …

15
部屋番号ロケーター
部屋番号ロケーター 会議で同僚から間違った部屋番号を与えられたとき、私は仕事で興味深い問題解決テクニックに出会いました。時々、会議に向かう途中で、私のチームのメンバーが間違った部屋番号を送信します。これは通常、デスクで急いでいて、太い指で間違ったキーを押しているためです。 おもしろいことに、間違った部屋に着くと、私は通常、テンキーを想像することで彼らが本当に意味した部屋を推測できます: そして、隣接する数字を推測することにより、彼らは押すことを意図していました。 チャレンジ あなたの課題は、同僚が1桁しか入力しないと仮定して、建物のオフィス番号(000〜999)を受け取り、可能なタイプミスを出力する関数を記述することです。 次の表に、数字キーパッドで隣接する数字を示します。 0 -> 1,2 1 -> 0,2,4 2 -> 0,1,3,5 3 -> 2,6 4 -> 1,5,7 5 -> 2,4,6,8 6 -> 3,5,9 7 -> 4,8 8 -> 5,7,9 9 -> 6,8 入力 3桁の数字: 000-999。正確に3桁の入力を想定しています。数値が100未満または10未満の場合、先行ゼロが与えられます。(つまり、004および028)。 出力 可能な部屋のリスト。部屋番号の間に区切り記号がある限り、これは任意の形式にすることができます。(つまり、スペース、コンマ、改行など。)数値が100未満または10未満の場合、出力として先行ゼロを使用できるかどうかは、ユーザー次第です。(つまり、004は004 04 4、028は028 28) テストケース(先行ゼロはオプション): 008 -> 108, 208, …
24 code-golf 

6
座標までの距離
2D平面にはn人がいます。それらの間の距離を使用して、それらの位置を見つけます。一意の答えを得るには、次の4つの仮定を行う必要があります。 少なくとも3人がいます。 最初の人は位置(0、0)にいます。 2番目の人は、あるx> 0の位置(x、0)にいます。 3番目の人は、あるy> 0の位置(x、y)にいます。 したがって、あなたの課題は、距離の2D配列(D[i][j]人iとの間の距離を与えるj)が座標のリストを返すプログラムまたは関数を作成することです。回答は、少なくとも6つの有効数字に対して正確でなければなりません。バイト単位の最短ソリューションが勝ちです。 例 [[0.0, 3.0, 5.0], [3.0, 0.0, 4.0], [5.0, 4.0, 0.0]] => [[0.0, 0.0], [3.0, 0.0], [3.0, 4.0]] [[0.0, 0.0513, 1.05809686, 0.53741028, 0.87113533], [0.0513, 0.0, 1.0780606, 0.58863967, 0.91899559], [1.05809686, 1.0780606, 0.0, 0.96529704, 1.37140397], [0.53741028, 0.58863967, 0.96529704, 0.0, 0.44501955], [0.87113533, 0.91899559, 1.37140397, 0.44501955, 0.0]] …

4
スリーポインター!しかし、どのような?
http://en.wikipedia.org/wiki/Triangleから: 3つの2次元座標タプル(デカルト)を取り、これらの3つのポイントが記述する形状を分類するプログラムを作成します。 ほとんどすべての場合、これらのポイントはさまざまなタイプの三角形を表します。一部の縮退した場合、ポイントは特異ポイントまたは直線のいずれかを表します。プログラムは、記述された形状に適用される次のタグを決定します。 ポイント(3ポイントは同時発生) 線(3点が直線上にある-一致する可能性があるのは2点までです) 等辺(3つの側面が等しい、3つの角度が等しい) 二等辺(2つの側面が等しい、2つの角度が等しい) スカレン(0辺が等しい、0角が等しい) 右(1角度正確にπ/ 2(または90°)) 斜め(0角度正確にπ/ 2(または90°)) 鈍角(1角度>π/ 2(または90°)) 急性(3角<π/ 2(または90°)) 説明されている一部の形状には、上記のタグが複数適用されることに注意してください。たとえば、直角はいずれも二等辺または斜角になります。 入力 プログラムは、STDIN、コマンドライン、環境変数、または選択した言語に便利な方法から3つの入力座標を読み取ることができます。 ただし、フォーマットする入力座標は、選択した言語にとって便利です。すべての入力番号は、最終的に使用するデータ型に関して整形式であると想定できます。 入力座標の順序については何も想定できません。 出力 プログラムは、STDOUT、ダイアログボックス、または選択した言語に便利な表示方法に出力します。 出力には、入力座標で記述された形状に適用可能なすべてのタグが表示されます。 タグは任意の順序で出力できます。 その他の規則 あなたの言語の三角ライブラリ/ APIは許可されていますが、三角形のタイプを明確に計算するAPIは禁止されています。 角度の均等性または辺の長さを決定する場合、おそらく浮動小数点値を比較することになります。1つの値が他の値の1%以内であれば、このような値は2つ「等しい」と見なされます。 もはや面白くない標準の「抜け穴」 これはcode-golfであるため、バイト単位の最短回答が優先されます。 例 Input Output (1,2) (1,2) (1,2) Point (1,2) (3,4) (5,6) Line (0,0) (1,1) (2,0) Isosceles Right (0,0) (2,1) (10,1) …

10
フェルマーの多角数定理
フェルマーの多角数定理は、すべての正の整数が最大対角数の合計として表現できると述べています。すべての正の整数は3つの三角形番号、4つの平方数、5五角数などあなたの仕事は、正の整数取ることですまでの和として表現することができることを、この手段、整数、および出力へ -合計される角整数。nnn nnnxxxs≥3s≥3s \ge 3sssxxx 目 -gonal整数、及び、いくつかの方法で定義することができます。非数学的な方法は、番目対角数を、それぞれの長さがである辺を持つ正多角形として構築できることです。たとえば、(三角形の数)の場合:nnnsssn≥1n≥1n \ge 1s≥3s≥3s \ge 3nnnssssssnnns =3s=3s = 3 より大きい例については、こちらをご覧ください。sss math-yの定義は、の式を使用することにより、番目対角数を生成します。P(n 、s )P(n、s)P(n, s)nnnsss P(n 、s )= n2(s − 2 )− n (s − 4 )2P(n、s)=n2(s−2)−n(s−4)2P(n, s) = \frac{n^2(s-2) - n(s-4)}{2} これはウィキペディアのページにあります。 入力 条件 2つの正の整数、および。言語で最も自然な表現でこれらの整数を入力できます(10進数、単項、教会の数字、整数値の浮動小数点数など)。sssバツバツxS ≥ 3s≥3s \ge 3 出力 最大長の整数リスト。ここで、の合計は等しく、すべての整数は対角整数です。繰り返しますが、整数は、言語の自然な表現で出力される場合があり、明確で一貫したセパレータがあります(したがって、10進出力の場合は非10進文字、単項出力などに使用されるものとは異なる文字)LLLsssLLLバツバツxLLLsss ルール 入力または出力が言語の整数制限を超えることはありません LLLは注文する必要はありません 複数の可能な出力の場合、いずれかまたはすべてが受け入れられます …

23
ボウルにアルファベットのスープを入れます
私たちは、ように見える決して取得しない疲れたアルファベット関連の課題の... レシピ 与えられた 文字列S、および 2つの正の整数M、N、 文字とアルファベットスープ製造S占有ランダムな位置に長方形のボウルサイズのM× N、フレームボウルのリムを表現するために、非アルファベット、非空白文字です。 文字で使用されていない位置はスペースとして表示する必要があります。以下の例を参照してください。 追加規則 サイズM× Nは、ボウルの内部を指します。リムを含むサイズはM+2× N+2です。 からの各キャラクターは、ボウルの異なる位置に一度S表示されます。つまり、ある文字が別の文字を上書きすることはできません。 S 重複する可能性があります。たとえばS、が文字列の'abcc'場合、スープにはone a、one b、およびtwo c(すべて異なる位置にある)が含まれている必要があります。 入力は満足さ制限を M >= 1、N >= 1、1 <= length(S) <= M*N。 ボウルの縁は、アルファベット以外、スペース以外の任意の文字で、プログラムの実行と入力値全体で一貫しています。 ボウル内の文字の位置はランダムであるため、同じ入力でプログラムを実行するたびに結果が異なる場合があります。 入力が与えられると、文字位置のすべての可能なセットはゼロ以外の確率を持つ必要があります。これはプログラムのいくつかの実現からはチェックできないため、コードがこれをどのように実現するかを説明してください。 先頭または末尾の空白リムの周りには許可されています。 S大文字のみが含まれます。希望する場合は、小文字のみを選択できます。 入出力は通常どおり柔軟です。たとえば、出力は、改行を含む文字列、2D文字配列、または行のリストです。 すべてのプログラミング言語でプログラムまたは機能を使用できます。標準的な抜け穴は禁止されています。 バイト単位の最短コードが優先されます。 例 入力はとして表示されます。S, [M N]ここでMは、行N数と列数です。キャラクター#はリムに使用されます。 'O', [1 1]: ### #O# ### 'HEY', [1 3]: ##### …

21
このリストはバランスを取ることができますか?
非負整数のリストのバランスが取れているかどうかを確認するには、ボードにそれぞれのウェイトを置き、ピボットの左右の合計相対ウェイトが同じになるように、ピボットのボードのバランスをとることを想像できます。相対的な重量は、重量にピボットまでの距離を掛けることによって与えられます(レバーの法則を参照)。 (ソース:ウィキペディア) この画像はリストに対応しています[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]。このリストのバランスが取れているの5は、ピボットの距離が20 100、距離が1およびであるため5*20 = 100 = 100*1です。 例 3 1 5 7 ######### ^ この場合にはピボットが直接下にあり5、3距離2を有し、1かつ7両側が左右のピボット和のアップするよう距離1を有する7(3*2 + 1*1左の及び7*1右)、したがって、リストが[3, 1, 5, 7]バランスされています。 ただし、ピボットはリスト要素の1つの下に配置する必要はありませんが、2つのリスト要素の間に配置することもできます。 6 3 1 ####### ^ この場合、距離は次のようになり0.5, 1.5, …

25
猶予期間を考慮した編集のカウント
SEで投稿を編集すると、5分間の猶予期間内にさらに編集された内容がマージされます。投稿を編集する回数のリストが与えられたら、猶予期間内ではない編集をカウントします。 数分で編集するとします[0,3,4,7,9,10,11,12]。これにより、3回の編集が行われ[0,7,12]、残りは猶予期間中に行われます。 0: [3,4] 7: [9,10,11] 12: [] 最初の編集は0分です。3分と4分での編集は5分の猶予期間内であるため、カウントしません。 2番目の編集は7分です。9、10、11分での編集は猶予期間内です。 12分目の3番目の編集は、7分から始まる5分間の猶予期間の端を過ぎています。 したがって、出力は3です。 分単位の時間のリストは、増加する整数のリストになります。最初の投稿では、最初の番号は常に0になります。これは編集としてカウントされます。 テストケース: [0] [0,3,5,7] [0,3,4,7,9,10,11,12] [0,30,120] [0,4,8,12,16] [0,4,8,12,16,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] [0,5,10,15,20] [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] [0,1,4,5,9,11,12,14,16,18,23,24,26,28,29,30] 出力: 1 2 3 3 3 3 4 5 5 6 コピーを簡単にするために、入力、出力、および入出力のペアを以下に示します。 [[0], [0, 3, 5, 7], [0, 3, 4, 7, 9, 10, 11, 12], [0, …

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