In byte nhập vào cuối cùng


12

Thử thách

Bạn có một chuỗi byte đầu vào, xuất byte cuối cùng trong đó.

Quy tắc

Nội dung gửi của bạn có thể là một chương trình hoặc chức năng xuất ra byte cuối cùng trong đầu vào

  • là một đối số chuỗi, stdin hoặc dòng lệnh và
  • là không trống rỗng.

Tôi đã cố gắng giải quyết vấn đề này bằng brainfuck, tuy nhiên tất cả các ngôn ngữ đều được phép tham gia. Đây là .

Ví dụ

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

Danh mục

Đoạn trích Stack ở cuối bài này tạo ra danh mục từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

## Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:

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

Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:

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


4
Xin chào, tôi đã thay đổi câu hỏi của bạn để phù hợp với định dạng của chúng tôi đúng hơn (lưu ý đây thường là hộp cát dùng để làm gì). Tuy nhiên, ở trạng thái hiện tại, thách thức là rất dễ dàng (cũng trong bf), vì vậy không chắc chắn về điều đó.
ბიმო 17/03/19

11
Tôi bỏ phiếu chống lại việc đóng cửa; nó có thể là tầm thường, nhưng điều đó không làm cho nó trở nên lạc quan
MilkyWay90 17/03/19

1
Tôi @MillyWay nghĩ rằng hầu hết số phiếu gần sát trước khi chỉnh sửa mở rộng bởi ბიმო
Sanchises

9
@ Chúng tôi có một sự đồng thuận không chỉnh sửa các câu hỏi ngoài chủ đề để đưa chúng vào chủ đề mà tôi nghĩ sẽ áp dụng ở đây.
Laikoni

2
Những loại chuỗi? Có đảm bảo chỉ là ASCII không? Hoặc chúng ta nên xử lý UTF-8 (và làm thế nào?) Chẳng hạn?
FireCubez

Câu trả lời:


11

Tùy viên , 4 byte

Last

Hãy thử trực tuyến! (Nếu đầu vào có thể là danh sách các ký tự, &/Scó thể hoạt động.)

Lựa chọn thay thế

5 byte: `@&-1

8 byte: &/S@List

10 byte: `@«_,-1»

10 byte: Fold!Right

10 byte: `@<~_,-1~>

10 byte: `^^&:Right

10 byte: {Right^^_}

11 byte: Get«_,-1»

11 byte: Get<~_,-1~>

12 byte: `@«_,#_-1»

12 byte: `@<~_,#_-1~>

13 byte: Get«_,#_-1»

13 byte: Get<~_,#_-1~>


4
: | wtf rất nhiều lựa chọn thay thế
chỉ có ASCII vào

1
@ Ít nhất chỉ có ASCII Tôi có thể thực hiện một thử thách đơn giản như thế này: p
Conor O'Brien

In Lastbyte nhập vào. Nội dung chương trình phù hợp với thử thách
MilkyWay90

11

mã máy x86-16, 2 byte

Như @CodyGray chỉ ra một cách chính xác, lấy đầu vào là một chuỗi và đầu ra cho một thanh ghi sẽ loại bỏ phần lớn phiên bản chương trình độc lập.

Chuỗi đầu vào là trong SI, độ dài trong CXvà ký tự đầu ra là 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.

Hoặc 4 byte dưới dạng "chuỗi Pascal" (độ dài được thêm vào đầu chuỗi):

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.

Hoặc 5 byte dưới dạng "chuỗi C" (không / không kết thúc), nhập vào 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

mã máy x86-16, IBM PC DOS, 12 11 10 byte

Hoặc là chương trình hoàn chỉnh như thực thi IBM PC DOS. Đầu vào là từ dòng lệnh, đầu ra là bàn điều khiển.

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

Đầu ra:

nhập mô tả hình ảnh ở đây


Mặc dù điều này chắc chắn nhận được điểm phong cách, nhưng từ quan điểm chơi golf nghiêm ngặt, đáng chú ý là bạn được phép viết các hàm trả về kết quả trong một đăng ký. Vì vậy, điều này có thể nhận được ngắn hơn rất nhiều . Bạn có thể loại bỏ tầm thường 4 byte và việc viết lại có thể thu nhỏ nó xuống hơn nữa. Nhân tiện, đó là ảnh chụp màn hình từ một trình giả lập? Cái nào?
Cody Grey

@CodyGray, oh hoàn toàn, mã để nhận đầu vào từ dòng lệnh và đầu ra cho bàn điều khiển là gần như tất cả. Vâng, tôi có thể nói "chuỗi đầu vào SI, độ dài trong CXchar đầu ra là AL" và sau đó tôi nghĩ rằng mã duy nhất cần thiết là REPZ LODSB(2 byte) và chúng ta đã hoàn thành. Tất nhiên cách tiếp cận này sẽ không phải là cách bạn làm nếu bạn đang viết mã cho hiệu quả chứ không phải kích thước. Quan điểm của bạn được thực hiện rất tốt mặc dù, tôi cũng sẽ đăng nó như là một chức năng làm thịt của công việc.
640KB

7

Brainf ***, 7 byte

,[>,]<.

ideone.com/XoJLD0 Nó vẫn không hoạt động; (
jean

@jean Hãy thử tại đây . (Thành thật mà nói, tôi thậm chí còn không biết ideone đã làm BF).
SuperJedi224 17/03/19

Vâng, trong liên kết của bạn mọi thứ hoạt động tốt. Nhưng thẩm phán trực tuyến cho vấn đề này sử dụng ideone khi nó không hoạt động; (
jean

@jean ideone dường như sử dụng -1làm EOF. +[>,+]<-.nên làm việc
Jo King

@Jo King Xin lỗi, nhưng đầu vào trông như sau: 29845812674 [enter] [EOF] làm cách nào tôi có thể in chữ số cuối?
jean

7

MATL, 2 byte

0)

MATL sử dụng lập chỉ mục mô-đun dựa trên 1 để giải pháp này lấy phần tử ở 0vị trí -th của đầu vào, giống như cuối cùng kể từ khi 0kết thúc từ đầu đến cuối.

Dùng thử tại MATL Online

Giải trình

    % 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

Tôi đã đi cho J)...
Sanchise 18/03/19


5

Javascript, 14 byte

a=>a.slice(-1)

Tôi đã cố gắng hết sức để tìm một cách ngắn hơn nhưng thật ngạc nhiên tôi không nghĩ rằng điều này có thể được cải thiện, trừ khi có một cách thú vị để đảo ngược một chuỗi dưới 8 byte, trước khi gọi [0]. Hoặc có thể nếu có một cách ngắn để có được chiều dài mảng. Cách tiếp cận khác nhau: a=>[...a].pop()(
15byte

4

Python 3 , 14 byte

lambda x:x[-1]

Hãy thử trực tuyến!


Tôi cảm thấy ngớ ngẩn, làm thế nào bạn gọi điều này mà không khai báo nó với một biến?
Nathan Dimmer

Tôi đã xem TIO của bạn, nhưng nó không có ý nghĩa gì nhiều ... Bạn đang làm gì trong tiêu đề của mình?
Nathan Dimmer

1
@Bobawob Đối với câu hỏi đầu tiên của bạn, lambdas ẩn danh được phép trả lời (tôi gọi nó bằng cách gán lambda cho biến etrong tiêu đề). Đối với câu hỏi thứ hai của bạn, tiêu đề e=\ , về cơ bản có nghĩa làe=lambda x:x[-1]
MilkyWay90 22/03/19

Lưu ý rằng trong nhận xét trên của tôi, không có khoảng trống nào ở trong e=\ nhưng Markdown thoát khỏi ký tự mã nên tôi phải thêm một khoảng
trắng ở

Điều đó thật tuyệt! Cảm ơn bạn!
Nathan Dimmer

4

Bash + coreutils, 8 byte

tail -c1

Đầu vào là từ stdin, đầu ra là stdout.


4

TI-BASIC (TI-84), 10 byte

sub(Ans,length(Ans),1

Lấy ký tự cuối cùng trong chuỗi đầu vào.
Đầu vào là trong Ans.
Đầu ra là trong Ansvà được tự động in ra.




3

Java 8

Đầu vào từ STDIN, 71 byte

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

Hãy thử trực tuyến!

Đối số chức năng, 25 byte

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

Bạn có thể thêm mã cho đối số chương trình để có tất cả ba tùy chọn. :) Quá tệ, OP đặc biệt yêu cầu String, nếu không s->s[s.length-1]thì đã đủ với kiểu char[]tham số.
Kevin Cruijssen 18/03/19



3

Khối , 6 byte

pA/@po

Hãy thử trực tuyến!

  p
A / @ p
  o

Xem nó chạy

  • A Mất tất cả các đầu vào
  • / Chuyển hướng xung quanh khối lập phương
  • pp mang đáy của ngăn xếp lên đỉnh hai lần
  • o/@ đầu ra dưới dạng ký tự, chuyển hướng và tạm dừng

3

Befunge-93 , 12 15 byte

:1+_p1-,@>~#

Hãy thử trực tuyến!

Cảm ơn @Jo King vì đã chơi golf 3 byte.

Phiên bản 15 byte thay thế ít lộn xộn hơn:

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

Lấy chuỗi làm đầu vào trong Befunge không phải là dễ nhất. Nếu có một lệnh duy nhất để nhận nhiều ký tự, thì nó sẽ đơn giản như đọc chuỗi, bật / in ký tự trên cùng và thoát.


Trên thực tế, $$thay vì p1nên hoạt động mà không có cảnh báo cho cùng một lượng byte
Jo King

3

Máy Turing nhưng cách tệ hơn , 391 byte

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

Hãy thử trực tuyến!

GIẢI TRÌNH

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

Thạch , 1 byte

Hãy thử trực tuyến!

Không phải thử thách khó khăn nhất trong Jelly ...

Lưu ý điều này chấp nhận đầu vào dưới dạng một chuỗi; nếu đầu vào có thể được hiểu theo cách khác (ví dụ: một số, một danh sách), thì đối số sẽ cần được trích dẫn (ví dụ: "123456" hoặc "[123,197]"). Ngoài ra, điều này có thể được xem như là một liên kết lấy một mảng byte và trả về thành viên cuối cùng của mảng đó, theo các quy tắc tiêu chuẩn PPCG.

Cảm ơn @ MilkyWay90 và @ đã chỉ ra điều này.


-1 Thất bại cho bất kỳ số nào ( tio.run/##y0rNyan8///hzlX///83MTY1NjE1MQYA )
MilkyWay90

@ MilkyWay90: Không cần phải là một chương trình đầy đủ, có lẽ điều này sẽ hoạt động như một hàm Jelly lấy một chuỗi. Nhưng sau đó một lần nữa tôi không biết Jelly, vì vậy tôi có thể sai.
ბიმო

Được rồi, tôi sẽ thử xem liệu nó có hoạt động như một liên kết hay không
MilkyWay90 17/03/19

@ Có vẻ như hoạt động (OP bạn có thể chỉnh sửa câu trả lời để tôi có thể hoàn tác downvote của mình không?)
MilkyWay90 17/03/19

Bạn chỉ có thể định nghĩa T là một liên kết và biến nó thành một chuỗi, loại bỏ nhu cầu "" trong đầu vào của bạn.
MilkyWay90

3

Excel, 10 byte

Khá nhiều tương đương với câu trả lời VBA của @ remoel:

=RIGHT(A1)

3

Xếp tầng , 9 byte

?a|,
;.]^

Khá hài lòng với điều này, vì nó chỉ dài hơn 3 byte so với chương trình con mèo của tôi

Mở rộng

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

Điều này về cơ bản chỉ là các vòng lặp thông qua việc đẩy các ký tự đầu vào vào angăn xếp cho đến khi đạt được EOF. Sau đó, nó xuất ra mục ở đầu angăn xếp bằng cách sử dụng .a.

Hãy thử trực tuyến!





2

Cành, 37 byte

Điều này chỉ sử dụng một aproach "trích xuất 1 char từ cuối và in nó".

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

Nó thực sự dễ làm, và thử nghiệm, nhưng rất vui!


Để sử dụng nó, bạn phải đặt nó vào một .twigtập tin và nhập nó:

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

Bạn có thể kiểm tra nó trên https://twigfiddle.com/aa19wd (bao gồm các gói thử nghiệm )


Ok, đó là lần đầu tiên tôi thấy một sân gôn Twig.
Ven

@Ven Tôi đã làm việc đó khá lâu. Đây là một ví dụ: codegolf.stackexchange.com/a/174040 và đây là một ví dụ khác: codegolf.stackexchange.com/a/166800 (Tôi có thêm một vài, nhưng tốt)
Ismael Miguel


2

Cảm xúc , 5 byte

😶👉😃😨👿

Giải trình

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

Hãy thử trực tuyến!


trong readme của bạn, 1. tôi nghĩ "to emoji" nên là "từ biểu tượng cảm xúc" 2. nếu nó phải là "từ biểu tượng cảm xúc" thì emotinomicon và biểu tượng cảm xúc đã là một thứ đã có
ASCII-only

Trên thực tế những gì bạn đang xem là đầu ra từ một trình biên dịch, cũng có thể được truy cập thông qua giao diện trực tuyến.
Quantum64

Không phải mỗi biểu tượng cảm xúc nhiều hơn một byte? Tôi nghĩ rằng họ sẽ có ít nhất hai byte.
Kyle Delaney

Cảm xúc sử dụng một trang mã tùy chỉnh. Xem quantum64.github.io/EmotionBuilds/1.1.0// Lời
JPeroutek 18/03/19

2

VBA (Excel), 14 12 byte

sử dụng Cửa sổ và Ô ngay lập tức A1làm đầu vào

Cảm ơn @tsh

?[RIGHT(A1)] hoặc là ?Right([A1],1)


1
1tùy chọn?
tsh

không phải trên mã thứ hai. Cảm ơn :)
làm lại

2

Con trăn 3 11 18 34 byte

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

Sử dụng thông qua việc chạy chương trình như một kịch bản python trên dòng lệnh. Đầu vào được cung cấp như là đối số cuối cùng cho chương trình.

Hãy thử trực tuyến!


Điều này không in bất cứ điều gì hoặc trả lại bất cứ điều gì từ một chức năng - đoạn mã không được phép, chỉ có chức năng hoặc chương trình đầy đủ.
Stephen

À tôi hiểu rồi, tôi đã không nghĩ về điều đó khi tôi trả lời. Chỉ nghĩ về việc chạy nó trong trình thông dịch.
Mrwerdo




2

Công thức ghi chú IBM / Lotus, 11 byte

@Right(i;1)

Công thức trường được tính toán lấy đầu vào từ trường có thể chỉnh sửa i

nhập mô tả hình ảnh ở đây


2

Mã máy Turing, 72 42 byte

Giả sử một đầu vào không có ô trống (dấu cách). Cảm ơn ASCII - chỉ để lưu 30 byte.

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

Phiên bản cũ trong 72 byte:

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

Hãy thử trực tuyến .


1
0 * * r 1/1 * * l 2/1 _ _ l halt/2 * _ r 0?
ASCII chỉ có

xin vui lòng trả lời: ||
ASCII chỉ có

sẽ không hoạt động theo cách nào? Tôi đã thử nghiệm trực tuyến
ASCII chỉ

Chỉ có ASCII Hóa ra bạn đúng và tôi chỉ hiểu sai cách chương trình của bạn thực sự hoạt động. Tôi nghĩ nó đủ khác để bạn có thể đăng nó dưới dạng một câu trả lời khác nếu bạn muốn.
SuperJedi224

Chà, đây là một thử thách đơn giản, đừng nghĩ rằng nó cần nhiều hơn một câu trả lời bằng bất kỳ ngôn ngữ nào: P
ASCII - chỉ

2

C # 8.0 , 8 byte

Yêu cầu .NET Core 3.0, bản beta. Điều này hiện đang gặp sự cố CLR do lỗi, nhưng một khi lỗi đã được sửa, nó sẽ chạy như mong đợi và đáp ứng các yêu cầu thách thức.

s=>s[^1]

C # 8.0 , Chạy mà không gặp sự cố tại thời điểm viết, 22 byte

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

C # 8.0 , Chương trình đầy đủ, 78 byte

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


Thử thách đề cập đến "đầu ra", vì vậy giải pháp cuối cùng có lẽ là giải pháp phù hợp
Ven

Dang, bạn đã vượt qua câu trả lời giao diện điều khiển của tôi rất nhiều. ^ 1 hoạt động như thế nào?
Stackstuck 18/03/19

Đây là loại Chỉ mục mới. Bắt đầu một chỉ mục với một dấu mũ cho thấy nó từ cuối, tức array[^n]là giống nhưarray[array.Length - n]
Arcanox 18/03/19

Hấp dẫn! Tôi luôn cố gắng cập nhật các tính năng mới của C #. Bạn có bất kỳ liên kết / tài liệu tham khảo về điều đó?
19:00

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.