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

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

30
合計無料のセットですか?
セットは、一緒に追加されたときに2つの(必ずしも別個ではない)要素がセット自体の一部でない場合、合計がありません。 たとえば、{1, 5, 7}すべてのメンバーが奇数であり、合計2つの奇数が常に偶数であるため、合計は無料です。一方、セットのメンバーの{2, 4, 9, 13}いずれか2 + 2 = 4または合計として、合計はありません4 + 9 = 13。 入力としてセットを受け取り、セットが和のない場合はTruthy値を出力し、そうでない場合はFalsyを出力するプログラムまたは関数を作成します。 例: Sum-free: {} {4} {1, 5, 7} {16, 1, 4, 9} Not sum-free: {0} {1, 4, 5, 7} {3, 0} {16, 1, 4, 8}

20
クリスマスにどれくらいプレゼントをもらいましたか?
はい、いくらで、いくらではなく... ご存知のように、大きなプレゼントは小さなプレゼントよりもはるかに優れています。したがって、プレゼントの価値は、プレゼントの数、重量、または組み合わせた価格ではなく、常に総量で測定する必要があります。 プレゼントの量を比較するのは面倒くさいので、クリスマスパーティーで他の人が簡単に見たり読んだりできる長いスクリプトは必要ありません。したがって、スクリプトのバイト数を最小限に抑える必要があります。 あなたのタスクは簡単です:次元のリストを入力として適切な形式で受け取り、プレゼントの合計量を出力するプログラムを作成します。各プレゼントの次元は、3つの数字のセットまたは単一の数字のいずれかです。入力が3つの数値(L, W, H)の場合、現在は次元の直方体ですL x W x H。単一の数値(R)の場合、現在の半径はsphereですR。 ルール: 完全なプログラムまたは関数のいずれかです 入力は任意の便利な形式にすることができます 必要に応じて、球体は数字とそれに続く2つのゼロで表すことができます。 直方体は常にすべてゼロ以外の次元を持ちます。 出力は単一の10進数でなければなりません 答えが明らかである限り、追加の出力が受け入れられます 出力には、小数点の後に少なくとも2桁が必要です。 数値が1000を超える場合、出力は標準形式/科学表記法になります。 言語にPi定数がない場合、答えは9999.99まで正確でなければなりません。 例: ((1,4,3),(2,2,2),(3),(4,4,4)) 197.0973 // (1*4*3 + 2*2*2 + 4/3*pi*3^3 + 4*4*4) (5) 523.5988 (5,0,0) 523.5988 リーダーボード この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。 回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。 ## Language Name, N bytes N提出物のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば: ## Ruby, <s>104</s> <s>101</s> 96 bytes …

4
テンキーで名前を入力してください
パズル: 並べ替えの名前を入力する必要があるd-padを備えたコンソール/ハンドヘルドゲームを検討してください。これは、コンソールでQWERTYの使用が普及する前に多くの古いゲームに登場しました(たとえば、Wiiは入力にQWERTYキーボードレイアウトを使用していると思います)。通常、オンスクリーンキーボードは次の効果を見ます*: デフォルト: 0 1 2 3 4 5 6 7 8 9 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 _ + ^ = ケースを切り替えた場合: 0 1 2 3 4 5 …
32 code-golf 

3
FizzBu​​zzリバースソルバー
概要:一般化されたFizzBu​​zzプログラムの出力が与えられると、プログラムに使用される要因と単語のリストを返します。 チャレンジの説明 使用する要素と単語のリスト、および開始する数を入力として取り込む一般化されたFizzBu​​zzプログラムを想像してください。たとえば、このプログラムの入力が 3 2,Ninja 5,Bear 7,Monkey プログラムから番号をプリントアウトするだろう3と100割り切れる数字に置き換える、2とNinja、数字が割り切れる5とBear、数字がで割り切れる7とMonkey。割り切れる数の場合、それらの用語の複数の場合、プログラムは、単語を連結し、NinjaBearor BearMonkeyやNinjaMonkeyorなどの内容を出力しNinjaBearMonkeyます。その入力の出力は次のとおりです。 3 Ninja Bear Ninja Monkey Ninja 9 NinjaBear 11 Ninja 13 NinjaMonkey Bear Ninja 17 Ninja 19 NinjaBear Monkey Ninja 23 Ninja Bear Ninja 27 NinjaMonkey 29 NinjaBear 31 Ninja 33 Ninja BearMonkey Ninja 37 Ninja 39 NinjaBear 41 NinjaMonkey 43 …
32 code-golf 

9
シーソーで一連の重みのバランスをとる
綱渡り 概要 重みのセットを表す3つの1桁の正の整数の入力が与えられた場合、レバーの効果を考慮して、中央のピボットの周りでバランスが取れるように、重みが配置されたシーソーのASCII表現を出力します。 各数値には、その値に等しい重みがあります。各数値のトルクは、重量にその中心からの距離を文字で乗算したものです。シーソーのバランスを保つために、シーソーの左側のウェイトの合計トルクは、このように右側のウェイトの合計トルクと等しくなければなりません。 入力 1〜9の範囲の3つの整数。ただし、タプル、3つのコンマ区切り値など、整数を入力するのは便利です。ただし、プログラムは任意の順序で数値入力を処理できる必要があります(つまり、値がソートされることを前提としない)。重複する番号を入力できます(2,3,2など)。 入力は常に数学的に有効な出力を許可します。そうでない場合、入力は無効です。 出力 出力は、シーソーの2行のASCII表現で、重みが設定されている必要があります。最初の行には数字があり、シーソー上でバランスを取るために間隔が空いています。 距離はトルクのゼロになる、スケールの真ん中に数字を配置することはできません。ピボットの左または右を含む1〜10文字の中心範囲からの有効な距離。 数字で占められていないスペースには、18個の下線文字があります(中央のアンダースコアと各辺に10個あり、数字で占められている3つの位置を差し引いています)。最後の行には、ピボットを表すスケールの中心に揃えられた単一のキャレット文字があります。 例 入力: 4,7,2 出力: ________7___42_______ ^ 7 * 2 = 4 * 2 + 2 * 3 数値はどちらの側にも出力できます。たとえば、これも有効です。 _______24___7________ ^ 2 * 3 + 4 * 2 = 7 * 2 数字は、バランスが取れている限りはかりのどこにでも配置できます。例: 入力: 3,1,5 出力: _____5________1__3___ ^ 5 * …

11
3フルーツのパイをいくつ作ることができますか?
3つのフルーツのパイは、3つの異なるフルーツでできています。あなたが持っている5つの果物の量から作ることができる最も3つの果物のパイは何ですか? たとえば、 1 apple 1 banana 4 mangoes 2 nectarines 0 peaches あなたは2パイを作ることができます: apple, mango, nectarine banana, mango, nectarine 入力: 5つの非負整数、またはそれらのリスト。 出力:これらの量のフルーツから作成できる3フルーツパイの最大数。最少バイトが勝ちます。 テストケース: 1 1 4 2 0 2 2 2 2 2 2 3 0 6 0 6 0 0 12 5 3 2 1 5 1 14 14 …
32 code-golf 

4
ルービックキューブのIDシーケンス
移動シーケンスは、ルービックキューブ上の移動(ターン)のシーケンスです(表記については、下をご覧ください)。空の移動シーケンスのほかに、他の多くの移動シーケンスがあり、キューブにはまったく影響しません。これらの移動シーケンスをIDシーケンスと呼びます。 これらのIDシーケンスの一部は、U2 R R' U2またはなどのように決定するのが明らかU D2 U' D2です。最初のものでは、2つのランダムな動きが行われU2 R、その後すぐに元に戻されR' U2ます。2番目は似ています。最初の2つのランダムな動きU D2とその後は元に戻されますが、順序は逆U' D2です。これは機能します。移動Uは上層のD2部分のみに影響し、移動は下層の部分のみに影響するためです。これら2つの移動シーケンスの視覚化を見ることができます。 他の同一性シーケンスはまったく明らかではないかもしれません。たとえば、シーケンスR' U' R' F' U F U' R' F R F' U' R U2 R。かなり長いですが、キューブにはまったく効果がありません。 移動記法 移動は、立方体の6つの面のうちの1つの1つのレイヤーの回転を表します。動きは、顔を表す1文字と、それに続く回転角度を表すオプションの接尾辞で構成されます。 文字とそれに対応する面は、U(上-上を向く面)、D(下-下を向く面)、R(右-右を向く面)、L(左-左を向く面)です。 、F(正面-あなたに面する側面)およびB(背面-あなたから離れる面)。 接尾辞がない場合、顔は時計回りに90度回転し、接尾辞'は顔が反時計回りに90度回転し、接尾辞は顔が2時計回りに180度回転します。 表記に問題がある場合は、http://alg.cubing.netを使用するだけで、そのような移動シーケンスを視覚化できます。 チャレンジ あなたの仕事はプログラムを書くことで、それは移動シーケンスがアイデンティティかどうかを決定します。 完全なプログラムまたは関数を作成できます。入力として(STDIN、コマンドライン引数、プロンプト、または関数引数を介して)移動シーケンス(移動はスペースで区切られます)を含む文字列を受け取り、ブール値または対応する整数(戻り値またはSTDOUTを介して)を出力する必要があります( True-1-IDシーケンス/ False-0-IDシーケンスではありません)。 接尾辞'がプログラミング言語で問題を引き起こす場合は、数字ではなく別の記号を使用できます。R F2 U3許可されていません。 これはcodegolfであるため、最短のコード(バイト単位)が優先されます。 テストケース "" -> True "U2 R R' U2" …

30
ロシアンルーレット、リローデッド
ロシアンルーレットで遊ぼう! 通常、これは最短のMOD 6プログラムを作成する競争になりますが、クリックするたびに勝つ可能性が低くなるため、あまり現実的ではありません。ルールは次のとおりです。 本物の6シューティングゲームをエミュレートします。 1つの弾丸が6つの部屋の1つに配置され、バレルは演奏前に1回だけ回転します。 n回目の試行で負ける可能性は1/6です。 n回試行した後 に負ける確率は1 /(6-n)です 最大で6回の試行で負けることが保証されています。 負け: テキストを表示する *BANG!* プログラムを終了します。 受賞: 「勝つ」とは、銃が発射しないことを意味しますが、弾丸はハンマーに近い1つの部屋です。 テキストを表示する *click* プログラムを終了する機能とともに、「トリガー」をユーザーに提示します(「ctrl + c」、以下を参照)。 プログラム固有: トリガーを引くことは、最初の試行を含む何らかの形式のユーザー入力です。(これは、キーストローク、マウスクリックなど何でも構いません。テキストプロンプトは必要ありません。) 終了するまで、プログラムのインスタンスは1つだけ許可されます。(プログラムの新しいインスタンスを実行することは、バレルに良いスピンを与えることに似ています。つまり、次のクリックで負ける確率は1/6にリセットされます。) 最短のコードが勝ちます! リーダーボード コードスニペットを表示 <style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } …
32 code-golf  game  random 

13
5318008-電卓の楽しみ
世界中の学校で、子供たちはLCD計算機に数字を入力し、「Boobies」という言葉を作成した後、逆さまにして笑い声に変えます。もちろん、これは最も一般的な単語ですが、生成できる他の多くの単語があります。 ただし、すべての単語の長さは10文字未満でなければなりません(ただし、辞書にはこれより長い単語が含まれているため、プログラムでフィルターを実行する必要があります)。この辞書には大文字の単語がいくつかあるので、すべての単語を小文字に変換します。 英語の辞書を使用して、LCD計算機に入力できる単語のリストを作成します。すべてのコードゴルフの質問と同様に、このタスクを完了するための最短のプログラムが勝ちます。 私のテストでは、次のように入力して収集したUNIXワードリストを使用しました。 ln -s /usr/dict/words w.txt または、ここで入手してください。 たとえば、上記の画像は35007、計算機に数値を入力し、逆さまにすることで作成されました。 文字とそれぞれの番号: b:8 g:6 l:7 私:1 o:0 s:5 z:2 h:4 e:3 数字がゼロで始まる場合、そのゼロの後に小数点が必要であることに注意してください。数字は小数点で始まってはいけません。 これはMartinBüttnerのコードだと思う。 /* Configuration */ var QUESTION_ID = 51871; // Obtain this from the url // It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; /* …
32 code-golf 

3
PPCGユーザー名をゴルフダウン
チャットで行ったコメントとそれに続く会話に触発されて、この挑戦​​をしました。 この辺りのイニシャルで言及されているのは私だけですか?私たちはすべてゴルフをすることについてです。MBとD-nobがあり、... O. 私が「CH」として知られているなら、他の誰もが同様に初期ベースのニックネームを持つべきだと思います。 以下は、プログラミングパズルとコードゴルフのトップ100ユーザーの評価リストです。 Martin Büttner Doorknob Peter Taylor Howard marinus Dennis DigitalTrauma David Carraher primo squeamish ossifrage Keith Randall Ilmari Karonen Quincunx Optimizer grc Calvin's Hobbies ugoren Mig gnibbler Sp3000 aditsu histocrat Ventero xnor mniip Geobits J B Joe Z. Gareth Jan Dvorak isaacg edc65 Victor steveverrill feersum …
32 code-golf  string 

9
アスキーアートオブザデイ#2-フロースネーク
A もGosper曲線として知られているフロースネークは、単純なプロセスの各注文/反復してサイズが指数関数的に増殖する、フラクタル曲線です。以下は、建設の詳細とさまざまな注文のいくつかの例です。 Order 1 Flow Snake: ____ \__ \ __/ 注文2フロースネーク: ____ ____ \__ \ \__ \__/ / __ __/ ____ \ \ \ / __ \__ \ \/ \ \ \__/ / __ \/ ____ \/ / \__ \__/ __/ Order 3 Flow Snake: ____ ____ \__ \ \__ …

8
矢印はどこにありますか?
矢印はどこにありますか? この課題の目標は、矢印をたどって、それが指しているキャラクターを出力することです。 例 入力: d S------+ b | | c +--->a 出力: a 入力: S-----+---a->c | V b 出力: b 矢印はcで分割されているため、矢印は指していません。これはa、このパスが矢印の先に到達しないことを意味します。 入力: a S s | | V V b c 出力: b 入力: d s<+S+--V ||| Q -++ 出力: Q このパスは、で始まりS、右に下がり、右に上がり、次にQに向かいます。パスはからSにまっすぐに進まないことに注意してください+。 入力: d s-+ +-S +--+ +-->b | | …
32 code-golf 

4
コード説明フォーマッター
成功したコードゴルフの提出は、本質的に、至る所に狂ったシンボルで満たされています。投稿を理解しやすくするために、多くのコード愛好家は自分のコードの説明を含めることを選択します。彼らの説明では、コードの行は垂直分解図に変わります。 たとえば、これが私のコードだった場合: 1_'[3:~2@+]` 作成できる多くの図の1つは次のようになります。 1 _' [ ] [3: ] [ ~ ] [ 2@ ] [ +] ` 目標 この課題では、コードの行を取得し、説明テキストを簡単に追加できるダイアグラムを作成する説明自動フォーマットツールを作成します。 これをより便利な課題にするために、ユーザーはフォーマット文字列を提供することにより、各行の内容を指定できます。書式設定文字列は、文字のみを含む2行目でA-Za-z、プログラムと同じ長さです。文字は、説明の中でプログラムの文字を印刷する順序を示しています。 以下は、ブラケットのような書式設定のない I / Oの例です。 123423 AabcBC 1 2 3 2 3 4 ブラケット プログラム内の複数の文字が同じ優先度レベルを持っている場合、その文字セットはコードの単一ブロック(グループを形成する場合)またはブラケットセット(それらが間に他の文字を含む場合)として機能します。一般的なルールは簡単です: 優先順位の高い他のすべての文字が図のその上の行に既に表示されるまで、文字は図の行に表示されません。 同じ優先順位の文字は常に同じ行に印刷されます。特定の文字が行に表示される場合、同じ優先順位の他のすべての文字が行に表示されます。 同じ優先順位の文字のセットは、それに囲まれた他のすべての文字が少なくとも1回現れるまで、各行に現れ続けます。これにより、「ブラケットのような」構造が可能になります。bceab優先度がある場合、b文字は2行目に表示され(2番目に高い優先度です)、すべてのcea文字が表示されるまで表示され続けます。優先度文字列がabcadeafgaである場合、すべてがその中にbcdefg含まれていると見なされ、4 aが出現するまで4 がすべて表示され続けgます。 その他のフォーマット要件 出力のすべての行は同じ長さ(入力行の長さ)で、必要に応じてスペースが埋め込まれている必要があります。入力プログラム行にはスペースが含まれる場合がありますが、これらのスペースにも優先文字が与えられます。出力/入力の末尾の改行はオプションです。 得点 これはコードゴルフで、最少バイトが勝ちます。 例 ここに、より複雑なフォーマットを使用したコードのコメント例を示します。 1_'[3:~2@+]` abbcddeffgch 1 …

2
ファイナリ番号を標準化する
バックグラウンド ほとんどの人は、10進数、2進数、16進数、8進数などのいくつかの整数ベースシステムに精通している必要があります。たとえば、16進法では、abc.de 16という数字は次を表します。 a*16^2 + b*16^1 + c*16^0 + d*16^-1 + e*16^-2 ただし、無理数のような非整数ベースも使用できます。そのようなベースは、黄金比φ=(1 +√5)/ 2≈1.618 ...を使用します。これらは、整数ベースと同様に定義されます。数ようabc.deのφは、(ここに、eは桁の整数である)を表すことになります a*φ^2 + b*φ^1 + c*φ^0 + d*φ^-1 + e*φ^-2 原則として、数字のいずれかが負になる可能性があることに注意してください(私たちはそれに慣れていませんが)-先行する負の数字を表します~。この質問の目的のために我々はから数字に自分自身を制限~9する9ので、我々は明確に(間にチルダ付き)1つの文字列として番号を書くことができます。そう -2*φ^2 + 9*φ^1 + 0*φ^0 + -4*φ^-1 + 3*φ^-2 と書かれ~290.~43ます。私たちは、このような番号に電話phinary数。 進数は常に標準形式で表すことができます。これは、数字1とのみを使用し0、11どこにも含まず、オプションのマイナス記号を付けて数字全体が負であることを示すことを意味します。(興味深いことに、すべての整数は標準形式で一意の有限表現を持っています。) 標準形式ではない表現は、次の観察を使用して常に標準形式に変換できます。 011 φ = 100 φ(なぜならφ 2 =φ+ 1) 0200 φ = 1001 …

3
自己交差ポリゴンの面積
2D空間内の頂点のリストによって定義される、潜在的に自己交差するポリゴンを考えてみましょう。例えば {{0, 0}, {5, 0}, {5, 4}, {1, 4}, {1, 2}, {3, 2}, {3, 3}, {2, 3}, {2, 1}, {4, 1}, {4, 5}, {0, 5}} このようなポリゴンの領域を定義する方法はいくつかありますが、最も興味深いのは偶奇規則です。平面内の任意の点を取り、その点から無限に(任意の方向に)線を引きます。その線が多角形を奇数回交差する場合、ポイントは多角形の領域の一部であり、多角形を偶数回交差する場合、ポイントは多角形の一部ではありません。上記のポリゴンの例では、輪郭と偶奇領域の両方があります。 通常、ポリゴンは直交しません。面積を数えやすくするために、このような単純な例を選択しただけです。 この例の領域は17(他の定義または領域がもたらす可能性のあるものではない、24または33そうではない)です。 この定義では、多角形の面積はその巻き順とは無関係です。 チャレンジ 多角形を定義する整数座標を持つ頂点のリストが与えられたら、偶奇規則の下で面積を決定します。 関数またはプログラムを作成し、STDINまたは最も近い代替、コマンドライン引数または関数引数を介して入力を取得し、結果を返すか、STDOUTまたは最も近い代替に出力できます。 前処理されていない限り、任意の便利なリスト形式または文字列形式で入力を取得できます。 結果は、有効桁数が6桁(10進数)の浮動小数点数か、浮動小数点表現が有効桁数が6桁の有理数結果でなければなりません。(合理的な結果を生成する場合、それらは正確になる可能性が高いですが、参照用の正確な結果がないため、これを要求することはできません。) 適切なデスクトップマシンで、10秒以内に以下の各テストケースを解決できる必要があります。(このルールには多少の余裕がありますので、最善の判断をしてください。私のラップトップで20秒かかる場合、疑いの恩恵があります。1分かかる場合、私はしません)。非常に寛大なはずですが、十分に細かいグリッドでポリゴンを離散化してカウントするアプローチ、またはモンテカルロのような確率的アプローチを使用するアプローチを除外することになっています。優れたスポーツマンであり、いずれにしても制限時間を満たすことができるようにこれらのアプローチを最適化しようとしないでください。;) ポリゴンに直接関連する既存の関数を使用しないでください。 これはコードゴルフであるため、最短の提出(バイト単位)が優先されます。 仮定 すべての座標は、範囲内の整数です0 ≤ x ≤ 100、0 ≤ y ≤ 100。 少なくとも3、多くても50頂点があります。 頂点が繰り返されることはありません。また、頂点が別のエッジにあることもありません。(ただし、リストには同一直線上の点がある場合があります。) テストケース …

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