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

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

30
序数の出力(1、2、3)
(関数の戻り値として、または単にプログラムの出力として)数値に連結された正の整数の序数の接尾辞を生成したいと思います。 サンプル: 1st 2nd 3rd 4th ... 11th 12th 13th ... 20th 21st 22nd 23rd 24th など、サフィックスが最初の1〜10のサブパターンを10まで100ごとに繰り返し、最後にパターンが最初から始まります。 上記のように、入力は数値で、出力は順序文字列です。 これの最小のアルゴリズムは何ですか?

30
シェルピンスキーの三角形を描く
シェルピンスキーの三角形は、三角形を取り、高さと幅を1/2に減らし、結果の三角形のコピーを3つ作成し、各三角形が角の他の2つと接触するように配置することで作成されるフラクタルです。以下に示すように、このプロセスが結果の三角形で何度も繰り返され、シェルピンスキー三角形が生成されます。 シェルピンスキーの三角形を生成するプログラムを作成します。実際の三角形を描画するか、ランダムアルゴリズムを使用して画像を生成することにより、パターンを生成する任意の方法を使用できます。出力が上記の最後の図に似ている限り、ピクセル、ASCIIアートなど、必要なものを何でも描画できます。最も少ないキャラクターが勝ちます。

15
このFooマシンは停止しますか?
チューリングマシンが停止するかどうかを判断することは、決定できないことがよく知られていますが、それは単純なマシンでは必ずしも当てはまりません。 Fooのマシンは、テープ上の各セルは整数または停止シンボルがある有限のテープ、と機械でh、例えば 2 h 1 -1 命令ポインターは、最初のセルを指すことから始まります。 2 h 1 -1 ^ すべてのステップで、命令ポインターはそれが指す数値だけ前方に移動し、その数値を無効にします。したがって、1つのステップの後、2セルを前方に移動2し、aに変換し-2ます。 -2 h 1 -1 ^ Fooマシンは、命令ポインターが停止記号(h)を指すまでこれを続けます。したがって、このプログラムの完全な実行は次のとおりです。 2 h 1 -1 ^ -2 h 1 -1 ^ -2 h -1 -1 ^ -2 h -1 1 ^ -2 h 1 1 ^ テープも円形であるため、命令ポインターがテープの片側から外れると、反対側に移動します。例: 3 h 1 3 ^ …

3
クライントポロリグロット
Kleinは私が設計した2D言語で、12の異なるトポロジサーフェスに埋め込むことができます。Kleinプログラムは、コマンドライン引数を変更することにより、異なるサーフェスで実行できます。 トポロジは、プログラムの端から出たときに命令ポインタがどこに移動するかを決定します。エッジから移動すると、IPは一致する色のエッジにジャンプし、矢印に対する位置を維持します。つまり、ポインターは矢印の頭からの距離を保持します。 たとえば000、ほとんどの2D言語で使用されるトポロジであるトポロジでは、エッジから外れると、命令ポインタが反対側に回り込みます。 仕事 タスクは非常に簡単で、実行時に実行されるトポロジを出力するKleinプログラムを記述します。個々の数字はスペースで区切ることができます。(たとえば000、0 0 0両方とも許容される出力です)。-Aコマンドラインフラグを使用するか無視するかを選択できます。コマンドラインフラグを使用しても、バイト数はかかりません。 これはコードゴルフなので、最短の答えが勝者になります。 これは、すべてのトポロジを一度にテストするために使用できるオンラインテストドライバーです。整数モードで実行するには、を削除し-Aます。

20
シェークスピアプログラミング言語でのゴルフのヒント
シェークスピアプログラミング言語でゴルフをするための一般的なヒントは何ですか?コードゴルフの問題に適用でき、少なくともSPLに固有のアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。
43 code-golf  tips 

16
Regex Golfのヒント
言語固有のゴルフのヒントのスレッドと同様に、正規表現を短縮する一般的なトリックは何ですか? ゴルフに関しては、正規表現の3つの使用法を見ることができます。古典的な正規表現ゴルフ(「一致するリストと失敗するリスト」)、正規表現を使用して計算問題と正規表現を解決するより大きなゴルフコード。これらのいずれかまたはすべてに対処するためのヒントを投稿してください。ヒントが1つ以上のフレーバーに限定されている場合は、これらのフレーバーを上部に記載してください。 いつものように、回答ごとに1つのヒント(または非常に密接に関連するヒントのファミリー)に固執してください。そうすることで、最も有用なヒントが投票でトップに上がります。

30
CJamでのゴルフのヒント
CJamは、PPCGユーザーaditsuによって作成されたGolfScriptにヒントを得たスタックベースのゴルフ言語です。 そのため、他の言語固有のヒントの質問に沿って: CJamでゴルフをするための一般的なヒントは何ですか?回答ごとに1つのヒントを投稿してください。
43 code-golf  tips  cjam 

23
Bookworm辞書形式を解析する
私は最近、Bookworm Deluxeの形の懐かしさに夢中になりました。 まだ見たことがない場合は、隣接するタイルを接続して単語を形成することが目的のワードゲームです。文字列が有効な単語かどうかを判断するために、次のような圧縮形式で保存されている内部辞書と照合します。 aa 2h 3ed ing s 2l 3iis s 2rdvark 8s 4wolf 7ves 辞書を展開するためのルールは簡単です: 行の先頭の数字を読み、前の単語の先頭からその数の文字をコピーします。(数字がない場合は、前回と同じ数の文字をコピーします。) 単語に次の文字を追加します。 したがって、最初の単語はでaa、その後にが続きます2h。これは、「の最初の2文字をコピーしてaa追加」を意味hしaahます。次にに3edなりaahed、次の行には数字がないため、3文字を再度コピーしてformにしaahingます。このプロセスは、辞書の残りの部分で継続されます。小さなサンプル入力から得られる単語は次のとおりです。 aa aah aahed aahing aahs aal aaliis aals aardvark aardvarks aardwolf aardwolves あなたの課題は、このアンパックをできるだけ少ないバイトで実行することです。 入力の各行に0-9 は、1つ以上の小文字が続くゼロ以上の数字が含まれますa-z。入力を取得し、出力を文字列のリストとして、または単語を0-9/ 以外の文字で区切った単一の文字列として出力できますa-z。 次に、別の小さなテストケースを示します。この例ではカバーされていないエッジケースがいくつかあります。 abc cba 1de fg hi 0jkl mno abcdefghijk 10l => abc cba cde cfg …
42 code-golf  string 

6
目の視覚化
Xウィンドウシステムに付属している(そして、私が知る限り、まだ付属している)デモプログラムであるXeyesを覚えているかもしれません。その目的は、マウスカーソルに追従する目を描くことでした。 あなたの課題は、ASCIIアートでXeyesを再作成することです。ユーザーがクリックするたびに2つのASCIIアートの目(以下で指定)を描画し、カーソルの方向を指すように瞳孔を移動するプログラムまたは関数を記述します。 上記のGIFは、このゴルフ以外のRuby実装の記録であり、Rubyの最新バージョンで実行できます。また、Xterm制御シーケンスのリファレンスとしても役立ちます。 仕様書 これはcode-golfであるため、バイト数が最も少ないソリューションが優先されます。 これは、アスキー・アート・プログラムがASCII文字-具体的には、文字使用して描く必要がありますので、挑戦-、.、|、'、0、スペース、改行を。1 2 これはインタラクティブなチャレンジなので、プログラムは入力を受け入れ、リアルタイムで出力を描画する必要があります。3 プログラムが入力の受け入れを開始する前に、少なくとも20行20列の空白のキャンバスを初期化する必要があります。ユーザーがキャンバスをクリックするまで、何も描画しないでください。 ユーザーがキャンバス上で4をクリックするたびに、プログラムは以前の出力をクリアしてから、マウスカーソルの位置に最も近い文字を中心に、これらのASCIIの目をキャンバス上に描画します。5 6(以下、✧マウスカーソルを表し、描画しないでください。) .---. .---. | | | | | 0|✧|0 | | | | | '---' '---' 生徒がどのようにカーソルを「指す」かに注意してください。 マウスカーソルがキャンバス上を移動するたびに、プログラムは瞳孔を再描画して、カーソルの方向を指し続けるようにします。例:7 ✧ .---. .---. | 0| | 0| | | | | | | | | '---' '---' 瞳孔ポインティング 次のように、各目の内側の9文字の位置を列挙したとします。 .---. |678| |591| …

16
どれくらい小さくできますか?
整数正始まるN、整数最小見つける「N繰り返し割ることによって計算することができるNを(ベース10)は、その数字のいずれかです。選択された各桁は、1より大きいNの除数でなければなりません。 例1 N = 230の期待される出力はN '= 23です。 例2 N = 129528の予想される出力はN '= 257です。 最適でないパスに注意してください! 129528/9 = 14392で開始することもできますが、可能な限り最小の結果にはなりません。最初に9で割った場合にできる最善の方法は次のとおりです。 ルール 入力は、任意の妥当な形式(整数、文字列、数字の配列など)で取得できます。 これはcode-golfなので、バイト単位の最短回答が勝ちです! テストケース 1 --> 1 7 --> 1 10 --> 10 24 --> 1 230 --> 23 234 --> 78 10800 --> 1 10801 --> 10801 50976 --> 118 129500 --> …

30
これらの文字列を明確にする
このコメントチェーンに触発されて ... 私enklactはこの挑戦から抜け出したいが、私はできない... @ETHproductions to enklact(v):一意の要素で構成されるサブセクションを使用してルックアップテーブルを実装します。 Enklactingは、ルックアップテーブルを圧縮する非常に便利な方法です。たとえば、次の色のリストがあるとします。 red green blue yellow purple orange 入力として色を取り、このリストのインデックスを返すことができるようにしたい場合は、明らかに簡単な方法があります。 ["red", "green", "blue", "yellow", "purple", "orange"].index(input()) しかし、より少ないバイトでこれを行う方法があります: "rgbypo".index(input()[0]) これは、各文字列の最初の(または0番目の)インデックスが一意であるため機能します。この例は明らかですが、時には少し難しい場合があります。このリストのルックアップテーブルを作成する場合はどうなりますか? Sweet Onion Chicken Teriyaki Oven Roasted Chicken Turkey Breast Italian BMT Tuna Black Forest Ham Meatball Marinara この場合、これはできません。 "SOTITBM".index(input()[0]) a 'T'で始まる2つの異なる入力、つまり「Tuna」と「Turkey」があるためです。別のインデックスを見る必要があります。各文字列の4番目のインデックスを見ると、それらはすべて一意であることがわかります。だから私たちはこれを行うことができます... "enklact".index(input()[3]) この場合、「enklaction string」は「enklact」です。 それが今日の挑戦につながります... 文字列のリストを指定すると、有効なenklaction文字列が返されます。または、言い換えると、文字列のリストを指定すると、各文字が一意であり、各文字列のi番目の文字を結合して文字列が形成される新しい文字列を返します。 有効なenklaction文字列が存在しない場合は、代わりに空の文字列または一貫した偽の値を送信する必要があります。いつものように、関数または完全なプログラムのいずれかが許可されており、入出力形式は許容範囲内です(理由はありますが)。 …
42 code-golf  string 

30
スクラブルスコアラー
チャレンジ: 大文字または小文字の文字列を入力として(オプション)、英語のスクラブルのゲームで文字列が取得するスコアを計算します。 ルール: 各文字のスコアは次のとおりです(他のバージョンのゲームがある場合でもこれを使用します)。 1 point: E, A, I, O, N, R, T, L, S, U 2 points: D, G 3 points: B, C, M, P 4 points: F, H, V, W, Y 5 points: K 8 points: J, X 10 points: Q, Z 文字列のスコアは、使用される各文字のスコアの合計です。利用可能なタイルがたくさんあると仮定することができるので、長い単語、および同じ文字の多くを含む単語は有効な入力です。 テストケース: ABC -> 7 PPCG …

20
Vimを終了するにはどうすればよいですか?
VimはUNIXシステム用の優れたテキストエディターですが、終了するのが難しいことで有名です。 :qVimを終了するために出力する完全なプログラムを作成します。その後、bashプロンプト(終了の場合)またはエラー(未保存の変更がある場合)が表示されるため、1行の入力を読み取る必要があります。 bashプロンプトは次のようになります。 E37@vimmachine: /var/override) エラーはこれになりますが: E37: No write since last change (add ! to override) bashプロンプトが与えられると、プログラムの作業は完了し、それ以上の出力は行われないはずです(空白を除く)。 エラーが発生すると、プログラムは、出力:q!(保存せずに終了する、または保存して終了する)をランダムに(つまり、それぞれの可能性が0以外の確率で選択される)出力:xする必要があります。 これはコードゴルフなので、各言語で最少のバイトが勝ちます!
42 code-golf 

4
f(g(x))は減少し、g(f(x))は増加
この課題のために、f∘gは厳密に減少する関数であり、g∘fは厳密に増加する関数であるように、整数に2つの関数fとgを実装する必要があります。つまり、任意の2つの整数a <bを取る場合、f(g(a))> f(g(b))およびg(f(a))<g(f(b))となります。fとgに個別に制限はありませんが、それぞれが1つの整数を別の整数にマッピングする必要があることを除きます。 fとgの簡単な説明と、それらに必要なプロパティがある理由の引数を含めてください。 クレジット:この課題は、2011年のルーマニアの数学修士大会(整数ではなく実数で求められます)の問題に触発されました。ネタバレが本当に必要な場合は、何を検索すればよいかがわかります。 ルール この課題における「関数」という言葉は、1つの整数を別の整数にマッピングするという数学的な意味で解釈する必要があります。2つのプログラムまたは2つの関数を記述し、通常どおり入力を受け取り、出力を提供する標準的な方法を使用できます。実際の整数変数の代わりに整数の文字列表現を使用できますが、入力と出力のタイプは同一である必要があります。そのため、間にタイプを手動で変換することなく関数を構成できます。概念的には、fとgはまだonの関数である必要があるため、同じ数字またはそのようなものの2つの異なる文字列表現を使用して不正行為を行うことはできません。 ことを忘れないでください関数は無名のかもしれ彼らの名は、それ自体またはユーザーが定義する別の機能で必要とされていない限り、。関数の一方または両方に名前を付ける場合、それらが同じプログラムに存在すると仮定して、それらの実装(def f(x): return -g(x)Pythonなど)で相互に参照できるようにします。 通常の整数オーバーフロールールが適用されます。ソリューションは、すべての整数がデフォルトで制限されていない仮想バージョン(または実際のバージョン)の任意の大きな整数で動作できる必要がありますが、実装によりプログラムが実際に失敗する場合それほど大きな整数をサポートしていなくても、ソリューションは無効になりません。 任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されています。 これはcode-golfであるため、スコアは両方の関数のバイト数の合計であり、最短の有効な回答が勝ちます。

30
私はエンジニアですか?
最近、信号機のタイミングを研究している電気技師は、オレゴン州から自分自身を技師と称したことで500ドルの罰金を科されました。 入力として米国の州を表す2文字の文字列を指定すると、出力は次のようになります。 I am not an engineer州がオレゴンの場合(OR) I am an engineer 州が他の米国の州である場合 What is an engineer? 他の入力が与えられた 出力には先頭の空白が含まれていない場合がありますが、必要に応じて末尾の空白が含まれている場合があります。 入力は常に2つの大文字であると想定できます。 これは、米国の50の州の略語すべてのリストです。 AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, …

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