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

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

2
イノベーションの広がりのアイコンを数える
イノベーションとは、プレイヤーが先史時代から現代まで時代を超えて戦い、対戦相手よりも早く成果を上げようとするカードゲームです。 イノベーションの各カードはユニークであり、プレーヤーに多くのアイコンを提供します。各カードを2x3グリッドとして扱う場合、左端と下端の4つのスロットのうち3つは常にアイコンで占められます(黒い六角形のシンボルはカウントされません)。 ゲームには6種類のアイコン(城、王冠、葉、電球、工場、時計)があり、それらをcharsを使用して任意に表し012345ます。使用して#黒の六角形を表現するために、我々は、各カード上のアイコンを表すために4つの文字を使用することができます。たとえば、上記のカードは 0.. #.. 3.. 1.. -> 03#0 #331 355# 144# 3#0 331 55# 44# 現在、Innovationでは、プレイエリアのカードはパイル*にグループ化され、4つの方法のいずれかで展開されます。各例では、左端のカード03#0が山の一番上にあると仮定して、上のカードを使用します。 表示なし:一番上のカードのみが表示されます 0.. 3#0 左にスプレイ:一番上のカードが完全に表示され、下のすべてのカードの右3分の1も表示されます。 0..|.|.|.| 3#0|1|#|#| 右に表示:一番上のカードが完全に表示され、下のすべてのカードの左3分の1も表示されます 1|3|#|0.. 4|5|3|3#0 スプレイアップ:一番上のカードが完全に表示され、下のすべてのカードの下半分が表示されます。 0.. 3#0 --- 331 --- 55# --- 44# チャレンジ 入力は、2つの部分で構成されるスペースで区切られた単一の文字列になります。 スプレイ方向。これは!<>^、スプレイなし、左スプレイ、右スプレイ、または上スプレイをそれぞれ表すの1つです。 空ではないカードのリスト。各カードは4文字の長さで、charsで構成されてい012345#ます。左端のカードは山の一番上にあり、各カードには1枚だけが含まれています#。 回答は、関数、完全なプログラム、または同等のものです。スプレイの方向が最初か最後かを選択できます。つまり、以下の2つの形式のいずれかを選択できます。 > 03#0 #331 355# 144# 03#0 #331 355# 144# > …

5
それは多項式の因子ですか?
関数の(x-n)場合、多項式は係数で割り切れf(n)=0ますf。あなたの仕事:多項式関数のかどうかを判断するためf(x)で割り切れます(x-n)。 入力 入力はの形式です(x-n), (Polynomial)。 nが負の場合(x-n)、はの入力形式になることに注意してください(x+n)。多項式の場合、すべての指数はとして入れられ^ます。係数は変数の隣に書き込まれますx。多項式の例は次のようになります2x^2 + x^1。間にスペースはありません。用語xはとして入力されx^1ます。したがって、「通常」のように見えるもの(x - 1)はになります(x^1-1)。係数とべき乗は常に整数です。 係数1は、それが正しければ暗黙的ですx。すなわち、xとして解釈することができます1x 出力 ブール値。真実、または偽。 @AlexAに感謝します。これを明確にするのを手伝ってくれました! 例 Input:(x^1-1),(x^1-1) Output: True Input: (x^1+2),(2x^2+4x^1+2) Output: False Input: (x^1+7),(x^2-49) Output: True ルール これはcode-golfなので、バイト単位の最短コードが優先されます 残念ながら、スニペットリーダーボードの実装方法がわかりません。誰かがその方法を知っているなら、投稿を自由に編集してください。

2
完全に括弧で囲まれた式
今日、あなたの課題は、式のすべての可能な完全な括弧を生成することです。 入力は、演算子で区切られた1つ以上の用語を含む1行の印刷可能なASCIIです。入力にはスペースも含まれる場合があります。これらは無視する必要があります。用語は[a-zA-Z0-9]、演算子は[^ ()a-zA-Z0-9]です。入力は常に有効であると仮定することができます。 指定された式を完全に括弧で囲むすべての可能な方法を出力し、オプションの末尾の改行で改行で区切られます。 しないでください: 用語を括弧で囲む-演算子の周りのみを括弧で囲みます。 用語を並べ替えます。 スペースを出力します。 入出力の例: N N a * b (a*b) x_x_0 (x_(x_0)) ((x_x)_0) a * b|c|d (a*(b|(c|d))) (a*((b|c)|d)) ((a*b)|(c|d)) ((a*(b|c))|d) (((a*b)|c)|d) バイト単位の最小コードが優先されます。

10
算数の進行
あなたの仕事は、入力を分析し、それが算術シーケンスである場合、n番目の項の数式を出力することです。 入力 入力(STDINから)は、区切り文字(スペース、コンマ、またはセミコロン[いずれかあなたの好み])。入力例を次に示します。 12,14,16,18 //valid -3 4 5 1 -2 -4 //valid 45;35;-35 //invalid (only three numbers are present instead of the minimum of 4 numbers) 2,32;21,321 //invalid (it uses two different delimiters: `,` and `;`) 出力 プログラムは、最初に入力が算術級数であるかどうかを確認する必要があります。 算術進行(AP)の概要:すべてのAPには共通の違いがあります。これは、$ n $と$ {n-1} $番目の用語の違いです(基本的には$ a(n + 1)a-a (n)$ はシーケンスの関数です)。この違いは、APの$ n $の値に対して同じままです。共通の違いがない場合は、算術シーケンスではありません。n番目の項の値を計算するには、次の式を使用します$ …

5
LaTeXアクセントマクロを実装する
前書き LaTeX組版システムは、マクロを使用してアクセントを定義します。たとえば、文字êはによって生成され\hat{e}ます。この課題では、タスクはこの機能のASCIIバージョンを実装することです。 入力 入力は、印刷可能なASCII文字の空でない文字列です。改行は含まれません。 出力 出力は、2行で構成される文字列です。最初の行にはアクセントが含まれ、2行目には文字が含まれています。次のように入力から取得されます(A任意の文字を示します)。 すべてが\bar{A}置き換えられているAと_、その上に。 すべてが\dot{A}置き換えられているAと.、その上に。 すべてが\hat{A}置き換えられているAと^、その上に。 -10%のボーナスのために:すべてのが\tilde{A}置き換えられますAと~、その上に。 他のすべてのキャラクターの上にはスペースがあります。 たとえば、入力 Je suis pr\hat{e}t. 結果が出力されます ^ Je suis pret. ルールとスコアリング あなたは、文字\{}がマクロ\bar{}でのみ発生すると仮定することができ、\dot{}そして\hat{}(そして\tilde{}あなたがボーナスに行く場合)。すべてのマクロの引数は1つの文字長いので、正確です\dot{foo}し、\dot{}入力には発生しません。出力は、改行で区切られた文字列、または2つの文字列のリスト/ペアです。アクセントが正しい場所にある限り、任意の量の後続および先行空白を使用できます。特に、アクセントがない場合、出力は単一の文字列になります。 完全なプログラムまたは関数を作成できます。最小のバイト数(ボーナス後)が勝ち、標準の抜け穴は許可されません。 テストケース ボーナスなし: Input: No accents. Output: No accents. Input: Ch\hat{a}teau Output: ^ Chateau Input: Som\bar{e} \dot{a}cc\hat{e}nts. Output: _ . ^ Some accents. Input: dot hat\dot{h}a\hat{t}\hat{ }x\bar{x}dot Output: …

1
Ducttape the Ducttape
あなたの上司は、かなりの数の従業員(あなたを含む)が他人からコードを盗もうとすることを発見しました。彼は、他の人からコードを盗む人を見つけるのに使用できるプログラムを彼に書くようあなたに命じました。 仕事: 他の誰かからコード(の一部)がコピーされたかどうかを検出するプログラム/関数を作成します。 プログラムは、既存のすべてのプログラムと、2つの個別の入力からテストするプログラムを取得します。 編集:これまでのところ答えがないので、正規表現を使用することができます! 出力 プログラムは、スペースまたは改行で区切られたすべての盗まれたコードを出力する必要があります。(最後にスペースまたは改行がある場合があります。) 10個以上の連続したバイトで構成されているコードは、盗まれたりコピーされたと見なされます。(ごめんなさい、Javaファン!) 可能な限り出力する必要がありますが、重複するものがある場合は、どちらかを無視するか、両方を出力することができます。 ねじれ: 前述したように、ダクトテープコーディングも大好きです。つまり、コード内のすべてがスタック交換サイトからコピーアンドペーストされます!必要なもの(コードブロック内のコードに限定されない)を好きなだけコピーできます。(ただし、少なくとも10バイト)(盗まれた/コピーされたと見なされるものについては上記と同じルールです。)(この質問の後に投稿された回答は使用できない場合があることに注意してください。)コードから。 例: 入力:( x = document.getElementById("ninja'd");最初の入力) y = document.getElementById("id");(2番目の入力) 出力: = document.getElementById(" 入力:( foo最初の入力) foo+bar(2番目の入力) 出力: なし。 入力:( public static void main(String[] args)最初の入力) public static void main(String[] args)(2番目の入力) 出力: main(String[] args) 入力:( for(var i=0; i<x.length; i++){}最初の入力) for(var i=0; i<oops.length; i++){break;}(2番目の入力) …

4
有理数のp進ノルムを計算する
有理数のp進ノルムを計算する 入力として3つの整数m,n,p(ここでpは正の素数)を取り|m/n|_p、(完全に縮小された)分数としてp進ノルム(で示される)を出力する関数またはプログラムを作成します。Fermatのマージンは非常に小さいことが知られていますが、かなり不明な点は、コンピューターの画面が非常に小さいことです。したがって、コードをできるだけ短くして、Fermatの画面に収まるようにしてください。 定義 プライム考えるとp、すべての画分は、m/n一意のように(サイン無視して)書き込むことができ(a/b)* p^e、そのようなe整数でp除算どちらaもがb。のp進ノルムはm/nですp^-e。小数部が0の場合、特別なケースがあります|0|_p = 0。 出力形式は次のとおりである必要がありますx/y(たとえば1/3、整数の場合は両方10または同等10/1に許可され、負の数の場合は先頭にマイナスが必要です(例-1/3) 詳細 プログラムはstdin / stdoutを使用するか、有理数または文字列を返す関数のみで構成する必要があります。入力m/nが完全に削減されていないと想定する必要があります。あなたはそれpが素数であると仮定することができます。プログラムは、間の整数を処理できなければならない-2^28まで2^28、10秒以上を取るべきではありません。 組み込みの因数分解と素数チェック機能は許可されていません。また、組み込みの基本会話、およびp進の評価またはノルムを計算する組み込み関数も許可されていません。 例(wikipediaから盗まれた): x = m/n = 63/550 = 2^-1 * 3^2 * 5^-2 * 7 * 11^-1 |x|_2 = 2 |x|_3 = 1/9 |x|_5 = 25 |x|_7 = 1/7 |x|_11 = 11 |x|_13 = 1 面白いトリビア (この課題を知っている/読む必要はありませんが、動機として読むのがいいかもしれません。) (間違った言葉を使ったり、他の何かが間違っている場合、英語でこれについて話すことに慣れていません。) …

1
秘密のサンタ-再訪
クリスマスが近づいてきており、それに伴い、毎年恒例の家族のシークレットサンタを手配しています。私はこれをうまく始めたいと思いますが、カップルがお互いのために買わないようにすることは問題を引き起こし続けます、そして、これを何年もしているにもかかわらずBob、ほとんどの贈答品のギフトを購入する際にかなりの問題があります、Erinおそらく失望するでしょうが、彼Frankはタリスカーが好きであることを知っているので、彼は彼にぴったりです。これにより、既存のシンプルなソリューションはどれも私のニーズに受け入れられません。 私の人生を楽にするために、あなたの仕事は、配列の配列(または選択した言語の最も近い代替)が与えられたときに、「gifters」のペアを返す(または出力する)関数(または、言語の最も近い代替)を書くことです次の条件が満たされるように、バイト単位の可能な限り短いコードの「giftees」: 各名前は、入力データからランダムに選択された別の名前とペアになります(指定された条件に基づいて出力をランダム化できるとは限らないことに注意してください) 名前には、一貫性のある順序で隣接行列を表すフラグのリストが提供されるため、列nはrowと同じ人物を参照しnます。 条件を満たせない場合は、あなたの言語で偽物を返してください。 複数のソリューションがある場合、何度も実行する場合、プログラムはそれらをすべて生成できる必要があります。 あなたは私たちがどのある家族の一員伝えることができる必要があるとして、あなたが重複した名前を提示することはありませんと仮定することができますが、区別するために、スペース含むデータを提示することができるBob SeniorからをBob Junior!ソースデータ内の100個の一意の名前など、非常に大規模なファミリに対して提供されたすべてのテストケースを1時間以内に完了する必要があります(以下のサンプルデータセットを参照してください。割り当てられた時間内にこれらすべてを解析できる必要があります)。 入力例: santa([ ["Alice", 0, 0, 1, 1, 1, 1, 1], ["Bob", 0, 0, 0, 0, 0, 1, 0], ["Carla", 1, 1, 0, 0, 0, 1, 1], ["Dan", 1, 1, 0, 0, 0, 1, 1], ["Erin", 1, 1, 0, 0, 0, 1, …
11 code-golf 

3
部分文字列の乗算
入力として2つの整数を取るプログラムを作成します。最初の整数は任意の整数で、2番目の数値は最初の数値の桁数以下です。これらの数字aをbそれぞれとしましょう。 プログラムは次のことを行います の最小桁数1sを連結して、a桁数がaで割り切れるようにしbます。 aすべてのb数字に沿って分割します。 各セクションの数字を乗算します。 製品を一緒に連結します(数値の1つがゼロの場合、連結します0)。 厳密にb数字より少ない数字が形成されるまで、このプロセスを繰り返します。これを出力として印刷し、プロセスの数を繰り返します。単位は必要ありませんが、最終的な回数と反復回数の間の何らかの形式の分離が必要です。 次のテストケースでは、理解のために個々の手順を示しています。プログラムがステップを表示する必要はありません。 テストケース1 1883915502469, 3 手順 1883915502469 //Iteration 1 188391550246911 188 391 550 246 911 64 27 0 48 9 64270489 //Iteration 2 642704891 642 704 891 48 0 72 48072 //Iteration 3 480721 480 721 0 14 014 //Iteration 4 0 サンプル出力:0, 4 …
11 code-golf  math  number 

3
音楽を作ろう!
多くの人が楽しさと娯楽のために音楽を演奏するのが好きです。残念ながら、音楽は時々かなり難しいです。それがあなたがここにいる理由です! 仕事 音楽を読むのに苦労している人たちにとって、音楽をもっと簡単に読むことはあなたの仕事です。音楽譜表を入力として受け取り、その譜表に書かれた音符の名前を出力するプログラムまたは関数を作成する必要があります。 譜表、音部記号、メモ 音楽スタッフ、またはステーブは、4つのスペースであるわたってるしき5本の水平線です。各行またはスペースは、音部記号に応じて異なる音符(ピッチ)を表します。 かなり多くの異なる音部記号を選択することができますが、ここでは高音部記号のみを扱います。高音部記号では、音符は譜表に次のように表示されます。 行 F ---------- D ---------- B ---------- G ---------- E ---------- スペース ---------- E ---------- C ---------- A ---------- F ---------- 入力のフォーマット 入力は、次のように単一の文字列として提供されます。 --------------- --------------- --------------- --------------- --------------- 譜表の5行と4スペースは、9行の文字で構成されています。譜表の行は-(ハイフン)文字で構成され、スペースは(スペース)で構成されます。各行は次のように単一の改行文字で区切られます。たとえば -----\n \n-----\n \n-----\n \n-----\n \n-----\n 、行は任意の長さ(プログラミング言語で処理できる妥当な量まで)であり、各行は他の行とまったく同じ長さです。また、行は常に3で割り切れる長さになることに注意してください(1つのノートの後に、ノートのない2つの列が続くパターンに合わせます)。 メモは、適切な文字-または文字をに置き換えることにより、この譜表に配置されoます。また、音は半音単位でピッチを上げる(シャープにする)ことも、下げる(フラットにする)こともできます(ノートと隣接するノートの周波数差の約半分)。これは、の代わりにそれぞれ文字#とbで表されoます。各音符は次の音符とちょうど2 -文字で区切られ、最初の音符は常に-and (スペース)文字の最初の「列」に現れます。 ノート名を出力する場合、プログラムでは常にA B C D E F …

2
勝ち、負け、引き分けの表が与えられたら、スポーツトーナメントの各試合の結果を出力します
この質問は、プールステージを終えたばかりの「紳士が演じるフーリガンのゲーム」であるラグビーワールドカップの進行中のトーナメントに触発されています。トーナメントには20のチームがあり、それぞれ5チームの4つのプールに分割されています。プールステージでは、各チームがプール内の他のすべてのチームと対戦し(プールごとに合計10試合)、各プールの上位2チームがノックアウトステージに進みます。 プールステージの最後には、各チームの勝ち、負け、引き分けの数を示す各プールのテーブルがあります。この質問の課題は、プール内の各チームの勝ち、負け、引き分けの数を入力するプログラムを作成し、その情報から10試合のそれぞれの結果(勝者、敗者、または引き分け者)可能であれば、そうでない場合はエラーメッセージを出力します。 たとえば、今年のトーナメントのプールDの表は次のとおりです。 Win Loss Draw Canada 0 4 0 France 3 1 0 Ireland 4 0 0 Italy 2 2 0 Romania 1 3 0 この情報から、アイルランドがカナダ、フランス、イタリア、ルーマニアと勝ったのは、彼らがすべてのゲームで勝ったからだと推測できます。フランスはカナダ、イタリア、ルーマニアに勝ったが、アイルランドに負けたのは、彼らが負けたのはたった1つであり、敗北していないアイルランドだったに違いないからです。イタリアがアイルランドとフランスに敗れたため、カナダとルーマニアに勝ったに違いないことを突き止めました。カナダはすべての試合で負けたため、ルーマニアの勝利はカナダに負けたに違いありません。 Canada France Ireland Italy Romania Canada - L L L L France W - L W W Ireland W W - W W …
11 code-golf 

4
ブロックスケジュールを印刷
私の高校、および他の多くの人は、回転ブロックスケジュールと呼ばれるタイプのスケジュールを実装しています。これは、人々が8つのクラスを受講する方法ですが、1日に6つの期間があります。 ブロックスケジュールには、繰り返し繰り返される4日間があり、実際の曜日とは関係ありません。それぞれに番号が割り当てられ[1-4]ます。 スケジュールが動作する方法は、すべてのあなたの朝のクラス、期間をリストということです1-4:[1, 2, 3, 4]。これは単にリストを回転させ、あなたの最初の日のスケジュール、または1日目の日の残りの部分であります:[2, 3, 4, 1]、[3, 4, 1, 2]、[4, 1, 2, 3]。 ただし、午前中の最後の期間は「ドロップ」され、その日の教師は表示されません。したがって、日は以下のとおりです[1, 2, 3]、[2, 3, 4]、[3, 4, 1]、[4, 1, 2]。 午後は、ピリオドを使用していることを除けば、同じである5-8代わりに:[5, 6, 7]、[6, 7, 8]、[7, 8, 5]、[8, 5, 6]。 あなたのタスク このすべてのローテーションを追跡するのは難しいので、入力として何曜日かを指定して、スケジュールを印刷するプログラムを作成する必要があります。コードでは、HomeroomとLunchを正しい場所に配置する必要があります。以下は、入力に必要なコードの正確な出力です1-4。 Homeroom Homeroom Homeroom Homeroom Period 1 Period 2 Period 3 Period 4 Period 2 Period …

2
木を数える
ツリーはないサイクルの接続、無向グラフです。あなたの仕事は、与えられた数の頂点にいくつの木があるかを数えることです。 2つのツリーは、同型でない場合、別個と見なされます。2つのグラフは、それぞれの頂点が1つのグラフの2つの頂点の間にエッジがあるようにペアリングできる場合に同型です。より詳細な説明については、上記のリンクを参照してください。 サイズ1から6の異なるツリーのすべてがどのように見えるかを確認するには、こちらをご覧ください。 出力しようとしているシリーズは、OEISでA000055です。 制限:ソリューションは、入力で実行するのに数分以内にかかる必要があります6。これは、指数時間アルゴリズムを排除することを意図していませんが、すべてのエッジセットに対するブルートフォースなどの二重指数時間アルゴリズムを排除することを意図しています。 入力:負でない整数。 入力は、STDIN、コマンドラインパラメーター、関数入力など、標準的な手段によるものです。 出力:入力と同じ数の頂点を持つ個別のツリーの数。 出力は、STDOUT、関数の戻り値などを含む標準的な手段によるものです。 例: 0, 1, 2, 3, 4, 5, 6, 7を返す必要があり1, 1, 1, 1, 2, 3, 6, 11ます。 得点:ゴルフをバイト単位でコーディングします。最短のコードが勝つように! 標準的な抜け穴は禁止されています。

3
可能なテトリスシーケンス
公式のTetrisアルゴリズムで一連のTetrisピースを生成できるかどうかを把握するためのコードを記述します。少ないバイトが勝ちます。 公式のテトリスゲームは、特別な方法で落下ピースのシーケンスを生成します。7つのピースIJLOSTZはランダムな順序でドロップされ、次に別のランダムな順列がドロップされます。 JTLOISZ STJOLIZ LISJOTZ ... この例には、連続したピースの実行が含まれています SZSTJOLIZLIS 7つのグループの境界を越えてカットすることに注意してください。 SZOTLZSOJSIT テトリスシーケンスの部分文字列にすることはできないため、公式のテトリスゲームでは決して見ることができません。 入力:空ではない文字列IJLOSTZ。 出力: A TruthyまたはFalsey 7文字の順列の連結の入力は公式テトリス乱数生成器によって生成することができるシーケンスの部分文字列であるかどうかの値、すなわち。 テストケース: 正しい: T JJ (unique breakdown: J J) JTJ (possible breakdown: JT J) LTOZIJS SZSTJOLIZLIS (possible breakdown: SZ STJOLIZ LIS) JTLOISZSTJOLIZLISJOTZ (possible breakdown: JTLOISZ STJOLIZ LISJOTZ) LIJZTSLIJZTS (unique breakdown: LIJZTS LIJZTS) 偽: SZOTLZSOJSIT ZZZ …

4
おおよその正方形の形成
バックグラウンド 私は同じサイズの正方形の箱をたくさん持っています。私はきちんとした人なので、それらをすべて正方形の形に整理したいと思います。ただし、その数は必ずしも完全な正方形ではないため、正方形の形状を近似する必要があります。もちろん、プログラム的には、最も審美的に楽しいアレンジを見つけてほしい。 入力 入力は、kボックスの数を表す単一の正の整数です。 出力 プログラムはm, n、m*(n-1) < k ≤ m*n成立するような2つの正の整数を選択します。これらは、配置する大きな正方形のような形状の幅と高さを表します。審美的に楽しい形状を探しているので、形状は正方形に近く、その面積はに近くなるように、量は最小限にします。ペアの候補がまだいくつかある場合は、幅が最大になるものを選択します。(m - n)2 + (m*n - k)2k(m, n)m これで、実際の出力は数字とになりません。代わりに、ボックスを表す文字を使用して、ボックスの配置を印刷する必要があります。具体的には、あなたは印刷するもので構成され、それぞれが、行を文字、その後の1行の文字。出力には正確に文字が含まれていることに注意してください。mn#n-1m#k - m*(n-1)#k# ルールとスコアリング 出力に先頭または末尾の空白があってはなりません。ただしm、必要に応じて、最後の行の末尾に空白を追加してlength にすることができます。末尾に改行が1つある場合がありますが、先行する改行はありません。#必要に応じて、の代わりに印刷可能なASCII文字を使用できます。 完全なプログラムを作成することも、関数から文字列を返すこともできます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース いくつかの入力値の正しい出力を次に示します。 1 # 2 ## 3 ## # 4 ## ## 8 ### ### ## 13 ##### ##### ### 17 ###### ###### ##### 18 …

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