怠惰な人のためのコードゴルフ


10

このコードゴルフであなたの目標は、2つの文字列を取ることです、languageそしてcode (あなたがこのために書いたgolfedコードが複数行ある場合、この変数は複数行になります。) 、および1つの整数bytes。これらは、プログラミング言語の変数、バイト数、およびコード自体を表します。

その後、コードゴルファーが行うようにフォーマットします。

出力変数はと呼ばれる複数行の文字列answerです。

次の場所で複数行の文字列を使用できます。

Stack Overflowを検索すると、それをサポートするプログラミング言語をさらに見つけることができるはずです。

出力マークダウンのテンプレートは次のとおりです。code変数は、コードブロックであり、第二のレベルのヘッダがあります。

## {language}, {bytes} bytes

     {code}

Markdownパーサーに貼り付けたときの出力は次のようになります。

{language}、{bytes}バイト

    {code}

変数は、コードゴルフエントリをコーディングした言語、バイト数、および実際のコードとしてすでに入力されていると想定されています。

次にコードとしての出力の別の例を示します。今回は変数が入力されています。

## JavaScript, 1337 bytes

document.getElementById("foo").innerHTML = bar;

これがブロッククォートとしてのバージョンです:

JavaScript、1337バイト

    document.getElementById("foo").innerHTML = bar;

次のJavaScriptコードのように、<p>idでHTMLの要素のテキストを設定する方法を使用する場合、バイトをコードから削除resultできます。

document.getElementById("result").innerHTML = answer;

これ<p id="result"></p>機能するように、JSFiddleのHTMLセクションにもを含めてください。

得点

すべての質問と同様に、バイト数が最も少ないコードが最適です。


3
ウィル{code}これまで複数行のコードで?
Adnan

8
「変数は、コードゴルフエントリをコーディングした言語、バイト数、および実際のコードとして入力されます。」これをクインのバリエーションとして解釈するのは私だけですか?
primo

2
答えは2つのまったく異なる問題を解決しているので、これは不明確であるとして保留にしています。かどうかを明確にしてくださいlanguagebytesそしてcode入力またはこれがあるかどうかですクワインそれらの事が解決コード自体と一致している必要があり変種。(もしそうなら、そのソースコードを直接または間接的に読み取ることが許可されているか、およびクインの組み込みが許可されているかどうか。)
Martin Ender

2
入力code自体に改行を含めることができるかどうか、アドナンの質問も明確にできますか?
マーティンエンダー

2
@ピーナッツ私は混乱しています。code複数行にならないと想定できますか?チャレンジテキストでそのことを
明記

回答:


2

05AB1E、21バイト

コード:

“## ÿ, ÿ¡Ï
“,|v4ð×y«,

CP-1252エンコーディングを使用します。オンラインでお試しください!



@DrGreenEg​​gsandIronMan修正されました。
Adnan

そして、V vs O5AB1Eの戦いは続きます...いい仕事です!
ジェームズ

@DrGreenEg​​gsandIronMan私は、次のASCIIアートチャレンジが復讐するのを待っています:)
Adnan

8

Java、70バイト

String A(String[]b){return"## "+b[0]+", "+b[1]+" bytes\n\n    "+b[2];}

b[0]は言語名、b[1]バイト数、およびb[2]コードであると想定します。

コンパイル可能にするには9バイトのコストがかかり、結果として79バイトの非スタンドアロンプ​​ログラムになります。

class a{String A(String[]b){return"## "+b[0]+", "+b[1]+" bytes\n\n    "+b[2];}}

同等のモノリシックプログラムは103バイトの長さです。

interface a{static void main(String[]A){System.out.print("## "+A[0]+", "+A[1]+" bytes\n\n    "+A[2]);}}

モノリシックは、非スタンドアロンプ​​ログラムと同様に、コマンドライン引数で機能します。

  • 最初の引数は言語名です
  • 2番目の引数はバイト数です
  • 3番目の引数はコードです

Java(ラムダ式)、56 48バイト

(b)->"## "+b[0]+", "+b[1]+" bytes\n\n    "+b[2];

これはjava.util.function.Function<String[], String>です。


これらのプログラム/関数はいずれも、複数行の文字列を処理しません。これを行うには、単純にb[2]and A[2]b[2].replace("\n","\n ")andを置き換えA[2].replace("\n","\n ")ます。そうすると、23バイトが追加されます。


私は今、確認するためにコンピューターの近くにいませんが\t、2つの改行の後の4つのスペースを置き換えるために何かを使用できませんか?
R. Kap 2016

@ R.Kap時々、スペースの代わりにタブを使用すると、SEで混乱が発生します。
user8397947

ああ、なるほど。では、バイト数\tは4つのスペースではなく考慮に入れられますか?
R. Kap 2016

3
ラムダで括弧を失う; だけで2バイトを節約できますb->
Brian McCutchon 2016

2
複数行のコードがある場合はどうなりますか?
Neil

5

V、24バイト

末尾にスペースがあることに注意してください。

このプログラムは、{code}複数行にならないことを前提としています。

Opが明確にした、「コード」は複数行の文字列である可能性があります。この24バイトバージョンは機能します。

2é#á $á,JA bytes
vGî4é 

これには印刷できない文字が含まれているので、ここに判読可能なバージョンがあります。

2é#á $á,JA bytes
<esc>vGî4é<space>

どこ<esc>にリテラルエスケープ文字があり0x1Bますか。


1
それは常にジョルフとVの間の絶え間ない闘争のように見えます...:3
コナー・オブライエン

4

Pythonの3.5、40 33バイト:

Megoか​​らの説明のおかげで-7バイト

lambda*f:'## %s, %s bytes\n\n\t%s'%f

形式の位置引数として入力<function name>(String, Number, String)を受け取り、複数行の文字列を出力する匿名のラムダ関数。

オンラインでお試しください!(イデオネ)


2
パラメータリストを作成し*ftuple呼び出しをドロップすると、数バイトを削ることができます。
Mego 2016

@Mego残念ながら、TypeError: not enough arguments for format string私はそのように実行するたびに得るので、それは機能しません。
R. Kap

私が試してみるとうまくいきます-リスト引数の代わりに位置引数を取る必要があります。さらに、#との間のスペースを削除できます%
Mego 2016

@Megoうわー、それはとても奇妙です。なぜなら、Python 3.5.1のPyCharmでそれを試すと、エラーが発生するからです。それは私をとても混乱させました。また、#ラムダとの間にスペースが必要だと思います。
R. Kap 2016

@Mego更新しました。
R. Kap 2016

4

JavaScript(ES6)、56バイト

(l,b,c)=>`## ${l}, ${b} bytes

`+c.replace(/^/gm,`    `)

また、笑いのために、ここに私のために自分自身をフォーマットする答えがあります:

JavaScript(ES6)、68バイト

f=_=>`## JavaScript (ES6), ${`${f}`.length+3} bytes\n\n    f=${f};`;

の結果を出力しf()ます。


@PatrickRobertsおっと、実際には長さをチェックせず、コピーして貼り付けただけで、後でに6バイト追加しました(ES6)。(なぜCᴏɴᴏʀO'Bʀɪᴇɴは長さを変更するだけに悩んだのですか?)
Neil

4

C#、40 38バイト

(a,b,c)=>$"## {a}, {b} bytes\n\n\t"+c;

入力と出力が文字列であるC#ラムダ。


C#、59バイト

(a,b,c)=>$"## {a}, {b} bytes\n\n\t"+c.Replace("\n","\n\t");

複数行の回答を処理します。


C#、71バイト

自身を印刷する38バイトのソリューション

()=>$"## C#, 38 bytes\n\n\t"+@"(a,b,c)=>$""## {a}, {b} bytes

\t""+c;";

オンラインでお試しください


3

Mathematica、40バイト

Print["## ",#,", ",#2,"bytes

    ",#3]&

匿名関数。言語、バイト数、プログラムを入力として受け取り、本体をSTDOUTに出力します。


2

Jolf、24 22バイト

"## ¦i, ¦j Ξ/u3

    ¦

ここで説明することはあまりありません。¦補間された入力を意味します。

ここでお試しください!リンクの入力の出力は次のとおりです。

## Jolf, 24 bytes

    some filler code I think

入力は次のとおりです。

name

number

"code"

1

MATL28 27バイト

@NinjaBearMonekyの提案により1バイト節約

35tOj', 'j' bytes'10t4Z"j&h

オンラインでお試しください!

コードブロックは1行に収める必要があります。

説明

35t           % Push 35 (ASCII for '#') twice
0             % Push 0. When converted to char, it will be displayed as a space
j             % Input string (language name)
', '          % Push this string
j             % Input string (byte count)
' bytes'      % Push this string
10t           % Push 10 (ASCII for linefeed) twice
4Z"           % Push string containing four spaces
j             % Input string (code)
&h            % Concatenate everything into a string. Implicitly display

0

Common Lisp、57バイト

(lambda(L b c)(format()"## ~A, ~A bytes~%~%    ~A"L b c))

また、おもしろいので、以下に、それ自体のヘッダーを出力するコードのスニペットを示します。

Common Lisp、146バイト

#1=(PROGN
(SETF *PRINT-CIRCLE* T)
(LET ((S (FORMAT NIL "~S" '#1#)))
  (FORMAT NIL "## Common Lisp, ~A bytes~%~%    ~A" (LENGTH S) S)))


0

hashmap、29バイト。

"## "i", "h" bytes.\n\n    "i

(その投稿はプログラムで書きましたが、\ nを\\ nにエスケープする必要がありました)
説明:

"## "                         Push string
     i", "                    Push input and string
          h" bytes.\n\n    "i Push input as number and string, then the input.

0

CJam26 23バイト

3バイトを削除してくれた@NinjaBearMonkeyに感謝!

'#_Sl',Sl" bytes"N_S4*l

コードブロックは1行に収める必要があります。

オンラインでお試しください!

説明

'#_S       e# Push character "#" twice, then a space
l          e# Read line from input
',S        e# Push a comma, then a space
l          e# Read line from input
" bytes"   e# Push this string
N_S4*      e# Push newline twice, then four spaces
l          e# Read line from input. Implicitly display 

23バイト:'#_Sl',Sl" bytes"N_S4*l
NinjaBearMonkey

@NinjaBearMonkeyありがとうございます!編集。このアイデアは、私の別の回答
ルイスメンドー

0

Pyke、25バイト

"##"Q", "z" bytes"skd4*z+

ここでお試しください!

または

パイク、0バイト

ここでお試しください!-[回答をコピー]ボタンをクリック;)

編集 -それはウェブサイトの機能にすぎず、不正行為です(または少なくとも私はそう思います)。ASTを解析することはなく、ウェブプログラムは言語とあまり相互作用しないため、おそらく言語の一部とは見なされません。 (Pykeインタープリターを実行している場合でも)


0バイトバージョンが機能する理由
haykam

それを答えに追加できますか?私はそれを数えませんが、あなたはそれをそこに保つことができます。
haykam

@muddyfishさん、これらを2つの回答に分けていただけますか?
haykam 2017年

これが答えを受け入れるためのものであるならば、私はむしろ、私が実際にパイクを使用して0バイトのソリューションの数を考えると、あまりにもchesty感じていないではないだろうと@haykam
ブルー

私はその答えを受け入れません。
haykam 2017年

0

Perl 5、35バイト

完全なプログラムでは、これは逆の順序でコマンドライン引数として入力を受け取ります。-M5.01無料ですが必要です。

say pop.', '.pop.' bytes

    '.pop

0

Emacs Lisp、97バイト

(lambda(l c)(format"## %s, %s bytes\n\n%s"l(string-bytes c)(replace-regexp-in-string"^""    "c)))

また、引用符をエスケープするのは難しい場合があるため、文字列をクリップボードにコピーする使用例です。(リージョンをマークして使用M-:

Emacs Lisp、184バイト

(kill-new ((lambda(l c)(format"## %s, %s bytes\n\n%s"l(string-bytes c)(replace-regexp-in-string"^""    "c)))"Emacs Lisp"(buffer-substring-no-properties(region-beginning)(region-end))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.