問題タブ [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.
binary - コード ゴルフ - 16 進数から (生の) バイナリへの変換
16 進から (未加工の) 2 進への変換に関するこの質問への回答として、「5 ~ 10 行の C またはその他の言語」で解決できるというコメントがありました。
(一部の) スクリプト言語で実現できると確信しており、その方法を知りたいと思っています。Cについても、そのコメントが正しいことを証明できますか?
注意: これは 16 進数からASCIIバイナリへの変換を意味するものではありません。具体的には、出力は入力 ASCII 16 進数に対応する生のオクテット ストリームである必要があります。また、入力パーサーは空白をスキップ/無視する必要があります。
edit (by Brian Campbell) 一貫性を保つために、次のルールを提案してもよろしいですか? これらが役に立たないと思われる場合は、自由に編集または削除してください。ただし、特定のケースがどのように機能するかについていくつかの議論があったため、いくつかの明確化が役立つと思います.
- プログラムは stdin から読み取り、stdout に書き込む必要があります (コマンドラインで渡されたファイルからの読み取りと書き込みを許可することもできますが、どの言語でも stdin と stdout よりも短いとは思えません)
- プログラムは、基本の標準言語ディストリビューションに含まれているパッケージのみを使用する必要があります。C/C++ の場合、これはそれぞれの標準ライブラリを意味し、POSIX ではありません。
- プログラムは、コンパイラまたはインタープリターに渡される特別なオプションなしでコンパイルまたは実行する必要があります (したがって、「gcc myprog.c」または「python myprog.py」または「ruby myprog.rb」は問題ありませんが、「ruby -rscanf myprog.rb」は問題ありません)。 ' は許可されていません; モジュールの要求/インポートは文字数にカウントされます)。
- プログラムは、オプションで空白で区切られた、隣接する 16 進数のペア (大文字、小文字、または大/小文字混合) で表される整数バイトを読み取り、対応するバイトを出力に書き込む必要があります。16 進数の各ペアは、最上位ニブルから順に書き込まれます。
- 無効な入力 ( 以外
[a-fA-F \t\r\n]
の文字、個々のバイト内の 2 つの文字を区切るスペース、入力の 16 進数の奇数) に対するプログラムの動作は未定義です。不正な入力に対する任意の動作 (ユーザーのコンピューターまたは何かに積極的に損害を与えることを除く) は許容されます (エラーをスローする、出力を停止する、不正な文字を無視する、1 文字を 1 バイトの値として扱う、すべて OK) - プログラムは、追加のバイトを出力に書き込むことはできません。
- ソース ファイル内の合計バイト数が最も少ないコードがスコア付けされます。(または、元の課題により忠実にしたい場合、スコアはコードの行数が最も少ないことに基づいています。その場合、1 行あたり 80 文字の制限を課します。 1行のタイ)。
php - シンプルな PHP フォーム: メールへの添付 (コード ゴルフ)
Web サイトの訪問者がファイルと簡単なメッセージをアップロードできるようにするフォームを Web サイトに配置したいと考えているユーザーを想像してみてください。一時的にのみ) メッセージ本文にメモを含む添付ファイルとして。
詳細については、http://a2zsollution.com/php-secure-e-mail/を参照してください。
これを達成する最も簡単な方法は何ですか?
次の点で最も単純です。
- サイズ(コードゴルフ)
- 実装の容易さ (理想的には、すべてを 1 つのファイルにまとめ、外部リソースをほとんどまたはまったく必要としません)
- 難読化のために難読化されていない (サイズのトレードオフは問題ありません)
- 自己完結型の例 (フォーム ポストなしで呼び出すと、フォームが表示されます)
これは、PHP から電子メールとその添付ファイルを取得する方法のほぼ逆です。Compiling email with multiple attachments in PHPでほとんど答えられたかもしれませんが、実際にはコードは表示されません。
puzzle - コードゴルフ:オートマタ
これらのルールを使って究極の笑いジェネレーターを作りました。あなたはそれをあなたの好きな言語で巧妙な方法で実装できますか?
ルール:
すべての反復で、次の変換が発生します。
java - 素数計算の最短コード
私の学校のコンピューター サイエンス関連の新聞 ( readmeと呼ばれる、ノルウェー語で、19 ページ) では、次の問題に対して可能な限り短い Java コードを作成するための楽しいコンテストが行われました。
引数として整数 (文字列配列の最初のエントリの文字列として。Java のメイン メソッドは文字列配列のみを受け取るため) を引数として取り、最初にこの数値より下の素数であるすべての数値を書き出し、次にすべての数値を書き出します。は素数ではありません。最短のコードが勝ちます!
答えとして、競争に勝った最短の Java コードを投稿します。スタック オーバーフロー コミュニティはもっと短いコードを作成できるのではないでしょうか ノルウェー語を知っていれば、それを行っていればシャンパン 1 本を獲得できたはずですが、残念ながらコンテストの最終提出日は終了しています。
この問題をどのように解決したでしょうか。
bash - catを使用してプログラムするにはどうすればよいですか?
このxkcdコミックでは:
彼らは、実際のプログラマーがを使用すると述べていますcat
。さて、私は自分自身に問いかけていましたcat
。コマンドを使用してどのようにプログラムできますか?
math - 単純な数式の文字列を評価する
チャレンジ
これが課題です (私自身の発明によるものですが、以前に Web の他の場所に登場したとしても驚かないでしょう)。
単純な数式の文字列表現である単一の引数を取り、それを浮動小数点値として評価する関数を作成します。「単純式」には、正または負の 10 進数、+、-、*、/、(、)のいずれかを含めることができます。式は (通常の)中置記法を使用します。演算子は、 BODMASのようにではなく、出現順に評価する必要がありますが、もちろん括弧は正しく観察する必要があります。関数は、任意の正しい結果を返す必要があります。この形の可能な表現。ただし、関数は不正な式 (つまり、構文が正しくないもの) を処理する必要はありません。
式の例:
ルール
ここで何らかの「不正行為」/狡猾さを予想しているので、事前に警告させてください! チートとは、eval
JavaScript や PHP などの動的言語で または同等の関数を使用すること、またはコードをオンザフライでコンパイルして実行することを指します。(ただし、「BODMAS なし」という私の仕様は、これをほぼ保証していると思います。) それ以外には、制限はありません。ここでいくつかの Regex ソリューションを期待していますが、それだけではありません。
ここでは、主に C#/.NET ソリューションに関心がありますが、他の言語も完全に受け入れられます (特に、関数型/混合型アプローチの場合は F# と Python)。答えとして(少なくともその言語については)最短または最も独創的な解決策を受け入れるかどうかはまだ決めていませんが、上記で禁止したものを除いて、任意の言語でのあらゆる形式の解決策を歓迎します!
私の解決策
C# ソリューションをここに投稿しました(403 文字)。更新: 私の新しいソリューションは、少し素敵な正規表現の助けを借りて、294 文字で古いソリューションを大幅に上回りました! これは、より軽い構文 (特に機能的/動的なもの) を使用する一部の言語によって簡単に打ち負かされるのではないかと考えており、正しいことが証明されていますが、誰かがまだ C# でこれを打ち負かすことができるかどうかに興味があります。
アップデート
私はすでにいくつかの非常に狡猾な解決策を見てきました。投稿してくれたすべての人に感謝します。私はまだそれらをテストしていませんが、人々を信頼し、少なくとも与えられたすべての例で動作すると仮定します.
注意点として、再入可能性 (つまり、スレッドセーフ) は関数の要件ではありませんが、おまけです。
フォーマット
簡単に比較できるように、すべての回答を次の形式で投稿してください。
言語
文字数:???
完全に難読化された機能:
クリア/半難読化機能:
それが取るアルゴリズム/巧妙なショートカットに関するメモ。
c# - Codegolf:C#で最小限のコードでcsvをHTMLテーブルに変換します
自分の個人用ツールキットライブラリに関数を追加して、単純なCSVからHTMLテーブルへの変換を実行しています。
可能な限り最小のコードでC#でこれを実行したいのですが、500MBを超えるCSVファイルを処理できる必要があります。
これまでのところ、私の2人の候補者は
区切り文字でcsvを配列に分割し、HTML出力を作成する
検索-区切り文字をテーブルthtrtdタグに置き換えます
ファイル/読み取り/ディスク操作がすでに処理されていると仮定します...つまり、CSVの内容を含む文字列をこの関数に渡します。出力は、まっすぐな単純なHTMLスタイルのないマークアップで構成されます。はい、データにカンマや区切りが含まれている可能性があります。
更新: 何人かの人々が尋ねました。私が扱っているCSVの100%は、それが役立つのであれば、Excelから直接得られます。
文字列の例:
language-agnostic - コードゴルフ:加重中央値を見つけるための最短コード?
コードゴルフをやってみました。
の最小値を見つける∑W_i*|X-X_i|
問題は、重み付きのリストの重み付き中央値を見つけることにx[i]
なりますw[i]
(定義については以下を参照)。最短で、最もシンプルで、最も美しいプログラムでそれをどのように行いますか?
これが私のコードが元々どのように見えたかです(説明は質問への回答にあり、短いバージョンが以下の回答の1つとして投稿されています)。
i
(実際には、変数が表示されて再利用されているため、すでに大幅に最適化されていますsum
)
ルール
浮動小数点数と整数:言語が異なれば浮動小数点演算標準も異なるため、問題を整数に再定式化し、x[i]
必要にw[i]
応じて回答の2倍の値(常に整数)を返すことができます。回答を返す、印刷する、または変数に割り当てることができます。
加重中央値と説明の定義:
x[i]
ソートされた長さの配列の中央値は、奇数か偶数かによって異なりn
ます。x[n/2]
(x[n/2-1/2]+x[n/2+1/2])/2
n
ソートされていない配列の中央値は、ソート後の配列の中央値です(trueですが、配列はソートされています)x[i]
整数の正の重みを持つの重み付き中央値は、の各出現がの出現に変更されw[i]
た、より大きな配列の中央値として定義されます。x[i]
w[i]
x[i]
私が見たいもの
質問する理由の1つは、最も適切な言語には、単純な配列の合計とラムダによる反復があると想定していることです。関数型言語は妥当だと思いましたが、それについてはよくわかりません。それで、それは質問の一部です。私の望みは次のようなものを見ることです
これが可能で、実際にはもっと短い言語があれば、Dunno。
テストデータ
回答:6または12。
回答:6.5または13。