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

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

8
Brain-Flak整数のゴルフ
整数はBrain-Flakで表すのが面倒です。8つの演算子があります。 () Evaluates to 1, but does not push anything on any stack [] Evaluates to an indeterminate value for the purposes of this question {} Removes the top of the stack and evaluates to it <> Switches to or back from the alternate stack and evaluates to zero (foo) …

9
「追加のパイロンを構築する必要があります!」
前書き 戦略ゲームStarcraft 2には、Terran、Zerg、およびProtossから選択できる3つの「レース」があります。この課題では、プロトスと象徴的なフレーズ「追加のパイロンを構築する必要があります!」に焦点を当てます。このメッセージは、軍隊を構築するために供給が足りなくなったときに表示されます。そのため、スタークラフトコミュニティを支援するには、プレーヤーに必要なパイロンの数を正確に伝えるプログラムまたは関数を作成する必要があります。 チャレンジ 単一の整数Nとスペースで区切られたユニットのリストで構成される文字列の入力が与えられます。Nは常にゼロまたは正であり、ユニットのリストには常に1つ以上の有効なユニットがあります。Nプレーヤーが現在持っているパイロンの量を表します。あなたの仕事は、プレイヤーが持っているパイロンの量がユニットを構築するのに十分かどうかを計算することです。十分な供給がある場合は、あなたのプログラムまたは機能しなければならない出力は/ truthy値を返す、または十分な供給がない場合は、出力しなければならないパイロンの量は、単位を構築するために必要とされています。必要な場合は複数で、そうでない場合は複数でなければならないことに注意してください(、)。You must construct ZZZ additional pylonsZZZpylon(s)...1 additional pylon!...2 additional pylons! プロトスユニットと供給コスト 以下は、すべてのユニットとそれに対応する供給コストのリストです。パイロンは追加の8つの供給を提供します。 Unit Supply Cost Probe 1 Zealot 2 Sentry 2 Stalker 2 HighTemplar 2 DarkTemplar 2 Immortal 4 Colossus 6 Archon 4 Observer 1 WarpPrism 2 Phoenix 2 MothershipCore 2 VoidRay 4 Oracle 3 …

20
吸血鬼の互換性
吸血鬼に関するほとんど知られていない事実は、彼らが適合ドナー血液型を持っている犠牲者の血液を飲まなければならないということです。吸血鬼の互換性マトリックスは、通常の赤血球ドナー/レシピエントマトリックスと同じです。これは、次のアメリカ赤十字社の表で要約できます Type You Can Give Blood To You Can Receive Blood From A+ A+, AB+ A+, A-, O+, O- O+ O+, A+, B+,AB+ O+, O- B+ B+, AB+ B+, B-, O+, O- AB+ AB+ everyone A- A+, A-, AB+, AB- A-, O- O- everyone O- B- B+, B-, AB+, AB- …

9
APLでのゴルフのヒント
私は最近、1つのコードゴルフチャレンジを開始しましたが、勝者はGolfScript(サプライズ、サプライズ!)のようです。おもしろいのは、GolfScriptに勝つチャンスがすべてある別の非常に強力なライバルがいたことです。その名前はAPLです。ここにAPLで書かれた多くの答えがあります。この言語はコードゴルフではかなり効率的であると思われるので、APLプログラムについて知っているコードゴルフのヒントを求めることにしました。いくつかのコード例を投稿してください。動作中の言語を見るのは通常非常に興味深いです。
28 code-golf  tips  apl 

10
カオスゲームをプレイする
カオスゲームはフラクタルを生成するための簡単な方法です。開始点、長さ比r、および2D点のセットを指定して、次の操作を繰り返し実行します。 ポイントのセットから、ランダムに(均一に)選択します。 rと1-rを重みとして使用して、そのポイントと最後に描かれたポイント(または開始ポイント)を平均します(つまり、r = 0は開始ポイントを取得し、r = 1はランダムポイントを取得し、r = 0.5はユーザーを意味します中間点を取得します。) 結果のポイントを描画します。 たとえば、正三角形の頂点を選択し、r = 0.5の場合、プロットされたポイントはシェルピンスキーの三角形をマッピングします。 ウィキペディアで見つかった画像 カオスゲームを「再生」してフラクタルを作成するプログラムまたは関数を作成する必要があります。 入力 プログラムまたは関数のいずれかを作成し、ARGV、STDIN、または関数引数を介して次の入力を取得できます。 プロットするポイントの数。 開始座標(プロットする必要もあります!)。 区間[0,1]の平均重みr。 選択するポイントのリスト。 出力 画面にレンダリングするか、画像ファイルを書き込むことができます。結果がラスタライズされる場合、各側に少なくとも600ピクセル、すべてのポイントがキャンバス上にあり、画像の水平および垂直範囲の少なくとも75%がポイントに使用されている必要があります(これは避けるためです「本当にズームアウトしている」と黒のピクセルで答えます)。X及びY軸は、同じ規模である必要があり(すなわち、0,0の(より線)である(1,1)45度の角度でなければならない)とカオスゲームにプロットの各点は、単一のように表現されなければなりませんピクセル(プロットメソッドがポイントをアンチエイリアスする場合、2x2ピクセルに広がる可能性があります)。 色は選択できますが、少なくとも2つの区別できる色が必要です。1つは背景用、もう1つはカオスゲーム中にプロットされるドット用です。入力ポイントをプロットする必要はありますが、する必要はありません。 回答に3つの興味深い出力例を含めてください。 得点 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 編集:入力ポイントは実際には単一ピクセルとして表示されないため、入力ポイントをプロットする必要はなくなりました。

30
コミュニケーションが容易になるということは、コーディングが速くなることを意味します。
5年前のこの日に亡くなった父は、 APLに優れていて、APLのすべての基礎(およびその他)を教えてくれました。50年のAPLに備えて、手書きのロゴに関するこの特許レター(デンマーク語を読まない人の便宜のために翻訳された)を見つけました。これは、APLが大規模なユーザーベースを獲得できない主な理由を説明しています。この理由は、もちろんこのコミュニティの素晴らしいゴルフ言語すべてにも当てはまります。 3497/77必須 29 回目の 1977年8月に13 Henri Brudzewsky、エンジニアリングコンサルタント会社、Minddevej 28、Søborg、 コンピュータ、特にAPLコード化されたコンピュータを含むクラス9、 クラス42:特にAPLコード化されたコンピュータの使用中のITサービス代理店会社。 仕事 EASIER COMMUNICATION MEANS FASTER CODING MEANS FEWER CODERS MEANS 改行なしでテキストの無限に繰り返される出力を生成します。EASIERまたはFASTERまたはでテキストを開始できますFEWER。

30
大文字と小文字の比率
このチャレンジでは、あなたとあなたの友人は大文字と小文字のどちらが良いかについて議論していますか?調べるには、これを行うプログラムを作成します。 エソランは友達を怖がらせ、冗長なコードは怖いので、コードはできるだけ短くする必要があります。 例 PrOgRaMiNgPuZzLeS & CoDe GoLf 0.52 uppercase DowNGoAT RiGHtGoAt LeFTGoat UpGoAT 0.58 uppercase Foo BaR Baz 0.56 lowercase 仕様書 入力はASCII文字のみで構成されます。アルファベット以外の文字はすべて無視する必要があります。各ケースには少なくとも1つの文字があります 出力は、アルファベット文字の合計量の中で最も頻繁に現れるケースの量でなければなりません。少なくとも小数点以下2桁まで正確な小数でなければなりません。大文字がより頻繁に現れる場合、出力はuppercase、またはで終わる必要がありlowercaseます。 大文字と小文字が同じ量になることはありません。
28 code-golf  string 

4
ブラックハットはどこ?
チャレンジ ランダムなxkcdコミックからパネルの画像が与えられると、Blackhatがコミックにある場合は真実の値を返し、そうでない場合は偽を返すコードを記述します。 ブラックハットとは誰ですか? Blackhatは、黒い帽子をかぶったxkcdコミックのキャラクターに付けられた非公式の名前です。 BlackhatのExplain xkcdページから取得 ブラックハットの帽子は常に真っすぐな黒で、上の画像と同じように見えます。 他のキャラクターも帽子と髪を持っているかもしれませんが、黒で真っすぐな帽子はありません。 入力 画像は、画像へのパスまたはSTDIN経由のバイトであるかどうかに関係なく入力できます。入力としてURLを使用する必要はありません。 ルール 答えをハードコーディングすることは禁止されていませんが、高く評価されていません。 答えを得るためにインターネットにアクセスすることは許可されていません。 例 https://xkcd.comの画像から切り取られたすべての画像 Blackhatはパネルにあります(戻るtruthy) Blackhatはパネルにありません(戻るfalsey) テストバッテリー Blackhatを含む20の画像は、https://beta-decay.github.io/blackhat.zipにあります。 Blackhatを含まない20個の画像は、https://beta-decay.github.io/no_blackhat.zipにあります。 (ミステリーテストケースのためにトレーニングするために)プログラムをテストするためにさらに画像が必要な場合は、Blackhatのすべての外観のリストをここで見つけることができます:http://www.explainxkcd.com/wiki/index.php/Category: Comics_featuring_Black_Hat 勝ち Blackhatがほとんどの画像でコミックに載っているかどうかを正しく識別するプログラムが勝ちです。ヘッダーには、スコアをパーセンテージで含める必要があります。 タイブレークが発生した場合、関連付けられたプログラムには「ミステリー」イメージ(つまり、私だけが知っているイメージ)が与えられます。最も正確に識別するコードがタイブレークに勝ちます。 スコアとともにミステリー画像が明らかになります。 注:ランドールの名前はハットガイかもしれません。私はブラックハットが好きです。

4
すべての無料のn-ominoesを含む平面の最小領域
Math Stack Exchangeで、無料のn-ominoをすべて含むことができる最小の領域について質問しました。 用語が増えたら、このシーケンスを整数シーケンスのオンライン百科事典に追加したいと思います。 例 9セル領域は、以下に示すように、12個すべての無料の5オミノを含むことができる平面の最小サブセットです。(無料のポリオミノは、回転および反転できるものです。) (12セルの領域は、35個すべての無料の6オミノを含むことができる平面の最小サブセットです。) チャレンジ nの関数としてすべてのn-ominoesを含むことができる平面の最小領域の上限を計算します。 そのような表は始まります: n | size --+------- 1 | 1* 2 | 2* 3 | 4* 4 | 6* 5 | 9* 6 | 12* 7 | 37 8 | 50 9 | 65 *These values are the smallest possible. 提出例 1-omino: 1 …

12
パンケーキの反転
でパンケーキソートのみ許可される操作をシーケンスの一部の接頭辞の要素を逆にすることです。または、パンケーキのスタックを考えます。スタックのどこかにヘラを挿入し、スパチュラの上にすべてのパンケーキをひっくり返します。 たとえば6 5 4 1 2 3、最初の6要素(シーケンス全体)を最初に反転し、中間結果を生成して3 2 1 4 5 6から最初の3要素を反転してに到達することにより、シーケンスをソートできます1 2 3 4 5 6。 操作が1つしかないため、ソートプロセス全体を整数のシーケンスで記述できます。各整数は、pr flipを含める要素/パンケーキの数です。上記の例では、ソート順序はになります6 3。 別の例:4 2 3 1でソートできます4 2 3 2。中間結果は次のとおりです。 4 2 3 1 flip 4: 1 3 2 4 flip 2: 3 1 2 4 flip 3: 2 1 3 4 flip …

3
重い箱の積み重ね
重い箱がたくさんあるので、できるだけ少ない数のスタックに積み重ねたいと思っています。問題は、サポートできる以上のボックスをスタックできないため、より重いボックスをスタックの最下部に配置する必要があることです。 チャレンジ 入力:箱の重量のリスト(kg単位)。 出力:ボックスのスタックを説明するリストのリスト。これは、入力に可能な限り少ない数のスタックを使用する必要があります。有効なスタックであるためには、スタック内の各ボックスの重量が、その上のすべてのボックスの重量の合計以上でなければなりません。 有効なスタックの例 (下から上へ) [3] [1、1] [3、2、1] [4、2、1、1] [27、17、6、3、1] [33、32、1] [999、888、99、11、1] 無効なスタックの例 (下から上へ) [1、2] [3、3、3] [5、5、1] [999、888、777] [4、3、2] [4321、3000、1234、321] テストケースの例 1 IN: [1, 2, 3, 4, 5, 6, 9, 12] OUT: [[12, 6, 3, 2, 1], [9, 5, 4]] 2 IN: [87, 432, 9999, 1234, 3030] OUT: [[9999, …

15
自己識別座標
整数を指定して、長さの次元をn持つ配列を構成するプログラムまたは関数を作成します。各要素は、独自の座標の識別子です。つまり、1つの配列から始めて、配列を追加します。各配列には、深さまで、より多くの配列が含まれます。最も深い配列の要素は、完全な配列のどこにあるかを示す座標です。nnnnn-1 説明がわかりにくい場合のいくつかの例。 n = 1 ["1"] n = 2 [ ["11", "12"], ["21", "22"] ] n = 3 [ [ ["111","112","113"], ["121","122","123"], ["131","132","133"] ], [ ["211","212","213"], ["221","222","223"], ["231","232","233"] ], [ ["311","312","313"], ["321","322","323"], ["331","332","333"] ] ] ここで、「321」は、3番目の配列の2番目の要素の1番目の要素であることを意味します。 ルール: 座標と次元(n)には、0または1のインデックスを付けることができます n曖昧な出力を防ぐために、両方のインデックスオプションで10未満の1桁であると仮定することができます。 IOは柔軟です。 特に、座標は、明確である限り、配列、文​​字列などにすることができます。"321" => [3,2,1] 出力は、先行ゼロの有無にかかわらず、基数10の整数にすることができます。 座標は、一貫している限り、必要に応じて逆の順序にすることができます。「321」=>「123」 出力は、必ずしも言語の配列構造である必要はありません。配列の開始、配列の終了、および要素を区切るための明確な明確なマーカーがある限り。 の出力はn=11になります 出力が非定型である場合は、必ず形式を説明してください。 これはコードゴルフなので、各言語で最短のソリューションが勝ちです!
27 code-golf 

13
最小の魔法の合計にする
この課題を短くしてください。 4つの番号が与えられます:p1、p2、p3、p4。 数値のマジックサムは次のように定義されます。 magic_sum = |p1 - p2| + |p2 - p3| + |p3 - p4| + |p4 - p1| 上記の整数値(p1、p2、p3、またはp4)のいずれかのみを変更できます。値の魔法の合計が最小値になるように値を変更する必要があります。 例えば: p1、p2、p3、p4 = 17、-6、15、33。この場合、マジックサムの値は78です。 ここで-6を16に変更すると、マジックサムの値は36になります。これは達成可能な最小値です。 数値は正または負の整数になる可能性があることに注意してください。 これはコードゴルフなので、コードの最小バイトが勝ちます。ブラウニーは、レクリエーション言語よりも実用的な言語を使用していることを指摘しています。4日はあなたとありますように。 繰り返します: サンプル1 入力1 17 -6 15 33 出力1 36 説明1 -6は16に置き換えることができ、達成可能な最小の魔法の合計を与えます。 サンプル2 入力2 10 10 10 10 出力2 0 or 2 どちらでもかまいません …

16
マトリックス竜巻に注意してください!
マトリックス竜巻は、他の竜巻とまったく同じです。中心の周りを回転するもので構成されています。この場合、空気の代わりにマトリックスの要素。 マトリックス竜巻の例を次に示します。 まず、マトリックスを正方形のリングに分割することから始めます。各セクションは、境界から同じ距離だけ離れた要素で構成されます。これらのセクションは、中心の周りを時計回りに回転します。実際の竜巻では、重度は中心に向かって増加し、マトリックス竜巻の回転ステップも同様に増加します。最も外側のセクション(赤いセクション)は1ステップ、次のセクション(黄色)は2ステップ回転します。に。回転ステップは、中心を中心とした90°の回転です。 仕事: あなたの仕事は、受け入れれば、入力として正方行列を受け取り、それに竜巻効果を適用し、結果の行列を出力する関数またはプログラムを書くことです。 入力: 入力は次の正方行列である必要nがありn >= 1ます。マトリックスの要素について何も仮定する必要はありません。どんな要素でも構いません。 出力: 入力行列にトロナド効果を適用した結果となる、同じ次数の正方行列。 例: 次の行列n = 1: [['Hello']] ===> [['Hello']] 次の行列n = 2: [[1 , 2], ===> [[5 , 1], [5 , 0]] [0 , 2]] 次の行列n = 5: [[A , B , C , D , E], [[+ , 6 , …
27 code-golf  matrix 

20
蘇州の数字に変換
蘇州の数字(蘇州碼子;花碼)は中国の10進数です: 0 〇 1 〡 一 2 〢 二 3 〣 三 4 〤 5 〥 6 〦 7 〧 8 〨 9 〩 これらはアラビア数字のように機能しますが、セット{1, 2, 3}に属する連続した数字がある場合、あいまいさを避けるために数字は垂直ストローク表記{〡,〢,〣}と水平ストローク表記{一,二,三}を交互に使用します。このような連続したグループの最初の数字は、常に垂直ストローク表記で記述されます。 タスクは、正の整数を蘇州の数字に変換することです。 テストケース 1 〡 11 〡一 25 〢〥 50 〥〇 99 〩〩 111 〡一〡 511 〥〡一 2018 〢〇〡〨 123321 〡二〣三〢一 1234321 〡二〣〤〣二〡 9876543210 …

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