コードの最後、中間、最初の文字を印刷します


60

課題は簡単です。プログラムのソースコードの最後、中間、および最初の文字をこの順序で印刷します。

中央の文字は、ソースのn文字の長さと1インデックス付けを想定して、次のように定義されます。

  • n偶数の場合、n/2-thおよびn/2 + 1-th文字を出力します。(abcdef == cd
  • nが奇数の場合、(n-1)/2 + 1-th文字を出力します。(abcde == c

ルール

  • 入力がない場合、ソースコードの最後、中間、および最初の文字をフォームで出力し[last][middle][first]ます。これは3〜4文字の長さになります。
  • 出力に末尾の空白を含めることはできません。ただし、空白が最初、中間、または最後の文字である場合、そのように印刷する必要があります。
  • ソースコードはn >= 3文字数である必要があります。
  • コードは>= 3一意の文字で構成する必要があります。
  • 標準的な抜け穴は禁止されています。
  • これはであるため、文字の最短の解決策優先されます。

サンプル

# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1

チャレンジ提案


6
たぶんそれは私だけかもしれませんが、「コードは3つ以上の一意の文字で構成する必要があります」プログラムのすべての文字は一意である必要がありますが、少なくとも3つの異なる文字のみが必要です。
Grzegorz Oledzki

4
@Belhenix 3個未満の固有の文字により121、非常に多くの言語と同じくらい簡単なソリューションが可能です。
Khuldraeseth na'Barya

2
-否定に使用し、改行で暗黙的に印刷するスタックベースの言語を誰かが見つけられる場合\n1-、3バイトです。私の検索はこれまでのところ無益です。
Khuldraeseth na'Barya

3
@Belhenix Whitespaceは確かに可能です。十分な一意の有効な文字(スペース、ラインフィード、タブ)があります。
bigyihsuan

2
58個の回答でこれを変更することはできませんが、「コードの最初の文字は最後のコードと異なる必要があります」と要求すると、現在のトップアンサーを含む多くの些細な答えが除外されます。これは「> = 3個の一意の文字」の意図だったかもしれませんが、その要件は実際にはそれほど難しくありません。
マナセカッツ

回答:



21

、17バイト

wWWwwwVVwWWwWWWww

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

-2バイト、jimmy23013のおかげ。

出力www。GrassはwWおよびを除くすべての文字を無視しますv。したがって、2つVのsは無視されます。彼らは真ん中の文字があることを確認するために存在しているw私は、出力にどのようには考えていません- vまたはW草で...私が代わりに別の文字を使用することもできましたがV、しかしV、コードの美学を保持します。


1
幸いなことに、中間のキャラクターはavやWではなくawになりました。GrassでvやWを出力する方法がわかりません…」Lol。xDホワイトスペースでも3文字(スペース、タブ、改行)しか持たない同様のことをしようとしましたが、残念ながらそれほど幸運ではありませんでした。幸いなことに、それを修正するために末尾のno-opを追加できます。
ケビンクルイッセン

@KevinCruijssenもし中間のキャラクターが何か他のものだったら、私はたぶん正しい場所xに移動するためにsの束(またはGrassが無視する他の非グラスキャラクター)を追加したでしょうw
ロビンライダー

ああ、私はバカです。ホワイトスペースが無視する非ホワイトスペース文字も挿入できます。;)-2バイトありがとう。
ケビンクルイッセン

1
17バイトwWWwww  wWWwWWWww
jimmy23013

@ jimmy23013ありがとう!そして、あなたのヒントを投稿しくれてありがとう。あなたがしたことを理解するためにそれが必要でした!Vきれいになったので、スペースをs に変更しました。;-)
ロビンライダー

17

brainfuck、17バイト

U-[>+<-UU--]>...U

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

印刷できない場合は、これを7バイトに減らすことができます。 ␀..␀_.␀


1
ルール内ではありますが、BFはU命令として使用しません。機能的には、コードは-[>+<---]>.ですので、期待される出力はであり.--、出力されません。
bigyihsuan

16
@bigyihsuanしかし、ソースコードにはまだUs が含まれており、このインタープリターは喜んでそれらを無視します。コメントや複数のスペース(または言語にとって必ずしも重要ではないもの)を含むすべての回答はカウントされませんか?
dzaima

1
そうではありませんU-[>+<-UU--]>...Uか?現在の形式では、コードは1つのUのみを示しています
ヘレナ

1
@Flaterはい、ここではチャレンジを簡単にするために使用されていますが、それはcode-golfタグの全体的な目的ではありませんか?ここでの多くの答えだけで、先頭/末尾の空白を追加することで仕事が簡単になり、一般的にコードゴルフではここでルールに従うものはすべて許可されます(推測する必要がある場合は、未使用の文字を許可しないルールがあればすでにほとんど不可能)は、チャレンジがまだ0スコアでホバリングしている可能性があることを意味し、おそらく同様に閉じられます)。
dzaima

2
単純に使ってみませんÿ-.ÿ..ÿか?それは印刷可能で短いです。
ドリアン

17

シェークスピアプログラミング言語、119バイト

 ,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]
Ajax:  You big big big big big cat.Speak thy.Speak thy.Speak thy. 

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

3つのスペースを印刷します。印刷スペースなし:

シェークスピアプログラミング言語、227バイト

,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is the sum of a big big big big big big cat a big pig.
You is the sum of you a large huge large big pig.
Speak thy.Speak thy.You is the sum of you a big pig.Speak thy.

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

私の改行なしのINTERCAL回答のように、これはプログラムの最後の文字を中間文字と同じにするように構築されています(この場合、最初の文字ではありませんが)、コードの後半を一致。(より少ないバイトで46を構築できたかどうか、または前半の他の部分をさらにゴルフできたかどうかはわかりません。)


2
私はシェークスピアがこれに現れるとは思っていませんでした。これは素晴らしいです
bigyihsuan

1
この言語が存在することを学ぶためだけに+1できたらいいのに!
Stilez

1
でもオンラインインタプリタのデバッグ出力メッセージに、著者のユーモアのセンスを示しています。2行目で警告: 『心』は予想
dlatikay

1
2番目のバージョンで終了する163バイト!
ロビンライダー

1
@UnrelatedString OK、ありがとう!完了しました
ロビンライダー

14

パイソン213の 11バイト


print' t' 

空白を明確にするには:

$ xxd solution.py
0000000: 0a70 7269 6e74 2720 7427 20           .print' t'
$ python2 solution.py | xxd
0000000: 2074 0a                                t.

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

-2バイト、wastlのおかげ!


6
両方の出力末尾の空白(改行)は許可されません。Python 2の代替案:オンラインでお試しください!
wastl

また、これは有効ではないと思います。Pythonでは、コードの最後に空の改行が必要です。
ゲザケレクセニー

5
@GezaKerecsenyi私が理解しているように、ソースコードの最後の改行は単なる推奨事項です。PEP8を参照してください。
mypetlion


@wastlありがとう!一定。
TFeld

11

RProgN 2、3バイト

1
0

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

これは有効だと思いますか?


私は推測1して0いるし、スタックにプッシュされ、その後、プログラムの最後に暗黙のポッププリントですか?はい、有効です
bigyihsuan

2
@bigyihsuanそれも私が推測しているものです。私は言語がわからない、私はそれがこのようなことを覚えているだけだ:p
dzaima

@dzaimaハハ、あなたが答えを投稿し、それがどのように機能するかさえ知らないとき。xDクイン[quine]ルールが変更される前に、古いチャレンジでRProgNを実際に数回見ました。
ケビンクルイッセン

これはtacLinuxの多言語だと思います。
tsh

11

05AB1E7 5 バイト


„ RR

出力R \n

@NeilのBatch answerからインスピレーションを得て-2バイトなので、必ず彼も賛成してください!

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

@Grimyによる5 バイトの代替:


12,1

出力12\n

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

最初の7 バイトの答え:

'?„«'«?

出力?«'

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

説明:

          # No-op newline
 R       # Push 2-char string " R"
   R      # Reverse this string to "R "
          # (output the result implicitly with trailing newline)

          # No-op newline
12,       # Print 12 with trailing newline
   1      # Push a 1 (no implicit printing, since we already did an explicit print)

'?       '# Push 1-char string "?"
  „«'    '# Push 2-char string "«'"
     «    # Concatenate them both together
      ?   # Output without trailing newline




7

Excel、9バイト

=("))=" )

非常に多くの括弧。

注:返される中間文字は、コードの中間であるため、実際には任意の文字にすることができます。


括弧!(電球)必要な最後のキャラクターに引っかかった"。よくやった!
ヴェルニッシュ

ありがとう!それも私が理解しようとしていたものであり、それから括弧が機能することを思い出しました。
ウィリアムポーター

6

Ruby、6バイト


p " "

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

これは" "、改行を加えて出力します。コードはで終わる"中央の2つの文字があり、そして"、それは改行で始まります。


3
あなたのバッジが好きです。N²のグレースケールXORであると思います。Project Euler Nimの問題を解決するために、ほぼ同じ画像を生成しました。バッジにはストーリーがありますか?
ダミアン

1
ナイスキャッチ!ワンライナーを使用して写真を生成することで、会議中に「だらだら」するのが好きです。xorは初期のお気に入りでした。
ヒストクラート

6

DOS / Windowsバッチ言語、9バイト

@echo @o@

Code Golf&Coding Challenges Stack Exchangeへようこそ。最初の投稿で+1をお楽しみください!
A _


5

バッチ、9文字


@echo hh

中央と最後の文字は両方hであり、echoデフォルトでは改行を出力します。これはスクリプトの最初の文字です。


5

PowerShell、3バイト

00000000: 0a0d 31                                  ..1

Microsoft Windowsでのみ機能します。

残念ながら、出力はUTF-16で8バイトです。しかし、質問はバイトではなく文字を出力するということです。おそらく、UTF-16は、PowerShellで文字を表現するためにサポートされている方法の1つにすぎません。ASCIIファイルと異なって解釈されることはありません。


それはスマートな答えだ
mazzy

1
許可されている理由0x0a != 0x0d != 0x31:)
bigyihsuan

5

バッシュ(15 11文字)

echo -n e-e

印刷する

e-e
  • 使用しないことによる-4文字 |rev

1
@racramanあなたの提案された編集はの代わりにecho<space>e<space><space>e出力されるので、私はそれを拒否しました。改行は出力の一部であるため、GrzegorzOledzkiはこのオプションを使用しています。試してみてくださいオンラインしてみてくださいオンライン。また、他の人の回答を編集しないでください。提案するゴルフがある場合は、コメントを残してください。e<space>e<newline>e<space>e-necho -n e-eecho e e
ケビンクルーイッセン

また、で11バイトprintf pfp、ただし中間文字の定義により2つのスペースが必要なため、そうでない場合は10 ...
pLumo


5

アンダーロード9バイト 7バイト

改善されたソリューションを提供してくれたKhuldraeseth na'Baryaに感謝します!

W(SSW)S

私が言うことができるように、これは今から改善不可能です:

  • 他の命令はすべて、スタックが空であるためエラーを発生させるため、最初の文字はノーオペレーション文字である必要がありますが、例外は開き括弧です。ただし、Underloadでは、開始ブラケットを独自に出力する方法がないため、そうすることはできません。
  • スタックに3つの出力文字を追加するには、少なくとも5文字を使用する必要があります。
  • Sを使用して出力する必要があります。

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


Code Golf SEへようこそ!あなたは、コピーをスキップすることによって、カップルのバイトを保存することができますので、のように
Khuldraeseth na'Barya

5

シェークスピアプログラミング言語163 153バイト

ジョー・キングのおかげで-10バイト。

B,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is
the sum ofa Big Big Big BIG BIG cat a
CAT.Speak thy.You is twice you.Speak thy!SPEAK THY!

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

私の最初のSPL回答!出力!BB

Unrelated Stringによる別の SPL回答があります。その答えでは、119バイトでスペースのみを出力するか、227バイトでスペース以外の文字を出力します。これは中間にあり、スペース以外の文字も出力します。

ここでは2つのトリックが使用されます。

  1. !.!25+1.
  2. ダブリング33は66のコードポイントを与えますB。したがって、プレイタイトルはB2であり、2番目の「ビッグ」を「ビッグ」にする必要があります。

B最後にその首都と感嘆符が必要だったので、私はAjaxがシーンを通してどんどん大声で叫ぶことにしました。


4

4
確か0 1 0に短く、また3つの異なるキャラクターがあります(ゼリーのアプローチを再投稿したくない:P)。
アウトゴルファーのエリック

1
@EriktheOutgolferまあでも!。しかし、それはあなたの回答のようなものですので、私はこれをそのままにします
ルイス・メンド

2
ええ、だから私がコメントしたのは、同じことを二度投稿したくないからです。(うーん...これは多くの言語に最適なソリューションかもしれません。)とにかく、あなたのも他の場所に適用されるかもしれません!
アウトゴルファーのエリック

4

Befunge-93、7バイト

.",  @0

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

説明

出力は 0 .

.       pop value (0) from stack, output as number with a trailing space
 "      toggle string mode, wraps around and pushes every char to the stack
  ,     pop value (".") from stack, output as character 
        spaces are no-ops
     @  end the program
      0 trailing 0 to match the output


4

シェフ、447バイト

Last Middle First Milkshake.

This recipe prints its last, middle and first character.
You could also use it to make a milkshake. 

Ingredients.
76 ml milk
32 ml chocolate syrup
46 teaspoons vanilla ice cream

Method.
Liquefy vanilla ice cream.
Put the milk into 1st mixing bowl.
Put the chocolate syrup into 1st mixing bowl.
Put the vanilla ice cream into 1st mixing bowl.
Pour contents of the 1st mixing bowl into the 1st baking dish.

Serves 1.

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

真面目な投稿、 196 177バイト

A__に感謝

R.

Ingredients.
82 l a
103 l b
46 l c

Method.
Put a into mixing bowl.
Put b into mixing bowl.
Put c into mixing bowl.
Pour contents of mixing bowl into baking dish.

Serves 1.

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


Chefプログラムを見ると、最低限必要なものは何だろうと思います。
bigyihsuan

@bigyihsuan私の編集を見る
user24343

すべての「the」を削除して、プログラムを引き続き動作させることができます。
A _

作業プログラムを作成しました。(177バイト)
A _

4

Python 3、19 バイト 13バイト


print( ')(')

print関数はデフォルトで改行を追加するため、コードは改行で始まります。コードの最後の文字は「)」なので、最初に印刷されます。文字数を不均等にするために、print関数の引数の前にスペースを挿入します。コードの悪意を許してください。

出力: )(\n

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


1
ルールがどのように機能するかに応じて、私はあなたの答えで遊んで13のバイトかもしれません: `プリント(「)(」)`注上記の新しいラインがありprint、中の空白printの後に")("。出力:)( 末尾に新しい行があります。
Hoog

ありがとう、13バイトまで!質問は具体的には空白ではなく改行を指すのでend、印刷機能のデフォルトのパラメータとして、末尾の改行はカウントしないと仮定します。
jaaq

これは末尾の改行を出力しますが、それを考慮しません。
A _

改行が空白としてカウントされるかどうかはわかりませんが、2番目の13バイトバージョンも追加しました。
jaaq

1
はい、改行はタブやスペースなどのように空白としてカウントされます
Jo King

4

空白31 29バイト

[S aS S T   S S S S S N
_Push_32][S N
S _Duplicate_32][S N
S _Duplicate_32][T  N
S S _Print_as_character][T  N
S S _Print_as_character][T  N
S S _Print_as_character]

@RobinRyderのおかげで-2バイト。

強調表示としてのみ追加される文字S(スペース)、T(タブ)、およびN(改行)。
[..._some_action]説明としてのみ追加。

オンラインで試してください(未加工のスペース、タブ、改行のみ)。

a長さを奇数にするためのノーオペレーション(空白文字以外の任意の文字)が含まれています。プログラムの最初の半分の前に追加されるため、中間の文字もスペースになります。これは、中間の文字がプログラムの2番目の半分にある場合に改行になるためです。空白以外の文字はすべて、空白プログラムで無視されます。




3

Brain-Flak、11バイト

(((())))

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

説明

スタックに3つのものを配置する必要があります。最速の方法は、スタックに3つの1(またはゼロ)を置くことです。今以来(コードポイント1)私たちは最初の中間と最後の場所でプログラムにこれらを追加することができます脳高射砲で何もしません。さて、これは少しチートな感じがするので、ここでは、私の考えではあまりチートではない2つの答えがあります。

中括弧、31バイトを出力します

( (((((()()()()()){}){}){}))())

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

この回答は中括弧を印刷するため、印刷される文字は実際にコードに関連します。長さを奇数にするためにパディング文字が1つあるため、中間文字を1つ印刷するだけです。

中括弧のみ、32バイトを含む

(((()((((()(()()){}){}){}){}))))

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

これは中括弧のみのプログラムで、ソースと(結果として)出力はすべて中括弧で構成されます(Brain-Flakが実際に気にする文字)。


3

AsciiDots -9バイト

.---$'.$.

出力: .$.

コードはa .で始まり、a で終わり.、中央の文字はa $です。中央の単一引用符は、ドットプリントモードを設定して、単に文字を出力ストリームに直接読み込むようにします。

これを小さくできる可能性はありますが、それができることを疑い始めています。3文字を出力するには、一重引用符を使用する必要があります。二重引用符を出力するには、文字列の終わりが必要になるためです。ただし、これは、単一引用符の後にa)3文字が続く必要があり、b)が中心文字にならないことを意味します。これを7バイトに減らすために、ドットの先頭を印刷文字の1つとして再利用することを検討していました(AsciiDotのクインプログラムのようなもの)。ただし、印刷に使用できる最短のシーケンスは($'3文字のスペースに4文字、または4文字のスペースに3文字を印刷する必要がありました。また、ドットの値(0)を文字の1つとして出力するなど、いくつかのハック的な代替方法も試しました。動作するシステムがあるかもしれませんが、これらはかなり複雑で大規模であることがわかりました。したがって、上記が最小の解決策だと思います。(もっと小さいものが見つかったら更新します)


Code Golf SEへようこそ!数分間これをいじり、あなたと同じ結論に達しました。素敵な最初の投稿!
Khuldraeseth na'Barya

1
代替の9バイト- /'$'-.[newline]\.オンラインで試してみてください!
アリオン

3

MATLAB、13 15バイト

disp(  ') d')

出力 ) d

以前のバージョン(15バイト、厳密性の低い出力):

'''';1;''''''''

出力 '''


今、心配です。
ウィートウィザード

この出力は末尾の空白ではありませんか?
Sanchises

@Sanchisesいいえ、サイズ(ANS)== 3
Oct18がSEに沈黙の日である

はい。ただし、実際の出力はans =\n '''\nです。通常、それは問題ではありませんが、この課題はより厳しい基準を設定しているようです。しかし、その後、私は挑戦を間違って解釈しているかもしれません。
Sanchises

@Sanchises hm、なるほど。私codegolfはその後、「出力」と考えるもの誤解かもしれない、あなたの出力は、MATLABでフォーマット文字通り出力、のようです
Oct18がSEに沈黙の日である
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.