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

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

5
カップホルダーは必要ですか?
90年代のカップホルダージョークソフトウェアを複製します。 これが何をしたか、そしてあなたはしなければなりません: メッセージを表示する Do you need a cup holder? ユーザーが確認した場合は、CDROMドライブを開き続ける無限ループに入ります。 ユーザーが確認しない場合は、警告なしに終了します。 コンソールメッセージ(確認はy、拒否はn)を使用するか、「はい」と「いいえ」の2つのオプションを含むメッセージウィンドウを表示して、メッセージを表示できます。デフォルト(または最も一般的な)CDROMドライブ(D:Windows、/cdromLinuxなど)を想定できます。標準の抜け穴(組み込みのものを除く)は禁止されています。追加の入力も出力も必要ありません。PCに物理ドライブがないか、トレイの別の「スタイル」がある場合は、プログラムが有効であることを確認してください。 code-golfなので、バイト単位で最も短いプログラムが優先されます。 トリビア:ループは、誰かがドライブを閉じるのを防ぐためにあります。デスクトップドライブでは、ドライブが閉じているときにre-openコマンドが送信されるため、開いたままで「コーヒーをこぼす」ことはありません。

1
チェストーナメントのスケジュール
前書き 今はチェスのトーナメントに参加しています。トーナメントのスケジュールに触発されました。現在、私は他の3人のプレイヤーと競争しています。つまり、4人で3ラウンドをプレイします。スケジュールは次のとおりです。 Round 1: 1-4 3-2 Round 2: 3-4 2-1 Round 3: 1-3 4-2 これは、ラウンドロビンとも呼ばれます。また、これは有効なスケジュールです。以下の条件を満たす場合、スケジュールは有効であると言います。 すべてのプレーヤーは、別のプレーヤーに対して一度プレイします。 1-2プレイヤー1が白を持っていることを意味します。すべてのプレイヤーはorを(N / 2-0.5)または(N / 2 + 0.5)倍し、Nはラウンド数です。 たとえば、上記の例では、3つのラウンドがあります。つまり、N = 3です。ご覧のように、ラウンド数はプレイヤーの数-1に等しくなります。プレイヤーはどちらかを持っています N / 2-0.5 = 1回の白、または N / 2 + 0.5 = 2倍の白。 上記の例では: プレーヤー1は白を2回持っています。 プレーヤー2は白を1回持っています。 プレーヤー3は白を2回持っています。 プレイヤー4は白を1回持っています。 タスク 与えられたとしても競争の中でプレイヤーの量、出力トーナメントスケジュールを表す整数> 1。 テストケース: 入力= 4、つまりN = …
8 code-golf 

1
抵抗を解析する
目的は単純です。一連の抵抗値を指定して、それらの抵抗器の「電気回路」の一部を描画します。以下に例を示します。 入力:3。出力: --3-- 入力:1,2,3。出力: --1----2----3-- 次に、抵抗を並列に結合できます(結合ごとに2つまたは3つの抵抗によって)が、並列結合の必要な深さは1つだけです。 入力:1|2。出力: |--1--| -| |- |--2--| 入力:1|2|3。出力: |--1--| -|--2--|- |--3--| --2--抵抗が中央に配置されていることに注意してください。 入力:1|2,3|4|5。出力: |--1--| |--3--| -| |--|--4--|- |--2--| |--5--| 結合を結合: 入力:1,2,3|4,5,6|7|8,9。出力: |--3--| |--6--| --1----2---| |---5---|--7--|---9-- |--4--| |--8--| より便利な場合は、入力を2次元配列にすることができます。つまり、最後の例の入力は次のようになります[1,2,[3,4],5,[6,7,8],9]。 いくつかのメモ: 他の形式の(入力|出力)入力は許可されていません。 各抵抗器の抵抗値は、1から9の他の値の範囲で変えることができるような-、42または0禁止されています。 のような結合1|2|3|4は無効です。すでに述べたように、並列結合ごとに最大3つです。空の結合、つまり...,|,...また...,,...はは無効です。 ああ、これはコードゴルフです:)

2
文字列かどうか?
最近、新しいTeaScriptインタープリターで問題が発生しています。最大の問題は、文字列に特殊文字が含まれているかどうかを識別することです。 チャレンジ 特殊文字は、コードポイント160〜255の文字として定義されます。コードポイント0〜255の文字列である入力が与えられますが、最大1つは特殊文字です。入力は、ゼロ以上の文字のプレフィックス、引用符付き文字列、およびゼロ以上の文字のサフィックスで構成されます。引用符で囲まれた文字列に特殊文字がある場合は、真の値を出力し、そうでない場合は偽の値を出力する必要があります。 細部 文字"'は引用符と見なされます。 引用符で囲まれた文字列内では、バックスラッシュ\を使用して次の文字をエスケープします。プレフィックスとサフィックスでは、特別な意味はありません。 見積もりは常にバランスが取れています。 引用符で囲まれた文字列は1つだけです。 例 "Hello, World¡" true "Hello, World"¡ false "Hello' Wo\"rld\\"¡ false ab"cd\"ef\\gh\i\\"£ false \"foo¡" true

4
エリクサーでゴルフするためのヒント
Elixirは比較的新しい関数型言語であり、私はこれに深く関心を持っています。Elixirでのゴルフに関する一般的なヒントを取得し、Elixirに一般的ないくらか特有のコードゴルフ問題に適用できるテクニックを学びたいです。 Python、Ruby、Javascriptなどについての同様の多くの質問に基づいています。言語についてさらに学ぶときに、ヒントを投稿することも試みます。
8 code-golf  tips 

8
それは整数、文字列、または小数ですか?
問題は、指定された入力が整数、文字列、または10進数のいずれであるかを判別することです。 ルール 文字列は、整数でも浮動小数点数でもない任意の入力です 整数には数字のみを含める必要があり、ゼロで始めることはできません 10進数は、ピリオド(.)を含み、ピリオドが数字で囲まれている任意の入力です。 注: .01は有効な10進数とは見なされません。 プログラムは、「string」、「integer」、または「decimal」のいずれかの生の文字列を出力する必要があります。 印刷可能なASCII文字のみが使用されていると想定できます ケース: asdf -> string asdf3.4 -> string 2 -> integer 2.0 -> decimal 02 -> string 40. -> string . -> string .01 -> string 0.0 -> decimal .9.9.9 -> string [empty space] -> string 編集:タイプミスを修正しました。私は、先頭のゼロなしで.01を意味しました。それが不明確になった場合は、修正されました! これはコードゴルフなので、最も短い答えが勝ちます。

2
RTTTL曲を再生する
ユーザーquartataがこのチャレンジを投稿しましたが、何らかの理由で自分のコンピューターでMIDIファイルを再生できないという事実を無視しました。 標準入力からRTTTL形式の曲を読み取り、曲名を標準出力に出力して(適切な速度とピッチで)再生する完全なプログラムを作成して、彼を助けましょう。 フォーマットの詳細 RTTTLは、かなり馬鹿げたもので、仕様が不十分な着信音フォーマットです。これは、名前、いくつかのデフォルト値、および単純なテキスト形式の一連のメモ(一度に1つのメモのみ)で構成されます。 例: fifth: d=4,o=5,b=63: 8P, 8G5, 8G5, 8G5, 2D#5 名前は、コロンで終了する文字列です。ここでの名前は「第五」です。プログラムは、15文字以上の名前を受け入れる必要があります。 次に、デフォルトセクション(コロンで終了)には、曲のデュレーション(d)、オクターブ(o)、および毎分ビート(b)のデフォルト値がいくつかリストされています。これらはカンマで区切られ、「key = value」構文を使用します。各「key = value」部分の周囲には、スペースをいくつでも含めることができます。デフォルト値d、o、bがこの順序ですべて存在すると想定できます。デュレーションとオクターブについては後で説明します。bpmは、1分間に再生する必要があるビートの数(4分音符に対応)を指し、20〜900の整数値(両端を含む)をサポートする必要があります。 次に、実際の曲は「DPO」構文を使用してコンマ区切りの一連のノートとしてリストされます。ここで、Dはデュレーション、Pはピッチ(ノート)、Oはオクターブです。各「DPO」パーツの周りには、スペースと改行がいくつあってもかまいません。 デュレーションは1から32までの2の累乗であり、これはノート全体の一部を表します。したがって、たとえば値4(4分音符)は値8(8分音符)の2倍になります。期間が欠落している可能性があります。その場合、デフォルトの期間が使用されます。持続時間は、ドット(.)の存在によっても変更できます。具体的には、ドットによってノートの持続時間が50%長くなります。ドットの位置について全員が同意するわけではないため、ピッチの後またはオクターブの後にドットを受け入れる必要があります(つまり、「DP.O」と「DPO。」の両方が機能するはずです)。 ピッチはA、B、C、D、E、F、G、A#、C#、D#、F#、G#、Pのいずれかです。AG#は標準の音符です(ノート:フラットなし、対応する鋭いノートを使用) Pは一時停止です。ピッチは必要なノートの唯一の部分であり、大文字と小文字は区別されません。 最後に、オクターブは通常4〜8の数値ですが、1〜8の任意の数値をサポートする必要があります。たとえば、C4は標準の中央のCで、周波数は約261.63Hzです。オクターブが欠落している可能性があります。その場合、デフォルトのオクターブが使用されます。一時停止にはオクターブが指定されていないと想定できます(意味がないため)。 他の課題で述べたように、このサイトを使用して、テストのためにRTTTL曲をMIDI形式に変換できます(ただし、まったく同じ仕様に準拠していない場合があります)。 要件: プログラムは、各ノートを適切な速度とピッチで再生する必要があります。可聴でピッチが認識できる限り、あらゆる種類の音(正弦波、三角波、方形波、ピアノ音、ベル音など、標準的なビープ音、波音、MIDI音など)を使用できます。 各ノートには、それよりも短い64分音符を超えない指定の期間連続して再生されない、またはしなければならないあなたのような何か使用している場合を除き、ADSRエンベロープのリリースフェーズは、次のポーズを介して、または次のノートの上に続けることができ、その場合には、 。 2つの連続する音符のピッチが同じである場合、短い休憩(最初の音符の継続時間の一部として64分音符の長さを使用しない)または不均一な音(このような音)を使用して、それらを明確に区別する必要があります。上記のADSRエンベロープとして)、または少なくとも十分変化している場合はフェーズ変更を介して。2つの連続した一時停止は、全体の継続時間を伴う単一の一時停止と同じように処理する必要があります。 プログラムは、無料で入手できるソフトウェアを使用して、Linuxで実行できる必要があります。標準入力から曲を読み取り、曲名を標準出力に出力します。 入力が上記の仕様と一致しない場合の動作は規定されていません。プログラムはエラーを無視したり、メッセージを出力したり、何かを再生したり、ハングしたり、クラッシュしたりする可能性があります。 標準の抜け穴は許可されていません。 得点 コードゴルフ、最短プログラム(UTF-8バイトで測定)が優勝します。

2
ブラックポーンの復讐
目的 黒のポーンは復讐を望んでいます。最後の攻撃をプロットします。 ルール 黒いポーン(L)は一番上の行から始まり、一番下の行に移動します。取得したポイントを最大化し、でパスを示しますX。ポーン(P)は1、ビショップ(B)とナイト(N)3、ルーク(R)5、クイーン(Q)9です。入力にはキングはありません。 ポイントの数が最大のパスが複数ある場合は、それらのパスのいずれかを出力します。ポーンが最下列に到達できない状況はありません。 例 入力: ----L--- -----P-- ------P- --R--P-Q ----P-P- ---P-P-P --P-N--- -P------ 出力: ----L--- -----X-- ------X- --R--P-X ----P-X- ---P-X-P --P-X--- -P--X--- 入力: --L----- -P------ P------- -P------ P--Q---- -P------ P------- -P------ 出力: --L----- -PX----- P-X----- -PX----- P--X---- -P-X---- P--X---- -P-X----

2
列内のテキストのレイアウト
テキスト、列数、および列幅を指定して、テキストを列にフォーマットするプログラムまたは関数を記述します。これは平文のタイポグラフィです。 ルール 入力 テキストは印刷可能なASCIIの文字列であり、改行とスペースが含まれる場合があります(タブは含まれません)。 列の数は正の整数になります。 列幅は、列あたりの文字数を指定する2以上の整数です。 この課題では、単語は空白以外の文字で構成されます。入力は1つの文字列と2つの整数で構成され、任意の順序で取得できます。 出力 出力は、各行に収まるだけ多くの単語を含むバランスのとれた列にフォーマットされたテキストです。 単語が長すぎて列に収まらない場合、現在の行に別の単語があり、その行は列の幅まで3つ以下のスペースで埋め込まれる可能性があります。 それ以外の場合は、単語のハイフンを付けて、残りの行を埋めます。行の終わりにハイフンを付ける; 音節間のハイフネーションについて心配する必要はありません。 列は、4つのスペース文字のマージンで区切る必要があります。 可能であれば、すべての列の行数が同じになるように、列のバランスをとる必要があります。 左端の列には、必要に応じて追加の行が必要です。 改行や複数のスペースは保持する必要があります。最後の列の後の末尾のスペースはオプションです。 例 テキスト: The number of columns will be a positive integer. Columns should be separated by a margin of four space characters. The columns should be balanced. The column width is greater than two. …

5
人間は足を嫌い、プログラマーは人間を嫌います-それらを接続しましょう!
バックグラウンド タスクは単純ですが、すべてのプログラマーが少なくとも1回は実装しています。Stackoverflowには多くのサンプルがありますが、それらは勝つために十分短いですか? 問題の物語 あなたはユーザーのためにファイルサイズ入力を実装するタスクを与えられた不機嫌なプログラマーです。ユーザーはバイトを使用しないため、誰もが「1M」、「1K」、「3G」、「3.14M」と入力するだけですが、バイトが必要です。したがって、変換を行うプログラムを記述します。 次に、上司があなたに数十のユーザーレポートを渡して、ファイルサイズの入力に奇妙な多数が含まれているという苦情を受け取りました。逆変換もコーディングする必要があるようです。 あなたは何する必要があるの? ここに秘訣があります。単一のコードで双方向変換を実装する必要があります。必要に応じて使用される2つの別個の関数?いや、それは単純すぎる-短いものを作ろう! この課題では、「キロバイト」は1024バイト、「メガバイト」は1024 * 1024 = 1048576バイト、「ギガバイト」は1024 * 1024 * 1024 = 1073741824バイトを意味します。 テストデータ Input -> Output 5 -> 5 1023 -> 1023 1024 -> 1K 1K -> 1024 1.5K -> 1536 1536 -> 1.5K 1048576 -> 1M 1M -> 1048576 ルール テスト値は2 * 1024 …
8 code-golf 

7
SIプレフィックス間の変換
前書き 国際単位系は、米国を含むいくつかの国を除いて、世界中で測定するシステムです。SIシステム(またはメートル法)は、10の累乗に基づいており、以下にリストされています(これは不完全なテーブルであることに注意してください)。 femto(f) pico(p) nano(n) micro(μ) milli(m) centi(c) (base unit) hecto(h) kilo(k) mega(M) giga(G) tera(T) peta(P) 10^-15 10^-12 10^-9 10^-6 10^-3 10^-2 10^0 10^2 10^3 10^6 10^9 10^12 10^15 あなたの仕事は、これらの手段の1つを取り入れて、それを別のものに変えることです。 入力 入力は、10進数10^-16 < x < 2^31 - 1、SIプレフィックス、数量を表す文字、変換する別のSIプレフィックス、および同じ数量の文字です。入力はフォーマット1234.56 mC to TCであり、常に正規表現と一致し^\d+(\.\d+)? [fpnμmchkMGTP](?'letter'[a-zA-Z]) to [fpnμmchkMGTP](?P=letter)$ます。ベースユニットとの間で変換を行う必要はありません(10^0) 出力 出力は入力と同じ番号で、新しいSI接頭辞に変換されます。具体的には、プログラムは入力から数値をSI prefix 1に変換する必要SI prefix 2があります。例: …

1
レストランの略記
ゴール ディナーメニューには長い名前が付けられていることがあります。ウェイターが料理を明確に識別する略語を書く方がはるかに簡単です。 たとえば、次のリストがあるとします。 beef burger chicken burger chicken nuggets 略語がc n一致しchicken nuggetsます。 省略形はとbur一致beef burgerしchicken burgerます。 略語に一致する1つ以上の項目を識別する機能のプログラムを作成します。 入力 検索する省略された文字列。 検索するアイテムのリスト。 この順序を変更して、適切なデータ型を使用できます。 出力 略語がどの項目とも一致しない場合: Not found 略語がアイテムと明確に一致する場合:省略されていないアイテムを出力します。 省略形があいまいに複数の項目に一致する場合:選択を明確にする単語のコンマ区切りのリストを出力し、その後に疑問符を付けます。順序は重要ではありません。追加のスペースが許可されています。 マッチングルール 略語の各単語と項目は個別に考慮されます。略語がアイテムの単語の先頭と一致する場合、そのアイテムは一致する可能性があります。省略された単語のいずれかで始まるアイテムの単語がない場合、そのアイテムは一致しません。 省略語は任意の順序にすることができます。 略語を使用して複数のアイテムの単語を照合したり、その逆を行ったりすることはできません。 略語は単語の始まりにのみ一致します。 別のアイテムのすべての単語を含むアイテムはないと仮定します。たとえば、beef burgerおよびはありませんbeef cheese burger。 テストケース このリストを考えると: beef burger crispy chicken burger grilled chicken burger chicken nuggets chocolate cone strawberry …

3
折りたたみとつぶしのプロセスでのサイクルのカウント
でカオス理論、馬蹄マップは混乱が折りたたみと潰しの簡単なプロセスで発生方法の例です。それは次のようになります。架空の生地を取り出し、折りたたみ、最後に元のサイズに潰します。カオスは、n回の反復の後、生地の断片が最終的な配置にどのように到達するかというパターンで発生します。 今回のケースでは、単純なバイナリパターンが折りたたまれ、押しつぶされるときにどのように動作するかを見ていきます。以下は、8ビットの例(201またはのバイナリ表現11001001)の手順です。 同じ長さの2つの断片にビットをカットします(奇数のビットがある場合は、最初に「0」を追加します)。 1100 | 1001 前半を後半に折ります。折りたたみながら回転させると、前半の順序が逆になることに注意してください。 0011 1001 元の形にスカッシュします。スカッシュ中、上位ビットは元の位置の下のビットに左にシフトされます。 01001011 この例でこれを繰り返すと、4回の反復の後、元のビット文字列に戻っていることがわかります。 Start bits: 11001001 Iteration 1: 01001011 Iteration 2: 01001101 Iteration 3: 01011001 Iteration 4: 11001001 したがって、10進数の201の場合、サイクル数は4です。 チャレンジ 10進数を入力として受け取り、上記のバイナリスカッシュアンドフォールドプロセスで繰り返すのに必要なサイクル数を出力する完全なプログラムを記述します。 (10進数)入力はstdinから取得する必要があります(範囲:1からGoogolまたは10 ^ 100まで)。 (10進数)出力はstdoutに書き込む必要があります。 スコアは、コードのバイト数です。 回答は[プログラミング言語]-[バイト単位のスコア]で始まる必要があります 標準の抜け穴は許可されていません。 例 7 --> 3 43 --> 5 178 --> 4 255 --> 1 …

3
私の疑似コードを現実のものにする
私は、用途は中括弧の代わりに空白といういくつかのJavaの擬似コードを持っている、と私はしたい、あなたがそれを変換します。 I / O プログラムは、ブロックをインデントするために使用されるスペースの数を指定する番号とともに、入力ファイルを取得する必要があります。次に例を示します。 $ convert.lang input.p 4 // 4つのスペースをブロック区切り文字として使用して変換します $ convert.lang input.p 2 // 2つのスペースをブロック区切り文字として使用して変換します 次に、指定されたブロック区切り文字を使用して結果を変換し、結果をstdoutに出力します。 プログラムの要点 ブロックはで開き:、ブロック内の各行は、Pythonコードのようにブロック区切り文字を使用してインデントされます。 while(true): System.out.println( "Test"); 各々が:で置換され{、そして}ブロックの末尾に追加されます。 while(true){ System.out.println( "Test"); } 例 入力: パブリッククラステスト: public static void main(String [] args): System.out.println( "Java is verbose ..."); 出力: $ Test.pseudojava 4を変換します パブリッククラスTest { public static …

1
行列の縮約行エシェロン形式
この課題の目標は、行列を取り込んで行数を減らした形で出力するプログラムを作成することです。 マトリックスは、次のすべての条件を満たす場合、簡約行の形になります。 すべてのエントリがゼロである行がある場合、この行はゼロ以外のエントリを含む他の行の下にあります。 行の左端のゼロ以外のエントリはに等しくなり1ます。 行の左端のゼロ以外のエントリは、その列の唯一のゼロ以外のエントリです。 左端のゼロ以外の2つの異なるエントリを考えます。1つは行i、j列にあり、もう1つは行s、t列にあります。もしs>i、その後、 t>j。 ソース マトリックスを変換する一般的なプロセスは次のとおりです。 1からnまでの各行iを順番に処理し、すべてのゼロエントリの列をスキップして、1からmまでの列jにわたって作業します。 ゼロ以外のエントリを持つ次の列jを見つけます。 必要に応じて行を交換し、ピボット要素A(i、j)が非ゼロになるようにします。 ピボット行の各要素をピボットの値で除算して、ピボットを1に等しくします。 ピボット行の適切な倍数を他の行から減算して、ピボットの上下のすべての要素を0に等しくします。 すべての行について繰り返します。 このタイプのマトリックスの詳細を読みたい場合は、そのWikipediaの記事と、マトリックスを変換する手順を示すツールと記事(上記の手順)をご覧ください。 実際の課題については、次のとおりです。 入力は、STDINまたは同等のものを使用して任意の方法で指定できます。回答で説明してください。出力は、STDOUTまたは同等のものを介した入力と同じ形式の、入力の簡略化された行エシェロン形式になります。標準の抜け穴は許可されておらず、このタスクを実行する外部ライブラリまたは関数(たとえば、TI-BASICのrref(コマンド)も許可されていません。完全なプログラムまたは関数を記述できます。これはコードゴルフで、最低のBYTES勝です。幸運を! 入力例: [[2,1,1,14][-1,-3,2,-2][4,-6,3,-5]] 出力例: [[1,0,0,1][0,1,0,5][0,0,1,7]]

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