마지막으로 입력 한 바이트 인쇄


12

도전

하나의 입력 바이트 문자열이 있으며 마지막 바이트를 출력합니다.

규칙

제출은 입력의 마지막 바이트를 출력하는 프로그램 또는 함수일 수 있습니다.

  • 문자열, stdin 또는 명령 줄 인수이며
  • 비어 있지 않습니다.

나는 brainfuck 로이 문제를 해결하려고했지만 모든 언어가 참여할 수 있습니다. 이것은 입니다.

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

카탈로그

이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

## 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
환영합니다. Google 형식에 맞게 질문을 변경했습니다 ( 일반적으로 샌드 박스의 용도입니다). 그러나 현재 상태에서는 도전이 매우 쉽습니다 (bf에서도).
ბიმო

11
나는 결산에 반대한다. 사소한 것일 수도 있지만 그것이 주제를 벗어나지는 않습니다
MilkyWay90

1
@MillyWay 필자 대부분의 마감 투표는 ბიმო의 광범위한 편집 이전에 있었던 것 같습니다
Sanchises

9
@ ბიმო 우리는 내가 적용했을 것으로 생각되는 주제를 주제로 만들기 위해 주제를 벗어난 질문을 편집하지 않는 데 동의 했습니다.
Laikoni

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-only

1
@ ASCII-only Least 다음과 같은 간단한 도전을 할 수 있습니다 : p
Conor O'Brien

Last입력 된 바이트를 인쇄합니다 . 프로그램 내용은 도전에 맞습니다
MilkyWay90

11

x86-16 기계 코드, 2 바이트

@CodyGray가 올바르게 지적했듯이 입력을 문자열로 사용하고 레지스터로 출력하면 독립 실행 형 프로그램 버전이 제거됩니다.

입력 문자열은 in SI, length 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 바이트 (길이 앞에 문자열이 추가됨) :

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, 절대적으로 명령 줄에서 입력을 받고 콘솔로 출력하는 코드는 거의 전부입니다. 예, "input string in SI, length in CXoutput char is in AL" 이라고 말할 수 있으며 필요한 유일한 코드는 REPZ LODSB(2 바이트)라고 생각합니다. 물론이 접근 방식은 크기가 아니라 효율성을 위해 코딩하는 경우 방법이 아닙니다. 당신의 요점은 매우 잘 잡히고 있습니다. 나는 그것을 일의 고기를하는 기능으로 게시 할 것입니다.
640KB

7

Brainf ***, 7 바이트

,[>,]<.

ideone.com/XoJLD0 여전히 작동하지 않습니다; (
jean

@jean 여기 사용해보십시오 . (솔직히, 나는 아이디어가 BF를했는지조차 몰랐다).
SuperJedi224

예, 귀하의 링크에서 모든 것이 잘 작동합니다. 그러나이 문제에 대한 온라인 판사는 작동하지 않는 곳에서 ideone을 사용합니다. (
jean

@jean ideone은 -1EOF 로 사용 하는 것 같습니다 . +[>,+]<-.작동합니다
Jo King

@Jo King 죄송합니다. 입력은 다음과 같습니다. 29845812674 [enter] [EOF] 마지막 자리를 어떻게 인쇄 할 수 있습니까?
Jean

7

MATL, 2 바이트

0)

MATL은 1 기반 모듈 식 인덱싱을 사용하므로이 솔루션 0은 입력 의- 번째 위치 에서 요소를 잡고 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

자바 스크립트, 14 바이트

a=>a.slice(-1)

더 짧은 방법을 찾기 위해 최선을 다했지만 놀랍게도 전화하기 전에 8 바이트 미만의 문자열을 뒤집는 펑키 한 방법이 없다면 이것이 개선 될 수 있다고 생각하지 않습니다 [0]. 또는 배열 길이를 얻는 짧은 방법이있을 수 있습니다. 다른 접근 방식 : a=>[...a].pop()(15bytes)
Matsyir

4

파이썬 3 , 14 바이트

lambda x:x[-1]

온라인으로 사용해보십시오!


나는 바보처럼 느낀다. 변수에 선언하지 않고 어떻게 이것을 부르는가?
Nathan Dimmer

나는 당신의 TIO를 보았지만별로 이해가되지 않습니다 ... 헤더에서 무엇을하고 있습니까?
Nathan Dimmer

1
@Bobawob 첫 번째 질문의 경우 익명의 람다는 답변이 허용됩니다 ( e헤더 의 변수 에 람다를 할당하여 사용합니다 ). 두 번째 질문의 헤더는 e=\ 기본적으로e=lambda x:x[-1]
MilkyWay90

내 위의 의견에, 거기 뒤에 공간이 있어야되지 않는다는 것을 참고 e=\ 하지만 난 뒤에 공간을 추가 할 필요가 있으므로 마크 다운 코드 문자를 이스케이프
MilkyWay90

정말 멋지다! 감사합니다!
Nathan Dimmer


4

TI-BASIC (TI-84), 10 바이트

sub(Ans,length(Ans),1

입력 문자열에서 마지막 문자를 가져옵니다.
입력이입니다 Ans.
출력이 시작 Ans되고 자동으로 인쇄됩니다.




3

자바 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)

프로그램 인수대한 코드를 추가 하여 세 가지 옵션을 모두 가질 수 있습니다. :) 너무 나쁜 OP는 구체적으로 문자열을 요구합니다. 그렇지 않으면 매개 변수 유형 s->s[s.length-1]으로 충분했을 것 char[]입니다.
Kevin Cruijssen




3

Befunge-93 , 12 15 바이트

:1+_p1-,@>~#

온라인으로 사용해보십시오!

3 바이트를 깎아 낸 @Jo King에게 감사한다.

덜 혼란스러운 대체 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

@ MillkyWay90 : 전체 프로그램 일 필요는 없습니다. 아마도 문자열을 가져 오는 젤리 함수로 작동 할 것입니다. 그러나 다시 나는 젤리를 모른다. 그래서 나는 틀렸다.
ბიმო

좋아, 나는 그것이 링크로 작동하는지 여부를 보려고 노력할 것이다
MilkyWay90

@ ბიმო 작동하는 것 같습니다 (OP : 답장을 취소 할 수 있도록 답을 편집 할 수 있습니까?)
MilkyWay90

T를 링크로 정의하고 입력에 ""가 필요없는 문자열을 입력 할 수 있습니다.
MilkyWay90

3

엑셀, 10 바이트

@remoel의 VBA 답변과 거의 동일합니다.

=RIGHT(A1)





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

@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.

온라인으로 사용해보십시오!


readme에서, 1. "이모티콘으로"는 "이모티콘에서"이어야한다고 생각합니다. 2. "이모티콘에서"이면 감정 학자와 이모 지 코드는 이미 존재하는 것입니다
ASCII 전용

실제로 당신이보고있는 것은 온라인 인터페이스를 통해 액세스 할 수있는 컴파일러의 출력입니다.
Quantum64

각 이모티콘이 1 바이트 이상입니까? 나는 그들이 적어도 2 바이트 일 것이라고 생각합니다.
Kyle Delaney

감정은 사용자 정의 코드 페이지를 사용합니다. quantum64.github.io/EmotionBuilds/1.1.0//…
JPeroutek

2

VBA (Excel), 14 12 바이트

즉시 창 및 셀 사용 A1 을 입력으로 사용

감사합니다 @tsh

?[RIGHT(A1)] 또는 ?Right([A1],1)


1
1선택?
tsh

두 번째 코드에는 없습니다. 감사합니다 :)
remoel

2

파이썬 3, 11 18 34 바이트

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

명령 행에서 프로그램을 파이썬 스크립트로 실행하여 사용합니다. 입력은 프로그램의 마지막 인수로 제공됩니다.

온라인으로 사용해보십시오!


스 니펫은 기능이나 전체 프로그램 만 허용되지 않습니다.
Stephen

아, 나는 대답을 할 때 그것에 대해 생각하지 않았습니다. 인터프리터에서 실행하는 것에 대해서만 생각했습니다.
Mrwerdo




2

IBM / Lotus Notes Formula, 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 전용

오이 pls 회신 : ||
ASCII 전용

어떤 방식으로 작동하지 않습니까? 온라인에서 테스트했습니다
ASCII-only

@ ASCII-only 그것은 당신이 맞다는 것이 밝혀졌으며, 나는 당신의 프로그램이 실제로 작동하는 방식을 잘못 해석하고있었습니다. 원하는 경우 다른 답변으로 게시 할 수있을 정도로 다르다고 생각합니다.
SuperJedi224

글쎄, 이것은 간단한 도전이다. 어떤 언어로든 하나 이상의 답변이 필요하다고 생각하지 마십시오. : P
ASCII-only

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]);}}


도전 과제는 "출력"을 언급하므로 마지막 해결책은 아마도 맞습니다
Ven

Dang, 당신은 내 콘솔 답변을 많이 능가했습니다. ^ 1은 어떻게 작동합니까?
Stackstuck

새로운 인덱스 유형입니다. 캐럿으로 인덱스를 시작하면 끝에서 array[^n]array[array.Length - n]
시작된

흥미 롭습니다! 나는 항상 새로운 C # 기능을 최신 상태로 유지하려고 노력합니다. 그것에 대한 링크 / 참조가 있습니까?
mortb

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.