最後に入力されたバイトを印刷


12

チャレンジ

入力バイトの1つの文字列があり、その中の最後のバイトを出力します。

ルール

あなたの提出は、入力の最後のバイトを出力するプログラムまたは関数である可能性があります

  • 文字列、標準入力、またはコマンドライン引数のいずれかであり、
  • 空ではありません。

私はこれをBrainfuckで解決しようとしていましたが、すべての言語が参加できます。これはです。

"?" -> "?"
"29845812674" -> "4"

カタログ

この投稿の下部にあるスタックスニペットは、a)言語ごとの最短ソリューションのリストとして、b)全体的なリーダーボードとして、回答からカタログを生成します。

回答が表示されるようにするには、次のマークダウンテンプレートを使用して、見出しから回答を開始してください。

## Language Name, N bytes

N提出のサイズはどこですか。スコアを改善する場合、古いスコアを打つことで見出しに残すことができます。例えば:

## Ruby, <s>104</s> <s>101</s> 96 bytes

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

## Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、スニペットに表示することもできます。

## [><>](https://esolangs.org/wiki/Fish), 121 bytes


4
ようこそ、形式をより適切に合わせるために質問を変更しました(通常、これはサンドボックスの目的です)。しかし、現在の状態では、チャレンジは非常に簡単です(bfでも)、それについてはわかりません。
ბიმო

11
私は閉鎖に反対票を投じます。それは些細なことかもしれないが、それはofftopicことはないこと
MilkyWay90

1
@MillyWayほとんどの最終投票はბიმოによる大規模な編集の前だったと思う
-Sanchises

9
@ბიმო トピック外の質問を編集しないことで、ここで当てはまると思うトピックをオントピックにするというコンセンサスがあります。
ライコニ

2
どのような文字列ですか?ASCIIのみであることが保証されていますか?または、たとえばUTF-8を処理する必要がありますか?
FireCubez

回答:


11

アタッシュ、4バイト

Last

オンラインでお試しください!(入力が文字のリストである場合は、動作する可能性があります&/S。)

代替案

5バイト: `@&-1

8バイト: &/S@List

10バイト: `@«_,-1»

10バイト: Fold!Right

10バイト: `@<~_,-1~>

10バイト: `^^&:Right

10バイト: {Right^^_}

11バイト: Get«_,-1»

11バイト: Get<~_,-1~>

12バイト: `@«_,#_-1»

12バイト: `@<~_,#_-1~>

13バイト: Get«_,#_-1»

13バイト: Get<~_,#_-1~>


4
:| WTF非常に多くの選択肢
ASCIIのみ

1
ASCIIのみ@私はこのような単純な挑戦に行うことができます最小:P
コナー・オブライエン

印刷Last入力されたバイトを。プログラムの内容は課題に合っています
MilkyWay90

11

x86-16マシンコード、2バイト

@CodyGrayが正しく指摘しているように、入力を文字列として取得し、レジスタに出力すると、スタンドアロンプ​​ログラムバージョンの大部分が削除されます。

入力文字列はin SI、長さはin CX、出力文字はin ALです:

F3 AC  REPZ LODSB      ; start at memory location pointer in SI, put next value in AL,
                       ; loop CX number of times. The last char will be in AL when done.

または、「パスカル文字列」として4バイト(文字列の先頭に長さが追加されます):

AC     LODSB           ; first byte is string length
91     XCHG AX, CX     ; move length to CX for loop 
F3 AC  REPZ LODSB      ; start at memory location pointer in SI, put next value in AL,
                       ; loop CX number of times. The last char will be in AL when done.

または、「C文字列」(ゼロ/ヌルで終了)として5バイト、入力DI

F2 AE     REPNZ SCASB     ; scan for value in AL (0), end when found and advance DI
8A 45 FE  MOV AL, [DI-2]  ; DI is now two bytes ahead of last, put value of DI-2 into AL

x86-16マシンコード、IBM PC DOS、 12 11 10バイト

または、IBM PC DOS実行可能ファイルとしての完全なプログラム。入力はコマンドラインから、出力はコンソールへ。

B3 80   MOV  BL, 80H            ; BX to DOS PSP at 80H 
8A 07   MOV  AL, BYTE PTR[BX]   ; get command line tail length 
D7      XLAT                    ; AL = [BX+AL] 
B4 0E   MOV  AH, 0EH            ; PC BIOS write to screen function  
CD 10   INT  10H                ; display  
C3      RET                     ; exit to DOS

出力:

ここに画像の説明を入力してください


これは確かにスタイルポイントを取得しますが、厳密なゴルフの観点からは、結果をレジスタに返す関数を書くことが許可されていることに注意する価値があります。そのため、これはかなり短くなる可能性があります。4バイトを簡単に削除できます。また、書き換えを行うと、さらに小さくなります。ところで、そのスクリーンショットはエミュレーターからのものですか?どれ?
コーディグレー

@CodyGray、ああ、絶対に、コマンドラインから入力を取得し、コンソールに出力するコードはほとんどすべてです。ええ、「入力文字列in SICX出力文字の長さはin AL」と言えば、必要なコードはREPZ LODSB(2バイト)だけで終わりだと思います。もちろん、このアプローチは、サイズではなく効率のためにコーディングを行っている場合、どのように行うかではありません。あなたのポイントは非常によく理解されていますが、仕事の要点を果たす関数としても投稿します。
640KB

7

Brainf ***、7バイト

,[>,]<.

ideone.com/XoJLD0 それでも動作しません;(
jean

@jean ここで試してみてください。(正直なところ、私はイデオンがBFをしたことさえ知りませんでした)。
SuperJedi224

はい、リンク内ですべて正常に動作します。しかし、この問題のオンライン裁判官は、それが機能しない場合にイデオンを使用します;(
ジャン

@jean ideone -1はEOFとして使用するようです。+[>,+]<-.動作するはずです
ジョーキング

@Jo King申し訳ありませんが、入力は次のようになります:29845812674 [enter] [EOF]最後の桁を印刷するにはどうすればよいですか?
ジャン

7

MATL、2バイト

0)

MATLは1ベースのモジュラーインデックスを使用するため、このソリューション0は入力の-th位置の要素を取得します0

MATL Onlineで試してみてください

説明

    % Implicitly grab the input
0   % Push the literal 0 to the stack
)   % Use this zero to grab the character at the end of the string
    % Implicitly display the result

私がのために行っていると思いますJ)...
Sanchises


5

Javascript、14バイト

a=>a.slice(-1)

短い方法を見つけるために最善を尽くしましたが、驚いたことに、8バイト未満の文字列を反転するファンキーな方法がない限り、これを改善することはできません[0]。または、配列の長さを取得する短い方法がある場合。別のアプローチ:a=>[...a].pop()(15バイト)
Matsyir

4

馬鹿げていると感じますが、変数に宣言せずにこれをどのように呼び出すのですか?
ネイサンディマー

私はあなたのTIOを見ましたが、それはあまり意味がありません...あなたはあなたのヘッダーで何をしていますか?
ネイサンディマー

1
@Bobawob最初の質問では、回答に匿名ラムダを使用できます(eヘッダーの変数にラムダを割り当てて呼び出します)。2番目の質問では、ヘッダーはe=\ であり、基本的にはe=lambda x:x[-1]
MilkyWay90

上記のコメントでは、末尾にスペースはないはずですe=\ が、Markdownはコード文字をエスケープするので、末尾にスペースを追加する必要があります
MilkyWay90

かっこいい!ありがとうございました!
ネイサンディマー


4

TI-BASIC(TI-84)、10バイト

sub(Ans,length(Ans),1

入力文字列の最後の文字を取得します。
入力はですAns
出力は入力されAns、自動的に印刷されます。




3

Java 8

STDINからの入力、71バイト

v->{int i=0;for(;System.in.available()>0;i=System.in.read());return i;}

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

関数の引数、25バイト

s->s.charAt(s.length()-1)

プログラム引数のコードを追加して、3つのオプションすべてを使用できます。:)あまりにも悪いOPは、具体的にはStringsを要求します。そうでなければs->s[s.length-1]char[]パラメーター型で十分です。
ケビンクルーッセン




3

Befunge-93、12の15バイト

:1+_p1-,@>~#

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

3バイトのゴルフをしてくれた@Jo Kingに感謝します。

面倒ではない代替 15バイトバージョン:

~:1+#v!_
  @,$<

Befungeで文字列を入力として使用するのは簡単ではありません。複数の文字を取得する単一のコマンドがある場合、文字列を読み取り、先頭の文字をポップ/印刷して終了するのと同じくらい簡単です。


実際には、$$代わりにp1同じバイト数の警告なしで動作するはずです
ジョーキング

3

チューリングマシンがさらに悪い、391バイト

1 0 1 1 0 0 0
0 0 0 1 1 0 0
1 1 1 1 0 0 0
0 1 0 1 2 0 0
1 2 1 1 0 0 0
0 2 0 1 3 0 0
1 3 1 1 0 0 0
0 3 0 1 4 0 0
1 4 1 1 0 0 0
0 4 0 1 5 0 0
1 5 1 1 0 0 0
0 5 0 1 6 0 0
1 6 1 1 0 0 0
0 6 0 1 7 0 0
1 7 1 1 0 0 0
0 7 0 1 8 0 0
1 8 1 1 0 0 0
0 8 0 0 9 0 0
0 9 0 0 a 0 0
0 a 0 0 b 0 0
0 b 0 0 c 0 0
0 c 0 0 d 0 0
0 d 0 0 e 0 0
0 e 0 0 f 0 0
0 f 0 0 h 0 0
0 h 0 0 g 0 0
0 g 0 0 0 1 1
1 g 1 0 0 1 1

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

説明

Detect eight zero bits (which will occur at the end of the input, since TMBWW uses an infinite tape of bits.)
1 1 1 1 0 0 0
0 1 0 1 2 0 0
1 2 1 1 0 0 0
0 2 0 1 3 0 0
1 3 1 1 0 0 0
0 3 0 1 4 0 0
1 4 1 1 0 0 0
0 4 0 1 5 0 0
1 5 1 1 0 0 0
0 5 0 1 6 0 0
1 6 1 1 0 0 0
0 6 0 1 7 0 0
1 7 1 1 0 0 0
0 7 0 1 8 0 0
1 8 1 1 0 0 0
0 8 0 0 9 0 0

-------------

When eight 0 bits are detected, move back to the final byte of the input and print it out while halting the program.
0 9 0 0 a 0 0
0 a 0 0 b 0 0
0 b 0 0 c 0 0
0 c 0 0 d 0 0
0 d 0 0 e 0 0
0 e 0 0 f 0 0
0 f 0 0 h 0 0
0 h 0 0 g 0 0
0 g 0 0 0 1 1
1 g 1 0 0 1 1

3

ゼリー、1バイト

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

ゼリーで最も難しい挑戦ではありません...

これは入力を文字列として受け入れることに注意してください。入力が他の方法で解釈できる場合(例:数値、リスト)、引数を引用符で囲む必要があります(例: "123456"または "[123,197]")。あるいは、これは、PPCG標準規則に従って、バイト配列を受け取り、その配列の最後のメンバーを返すリンクとして見ることができます。

これを指摘してくれた@ MilkyWay90と@ბიმოに感謝します。


-1、任意の数(のために失敗tio.run/##y0rNyan8///hzlX///83MTY1NjE1MQYA
MilkyWay90

@ MilkyWay90:完全なプログラムである必要はありません。おそらく、これは文字列を取得するJelly関数として機能します。しかし、再び私はゼリーを知らないので、私は間違っているかもしれません。
ბიმო

さて、リンクとして機能するかどうかを見てみましょう
MilkyWay90

@ბიმო動作しているようです(OPで回答を編集して、私の投票を取り消すことができますか?)
MilkyWay90

Tをリンクとして定義し、文字列を入力させるだけで、入力に ""を使用する必要がなくなります。
MilkyWay90






2

小枝、37バイト

これは、単純な「最後から1文字を抽出して出力する」アプローチを使用します。

{%macro a(a)%}{{a[-1:1]}}{%endmacro%}

とても簡単にテストできましたが、楽しかったです!


それを使用するには、.twigファイルに追加してインポートする必要があります。

{% import 'a.twig' as a %}
{{ a.a("string") }} {# should display "g" #}

https://twigfiddle.com/aa19wdでテストできます(テストケースが含まれています)


OK、Twigゴルフを見るのは初めてです。
ヴェン

@Venかなり前からやっています。ここでは例です:codegolf.stackexchange.com/a/174040こことは別の一つだ:codegolf.stackexchange.com/a/166800(私はいくつかのより多くを持っていますが、ほか)
イスマエルミゲル


2

感情、5 バイト

😶👉😃😨👿

説明

😶 Push a copy of the first stack value.
👉 Push the length of the first stack value interpreted as a string.
😃 Push literal 1
😨 Push the difference of the second and first stack values.
👿 Push the character of the second stack value at the index of the top stack value.

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


あなたのreadmeの、1。私は「絵文字に」と思うことは、その後emotinomiconとemojicodeはすでにものです「絵文字から」あるべき場合2.「絵文字から」でなければなりません
ASCIIのみ

実際に見ているのはコンパイラからの出力で、オンラインインターフェイスからもアクセスできます。
Quantum64

各絵文字は1バイトを超えていませんか?少なくとも2バイトになると思います。
カイルデラニー

Emotionはカスタムコードページを使用します。quanti64.github.io/EmotionBuilds/1.1.0//…を
JPeroutek

2

VBA(Excel)、14 12バイト

イミディエイトウィンドウとセルA1を入力として使用

ありがとう@tsh

?[RIGHT(A1)] または ?Right([A1],1)


1
ある1オプション?
tsh

2番目のコードではありません。おかげで:)
remoel

2

Python 3、 11 18 34バイト

import sys;print(sys.argv[-1][-1])

コマンドラインでpythonスクリプトとしてプログラムを実行することによる使用。入力は、プログラムの最後の引数として提供されます。

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


これは何も出力せず、関数から何も返しません-スニペットは許可されず、関数または完全なプログラムのみが許可されます。
スティーブン

ああ、答えはわかったけど、それについては考えなかった。インタプリタで実行することのみを考えました。
-Mrwerdo




2

IBM / Lotus Notesフォーミュラ、11バイト

@Right(i;1)

編集可能なフィールドから入力を取得する計算フィールド式 i

ここに画像の説明を入力してください


2

チューリング機械コード、72 42バイト

空のセル(スペース)のない入力を想定しています。30バイトを節約してくれたASCIIのみに感謝します。

0 * * r 1
1 * * l 2
1 _ _ l halt
2 * _ r 0

72バイトの古いバージョン:

0 * * r 0
0 _ * l 1
1 * * l 2
2 * _ l 2
2 _ _ r 3
3 _ _ r 3
3 * * * halt

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


1
0 * * r 1/1 * * l 2/1 _ _ l halt/2 * _ r 0
ASCIIのみ

返信してください:||
ASCIIのみ

どのように機能しませんか?私はそれをオンラインでテストしてみた
ASCIIのみ

@ ASCII-onlyそれはあなたが正しいことが判明し、私はあなたのプログラムが実際に働いた方法を単に誤解していた。必要に応じて別の回答として投稿できるほど十分に異なると思います。
SuperJedi224

まあ、これは簡単な課題です。どの言語でも複数の回答が必要だとは思わないでください:P
ASCIIのみ

2

C#8.0、8バイト

ベータ版の.NET Core 3.0が必要です。現在、これによりバグが原因でCLRがクラッシュしますが、バグが修正されると、期待どおりに実行され、チャレンジ要件が満たされます。

s=>s[^1]

C#8.0、書き込み時にクラッシュせずに実行、22バイト

s=>s.ToCharArray()[^1]

C#8.0、フルプログラム、78バイト

using C=System.Console;class A{static void Main(){C.Write(C.ReadLine()[^1]);}}


課題は、「出力」を言及し、その最後の解決策は、おそらく正しいものである
ヴェン

ダン、あなたは私のコンソールの答えをはるかに上回った。^ 1はどのように機能しますか?
Stackstuck

これは新しいインデックスタイプです。キャレットでインデックスを開始することは、インデックスが最後からであることを示します。つまりarray[^n]array[array.Length - n]
アルカノックス

面白い!私は常に新しいC#機能を最新の状態に保つよう努めています。それに関するリンク/参照はありますか?
モルト

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.