問題タブ [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 投票する
7 に答える
2403 参照

python - Python イテレータを生成する一連の順序付き整数の結合

ここに一見単純な問題があります: 整数のシーケンスを昇順で生成するイテレータのリストが与えられた場合、すべてのシーケンスに現れる整数のみを生成する簡潔なジェネレータを記述します。

昨夜いくつかの論文を読んだ後、私は Python で完全に最小限のフルテキスト インデクサーをハックすることにしまし(このバージョンは今ではかなり古いですが)。

私の問題は、search()各投稿リストを反復処理し、すべてのリストに表示されるドキュメント ID のみを生成する必要がある関数にあります。上記のリンクからわかるように、現在の非再帰的な「作業」の試みはひどいものです。

生成する必要があります:

これに対する洗練された再帰関数の解決策が少なくとも 1 つありますが、可能であればそれは避けたいと思います。itertoolsただし、ネストされたジェネレータ式、乱用、またはその他の種類のコード ゴルフを含むソリューションは大歓迎です。:-)

整数のセット全体をメモリに吸い込まずに、最小のリストにあるアイテムと同じ数のステップのみを関数が必要とするように調整できるはずです。将来、これらのリストはディスクから読み取られ、使用可能な RAM よりも大きくなる可能性があります。

この 30 分間、私は舌先でアイデアを思いつきましたが、それをコードにすることはできませんでした。覚えておいてください、これはただの楽しみです!

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

unicode - ツイッターのテキスト圧縮チャレンジ

ルール

  1. プログラムには、 encodingdecryptionの 2 つのモードが必要です。
  2. エンコード時:

    1. あなたのプログラムは、人間が読めるLatin1テキスト、おそらく英語を入力として取らなければなりません。
      • 句読点を無視しても問題ありません。
      • L337ではなく、実際の英単語だけを気にする必要があります。
      • アクセント付きの文字は、単純な ASCII に変換できます。
      • 数値の処理方法を選択できます。
      • 123
        • 一二三
        • 百二十三
        • 123
        • 1 2 3
      • 百二十三
        • 一二三
        • 百二十三
        • 123
        • 1 2 3
    2. プログラムは、次の式で表現できるメッセージを出力する必要があります。

      • U+0000–<code>U+10FFFFの範囲の 140 コード ポイント

        非文字を除く:

        • U+FFFE
        • U+FFFF
        • U+nFFFE、ここで-<code>10 16 進数U+nFFFFn1
        • U+FDD0–<コード>U+FDEF
        • U+D800–<code>U+DFFF (サロゲート コード ポイント)。

    任意の適切なエンコーディングで出力できます。GNUiconvでサポートされているエンコーディングは妥当であると見なされ、プラットフォーム ネイティブのエンコーディングまたはロケール エンコーディングが適切な選択となる可能性があります。

  3. デコード時:

    1. プログラムは、エンコーディングモードの出力を入力として受け取る必要があります。
    2. テキスト出力は、入力テキストの近似値である必要があります。
      • 元のテキストに近づくほど、より良い結果が得られます。
      • 句読点は必要ありません。
    3. 出力テキストは、おそらく英語で、人間が読めるものでなければなりません。

      • L337、または笑することができます。
    4. 復号化プロセスは、上記で指定された出力以外の符号化プロセスの他の出力にアクセスできない場合があります。つまり、テキストをどこかにアップロードして、デコード プロセス用の URL を出力してダウンロードすることはできません。
  4. ユーザー インターフェイスの一貫性を保つために、プログラムは次のように動作する必要があります。
    1. プログラムは、適切なインタープリターを使用してプラットフォーム上で実行可能に設定できるスクリプト、または実行可能ファイルにコンパイルできるプログラムである必要があります。
    2. プログラムは、モードを設定するために、encodeまたはのいずれかを最初の引数として取らなければなりません。decode
    3. プログラムは、少なくとも次のいずれかの方法で入力を受け取る必要があります。
      • 標準入力から入力を受け取り、標準出力に出力を生成します。
        • my-program encode <input.txt >output.utf
        • my-program decode <output.utf >output.txt
      • 2 番目の引数で指定されたファイルから入力を受け取り、3 番目で指定されたファイルに出力を生成します。
        • my-program encode input.txt output.utf
        • my-program decode output.utf output.txt
  5. あなたの解決策については、投稿してください:
    1. コード全体、および/または他の場所でホストされているコードへのリンク (非常に長い場合、またはコンパイルに多くのファイルが必要な場合など)。
    2. コードからすぐに明らかでない場合、またはコードが長く、人々が要約に興味を持っている場合、それがどのように機能するかの説明。
    3. 元のテキスト、圧縮後のテキスト、およびデコードされたテキストを含むテキストの例。
    4. 他の誰かが持っていたアイデアに基づいて構築している場合は、それらを帰属させてください. 他人のアイデアを改良しようとするのは問題ありませんが、その人に帰属する必要があります。

このルールは、Twitter 画像エンコード チャレンジのルールのバリエーションです。

0 投票する
13 に答える
1308 参照

code-golf - Code Golf: インスタンス数を含む、テキストからキーワードのリストをすばやく作成する

私はすでに PHP を使用してこのソリューションを自分で考え出しましたが、どうすれば別の方法で実行できるか興味があります。私が主に興味を持っている 2 つの言語は PHP と Javascript ですが、今日の他の主要な言語 (主に C#、Java など) でもこれがどれほど迅速に行われるかを知りたいと思います。

  1. X より大きい出現回数を持つ単語のみを返す
  2. Y より大きい長さの単語のみを返す
  3. 「and、is、the など」などの一般的な用語を無視する
  4. 処理の前に句読点を自由に削除してください (つまり、"John's" は "John" になります)。
  5. 結果をコレクション/配列で返す

エクストラクレジット

  1. 引用されたステートメントを一緒に保管してください(つまり、「彼らは明らかに「真実であるには良すぎる」でした」)「真実であるには
    良すぎる」が実際のステートメントになります

エクストラエクストラクレジット

  1. 一緒に見つかる頻度に基づいて、まとめておくべき単語をスクリプトで判断できますか? これは、事前に言葉を知らずに行われます。例:
    *「ショウジョウバエは医学研究において素晴らしい存在です。ショウジョウバエについては過去に多くの研究が行われ、多くのブレークスルーがもたらされました。今後もショウジョウバエの研究は続けられますが、私たちの方法は変わるかもしれません。」*
    明らかに、ここにある単語は「フルーツ フライ」であり、簡単に見つけることができます。あなたの search'n'scrape スクリプトもこれを判断できますか?

ソーステキスト: http://sampsonresume.com/labs/c.txt

回答形式

  1. 操作がどれくらい続いたかに加えて、コードの結果、出力を確認することは素晴らしいことです.
0 投票する
11 に答える
7371 参照

computer-science - 最短のチューリング完全インタプリタの作成

可能な限り最小の言語インタープリターを作成しようとしました。参加して試してみませんか?

ゲームのルール:

  • 解釈しているプログラミング言語を指定する必要があります。あなたが発明した言語の場合は、コメントにコマンドのリストが含まれているはずです。
  • コードは、コードとデータ変数に割り当てられたサンプル プログラムとデータで開始する必要があります。
  • コードは、結果の出力で終了する必要があります。中間ステップごとに debug ステートメントがあることが望ましいです。
  • コードは記述どおりに実行できるはずです。
  • データは 0 と 1 (int、string、または boolean から選択) であり、出力は 1 ビットであると想定できます。
  • 言語は、チューリング マシン、マルコフ連鎖などの標準モデルで記述された任意のアルゴリズムについて、実行後にプログラムを作成する方法が合理的に明白 (または説明) であるという意味で、チューリング完全である必要があります。インタプリタによってアルゴリズムが実行されます。
  • コードの長さは、入力部分、出力部分、デバッグ ステートメント、および不要な空白を取り除いた後のコードの長さと定義されます。結果のコードとその長さを投稿に追加してください。
  • eval()など、コンパイラにコードを実行させる関数は使用できませんexec()

これはコミュニティ Wiki です。つまり、質問も回答も投票から評判ポイントを得ることはありません。でもとにかく投票!

0 投票する
17 に答える
23869 参照

code-golf - スカイラインの問題

私はUVA のオンライン ジャッジでこの小さな問題に出くわし、小さなコード ゴルフの良い候補になるかもしれないと考えました。

問題:

あなたは、建築家が都市の建物の位置を考慮して都市のスカイラインを描くのを支援するプログラムを設計することになっています。問題を扱いやすくするために、すべての建物は長方形で、共通の底を共有しています (建物が建てられている都市は非常に平らです)。都市も二次元として見られます。建物は順序付けられたトリプル(Li、Hi、Ri)によって指定されます。ここで、LiRiはそれぞれ建物 i の左座標と右座標であり、Hiは建物の高さです。

代替テキスト

下の図では、建物は左側にトリプルで示されています

右側に示されているスカイラインは、次のシーケンスで表されます。

出力は、上記の例に示すように、スカイラインを表すベクトルで構成されている必要があります。スカイラインベクトル(v1, v2, v3, ... vn)において、i が偶数のviは水平線 (高さ) を表します。iが奇数のviは縦線(x座標)を表す。スカイライン ベクトルは、たとえばバグが最小の x 座標から開始し、スカイラインを定義するすべての線を水平および垂直に移動する「パス」を表す必要があります。したがって、スカイライン ベクトルの最後のエントリは 0 になります。座標は空白で区切る必要があります。

提供された (テスト) 建物の宣言をカウントせず、すべてのスペースとタブ文字を含めない場合、Python での私の解決策は223文字です。

要約版は次のとおりです。

私は間違いを犯していないと思いますが、もしそうなら、遠慮なく私を批判してください。

私はあまり評判が良くないので、報奨金には 100 しか払いません - 誰かがこれを 80 文字以内で解決できるかどうか知りたいです。cobbalによって投稿されたソリューションは101 文字の長さで、現在はそれが最適です。

この種の問題では、80文字は病気の限界だと思いました。cobbalの 46 文字の解決策には完全に驚かされました。認めざるを得ませんが、彼が書いた内容を部分的に理解する前に、彼の説明を読むのに時間がかかりました。

0 投票する
34 に答える
2916 参照

bytearray - 配列検索コードの課題

これが私の (コード ゴルフ) 課題です。2 つのバイト配列を取得し、2 番目の配列が最初の配列の部分文字列であるかどうかを判断します。そうである場合、2 番目の配列の内容が最初の配列に現れるインデックスを出力します。最初の配列で 2 番目の配列が見つからない場合は、-1 を出力します。

入力例: { 63, 101, 245, 215, 0 } { 245, 215 }

期待される出力: 2

入力例 2: { 24, 55, 74, 3, 1 } { 24, 56, 74 }

期待される出力 2: -1

編集: bool は冗長であると誰かが指摘しているため、関数が行う必要があるのは、値のインデックスを表す int を返すか、見つからない場合は -1 です。

0 投票する
16 に答える
1126 参照

text-files - Code Golf 7 月 4 日版: 上位 10 の出現単語のカウント

次の大統領のリストが与えられた場合、可能な限り最小のプログラムで上位 10 語数を数えます。

入力ファイル

bash 97文字で開始するには

出力:

好きなように縁を切りましょう!四代目おめでとう!

大統領の詳細については、こちらをご覧ください

0 投票する
6 に答える
3008 参照

c# - void メソッドを非同期的に呼び出す最も簡潔な方法

非同期で呼び出したいメソッドがあります。

実際、次の方法でこれを非同期的に呼び出すことができます。

誰かが代替手段を持っていますか?

3行のコードは多すぎると思いますか?

0 投票する
7 に答える
2263 参照

computer-science - ワン ライナー コードの課題を覚えていますか?

何年も前に Byte のような雑誌で、1 行のコードで書かれた最も機能的なコードを作成するために人々が競争したことを覚えている人はいますか? テキストをスクロールする Pole Position などのゲームや、フラクタル グラフィックスがこのように行われたことを覚えています。

C# や Java などの最新の言語では、1 つのステートメントで数えきれないほど多くのことが認められていますが、現在同様のことが行われていることを知っている人はいますか? また、刺激的で興味深いものを見ることができました。