タグ付けされた質問 「code-golf」

コードゴルフは、ソースコードの最小バイトで特定の問題を解決するための競争です。

15
次のかなを出力する
日本語の仮名文字は、日本語の単一の音に対応します。ん(n)を除き、他のすべての仮名は子音部分と母音部分で構成されます。日本語の仮名には自然な順序があります。これは一種の「アルファベット順」であり、通常は10行5列の表に配置されます。 | a i u e o ----------------------------- * | a i u e o k | ka ki ku ke ko s | sa si su se so t | ta ti tu te to n | na ni nu ne no h | ha hi hu he ho …

1
パッキングサークル
この画像を見てください。具体的には、端の穴の配置方法。 (画像ソース) この画像のパイプが六角形のパターンでどのように詰められているかに注目してください。2Dでは、六方格子が円の最も密なパッキングであることが知られています。この課題では、円のパッキングの周囲の最小化に焦点を当てます。境界線を視覚化する便利な方法の1つは、輪のコレクションの周りに輪ゴムを置くことを想像することです。 タスク n入力として正の整数を指定するnと、できるだけ密にパックされた円のコレクションが表示されます。 規則と説明 円の直径は1ユニットであると仮定します。 最小化される変数は、グループ内の円の中心の凸包であると定義されている周囲の長さです。この画像を見てください: 直線の3つの円の周囲は4(凸包は2x0の長方形で、2は2回カウントされます)、120度の角度で配置された円の周囲は約3.85、三角形の周囲はわずか3ユニットです。円の中心ではなく、円の端だけを見ているため、実際の境界線となる追加のpi単位を無視していることに注意してください。 任意のに対して複数のソリューションが存在する可能性があります(ほぼ確実に存在します)n。これらのいずれかを自由裁量で出力できます。向きは関係ありません。 円は六角格子上になければなりません。 円の直径は少なくとも10ピクセルである必要があり、塗りつぶしてもしなくてもかまいません。 プログラムまたは関数のいずれかを作成できます。 入力は、STDINを介して、関数の引数として、または最も近いものとして取得できます。 出力は表示されるか、ファイルに出力されます。 例 以下に、1から10までのnの有効および無効な出力の例を示します(有効な例は、最初の5つのみです)。有効な例は左側にあります。右側のすべての例は、対応する有効な例よりも大きな境界線を持っています。 この課題の作成を支援してくれたsteveverrillに感謝します。ハッピーパッキング!

2
燃えるようなドアノブキーボード!
さて、 GitHub、Reddit、およびその他のサイトでのDoorknobのユーザー名は KeyboardFireです。それは私にアイデアを与えます... タスク あなたは、特別なキーボードを製造しているKeyboardFire Inc.で働いています。そして、「特別」とは、キーを押すたびに、家の中にあるものが燃えることを意味します!新しいKeyboardFireドアノブシリーズでは、火をつけるオブジェクトはドアノブです。 しかし、愚かな政府の規制のため、ユーザーは家のどのドアノブが火を灯すかを知る必要があります。 QWERTYキーボードの一部のこのASCIIアートを検討してください。 1|2|3|4|5|6|7|8|9|0 q|w|e|r|t|y|u|i|o|p a|s|d|f|g|h|j|k|l z|x|c|v|b|n|m (|はキー間の境界を表します。) この正確なASCII描画は、種類の「グラフ」として扱うことができます。範囲内の各文字に[a-z0-9] は、x(水平)およびy(垂直)インデックスが(0,0)あり1ます。たとえば、文字dには座標があります(2,6)(パイプとスペースは座標計算に含まれます)。 次に、各ユーザーの家について考えてみましょう。すべての家は20x4 ASCIIアートとしてトップダウンビューで描画できます(破壊的なキーボードを販売することが合法であるこの世界では、すべての家は同じサイズです)。を使用Dして、家の各ドアノブの位置をマークできます。以下に例を示します。 D D D D D D D これを「ハウスマップ」と呼びます。(はい、それはたくさんのドアノブです!) いずれかのキーを押すと、最寄りのドアノブが点灯します。たとえば、文字の前の座標を取得した場合d、最も近いドアノブ(マンハッタン距離による)は座標にあり(1,4)ます。これは、手紙dに当たったときに火がついたドアノブです。炎のドアノブをでマークするFと、結果は次のようになります。 D D D D F D D スペック プログラムには2つの入力があります。 パターンに一致する文字列[a-z0-9]+。 家の地図。これは、文字列、文字列のリスト、または同等のものです。 文字列の各文字を調べて、それぞれのドアノブに火をつける必要があります(文字をに変更しますF)。最寄りのドアノブがすでに燃えている場合は、そのままにしておきます。この方法を使用して火で照らすことができるドアノブが複数ある場合は、好きな方を照らすことができます。 文字列全体がこの方法で処理された後、結果のハウスマップを印刷する必要があります。 コードゴルフ、最短プログラムが勝ちます。通常のように禁止されている標準的な抜け穴。 例 文字列: helloworld123 ハウスマップ: D D D D D D …

2
正規表現のコンパイル(置換による)
あなたの仕事は、正規表現の各文字の置換を指定することにより、正規表現をコンパイルすることです... 正規表現 正規表現はこれらをサポートします REGEX = (LITERAL REGEX / GROUP REGEX / STAR REGEX / ALTERNATIVE) LITERAL = 1 / 0 GROUP = '(' REGEX ')' STAR = (LITERAL / GROUP) '*' ALTERNATIVE = '('REGEX ('|' REGEX)*')' なぜ1または0だけなのですか?単純化のためです。したがって、正規表現には次の文字のみが含まれます。 *()|10 次のように解釈されます。 * Kleene starです(左のグループまたはリテラルを0回以上繰り返します)。 | 代替です(左側の正規表現または右側の正規表現のいずれかが一致する場合に一致します)。 () グループ化しています。 1 文字1に一致します。 0 文字0に一致します。 …

17
ダイヤモンドパズル!
説明: 昨年の数学の授業では、宿題について、これらの非常にシンプルなものを時々取得しましたが、ダイヤモンドパズルと呼ばれる同様に迷惑な質問がありました。これらは基本的に私たちが合計を与える質問であり、製品は乗算されたときに製品を与え、加算されたときに合計を与える2つの数を見つけるように求められました。私はそれらを解決する方法を知っていた唯一の方法(代数I)で、製品の要因をリストし、合計するために追加された要因を確認するだけだったので、これらは夢中になりました。(当時Quadraticsを使用する方法を知らなかったので)言うまでもなく、彼らは数学に挑戦していませんでした。しかし、ちょうどプログラムを書いたほうがいいと思いました。それが今日のあなたの挑戦です!ダイヤモンドパズルを解決できるプログラムを作成します。 例 ぼやけた画像についての謝罪、私が見つけることができる最高の。また、泡の中の数字は無視してください。菱形の上部は製品、下部は合計、左右は2つの数字です。回答は次のとおりです(これらはテストケースでもあります)。 9、-7 -2、-1 5、8 -9、-9 ルール: これを実現する定義済みの関数またはクラスを使用することはできません。 あなたのコードは完全なプログラム、または答えが見つかったら返されるか出力する関数でなければなりません 入力は合計と積であり、関数パラメーターまたはユーザー入力として入力されます 仕様: 2つの数値、合計、および積は常に整数であると仮定します。 2つの答えは両方とも-127から127の間です。 入力は2つの整数(合計と製品)になります。 これはコードゴルフであるため、最短バイトカウントが優先されます。標準の##言語名、バイト数で回答にタイトルを付けてください 編集:また、ドアノブはこれが本質的に「x ^ 2 + bx + cの形の2次を因数分解する」ことを指摘しました。これは、この課題について考え、アプローチする別の方法です。:D
21 code-golf  math 

2
ドロップキャピタルのフォーマット
前書き 段落にドロップキャピタルを追加するプログラムまたは関数を作成します。プログラムは、書式設定するテキスト、列幅、および大文字を削除する行数を入力します。ドロップキャピタルは次のようになります。 Lines: 2 3 4 Drop capital: A| A.| A..| ~' ..| ...| etc. ~~' ...| ~~~' これはタイポグラフィ関連の課題です。 入力 印刷可能なASCII文字(タブまたは改行なし)と1より大きい2つの整数の文字列を入力します。 1つの整数は、出力に必要な列の数です。 もう1つは、ドロップキャピタルがまたがる行の数です。 テキスト文字列には、単一のスペースで区切られた単語が含まれます。 どの単語も列幅より長くなることはないと仮定します。 あれは、column width > longest word + drop capital height すべての行には少なくとも1つの単語があります。 この課題では、単語はスペース以外の文字で構成されます。 入力は、上記の規則に従って任意の便利な形式にすることができます。 出力 指定された行数のドロップキャピタルを含むテキストの左寄せブロック。 行には、列の幅より長くなることなく、できるだけ多くの単語を含める必要があります。 ドロップキャピタルと各行の残りの部分の間にスペースがあります。 1つの末尾スペースまたは改行が許可されます。 例 Lines: 2 Columns: 10 Text: The quick …

2
その胚芽はどこに行きましたか?
前書き あなたは細菌の移動パターンを研究している生物学者です。あなたの研究チームはペトリ皿にそれらの束を持っており、あなたは彼らの活動を記録しています。残念ながら、あなたは深刻な資金不足で、ビデオカメラを買う余裕がないので、定期的に皿の写真を撮るだけです。あなたの仕事は、これらの写真から細菌の動きを追跡するプログラムを作成することです。 入力 入力は、適切な形式の2つの2Dキャラクター配列で、シャーレの連続写真を表します。両方の配列で、文字.は空のスペースをO表し、胚芽を表します(必要に応じて、任意の2つの異なる文字を選択できます)。また、 "after"配列は、 "before"配列から、いくつかの細菌を4つの基本方向の1つに1ステップ移動することによって取得されます。特に、配列の形状は同じです。細菌は同時に移動するため、邪魔にならない場合は、別の細菌が既に含まれているスペースに移動する可能性があります。"before"配列の境界には空のスペースのみが含まれ、少なくとも1つの胚芽があることが保証されています。したがって、次は有効な入力のペアです。 Before After ...... ...... .O..O. ....O. .OO.O. .OO.O. ...... ..O... 出力 出力は、入力と同じ形式の文字の単一の2D配列です。これは>^<v、移動の方向に応じて、移動した胚芽をのいずれかで置き換えることにより、「前の」配列から取得されます(ここでは4つの異なる文字を使用することもできます)。いくつかの出力が考えられますが、そのうちの1つだけを指定する必要があります。上記の例では、1つの可能な正しい出力は ...... .v..O. .>v.O. ...... 不必要な移動は出力で許可され、細菌は場所を入れ替えることができるため、以下も有効です。 ...... .v..v. .>v.^. ...... ルールとスコアリング 完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 比較的効率的なアルゴリズムに興味がありますが、ブルートフォースを完全に禁止したくありません。このため、最新のCPUで10分以内に最後のテストケースを解くと、-75%のボーナスがあります(ほとんどのソリューションをテストすることはできませんので、ここで信頼します)。免責事項:高速なアルゴリズムが存在することは知っていますが(「ディスジョイントパスの問題」を検索してください)、自分で実装していません。 追加のテストケース Before ...... .O..O. ..OO.. ...... After ...... ..O... ...OO. ..O... Possible output ...... .>..v. ..vO.. ...... Before ....... .OOOOO. …

4
タイムマシンクインを書く
入力として文字列と整数nを受け取り、出力するプログラムを作成します。 数n回前にプログラムに渡された文字列。 次の呼び出しに使用される新しいプログラム。 プログラムの外部にデータを保存することはできません。また、プログラムはチェーン内の以前のプログラムを呼び出すことはできません。文字列が存在しない場合は、空の文字列を出力します(ただし、次のプログラムは引き続き出力します)。 program_n連続した各プログラムに表記法を使用する実行例(もちろん、[This text is the nth program]実際のコードに置き換えられます。) $ program_1 "One" 1 [This text is the second program] $ program_2 "Two" 1 One [This text is the third program] $ program_3 "Three" 2 One [This text is the fourth program] $ program_4 "Four" 2 Two [This text is …
21 code-golf  quine 

2
N-queen-equine quine
よく知られているNクイーンの問題には、クイーンとナイトが関係し、「かなり難しい」 と言われている変種があります1。問題のステートメントは次のとおりです。 駒が他の駒を攻撃しないように、同じ数の騎士♞と女王♛をチェス盤に配置する必要があります。ボードに配置できるピースの最大数はいくつですか?また、いくつの方法でそれを行うことができますか? このコードゴルフチャレンジでは、3〜32の入力nが(言語に最適な方法で)与えられます。与えられたnに対して、上記の問題に対するゼロ以上の解があるかもしれません。解決策がない場合は、何も出力/返さない必要があります(nil、空の文字列、false、...)。それ以外の場合、2つの結果を与える必要があります。 サイズnのソリューションボード(以下を参照)。クイーンまたはナイトのチェスの駒を、攻撃を受けている駒なしで追加することはできません。同数の女王と騎士がいるに違いない。 プログラムのソースには入力を受け付けず、(I)が得られる実行する別の溶液(または何も同じサイズ)のn次の溶液のための(ii)の他のプログラムと同様に、同じ形式で、(など...)。 ご了承ください: プログラムのシーケンスは、同じボードを2回返してはならず、サイズnの問題に対して考えられるすべてのソリューションをカバーし、最終的に終了する必要があります(出力は生成されません)。 2つの値を返すか、1つを返してもう1つを印刷するか、2つの戻り値を印刷することができます。 ただし、ボードと次のプログラムの両方を印刷する場合、ボードを次のプログラムの一部とみなしてはなりません(コメントでボードを印刷するか、標準出力とエラーストリームの両方を使用することをお勧めします)。 戻り値としてのプログラムは、クロージャではなく文字列でなければなりません。 ボードフォーマット ボードは、サイズnの正方形です。 ボードセルは空、女王、または騎士にすることができます。 セルの種類ごとに異なる値を選択する必要があります(つまり、ボードの印刷時にQ、N以外の記号を使用できます)。 文字列以外のボードを返す場合、ボードのn 2個の値の順序付きコレクションである必要があります(行列、ベクトル、または行/列優先順のリストなど)。 ボードを印刷する場合、正方形または線として印刷できます。たとえば、サイズ4のソリューションボードは、次のように印刷できます(スペースは不要です。シンボルは任意です)。 Q - - - - - - - - - - - - - N - もしそうなら、出力することもできます: ♛ · · · · · · · · · · · · · ♞ …
21 code-golf  quine  chess 

3
プルートフライバイを実行する
おめでとうございます!新しいHorizo​​ns 2プロジェクトに取り組むために、NASAに雇われました。 悲しいことに、最近大幅な予算削減が行われたため、経営陣は計画されていたuto王星のフライバイ全体を偽造することにしました(70年代の月面着陸の場合と同様)。 あなたの仕事は、フォーマットとして日付を入力として受け入れyyyymmdd、この日付のPl王星の偽の写真を提供するプログラムを書くことです。入力された日付は2015年または2016年になります。 写真はASCII文字の15x15グリッドです。グリッド上の文字の範囲内にx座標とy座標があります。[-7, 7]左上の文字はで(-7, -7)、右下の文字はにあり(7, 7)ます。 写真は次のルールで計算されます。 プローブは、2015年12月25日にPl王星に最も近くなります dPl王星までの距離は次の式で与えられます。square root of ((difference in days to christmas) ^ 2 + 10) r写真上のPl王星の画像の半径は次のように与えられます:22 / d (x, y)グリッド上の座標を持つ文字を設定する必要があります# ifx^2 + y^2 <= r^2 ; それ以外の場合は、スペースに設定する必要があります。 位置での星があり(-3, -5)、(6, 2)、(-5, 6)、(2, 1)、(7, -2)。星はドット.で表され、もちろんPl王星によって隠されています。 もう1つ:NASA理事会は、Pl王星での生命の発見が大幅な予算増加につながる可能性が高いという結論に達しました。その後、プログラムはPl王星に生命の手がかりを追加する必要があります。 Pl王星までの距離が4以下の場合、座標にプルトニアンを追加します(-3,-1)。(^_^) 入力用の写真の例20151215:(このコードと同様に、コードにはすべての改行が必要です) . # . ### ##### ###. # …

9
数字の合計1〜7
チャレンジ N28以上の正の整数が指定された場合、N各桁1を71回だけ使用して合計する数値のリストを出力します。プログラムまたは関数として与えることができます。 数字を繰り返し使用せずに1回使用する限り、数字は単独で表示することも連結することもできます。たとえば、[12, 34, 56, 7]isは有効で、is [1, 27, 6, 4, 35]およびですが、orではあり[1234, 567]ません。番号がリストされている順序は重要ではありません。[123, 34567][3, 2, 1476] N1〜7で作成できない場合は、何も返さないか出力します。 その他の情報 これはコードゴルフなので、10月15日木曜日までのバイト単位の最短コードが勝ちです。 コメントで質問をしてください。 チャレンジで指定していないことはすべてあなた次第です。 標準の抜け穴は許可されていません。 例 これらにより、混乱が解消される場合があります。 入力 28 出力 [1, 2, 3, 4, 5, 6, 7] 入力 100 出力 [56, 7, 4, 31, 2] 入力 1234567 出力 [1234567] 入力 29 出力 何も、29は無効です。 入力 …
21 code-golf  math  number 

9
どうして?金持ちのプログラマーを喜ばせるために!
コンパイラに「なぜ?」と尋ねたいと思ったことはありませんか。私たちのほとんどは、コードが正常に機能していないことに不満を感じています。したがって、Mathworksはwhy質問に答える素敵な小さな関数を実装しました。MATLABからいくつかの例を示します。 why The programmer suggested it. why To fool the tall good and smart system manager. why(2) You insisted on it. why(46) Bill insisted on it. あなたの仕事はwhyあなたの言語で関数を実装することです。この関数は、入力引数の有無にかかわらず動作する必要があります(あるいは、入力0またはを使用します-1)。関数には名前を付ける必要がありますwhy(または、why(n)STDIN に書き込むと、適切な文字列が出力されるはずです)。 引数が指定されていない場合、または引数がゼロまたは負の場合、出力文字列はランダムで有効なフレーズでなければなりません。だから、機能があるはずwhy、why()、why(0)またはwhy(-1)そのランダムな文を返します。 入力引数nが指定された場合(STDINではなく関数引数)、出力はn番目の文字列(以下で定義)でなければなりません。したがって、why(1)常に同じ結果を出力(印刷/表示)する必要があります。 文は次のように構成されています(タイプ1、タイプ2、特殊)。すべての文はで終わり!ます。 "Person" "ending" ! "Verb" "adjective" "Person" ! A list of special cases 人のリスト: Stewie Peter Homer The programmer The …
21 code-golf 

4
フランス語で時間を伝える
Bonjour、PPCG!Quelle heure est-il?これはフランス語で何時かということを意味します。まさにそれがまさにこの挑戦の目的です。 フランス語で(少なくとも正式に)時間を伝えることは、英語で時間を伝えることとは少し異なります。Il est(It is)で時間を告げます。その後、あなたは続く時間入れユール(時を)。(フランス語の番号がわからない場合は、http://blogs.transparent.com/french/french-numbers-learn-how-to-count-from-1-to-1000/のリストをご覧ください)。それが1時である場合は、これを回避します。正午にはmidi(ヒュールなし)を使用し、深夜にはminuitを使用します。 分が00でない限り、その後に分数を続けます。ただし、これにはいくつかの例外があります。15分間はet quartと言い、30分間はet demiと言います。30分後の場合は、時間数を1つ増やし、moinsと60-分という単語を追加します。したがって、午後6時40分は最低9月のheures moins vingt(vingt = 20)です。45分はクォートです。 最後に、時刻で終了します。午前中(午前1時から午後12時まで)にdu matinと言います。午後(主観的ですが、午後1時から午後5時と定義します)、de l'apres-midiと言います(技術的には、eの上にアクセントがあるはずですが、ehになります)。そして、夜(午後5時から午前12時)については、「デュソワール」と言います。真夜中と正午(minuitとmidi)には、これらを後で入れないことに注意してください-使用する時間に基づいて時刻が暗黙指定されます。 おそらくすでに確認したように、ここでの課題は、これらのルールを使用して現在の現地時間をフランス語で出力することです。さまざまな時点でのサンプル出力は次のようになります。(カッコ内の時刻は明らかに印刷する必要はありません、それはちょうどそこにあるので、あなたは何時かを知っています): Il est sept heures du matin. (7:00 A.M) Il est deux heures de l'apres-midi. (2:00 P.M) Il est une heure du matin. (1:00 A.M) Il est huit heures du soir. (8:00 P.M) Il …

18
整数パーセント
正の整数のリストを受け取り、同じ位置にある対応する整数の合計のパーセントに近い整数のリストを返す関数を作成します。 返されるリスト内のすべての整数は、正確に100まで加算する必要があります。渡された整数の合計は0より大きいと仮定できます。どちらの方向でも1を超えてオフになりません。 p([1,0,2]) -> [33,0,67] or [34,0,66] p([1000,1000]) -> [50,50] p([1,1,2,4]) -> [12,12,25,51] or [13,12,25,50] or [12,13,25,50] or [12,12,26,50] p([0,0,0,5,0]) -> [0,0,0,100,0] これはcode-golfなので、バイト単位の最短コードが勝ちです!

15
プログラムのバイト数を数える
注2:@DigitalTrauma6バイトの長い回答を受け入れました。誰かがそれを打つことができるなら、私は受け入れられた答えを変えます。遊んでくれてありがとう! 注:10/14/15の午後6時(MST)に回答を受け付けます。参加したすべての人に感謝します! これがまだ質問されていないことに非常に驚いています(または、十分に検索しませんでした)。いずれにしても、この課題は非常に簡単です。 入力:文字列形式のプログラム。さらに、入力には以下が含まれる場合と含まれない場合があります。 先頭と末尾のスペース 末尾の改行 非ASCII文字 出力: 2つの整数、1つはUTF-8文字カウントを表し、もう1つはバイトカウントを表します。どの順序を選択してもかまいません。末尾の改行が許可されます。出力は、STDOUTに送信することも、関数から返すこともできます。2つの数値が互いに区別できる限り、ITはどの形式でもかまいません(2327は有効な出力ではありません)。 ノート: 改行を\nまたはと見なすことができます\r\n。 テスト用の素敵なバイトと文字のカウンターを次に示します。また、同じことがメタ投稿です(@Zeregesに感謝)。 サンプルI / O:( すべての出力はの形式です{characters} {bytes}) 入力: void p(int n){System.out.print(n+5);} 出力: 37 37 入力: (~R∊R∘.×R)/R←1↓ιR 出力: 17 27 入力: friends = ['john', 'pat', 'gary', 'michael'] for i, name in enumerate(friends): print "iteration {iteration} is {name}".format(iteration=i, name=name) 出力: 156 156 …

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