問題タブ [code-golf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
23 に答える
7512 参照

algorithm - Code-golf: パスカルの三角形を生成する

リストのリストを生成 (または印刷、私は気にしません)可能な限り最小限のコード行で、サイズ Nのパスカルの三角形を生成します!

これが私の試みです(トリックを使用してpython 2.6で118文字):

説明:

  • リスト内包表記の最初の要素 (長さが 0 の場合) は[1]
  • 次の要素は次の方法で取得されます。
  • 前のリストを取得して 2 つのリストを作成します。1 つは先頭に 0 をパディングし、もう 1 つは最後にパディングします。
    • たとえば、2 番目のステップでは、取り[1]、作成[0,1]し、[1,0]
  • 2 つの新しいリストを要素ごとに合計する
    • たとえば、新しいリスト[(0,1),(1,0)]を作成し、合計でマップします。
  • n回繰り返すだけです。

使用法 (かなりの印刷で、実際には code-golf xD から):

出力:

0 投票する
30 に答える
5263 参照

code-golf - コードゴルフ: 数の素因数

任意の数の素因数を文字数で求める最短の方法は何ですか?

入力例: 1806046

出力例: 2x11x11x17x439

電卓の例

0 投票する
4 に答える
3199 参照

maze - Code Golf: 迷路を解く

これは、最小限のコードで解決できる興味深い問題です。再帰的なソリューションが最も人気があると思います。

キャラクターのマップとして定義された迷路があります。ここ=で、 は壁、スペースはパス、+開始点、#終了点です。信じられないほど単純な例は次のようになります。

できるだけ少ないコードで、このスタイルの迷路を解くための最短経路を見つけるプログラムを作成できますか?

交差するパスや膨大な数の分岐があるものなど、すべての迷路入力で機能する場合はボーナス ポイントです。プログラムは大きな迷路 (たとえば、1024x1024 - 1 MB) で動作できる必要があり、迷路をプログラムに渡す方法は重要ではありません。

「プレイヤー」は斜めに移動することがあります。入力迷路には斜めの通路がないため、基本的な動きのセットは上、下、左、右になります。斜めの動きは、上下と左右がマージできるかどうかを判断するために、少し前を見ているだけです。

出力は、アスタリスク文字 ( ) を使用して強調表示された最短パスを持つ迷路自体である必要があります*

0 投票する
48 に答える
5120 参照

code-golf - Code Golf: 文字列内の重複文字の削除

課題: String 内の重複する文字を検出して削除する、文字数による最短のコード。削除には、重複した文字のすべてのインスタンスが含まれ(したがって、3 つの n が見つかった場合は、3 つすべてを削除する必要があります)、元の文字の順序を保持する必要があります。

入力例 1:
nbHHkRvrXbvkn

出力例 1:
RrX


入力例 2:
nbHHkRbvnrXbvkn

出力例 2:
RrX

(2 番目の例では、3 回出現する文字を削除します。一部のソリューションでは、これを説明できませんでした)

(これは、C# でこれを行うための最速の方法が必要だったという私の他の質問に基づいていますが、言語間で優れたコード ゴルフになると思います。)

0 投票する
32 に答える
23597 参照

language-agnostic - 文字列をモールス信号に変換する

チャレンジ

文字数による最短のコード。アルファベット文字(大文字と小文字)、数字、コンマ、ピリオド、疑問符のみを使用して文字列を入力し、モールス信号で文字列の表現を返します。モールス信号の出力は、長いビープ音(AKA'dah')の場合はダッシュ( 、ASCII 0x2D)で構成され、短いビープ音(AKA' dit')の場合-はドット( 、ASCII 0x2E)で構成されます。.

各文字はスペース(' '、ASCII 0x20)で区切る必要があり、各単語はスラッシュ(/、ASCII 0x2F)で区切る必要があります。

モールス信号表:

代替テキストhttp://liranuna.com/junk/morse.gif

テストケース:


コードカウントには、入力/出力(つまり、プログラム全体)が含まれます。

0 投票する
25 に答える
3489 参照

code-golf - コードゴルフ:リバースクワイン

ソースコードのを文字列として出力するプログラムを書いてください。ソースが

(つまり、C 文字列"abcd\nefg")

次に、出力は次のようになります

(つまり、C 文字列"gfe\ndcba")

Brainf*ck などの難解な言語を使用するためのボーナス ポイント。


*EDIT:** 不要な \0 文字を削除しました.+

0 投票する
33 に答える
6643 参照

language-agnostic - コードゴルフ:波

チャレンジ

入力文字列からウェーブを生成するための文字数による最短のコード。

波は、高い文字を上げる(line-1)、低い文字を下げる(line + 1)ことによって生成されます。等しい文字が同じ行に保持されます(昇格または降格は行われません)。

入力は小文字と数字のみで行われ、文字は数字よりも大きいと見なされます。

テストケース:

コードカウントには、入力/出力(つまり完全なプログラム)が含まれます。

0 投票する
4 に答える
925 参照

algorithm - 配列を更新するための頭の体操のコーディング (言語に依存しない)

全て、

このアルゴリズムを(仕事のために)できるだけ早くきれいに実装するための賢い方法が必要です。言語固有の問題をすべて取り除き、これに要約したと思います。

A と B の 2 つの配列があります。

A には名前のリストがあります {Apple、Apple、Banana、Banana、Banana、Carrot、...} 各 i 番目の値には、A に出現できる回数の上限はありません。 「アップル」または無数。

A の各エントリには、B に一致するエントリがあります (多対多のマッピング)。例えば:

A のエントリのインスタンスが 100 以下の場合 (バナナが 100 以下の場合)、それらはすべて同じ初期 "B" 値を共有する必要があります。100 を超える場合、最初の 100 は同じ B 値を共有する必要がありますが、次の 100 は B[i + 100] 番目の値を持ちます。

りんごが102個ある場合の例

次に、私が望む結果は次のとおりです。

私が考案したくだらないアルゴリズムを思いつくことができるスーパーブレインがそこにいると確信しているので、それを見てみましょう!

編集1:これ仕事のためだったと指摘する必要があると思います。これは、誰かが見て、私が思いついたものよりも優れた解決策を考え出したいと思うかもしれない楽しい挑戦だと思いました.

編集 2:私のばかげた間違いを指摘してくれたダニエルに感謝します。

比較のためだけの私のソリューション(疑似コード):

最初に d と呼ばれる B のハッシュ/辞書を作成します。ここで、d[ "Apple" ] = A 内の Apple のインスタンスの数です。

メモリからこれを行うと、インデックスを台無しにしないことを願っています...

0 投票する
18 に答える
7148 参照

math - Code Golf: 数式評価器 (PEMDAS を尊重)

正規表現、既存の「Eval()」のような関数、解析ライブラリを使用せずに、PEMDAS (演算の順序: 括弧、べき乗、乗算、除算、加算、減算) を尊重する数式評価器を作成するようにあなたに挑戦します。など

SO に関する既存のエバリュエーター チャレンジが 1 つ見られましたが (こちら)、特に左から右への評価が必要でした。

入力と出力の例:

私は C# でエバリュエーターを書きましたが、選択した言語でより賢いプログラマーのエバリュエーターと比べてどれほど悪いかを知りたいと思います。

関連している:

コード ゴルフ: 数式の評価

説明:

  1. これを、文字列の引数を受け取り、文字列の結果を返す関数にしましょう。

  2. 正規表現がない理由については、まあ、それは競技場を平準化するためです。「最もコンパクトな正規表現」には別の課題が必要だと思います。

  3. StrToFloat() の使用は許容されます。「解析ライブラリ」とは、汎用の文法パーサーなどを除外し、公平な競争条件を提供することを意味していました。

  4. フロートをサポートします。

  5. 括弧、累乗、および 4 つの算術演算子をサポートします。

  6. 掛け算と割り算を同等に優先します。

  7. 加算と減算を同等に優先します。

  8. 簡単にするために、すべての入力が整形式であると仮定することができます。

  9. 関数が「.1」や「1e3」などを有効な数値として受け入れるかどうかについては好みはありませんが、それらを受け入れるとブラウニー ポイントが獲得できます。;)

  10. ゼロ除算の場合、おそらく「NaN」を返すことができます (エラー処理を実装したい場合)。

0 投票する
15 に答える
2281 参照

code-golf - Code Golf: 正規表現を使用しない電子メール アドレスの検証

(編集: Code Golf とは: Code Golf は、特定の問題を特定の問題を解決するための課題であり、文字数に応じて任意の言語で特定の問題を解決します。 詳細については、Meta StackOverflow を参照してください。)

コード ゴルファーの皆さん、文字列操作の課題です。

Email Address Validationですが、もちろん正規表現 (または同様の解析ライブラリ) はありません。メールアドレスについてはそれほど重要ではありませんが、以下に示すさまざまな文字列操作と制約をどれだけ短く記述できるかが重要です。

ルールは次のとおりです (はい、これは RFC に準拠していませんが、このチャレンジの 5 つのルールになります)。

  • @ の前に、このグループから少なくとも 1 文字:

    /li>
  • @ は必ず 1 回だけ存在する必要があります

    /li>
  • ピリオド (.) は @ の後に 1 回だけ存在する必要があります

    /li>
  • @ とそれに続く の間に少なくとも 1つの [AZ, az] 文字のみ。(限目)

    /li>
  • 最後. 限目

    /li>

メソッド/関数のみを投稿してください。これは、文字列 (提案された電子メール アドレス) を受け取り、有効 (true) または無効 (false) である電子メール アドレスに応じて、ブール値の結果 (true/false) を返します。

幸運を!