打印最后输入的字节


12

挑战

您有一个输入字节字符串,在其中输出最后一个字节。

规则

您的提交可能是在输入中输出最后一个字节的程序或函数,

  • 是字符串,stdin或命令行参数,并且
  • 是非空的。

我当时想尽力解决这个问题,但是所有语言都可以参加。这是。

例子

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

目录

这篇文章底部的Stack Snippet从答案a)生成目录,答案是每种语言的最短解决方案列表,b)是总体排行榜。

为了确保您的答案显示出来,请使用以下Markdown模板以标题开头。

## Language Name, N bytes

N您提交的文件大小在哪里。如果您提高了分数,可以将旧分数保留在标题中,方法是将它们打掉。例如:

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

如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字:

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

您还可以将语言名称设置为链接,然后该链接将显示在代码段中:

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


4
欢迎使用,我更改了您的问题以使其更适合我们的格式(请注意,通常这是沙箱的用途)。但是,在当前状态下,挑战非常容易(在bf中也是如此),因此不确定。
— ბიმო

11
我反对闭幕;它可能微不足道,但这并没有使它成为题外话
— MilkyWay90

1
@MillyWay我认为大多数的接近投票是在ბიმო进行广泛编辑之前
— Sanchises

9
@ბიმო我们已经达成共识,不要编辑题外的问题以使它们成为题上的问题,我认为这将在此处应用。
— Laikoni

2
什么样的弦?是否保证仅使用ASCII?还是我们应该处理UTF-8(以及如何?)?
— FireCubez

Answers:


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-only最少,我可以像这样简单的挑战:p
— Conor O'Brien

打印Last输入的字节。节目内容与挑战相吻合
— MilkyWay90

11

x86-16机器码,2个字节

正如@CodyGray正确指出的那样,将输入作为字符串并输出到寄存器将删除大量独立程序版本。

输入字符串为in SI,长度为in CX,输出字符为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个字节作为“ Pascal字符串”(长度在字符串的开头):

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.

或5个字节作为“ C字符串”(零/零终止),输入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 SI,CX输出字符的长度为in AL”,然后我认为唯一需要的代码是REPZ LODSB(2个字节),我们就可以完成。当然,如果您要编码的是效率而不是大小,那么这种方法将不是您的方法。您的观点虽然很好,但我也会将其发布为完成工作重点的函数。
— 640KB

7

Brainf ***,7个字节

,[>,]<.

ideone.com/XoJLD0 仍然无法正常工作;(
— 吉恩

@jean 在这里尝试。(说实话,我什至不知道ideone做过BF)。
— SuperJedi224

是的,在您的链接中一切正常。但对此问题的在线判断是在不起作用的地方使用ideone;(
— 吉恩

@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()(15bytes)
— Matsyir

4

Python 3,14个字节

lambda x:x[-1]

在线尝试!


我觉得很蠢,您如何在不将其声明为变量的情况下调用它?
— 内森·迪默

我看了看您的TIO,但这没有多大意义……您在标题中做什么?
— 内森·迪默

1
@Bobawob对于第一个问题,允许使用匿名Lambda进行解答(我通过将Lambda分配给e标头中的变量来使用它)。对于第二个问题,标题为e=\ ,这基本上意味着e=lambda x:x[-1]
— MilkyWay90

请注意,在我上面的评论中,不应有尾随空格,e=\ 但Markdown会转义代码字符,因此我必须添加尾随空格
— MilkyWay90

太棒了!谢谢!
— 内森·迪默

4

Bash + coreutils,8个字节

tail -c1

输入来自标准输入,输出至标准输出。


4

TI-BASIC(TI-84),10个字节

sub(Ans,length(Ans),1

获取输入字符串中的最后一个字符。
输入为Ans。
输出已输入Ans并自动打印输出。







3

Befunge-93,12 15个字节

:1+_p1-,@>~#

在线尝试!

感谢@Jo King打高尔夫球3个字节。

备用的 15字节版本,不会太混乱:

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

在Befunge中将字符串作为输入并不是最简单的。如果只有一个命令可以接收多个字符,那么它就像读取字符串,弹出/打印顶部字符并退出一样简单。


实际上,对于相同数量的字节$$,p1应该在没有警告的情况下正常工作
— Jo King

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定义为链接,并使其输入字符串即可,而无需在输入中使用“”。
— MilkyWay19年

3

Excel,10个字节

几乎等同于@remoel的VBA答案:

=RIGHT(A1)

3

级联,9个字节

?a|,
;.]^

对此感到非常满意,因为它仅比我的cat程序长3个字节

展开式

   ?
  ^;.
 | |a
 ] |
a ,|

从本质上讲,这只是循环遍历将输入字符压入a堆栈,直到达到EOF。然后使用将该项目输出到a堆栈的顶部.a。

在线尝试!





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上进行测试(包括测试用例)


好的,那是我第一次看到Twig高尔夫。
— 法师

@Ven我已经做了一段时间了。这是一个示例:codegolf.stackexchange.com/a/174040,这是另一个:codegolf.stackexchange.com/a/166800(我还有其他一些,但是很好)
— Ismael Miguel


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.

在线尝试!


在您的自述文件中,1.我认为“ to emoji”应该是“ from emoji”。2.如果应该是“ from emoji”,那么emotinomicon和emojicode已经是一件事情了
— 仅ASCII

实际上,您正在查看的是编译器的输出,也可以通过在线界面进行访问。
— Quantum64 '19

每个表情符号不超过一个字节吗?我认为它们至少是两个字节。
— 凯尔·德莱尼

Emotion使用自定义代码页。见quantum64.github.io/EmotionBuilds/1.1.0//...
— JPeroutek

2

VBA(Excel),14 12字节

使用即时窗口和单元格A1作为输入

谢谢@tsh

?[RIGHT(A1)] 要么 ?Right([A1],1)


1
是1可选的吗?
— tsh

不在第二个代码上。谢谢:)
— 取消删除

2

Python 3, 11 18岁 34字节

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

通过在命令行上将程序作为python脚本运行来使用。输入是程序的最后一个参数。

在线尝试!


这不会打印任何内容或从函数返回任何内容-不允许摘要,仅允许函数或完整程序。
— 斯蒂芬

我知道,当我回答这个问题时,并没有考虑这一点。只考虑在解释器中运行它。
— Mrwerdo

38
— 仅

1
14
— 仅


2

IBM / Lotus Notes公式,11个字节

@Right(i;1)

计算字段公式取自可编辑字段的输入 i

在此处输入图片说明


2

图灵机代码,72 42字节

假定输入没有空单元格(空格)。多亏了仅ASCII格式,可以节省30个字节。

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,

oi pls回复:||
— ASCII码,仅适用

用什么方式行不通?我已经在线测试过
— 仅ASCII的

仅限@ASCII事实证明您是正确的,而我只是在曲解您的程序的实际工作方式。我认为这足够不同,您可以根据需要将其发布为其他答案。
— SuperJedi224 '19

好吧,这是一个简单的挑战,不要以为任何一种语言都需要一个以上的答案:P
— ASCII码,仅ASCII

2

C#8.0个字节

需要.NET Core 3.0(处于beta中)。当前,由于错误而使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]);}}


挑战提到“输出”,因此最后一个解决方案可能是正确的解决方案
— Ven

亲爱的,您远远超过了我的控制台答案。^ 1如何运作?
— Stackstuck

这是新的索引类型。从尖号开始索引表明它是从末尾开始的,即array[^n]与array[array.Length - n]
— Arcanox

有趣!我总是尝试与最新的C#功能保持同步。您对此有任何链接/参考吗?
— mortb

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.