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

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

15
日曜日を計画してください!
夏の日曜日の朝に冷えたビールとテレビで、または冬にバドミントンをしたり、友達と一緒に究極の寒さをしたい人はいませんか? 1か月で何日冷やさなければならないかを知ることで、十分な情報を得られ、やりたいことを計画するのに役立つといつも思っています。パソコンの前に座って、コードゴルフの問題を解決したり、サッカーに出かけたりします。 だから、助けを私は、入力として2つの正の整数を取るプログラムや関数を記述し、YかつM、その特定の年の日曜日の数を(出力Y)と月(M各日曜日の日に続いて、(グレゴリオ暦によります))。 また、最短のコードが優先されることに注意してください。 入力制約 1000 <= Y <= 9999 1 <= M <= 12 出力 これらのテストケースには、その年のその月の各日曜日の日付が形式で出力されますDD-MM-YYYY。 サンプルテストケース テストケース1 サンプル入力 2017 1 サンプル出力 5 01-01-2017 08-01-2017 15-01-2017 22-01-2017 29-01-2017 テストケース2 サンプル入力 2018 2 サンプル出力 4 04-02-2018 11-02-2018 18-02-2018 25-02-2018 テストケース3 サンプル入力 2016 11 サンプル出力 4 06-11-2016 13-11-2016 20-11-2016 27-11-2016
16 code-golf  date 

1
イングレスグリフを描く
では、ロケーションベースのARモバイルゲーム生き方進入プレイヤーがアイテムを取得するために、ポータルと呼ばれるものをハックすることができます。(Ingressに興味がある場合は、チャットでpingして詳細を確認できます。ポケモンよりもましです。ダウンロードしてしまう場合は、レジスタンスを選択してください。) ハック出力を大幅に増やす方法の1つに、グリフハッキングミニゲームがあります。このゲームでは、プレーヤーは六角形のグリッドにグリフを描画する必要があります。 合計で、ゲームで実際に使用される約130の名前を持つ約115のグリフがあります。 グリフ この課題のために、グリッドの各ポイントに次のように番号を付けます。 このチャレンジの目的のためのすべてのグリフのリストは次のとおりです。リストは、各グリフをエッジのリストとして含むJSONオブジェクトです。 { "ABANDON": [[1, 6], [3, 4], [4, 8], [6, 10], [8, 10]], "ACCEPT": [[3, 7], [3, 8], [7, 8]], "ADVANCE": [[0, 9], [4, 9]], "AFTER": [[1, 2], [1, 6], [2, 7], [6, 10], [7, 10]], "AGAIN": [[4, 9], [6, 7], [6, 10], [8, 9], …

18
毛布を作ってください!
このような毛布が欲しい。各ストリップは上、下、上、下に行きます。印刷できますか? \\\\////\\\\////\\\\////\\\\////\\\\////\\\\//// \\//// \\//// \\//// \\//// \\//// \\//// //// //// //// //// //// //// ////\\ ////\\ ////\\ ////\\ ////\\ ////\\ ////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\ \// \\\\// \\\\// \\\\// \\\\// \\\\// \\\ \\ \\\\ \\\\ \\\\ \\\\ \\\\ \\ \\\ //\\\\ //\\\\ //\\\\ //\\\\ //\\\\ //\ \\\\////\\\\////\\\\////\\\\////\\\\////\\\\//// \\//// \\//// \\//// \\//// \\//// \\//// //// …

7
ミニマックスツリーを評価する
アリスとボブは小さなゲームをしています。最初に、ルートノード(太い点で示されている)からツリーを描画します。内部ノードはなく、葉に番号が付いています。任意のノードに任意の数の子を含めることができます。 ルートから始めて、最初にプレイするのはアリス(A)です。現在のノードの子の1つを選択する必要があります。次に、ボブの番で、彼は同様に子ノードを選択します。これは、リーフノードに到達するまで続きます。 リーフノードに到達すると、ゲームオーバーです。アリスの目標は、できるだけ大きな値を持つノードで終了することであり、ボブの目標は、できるだけ小さな値を持つノードで終了することです。 ネストされた配列形式のツリーを指定すると、アリスとボブの両方が完全にプレイした場合に到達するリーフの値を返します。 例: 18: [[67, [[100, [[67, 47], [86], 21, 16], [[46, [14], 35, 85], [71, [18, 63, 69], 99, 22], 3]]], [[18, 32, 42, 80]], [[36, 70], [86, 53, 46, 59], [[41], 86, 35]]], 3] 60: [[[84, 35], [44, 60]], [[24, 98], [16, 21]]] 58: [[53, 77], …

3
アドバカドに関する挑戦
これに触発された。この挑戦の作成においてアボカドは害を受けませんでした。 こんにちは、私はアボカドのジュースを手伝う必要があるので、どのくらいの時間ジュークを主張するかを教えてくれるプログラムが必要です このASCIIアートアボカドを観察します。 ###### # # # #### # # # p# # ## #### # # # ###### このアボカドは、#sの外部(具体的には#各行のsの最初と最後のシーケンス)とピット(#アボカドの外部に触れないアボカドのsの形状)で構成されています。 これらのASCIIアートアボカドの厳密な実験を通して、私は次のことを発見しました。 avocado juice in fluid ounces = number of spaces inside avocado but outside pit (the pit is marked with a p in the example) + 2 * number of …

1
どのUbuntuバージョンがサポートされていますか?
入力日付を指定すると、エントリはその日付にサポートされているUbuntu Linuxディストリビューションのバージョンの完全なリストを出力します。 すべてのリリースの完全なリストは次のとおりです。 バージョンコード名リリース日サポートされるまで 4.10いぼ型イボイノシシ2004-10-20 2006-04-30 5.04 Hoary Hedgehog 2005-04-08 2006-10-31 5.10 Breezy Badger 2005-10-13 2007-04-13 6.06 LTS Dapper Drake 2006-06-01 2009-07-14 2011-06-01(サーバー) 6.10 Edgy Eft 2006-10-26 2008-04-25 7.04 Feisty Fawn 2007-04-19 2008-10-19 7.10 Gutsy Gibbon 2007-10-18 2009-04-18 8.04 LTS Hardy Heron 2008-04-24 2011-05-12 2013-05-09(サーバー) 8.10 Intrepid Ibex 2008-10-30 2010-04-30 …
16 code-golf  date 

2
RXによるValiDate ISO 8601
チャレンジ 最短の正規表現を見つける Prolepticグレゴリオ暦のすべての可能な日付(1582年の最初の採用前のすべての日付にも適用されます)を検証、つまり一致させます。 無効な日付と一致しません。 出力 したがって、出力は真実または偽です。 入力 入力は、3つの拡張ISO 8601日付形式のいずれかであり、時間はありません。 最初の2つは±YYYY-MM-DD(年、月、日)と±YYYY-DDD(年、日)です。両方ともうるう日に特別なケーシングが必要です。これらは、これらの拡張RXによって個別に単純にマッチングされます。 (?<year>[+-]?\d{4,})-(?<month>\d\d)-(?<day>\d\d) (?<year>[+-]?\d{4,})-(?<doy>\d{3}) 3番目の入力形式は±YYYY-wWW-D(年、週、日)です。複雑なうるう週パターンのため、複雑なものです。 (?<year>-?\d{4,})-W(?<week>\d\d)-(?<dow>\d) 3つすべてを組み合わせた場合の基本的な、しかし不十分な妥当性チェックは、次のようになります。 [+-]?\d{4,}-((0\d|1[0-2])-([0-2]\d|3[01]) ↩ |([0-2]\d\d|3[0-5]\d|36[0-6]) ↩ |(W([0-4]\d|5[0-3])-[1-7])) 条件 うるう年予期的グレゴリオ暦のカレンダーでは、含まれているうるう日 …-02-29、したがって、それは長い366日で、それ故に…-366存在します。これは、序数が4で割り切れる年に発生しますが、400で割り切れる場合を除き、100で割り切れません。 このカレンダーにはゼロ年が存在し、うるう年です。 長い年のISO週のカレンダーでは、1つの「という用語ができた、第53週が含まうるう週を」。これは、1月1日が木曜日であるすべての年に発生し、さらに水曜日であるすべてのうるう年に発生します。通常、5年または6年ごとに、一見不規則なパターンで発生することが判明しています。 年は少なくとも4桁です。10桁を超える年は、宇宙の年齢(約140億年)に十分近いため、サポートする必要はありません。先頭のプラス記号はオプションですが、実際の標準では、4桁を超える年数は必須であることを示しています。 部分的な日付または切り捨てられた日付、つまり日精度未満の日付は受け入れられません。 日付表記の一部、たとえば月は、参照可能なグループと一致する必要はありません。 ルール これはコードゴルフです。実行されたコードのない最短の正規表現が優先されます。更新:再帰やバランスのとれたグループなどの機能を使用できますが、10倍の罰金が科せられ、その後文字数が乗算されます!これは、ハードコードゴルフの規則とは異なります。分割可能性の正規表現は7です。以前の回答が引き分けになります。 テストケース 有効なテスト 2015-08-10 2015-10-08 12015-08-10 -2015-08-10 +2015-08-10 0015-08-10 1582-10-10 2015-02-28 2016-02-29 2000-02-29 0000-02-29 -2000-02-29 -2016-02-29 200000-02-29 2016-366 2000-366 0000-366 -2016-366 …

1
カタンの開拓者-最長の道!
これは、カタンの開拓者の終盤ボードです。 バックグラウンド: 道路(長い棒の部分)と集落(および都市)は、小さな小屋によってレンダリングされます。次のスキームを使用して、これらのピースの配置をエンコードします。上から、道路を配置できる行の水平頂点とエッジがあります。次に、道路のみの列などがあります。赤にR、オレンジにO、青にBを使用し、_を使用しない場合、写真のボードは次のようにエンコードされます。 ________RR_R_ __R_ __RR_R_RRR_____R_ B___R _B_________B__OO_OOR_ B__B_R BB_BBB_____B____RR_R_ OBB_O OO__BB_BB__OOO_OO O_O_ _O_OOO_O_____ このようなボードが入力文字列になります。どんな手紙でも[A-Z]もプレーヤーの色を示すことができますが、最大4色(空を含む)があります。それ以外の場合、ボードは入植者の規則に従って有効であることが保証されます。 各色には、最大で2つの連続した道路網があり、他のプレイヤーの居住地/都市(頂点の建物)によって分割される場合と分割されない場合があります。サンプル画像の右側のオレンジ色の集落が赤い道路をバラバラにしているのを見てください。 各道路網には、少なくとも1つの集落があることが保証されています。 すべての集落と都市は、少なくとも 、最も近い他の集落/都市(あなたのものまたはそうでないもの)から 2つの端 1人のプレイヤーは、ゲームボード上に15の道路しか持てません。 カタン愛好家の場合:この問題の目的のために集落と都市の区別はないため、入力文字列では区別しません。 これはすべて、「入力」文字列を指定するためのものです。 最長の道: 入植者では、プレイヤーは「最長の道」を持つことで2つの勝利ポイントを獲得します。これは次のように定義されます:開始地点から終了地点までの最長の連続した単一の経路(道路で測定)。敵の集落または都市によって分割されない。特定の開始点から特定の終了点までのパスをトレースできる限り、サイクルは問題ありません。したがって、6本の道路と分岐する1本の道路のループは長さ7ですが、反対側の6本の道路ループから分岐する2本のループはまだ7の価値しかありません。 例のマップでは、右側の赤い道路は4の価値しかありません。ボードの右側のオレンジの集落によって彼が切り離されているためです(そのため、集落はまったく含まれません)。青には長さ13の道路があり、オレンジには長さ12の道路があります。赤の一番上の道路は、その隣の2つの単一道路に接続していないため、7の価値があります。 出力: 最長の道路(同点の場合は複数になる可能性があります)があり、その後に空白またはアンダースコアで区切られた道路があるすべてのプレイヤーは、その道路の長さのベース10でカウントされます。 したがって、サンプルボードの出力は次のようになります。 B 13 問題ステートメント: プログラムまたは関数を記述し、STDIN経由で、または関数への文字列引数として入力ボードを受け取ります。関数は、上記の出力を文字列として返すか、STDOUT(または最も近い代替)に出力します。オプションで、出力に単一の末尾の改行を含めることができます。 これはcode-golfで、最短のプログラムが勝ちます。もちろん、標準的な抜け穴は禁止されています。


2
43クインティオンの順列
次のように、ルービックキューブをネットとして表すことができます(解決した場合)。 WWW WWW WWW GGGRRRBBBOOO GGGRRRBBBOOO GGGRRRBBBOOO YYY YYY YYY 各文字は対応する色を表します(W白、G緑など) 示された正確があることが43 、252 、003 、274 、489 、856 、00043、252、003、274、489、856、00043,252,003,274,489,856,000(〜434343京)異なる順列がルービックキューブがでできること。 あなたの仕事は、間の整数取ることである111と43 、252 、003 、274 、489 、856 、00043、252、003、274、489、856、00043,252,003,274,489,856,000上に示したように、対応する順列及び出力。順列の順序を選択することもできますが、使用可能なアルゴリズムを表示して、可能な入力ごとに一意の正しい順列を生成する必要があります。 無効な順列規則 から撮影 このページ ルービックキューブの中央の正方形は回転できないため、最初に、各3x3面の中心は同じである必要があります。キューブ全体を回転させて、顔の表示位置を変更できますが、これはキューブのネットには影響しません。 各順列には、その順列に到達するスワップの数のパリティに基づいてパリティがあると言うと、 各コーナーピースには3つの方向があります。正しい方向(0)、時計回り(1)、または反時計回り(2)にすることができます。角の向きの合計は常に3で割り切れるままです ルービックキューブの各法定回転は常に偶数のエッジを反転させるため、1つのピースだけが間違った方向を向くことはありません。 すべてのコーナーとエッジの順列を考慮すると、全体的なパリティは偶数である必要があります。つまり、各法定移動は常に偶数のスワップに相当するものを実行します(方向を無視) たとえば、次の3つのネットは無効な出力です。 WWW WWW WWW GGGWWWBBBOOO GGGRRRBBBOOO GGGRRRBBBOOO YYY YYY YYY (Too many whites/not enough reds) WRW WRW …

30
「良い」と「悪い」を入れ替える
チャレンジの説明: ユーザーに入力を求めるプログラムを作成します。ユーザーはGoodまたはを入力しBadます。他の入力をサポートする必要はありません。ユーザーがを入力した場合Good、印刷(Badおよびその逆)(標準出力など)が行われます。 ノート: 1)他の2つの単語のペアは使用できません。 2)あなたのプログラムは、一度尋ねて印刷するだけです。 3)プロンプト文字列を表示する必要はありません。 4)出力は、何らかの方法で入力から分離して表示される必要があります。 5)値を受け入れて結果を返す関数は許可されません。ユーザーはプログラムと対話する必要があります。 幸運を!

10
バイナリツリーのバランスが取れているかどうかを確認する最短プログラムを作成する
バランスの取れたバイナリツリーの各ノードでは、左の子サブツリーと右の子サブツリーの高さの最大差は最大1です。 二分木の高さは、ルートノードからルートから最も遠いノードの子までの距離です。 以下に例を示します。 2 <-- root: Height 1 / \ 7 5 <-- Height 2 / \ \ 2 6 9 <-- Height 3 / \ / 5 11 4 <-- Height 4 バイナリツリーの高さ:4 以下は、二分木とそれらがバランスされているかどうかに関するレポートです。 上記のツリーは不均衡です。 上記のツリーはバランスが取れています。 バイナリツリーのルートを入力として受け入れ、ツリーのバランスが取れていない場合はfalsey値を返し、ツリーのバランスが取れている場合はtrue値を返す、可能な限り最短のプログラムを作成します。 入力 バイナリツリーのルート。これは、ルートオブジェクトへの参照の形式でも、バイナリツリーの有効な表現であるリストの形式でもかまいません。 出力 真理値を返します:ツリーのバランスが取れている場合 falsey値を返します。ツリーのバランスが取れていない場合。 二分木の定義 ツリーは、値と2つの他のツリーまたはそれらへのポインターを含むオブジェクトです。 バイナリツリーの構造は次のようになります。 typedef struct T { …

5
自己採点プログラム
独自のスコアを出力するのは難しいですが、そこにあるすべての答えは出力をハードコーディングするだけで、退屈なようです1。それで、新しい挑戦をしましょう。バイト単位での独自の長さは、文字列に続いて、あなたのプログラムを出力しなければならない" bytes"が、私たちは除去することにより、そのサイズを小さくした場合にハードコーディングソリューションを防止するために、任意の 1つのバイトを、新しいプログラムはまた、出力はそれはまだ続く新しいバイト・カウント、です必要があります" bytes"。出力では大文字と小文字を区別する必要はありません。末尾の改行を出力することもできます。 回答はバイト単位で記録され、バイト数は少ない方が良いです。 1:私は実際にいくつかの答えが好きです。

5
タオルの日を忘れた
タオルの日を忘れた サンドボックスリンク 両方の例のPHPスクリプト(エラー、文字列のフォーマット) 修正されたphpスクリプト、入力は自明です $argv異なる結果を表示するための入力コメント/コメント解除の多いPHPスクリプト ご存知かもしれませんが、5月25日はタオルの日としてよく知られています。これは、タオルの用途が多いためです。 本「ギャラクシーへのヒッチハイカーのガイド」の簡単な抜粋(個人的に私はこの本を「毎日のガイド」として取りました): 「タオルは、星間ヒッチハイカーが持つことができる最も有用なものに関するものです。部分的には、実用的な価値が非常に高いです。」 タオルに関する詳細情報が必要な場合は、このSE.scifiの回答を確認してください チャレンジ 足の毛布として使用するタオルでこれを行うことを願っています。 2つの入力を受け取る有効なプログラミング言語で完全なプログラムまたは関数を記述します size Integer : #The size message string : #A sentence これらの値でタオルを描く方法は? 最初の使用size: 入力したサイズに応じてタオルを描きます。タオルのascii-art width = 12*size #the line that has the "bar" its always present with different sizes Width is defined as: from the first | to the …

2
非円形性スコアをプログラムする
あなたのタスクは数学関数をプログラムすることです。これは、2D平面内のs空ではない有限Aの点集合を取り、s(A)次の特性を満たす非円形性スコアを出力します。 正定性:のすべての点を含む円または直線があるA場合s(A) = 0。さもないとs(A) > 0 単射性:非負の実数の単射です。つまり、すべての非負の実数に対して、などの平面のr有限サブセットが存在Aしs(A) = rます。 Translation Invariance: すべてのベクトルおよびall sに対して、翻訳不変です。s(A) = s(A + v)vA スケール不変性: すべておよびすべてのs場合s(A) = s(A * t)、スケール不変です。t≠0A 連続。 関数(実数へのa点のマッピング)が実数の標準絶対値と平面の点の標準ユークリッドノルムを使用して連続している場合、連続sと言われます。f(p) := s(A ∪ {p})p 直感的に言えば、この非円形性スコアは、線形回帰の相関係数に似たものと考えることができます。 詳細 理論上の関数は実数で動作する必要がありますが、この課題の目的のために、浮動小数点数を代用として使用できます。提出の説明と、これら5つのプロパティが保持される理由を説明してください。入力として、座標の2つのリスト、またはタプルまたは同様の形式のリストを使用できます。入力内のポイントは繰り返されない、つまりすべてのポイントが一意であると想定できます。

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