問題タブ [rosetta-stone]
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.
language-agnostic - コードゴルフ:Code39バーコード
チャレンジ
Code39バーコードのASCII表現を描画するための文字数による最短のコード。
Code 39に関するウィキペディアの記事:http: //en.wikipedia.org/wiki/Code_39
入力
入力は、Code39バーコードの有効な文字列になります。これは、43文字が有効であることを意味します:0
-- 9
A
(Z
スペース)および
-.$/+%
。文字は*
開始文字と停止文字として使用されるため、入力には表示されません。
出力
Code 39バーコードでエンコードされた各文字には、9つの要素、5つのバー、および4つのスペースがあります。バーは#
文字で表され、スペースはスペース文字で表されます。9つの要素のうち3つは幅が広くなります。幅の狭い要素は1文字幅になり、幅の広い要素は3文字幅になります。各文字パターンの間に、単一のスペースの文字間スペースを追加する必要があります。バーコードの高さが8文字になるように、パターンを繰り返す必要があります。
開始/停止文字*
(bWbwBwBwb)は、次のように表されます。
- 開始文字と停止文字
*
は、バーコードの開始と終了時に出力する必要があります。 - バーコードの前後に静かなスペースを含める必要はありません。
- チェックディジットを計算する必要はありません。
- 完全なASCIICode39エンコーディングは必要ありません。標準の43文字だけです。
- 出力内容を識別するために、ASCIIバーコード表現の下にテキストを印刷する必要はありません。
- 必要に応じて、キャラクターをより高密度の別のキャラクター
#
に置き換えることができます。フルブロック文字U+2588を使用すると、印刷時にバーコードを実際にスキャンできるようになります。
テストケース
コード数には入出力(フルプログラム)が含まれます。
language-agnostic - ファイル Fix-it codegolf (GCJ 2010 1B-A)
昨年 (2009 年) のGoogle Code Jamでは、Round 1B の最初の問題として興味深い問題が取り上げられました:決定木
この問題は Lisp に似た言語に合わせて調整されているように見えたので、私たちは自発的にここ SO でエキサイティングなコードゴルフを作成しました。その中では、いくつかの言語が、かなり多くの異なる手法を使用して、どの Lisp の種類よりも少ない文字数で問題を解決することができました。
今年の Round 1B Problem A ( File Fix-it ) も、特定の言語ファミリーである Unix シェル スクリプト向けに調整されているようです。したがって、「1B-A の伝統」を継続することが適切でしょう。:p しかし、どの言語が最短のコードになるでしょうか? コードゴルフして見てみましょう!
問題の説明(公式ページから適応):
T個のテスト ケースが与えられます。各テスト ケースには、コンピュータに現在存在するすべてのディレクトリのフル パスをリストするN行が含まれます。例えば:
次に、作成するディレクトリのフル パスをリストするM行が表示されます。これらは、前の例と同じ形式です。コマンドを使用してディレクトリを作成できますmkdir
が、親ディレクトリが既に存在する場合にのみ作成できます。たとえば、ディレクトリ/pyonpyon/fumufumu/yeahyeah
とを作成するには、次のように4 回/pyonpyon/fumufumu/yeahyeahyeah
使用する必要があります。mkdir
mkdir
テスト ケースごとに、作成するすべてのディレクトリを作成するために呼び出す必要がある回数を返します。
入力
入力はテキスト ファイルで構成され、その最初の行には整数T (テスト ケースの数) が含まれます。ファイルの残りの部分には、テスト ケースが含まれています。
各テスト ケースは、スペースで区切られた整数NとMを含む行で始まります。
次のN行には、現在コンピューターに存在する各ディレクトリのパスが含まれています (ルート ディレクトリは含まれません/
)。これは、1 つまたは複数の空でない小文字の英数字文字列を連結したもので、それぞれの前に単一の/
.
次のM行には、作成する各ディレクトリのパスが含まれています。
出力
ケースごとに、 を含む 1 行を出力します。Case #X: Y
ここX
で、 はケース番号、Y
はソリューションです。
限界
1 ≤ T ≤ 100。
0 ≤ N ≤ 100。
1 ≤ M ≤ 100。
各パスには最大 100 文字が含まれます。
すべてのパスは、コンピューターに既に存在するディレクトリのリスト、または目的のディレクトリのリストに一度だけ表示されます。ただし、以下のケース #3 のように、両方のリストにパスが表示される場合があります。
ディレクトリが既にコンピュータ上のディレクトリのリストにある場合、ルート ディレクトリを除いて、その親ディレクトリもリストされます/
。
入力ファイルの長さは最大 100,000 バイトです。
例
より大きなサンプル テスト ケースは、ここからダウンロードできます。
入力:
出力:
コードゴルフ
この問題を解決する最短のコードを任意の言語で投稿してください。入力と出力は、stdin と stdout を介して、または選択した他のファイルで処理できます。コードが実行時に既存のファイルを変更または削除する可能性がある場合は、免責事項を含めてください。
勝者は、Round 1B 2010 の開始前に実装が存在する言語での (バイト カウントによる) 最短のソリューションになります。解決策、それはカウントされず、おそらく反対票を得るでしょう. ^_^
順位表
language-agnostic - Code Golf: 1x1 黒ピクセル
最近、お気に入りの画像エディターを使用して 1x1 の黒いピクセルを作成しました (これは、HTML で塗りつぶされたボックスを安価に描画したい場合に便利です)。モノクロPNGにしたのに120バイトになってしまった!つまり、それはちょっと急です。120 バイト。 1 ピクセルの場合。次に、それを GIF に変換すると、サイズが 43 バイトに減少しました。はるかに優れていますが、それでも...
チャレンジ
1x1 の黒ピクセルを生成する、または生成する最短の画像ファイルまたはプログラム。提出物は次のとおりです。
- 1x1 の黒ピクセルを表すイメージ ファイル。選択する形式は、1x1 よりも大きな画像を表現できる必要があり、アドホックであってはなりません (つまり、コード ゴルフ用に作成したばかりの画像形式であってはなりません)。画像ファイルはバイト数でランク付けされます。
- このような画像ファイルを生成するプログラム。プログラムは、通常のコード ゴルフと同様に、文字数によってランク付けされます。
回答がこれら 2 つのカテゴリのいずれかに該当する限り、すべてがフェア ゲームです。
また、画像ファイルの場合は、外部の画像ホストを使用するのではなく、16 進数またはエスケープで指定してください :-)
language-agnostic - Code Golf: 電話番号を単語に
1-800-BUY-MORE などのように、言葉で表現された電話番号を見たことがあるでしょう。
7 桁の米国の電話番号のすべての可能な単語の組み合わせを生成するために記述できるコードの最短量はどれくらいですか?
入力は 7 桁の整数 (より単純な場合は文字列) であり、入力が適切に形成されていると仮定します。
出力は、7 文字の文字列のリストになります。
たとえば、428-5246 という数字は次のようになります。
GATJAGM
GATJAGN
GATJAGO
GATJAHM
GATJAHN
GATJAGO
GATJAIM
GATJAIN
GATJAIO など……。
受賞基準は、すべての可能な文字の組み合わせを生成する文字数が最も少ない任意の言語のコードです。
その他の注意事項:
- さらに興味深いことに、ここで定義されているように、数字ごとに 3 文字の北米クラシック キー パッド電話の文字を使用することによってのみ、単語を形成できます。つまり、Z と Q は除外されます。
- 数字の「1」にはスペースを入れてください。
- 数字の「0」にはハイフン「-」を入れる
出力を実際の英単語として認識すると、ボーナス ポイントが付与されます。わかりました、そうではありません。;-)
追加:オーケー、「Nick's Modified North American Classic Key Pad」で行きましょう。これは 6 キーに「O」(ああ、ゼロではない) があります。
language-agnostic - コードゴルフ:ダイヤモンドパターン
チャレンジ
入力に応じてひし形のパターンを出力する文字数別の最短コード。
入力は、ひし形のサイズとグリッドのサイズを表す 3 つの正の数値で構成されます。
ひし形は ASCII 文字/
と\
スペースで構成されます。サイズ 1 のダイヤモンドは次のとおりです。
グリッドのサイズは、ダイヤモンドの数の幅と高さから構成されます。
テストケース
コード カウントには、入力/出力 (つまり、完全なプログラム) が含まれます。
language-agnostic - コードゴルフ-バナー生成
誰かに感謝するとき、あなたはただ「ありがとう!」という電子メールを彼らに送りたくはありません、あなたは何か派手なものを持ちたいです:
バナーを生成するプログラムを作成します。スペースと感嘆符(感嘆符のないバナーとは何ですか?)とともに大文字のAZを生成するだけです。すべての文字は同じ文字の3x5グリッドで構成されています(したがって、SはSで構成される3x5グリッドです)。すべての出力は1行にある必要があります(したがって、改行はありません)。必要なすべての文字は次のとおりです。
勝者は、ファイルをutf-8エンコーディングで保存するのに必要なバイト数で数えた最短のソースコードです。ソースコードは、stdinからの入力、stdoutへの出力を読み取る必要があります。入力には。のみが含まれると想定できます。間違った入力でユーザーを侮辱すると、10文字の割引=Pが得られます。[A-Z! ]
これらの正確な28文字が必要でしたが、もっと面白くするために、コードを短くするものなら何でも、どのように表示するかを選択できます。文字が通常の文字のように見えることを証明するために、最後の3回の実行の出力を表示します。
これまでの最短コード(文字数(非ASCIIが存在する場合はutf8エンコーディング)):
133 J
205 Python
209ルビー
313 Haskell
345 C89
382 F#
language-agnostic - コードゴルフ:ジグザグパターンスキャン
チャレンジ
単一の入力整数(N> = 3)を取り、繰り返されるとJPEG「ジグザグ」スキャンパターンに従ってx行列N
をトラバースするインデックスの配列を返す、文字数による最短のコード。以下は、8x8マトリックスsrcのトラバーサルの例です。N
N
例
(中央の行列は入力または出力の一部ではなく、入力が表すNxN行列の表現にすぎません。)
ノート
- 結果の配列のベースは、使用する言語に適している必要があります(たとえば、Matlab配列は1ベース、C ++配列は0ベースです)。
- これはこの質問に関連しています。
ボーナス
答えを拡張して、2つの入力N
とM
(N、M> = 3)を取得し、N
xM
行列に対して同じスキャンを実行します。(この場合N
、列M
の数と行の数になります。)
ボーナス例
language-agnostic - コードゴルフ:回転迷路
コードゴルフ:回転迷路
迷路からなるファイルを取り込むプログラムを作成します。迷路にはによって与えられた壁があり#
ます。迷路には、aで指定された単一のボールと、で指定されたo
任意の数の穴が含まれている必要があります@
。迷路ファイルは、コマンドラインから入力するか、標準入力から1行として読み込むことができます。ソリューションでどちらを指定してください。
次に、プログラムは次のことを行います。
すべての入力迷路が閉じていると想定できます。注:この点で、穴は効果的に壁として機能します。
すべての入力迷路に余分な空白がないと想定することができます。
文字数で最短のソースコードが優先されます。
javascriptで書かれた例:http: //trinithis.awardspace.com/rotatingMaze/maze.html
迷路の例:
string - コードゴルフ:繰り返されるテキストの「カラーハイライト」
(重要な概念を支援してくれた以下の greg0ire に感謝します)
課題: すべての部分文字列を検索し、色属性で「タグ付け」するプログラムを作成します (XML で効果的に強調表示します)。
ルール:
- これは、長さが 2 以上の部分文字列に対してのみ行う必要があります。
- 部分文字列は、アルファベット以外の文字を含む可能性のある、連続した文字の単なる文字列です。スペースやその他の句読点は部分文字列を区切らないことに注意してください。
- 文字の大文字と小文字は無視できません。
- 「ハイライト」は、XML で部分文字列にタグを付けることによって行う必要があります。タグ付けは、その部分文字列と同一の部分文字列に固有の正の数
<TAG#>theSubstring</TAG#>
であるという形式にする必要があります。#
- アルゴリズムの優先度は、テキスト内で一致する回数ではなく、最も長い部分文字列を見つけることです。
注: 以下の例に示されているタグ付けの順序は重要ではありません。明確にするためにOPによって使用されています。
入力例:
部分的に正しい出力 (この例では、OP が完全に置き換えられていない可能性があります)
コードは、次のようなエッジ ケースを処理できる必要があります。
入力例 2:
出力例 2:
勝者:
- 最もエレガントなソリューションが勝ちます (他のコメント、賛成票によって判断されます)
- シェルスクリプトを利用したソリューションのボーナスポイント/考慮事項
軽微な説明:
- 入力はハードコーディングするか、ファイルから読み取ることができます
- 基準は「エレガンス」のままで、確かに少しあいまいですが、単純な文字/行数もカプセル化しています。他の人によるコメントや賛成票も、SO コミュニティが課題をどのように見ているかを示しています
language-agnostic - コード ゴルフ: 2D プラットフォーマー
チャレンジ
- レベルの終わりに到達してください!
- 各(C)oinブロックを正確に2回ヒットするとボーナスポイント。
不許可
- 何らかの方法でコマンド シーケンスをハード コーディングします。
- このゴルフを解決するという、まさに 1 つのことを行うお気に入りの「1 文字言語」 。
方法
プログラムは、標準入力を介して下のレベル (改行なし) を受け取ります。
次に、レベルを正常に完了するために必要なコマンドを出力する必要があります。
レベル
- Sは開始位置です。
- Eレベルを完了するために必要な位置。
- Cは 2 枚のコインが入ったコイン ブロックです。レベルを完了するために、これらの 1 つをスキップする必要はありません。
- Cと_の両方が地面としてカウントされます。固体の地面のみがあり、フローティング プラットフォームはありません。
- | | は壁です。レベルを完了するためにジャンプする必要がある壁はすべて、最大で 1 壁の高さです。それ以上のすべての壁は、決して抜け出せない奈落の底と見なすことができます。
- xはスパイクです。触れるとどうなるか当ててみてください。スパイクは常に、周囲の地面より 1 レベル下にあります。
すべてのレベルは 4 行の高さで、各行の幅は 63 文字です。つまり、レベルごとに合計 252 文字になります。
注: >< は境界線を示すためのものであり、プログラムへの入力には含まれません。また、テキスト エディタにも気をつけてください。
コマンド
- M = 右に 1 移動します。下に地面がない場合は、地面にぶつかるまで落下します。落下中 は動けません。
- J = ジャンプ、次の 3 つのコマンドの間、または (C)oin ブロックをヒットするまで、1 ずつ上に移動します。その後、地面に着くまで落下します。ジャンプできるのは地面にいるときだけです。M で地面と同じ高さになると、ジャンプはキャンセルされます。
- O = NOP、あなたを待たせます/何もしません。このようにして、幅が 1 ブロックしかない穴やスパイクをジャンプできます (上記のレベルではこれは必要ありませんが、これが必要なレベルを解決できれば、追加のポイントを獲得できます)。
ソリューション(コインブロックあり)
連続するコマンドは、互いの上に積み重ねられます。
Fは落下する場所を示します (落下中は何もできないことに注意してください)。
結果のコマンド シーケンス、長さ 75 文字:
これがいくつかの興味深い結果をもたらすことを願っています...そして、たくさんの炎ではありません:O
編集
OK、最初に考えていたよりもはるかに多くの可能性があります。すべての編集についてお詫び申し上げます。