Đầu ra có cùng độ dài với mã


97

Trong thử thách này, bạn nên viết một chương trình hoặc hàm không có đầu vào và in hoặc trả về một chuỗi có cùng số byte như chính chương trình đó. Có một vài quy tắc:

  • Bạn chỉ có thể xuất byte trong phạm vi ASCII có thể in (0x20 đến 0x7E, đã bao gồm) hoặc dòng mới (0x0A hoặc 0x0D).
  • Mã của bạn không được là một quine, vì vậy mã và đầu ra phải khác nhau ít nhất một byte.
  • Mã của bạn phải dài ít nhất một byte.
  • Nếu đầu ra của bạn chứa các dòng mới, thì đó là một phần của số byte.
  • Nếu mã của bạn yêu cầu các cờ dòng lệnh không chuẩn, hãy tính chúng như bình thường (nghĩa là bằng cách thêm sự khác biệt vào lời gọi chuẩn của ngôn ngữ của bạn vào số byte) và độ dài của đầu ra phải khớp với điểm của giải pháp của bạn. Ví dụ: nếu chương trình của bạn là abvà yêu cầu cờ không chuẩn -n(chúng tôi sẽ cho rằng nó không thể được kết hợp với cờ tiêu chuẩn, vì vậy đó là 3 byte), bạn nên xuất tổng cộng 5 byte.
  • Đầu ra không phải luôn luôn giống nhau, miễn là bạn có thể chỉ ra rằng mọi đầu ra có thể đáp ứng các yêu cầu trên.
  • Quy tắc quine thông thường không áp dụng. Bạn có thể đọc mã nguồn hoặc kích thước của nó, nhưng tôi nghi ngờ điều này sẽ ngắn hơn mã hóa mã hóa trong hầu hết các ngôn ngữ.

Bạn có thể viết một chương trình hoặc một chức năng và sử dụng bất kỳ phương pháp cung cấp đầu ra tiêu chuẩn nào . Lưu ý rằng nếu bạn in kết quả, bạn có thể chọn in nó ra đầu ra tiêu chuẩn hoặc luồng lỗi tiêu chuẩn, nhưng chỉ một trong số chúng được tính.

Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình nào , nhưng lưu ý rằng các lỗ hổng này bị cấm theo mặc định.

Đây là , vì vậy câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.

Bảng xếp hạng



18
"Mã của bạn không phải là một quine" nhưng ... nhưng ... nó được gắn thẻ quine
Okx

4
@Okx Bởi vì đó là một quine tổng quát, tức là đầu ra cần thiết phụ thuộc vào mã nguồn.
Martin Ender

4
@MartinEnder Có lẽ bạn không nên cho phép đầu ra bằng mã thoát, đây là mặc định. Nếu bạn cho phép nó gần như mọi chương trình một byte trong gần như mọi ngôn ngữ đều được phép. Một người dùng đã thực hiện điều này
Wheat Wizard

2
@WheatWizard đầu ra theo mã thoát không phải là một chuỗi, vì vậy nó không áp dụng ở đây.
Martin Ender

Câu trả lời:


204

C (Linux hiện đại), 19 byte

main(){puts('s');}

Khi được biên dịch và chạy, bản in này:

Segmentation fault

20
Điều này thật tuyệt vời: D
Beta Decay

4
nó giống như "Hệ điều hành tiếng Anh unix / posix;)"
Florian Castellane

5
Tôi nghĩ sẽ tốt hơn khi viết "C, Linux hiện đại" thay vì chỉ "C": Trong Windows, thông báo lỗi là khác nhau và trong thời xưa, các chương trình Linux thậm chí còn được biên dịch theo cách mà địa chỉ 0x73 ('s') có thể đọc được vì vậy không có ngoại lệ được gây ra.
Martin Rosenau

9
Tôi tham gia trang web chỉ để nâng cao câu trả lời này.
Nitish

7
Ấn tượng như thế này, đây không thực sự là chương trình C in đầu ra, mà là vỏ nó đang chạy.
Dennis

80

Excel, 11 byte

Phiên bản tiếng Na Uy:

=SMÅ(13^9)

Phiên bản tiếng Anh (12 byte):

=LOWER(17^9)

Tạo số n chữ số và chuyển đổi thành văn bản bằng cách chuyển đổi thành chữ thường.


106
Điều này mang đến một ý nghĩa hoàn toàn mới để "chọn ngôn ngữ phù hợp cho công việc".
Martin Ender

4
Đây là một ý tưởng tuyệt vời. Nó sẽ ngắn hơn để làm =9^7&""mà tạo ra một số 7 chữ số trong cả hai ngôn ngữ và chỉ có 7 byte.
OpiesDad

@OpiesDad Giải pháp hay, tôi nghĩ bạn nên đăng nó dưới dạng câu trả lời, để tôi có thể nâng cấp.
pyjama

4
@MartinEnder Điều đó làm tôi vui vì cách suy đoán / trò đùa tiềm năng của bạn được nâng cao hơn câu trả lời này (mặc dù nó gần).
HyperNeutrino

55

Mê cung , 4 byte

!!>@

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

Bản in 0000

Giải trình

!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
>   Rotate the source code right by one cell, so the code now becomes

    @!!>

    The IP is moved along, so it's now at the end of the line, which is 
    a dead end. So the IP turns around and starts moving left.
!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
@   Terminate the program.

6
Điều đó quá thông minh. Có +1, về nhà!
caird coinheringaahing


40

Võng mạc , 2 byte

no

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

In 0và một linefeed.

Có rất nhiều giải pháp 2 byte, nhưng tôi tin rằng điều này là tối ưu. Retina theo mặc định luôn in một dòng mới và việc loại bỏ nó mất quá nhiều byte. Vì vậy, chúng ta phải tìm một chương trình 1 byte để đầu vào trống không thay đổi. Tôi tin rằng chương trình duy nhất thực hiện điều này là chương trình chứa một dòng cấp dữ liệu duy nhất, do đó bằng với đầu ra và do đó không được phép thử thách cho phép.

Điều đơn giản tiếp theo cần làm là sống với Retina xuất ra một chữ số (số lượng khớp của một số biểu thức so với đầu vào trống) và chúng ta có thể làm điều đó với rất nhiều mẫu 2 byte thất bại (hoặc khớp).


27
+1 Đối với mã bảo tôi không chạy nó: P
Christopher

33

Toán học, 2 byte

4!

yếu tố

24


1
Trời ạ! quá thông minh.
tuskiomi

2
đánh tôi với nó +1. ( Tôi nghĩ bạn nên đề cập rằng đây là phiên bản REPL của Mathematica.)
Greg Martin

Nếu đây là câu trả lời hợp lý, thì câu trả lời "1" cũng không phải là câu trả lời hợp lý? (Đặt '1' vào REPL của Mathicala cũng sẽ trả về '1' ...)
Đánh dấu phân đoạn

3
@MarkSegal Điều đó sẽ vi phạm quy tắc không có nguyên tắc.
AlexR

6
Quy tắc: ... "... mã và đầu ra phải khác nhau ít nhất một byte"
J42161217

29

C, 20 byte

f(){printf("%20d");}

Xuất ra một số số, được đệm với khoảng trắng đến độ dài 20. (Số nào? Bất cứ điều gì xảy ra tiếp theo trong bộ nhớ.)

Một số mẫu chạy trên hệ thống của tôi:

llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           -666605944
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
          -1391039592
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1727404696
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
             10717352
llama@llama:...code/c/ppcg121056samelen$ ./a.out 
           1485936232

Thật đáng tiếc khi đầu ra không thể là byte tùy ý, vì điều đó sẽ cho phép giải pháp 19 byte này:

f(){write(1,f,19);}

mà kết quả đầu ra 19 byte của rác, bắt đầu từ f'địa chỉ s.


Tôi rất vui khi thấy một câu trả lời sử dụng quy tắc đầu ra khác nhau. :)
Martin Ender

Không thể segfault này?
Daniel

Liên kết TIO ở đâu?
Máy

@Daniel Không, số được in sẽ đến từ nội dung trước đó của %esiđăng ký.
Doorknob

8
@Doorknob nhưng đó vẫn là hành vi không xác định, do đó, một trình biên dịch tàn bạo hơn có thể làm điều gì đó hoàn toàn khác ở đây
SUND Borsch

29

Bash trên Linux, 6

uname

(tiếp theo là một dòng mới)

Đầu ra Linuxtheo sau là một dòng mới.


2
Về mặt kỹ thuật unamekhông phải là một bash dựng sẵn - đó là một thực thi riêng biệt
Jason Musgrove


@GammaFunction Bạn thấy unamebash dựng ở đâu? Mỗi phân phối tôi có thể đặt tay ngay bây giờ, đó là một nhị phân riêng biệt, bao gồm cả TIO . Ngược lại, như câu trả lời được liên kết của bạn hiển thị, umasklà một nội dung trong hầu hết / tất cả các shell.
Chấn thương kỹ thuật số

Tôi không thấy unamelà một nội dung. Khi tôi nói "-1 và thực sự là một nội trang", tôi có nghĩa là "Câu trả lời này sử dụng umaskcho -1 byte và umaskthực sự là một nội dung".
GammaFeft

@GammaFunction Xin lỗi - Tôi đã hiểu nhầm ý nghĩa của "-1" trong bình luận của bạn - Tôi đã quen với những ý nghĩa đó và một bình luận giải thích lý do tại sao.
Chấn thương kỹ thuật số

27

Javascript ES6, 9 byte

Sử dụng chuỗi mẫu

_=>`${_}`

f=

_=>`${_}`

console.log(f());
console.log(typeof f());


Được undefinedcoi là một chuỗi?
Xù xì

3
@Shaggy Xem chỉnh sửa. Tôi đang sử dụng phép nội suy Chuỗi
Weedoze

Wow đây là bài viết thứ hai của tôi trên PPCG và 14 upvote! Cảm ơn
Weedoze

1
Tại sao whey đơn giản bạn có thể gặp khó khăn? (_=>_+'').
GOTO 0

1
@ GOTO0 Oh ok bạn giữ dấu ngoặc đơn. Đây là một lựa chọn khác. Cá nhân tôi thích của mình hehe
Weedoze

24

Sơ đồ kim tự tháp , 74 43 42 byte

Đã lưu 31 byte nhờ Khuldraeseth na'Barya! Đã lưu 1 byte nhờ giải pháp được thiết kế lại của JoKing!

  ^
 /^\
^---^
-^ ^-
 -^-
 /2\
/ 8 \
-----

Hãy thử trực tuyến! Xuất ra số có 41 chữ số 28^28 = 33145523113253374862572728253364605812736, theo sau là một dòng mới.


Phiên bản cũ

  ^
 / \
/out\
-----^
    /^\
   ^---^
  /1\ /9\
 /606\---
/51015\
-------

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

Đầu ra 71277303925397560663333806233294794013421332605135474842607729452115234375= 160651015 ** 9, hoặc khoảng 10 74 .


6
Này, bạn đang cố gắng bán ngôn ngữ của bạn? Nếu vậy, bạn đang bị bắt giữ. - Cảnh sát
NoOneIsHãy

2
@NoOneIsHãy tha thứ?
Conor O'Brien

3
Xin lỗi, nó được gọi là Pyramid Scheme, cũng là tên của một loại lừa đảo.
NoOneIsHãy

1
ohhhhhhhhhhhh rofl
Conor O'Brien

1
Đầu ra tiềm ẩn giúp bạn giảm xuống còn 43 byte .
Khuldraeseth na'Barya

23

Python 2 , 9 byte

print{+1}

Điều này in set([1])và một linefeed.

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


11
Từ các chương trình bắt buộc vũ phu bắt đầu print, không có giải pháp nào ngắn hơn và chỉ có 9 byte là các biến thể của điều này và của Luis Mendo print 1e5 .
xnor

23

Python 2 , 9 byte

print 1e5

Đầu ra được hiển thị chứa một dòng mới.

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


Các dòng mới có được tính là một ký tự cho đến đầu ra không? Mặt khác, điều này in tám byte.
OldBunny2800

@ OldBunny2800 Có, thách thức cho biết Nếu đầu ra của bạn chứa các dòng mới, đó là một phần của số byte . Dù sao, tôi sẽ làm rõ điều đó trong câu trả lời của tôi
Luis Mendo

18

Brainfuck , 25 byte

--[-->+<]+++++[->-.....<]

Hãy thử trực tuyến! Lưu ý: Yêu cầu triển khai với các ô không dấu 8 bit

Đầu ra:

~~~~~}}}}}|||||{{{{{zzzzz

Giải trình

--[         254
 -->+<]      /2 = 127 into the second cell
+++++[      Five times
 ->-.....<]  Print the second cell - 1 five times

4
Có nhiều biến thể BF như băng 8 bit, infite. hoặc một băng hạn chế và các tế bào vô hạn. Tôi khá chắc chắn rằng bạn là một mô hình tế bào 8 bit không dấu, nhưng tôi nghĩ sẽ tốt nếu bạn đưa nó vào câu trả lời của bạn.
Roman Gräf

@ RomanGräf Điểm tốt! Tôi thường bao gồm thông tin đó nếu việc triển khai không chuẩn được yêu cầu. Câu trả lời này sẽ hoạt động trên bất kỳ triển khai tiêu chuẩn nào (các ô không dấu 8 bit, bất kỳ băng nào), nhưng tôi sẽ thêm một ghi chú để làm rõ.
Zack C.

Bạn có thể không có chương trình 1 byte .in NULLký tự không thể in được không?
Graviton

@Graviton Điều đó sẽ vi phạm quy tắc đầu tiên của thử thách này. Tuy nhiên, đó là một giải pháp hợp lệ trong công cụ phái sinh BF mặc định là giá trị có thể in được (xem: câu trả lời brainbool của tôi ).
Zack C.


16

C (Ideone), 14 byte

f(){warn(0);}

Trên Ideone , cái tên được thực thi của nó prog, cái này xuất ra dòng sau với một dòng mới.

prog: Success

C (GCC), 15 byte

f(){warn(00);}

Bởi vì GCC viết một tệp thực thi được đặt tên a.outtheo mặc định (trong trường hợp không có các cờ bổ sung sẽ có giá byte), điều này sẽ xuất ra dòng sau với một dòng mới.

a.out: Success

7
@MDXF Thông số kỹ thuật cho biết chương trình hoặc chức năng, vì vậy việc gửi chức năng là hoàn toàn hợp lệ. Vì tên tệp không được người dùng chọn ở đây (cả Ideone và gcc đều có mặc định), tôi nghĩ rằng điều này là tốt (ý kiến ​​cá nhân).
Dennis

15

C (gcc) , 18 17 byte

f(){puts('@C');}

Lưu ý rằng có một byte STX ( 0x02 ) giữa @C.

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

Tính di động

Điều này đã được thử nghiệm với gcc 6.3.1 và clang 3.9.1 trên Fedora 25, gcc 4.8.4 trên Ubuntu 14.04.4 và gcc 4.8.3 trên openSUSE 13.2, trong đó nó in ra đầu ra sau.

inux-x86-64.so.2

Tôi hy vọng điều này sẽ tạo ra cùng một đầu ra với tất cả các phiên bản của gcc, miễn là nó biên dịch thành một loại thực thi sau đây.

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2

Các nền tảng khác nhau sẽ yêu cầu một địa chỉ bộ nhớ khác nhau và có thể là một thứ tự khác nhau cho các byte trong hằng ký tự nhiều ký tự.

Ví dụ: thay thế @\2Cbằng @\2\4các bản in exec/ld-elf.so.1và một dòng mới trên FreeBSD 11 bằng clang 3.8.0.

Xác minh ngoại tuyến

$ printf "%b\n" "f(){puts('@\2C');}main(){f();}" > quine.c
$ gcc -w -o quine quine.c
$ ./quine
inux-x86-64.so.2
$ ./quine | wc -c
17

Làm thế nào nó hoạt động

Theo mặc định, ld sử dụng 0x400000 làm địa chỉ cơ sở của đoạn văn bản, nghĩa là chúng ta có thể tìm thấy nội dung của ELF bắt đầu từ địa chỉ bộ nhớ 0x400000 .

640 byte đầu tiên của ELF phần lớn độc lập với mã nguồn thực tế. Ví dụ, nếu khai báo f được theo sau main(){f();}và không có gì khác, chúng trông như sau.

00000000: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010: 02 00 3e 00 01 00 00 00 00 04 40 00 00 00 00 00  ..>.......@.....
00000020: 40 00 00 00 00 00 00 00 e8 19 00 00 00 00 00 00  @...............
00000030: 00 00 00 00 40 00 38 00 09 00 40 00 1e 00 1b 00  ....@.8...@.....
00000040: 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00  ........@.......
00000050: 40 00 40 00 00 00 00 00 40 00 40 00 00 00 00 00  @.@.....@.@.....
00000060: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000070: 08 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00  ................
00000080: 38 02 00 00 00 00 00 00 38 02 40 00 00 00 00 00  8.......8.@.....
00000090: 38 02 40 00 00 00 00 00 1c 00 00 00 00 00 00 00  8.@.............
000000a0: 1c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
000000b0: 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00  ................
000000c0: 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 00  ..@.......@.....
000000d0: 04 07 00 00 00 00 00 00 04 07 00 00 00 00 00 00  ................
000000e0: 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00  .. .............
000000f0: 08 0e 00 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..........`.....
00000100: 08 0e 60 00 00 00 00 00 1c 02 00 00 00 00 00 00  ..`.............
00000110: 20 02 00 00 00 00 00 00 00 00 20 00 00 00 00 00   ......... .....
00000120: 02 00 00 00 06 00 00 00 20 0e 00 00 00 00 00 00  ........ .......
00000130: 20 0e 60 00 00 00 00 00 20 0e 60 00 00 00 00 00   .`..... .`.....
00000140: d0 01 00 00 00 00 00 00 d0 01 00 00 00 00 00 00  ................
00000150: 08 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00  ................
00000160: 54 02 00 00 00 00 00 00 54 02 40 00 00 00 00 00  T.......T.@.....
00000170: 54 02 40 00 00 00 00 00 44 00 00 00 00 00 00 00  T.@.....D.......
00000180: 44 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00  D...............
00000190: 50 e5 74 64 04 00 00 00 b0 05 00 00 00 00 00 00  P.td............
000001a0: b0 05 40 00 00 00 00 00 b0 05 40 00 00 00 00 00  ..@.......@.....
000001b0: 3c 00 00 00 00 00 00 00 3c 00 00 00 00 00 00 00  <.......<.......
000001c0: 04 00 00 00 00 00 00 00 51 e5 74 64 06 00 00 00  ........Q.td....
000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00  ................
00000200: 52 e5 74 64 04 00 00 00 08 0e 00 00 00 00 00 00  R.td............
00000210: 08 0e 60 00 00 00 00 00 08 0e 60 00 00 00 00 00  ..`.......`.....
00000220: f8 01 00 00 00 00 00 00 f8 01 00 00 00 00 00 00  ................
00000230: 01 00 00 00 00 00 00 00 2f 6c 69 62 36 34 2f 6c  ......../lib64/l
00000240: 64 2d 6c 69 6e 75 78 2d 78 38 36 2d 36 34 2e 73  d-linux-x86-64.s
00000250: 6f 2e 32 00 04 00 00 00 10 00 00 00 01 00 00 00  o.2.............
00000260: 47 4e 55 00 00 00 00 00 02 00 00 00 06 00 00 00  GNU.............
00000270: 20 00 00 00 04 00 00 00 14 00 00 00 03 00 00 00   ...............

Việc sử dụng, ví dụ, main(int c, char**v){f();}thay vào đó thay đổi một số byte, nhưng không phải là phần bù của chuỗi /lib64/ld-linux-x86-64.so.2, chúng ta sẽ sử dụng để tạo đầu ra.

Độ lệch của chuỗi đã nói là 0x238 và dài 27 byte. Chúng tôi chỉ muốn in 17 byte (và cái cuối cùng sẽ là một dòng mới nếu chúng tôi sử dụng puts), vì vậy chúng tôi thêm 11 vào phần bù để lấy 0x243 , phần bù của inux-x86-64.so.2. Thêm 0x4000000x243 sẽ cho 0x400243 , vị trí bộ nhớ của inux-x86-64.so.2.

Để có được địa chỉ bộ nhớ này, chúng ta có thể sử dụng các hằng ký tự nhiều ký tự, thể hiện hành vi được xác định theo thực hiện. 0x400243(64) (2) (67) trong các hằng ký tự đa ký tự cơ sở 256 và gcc sử dụng thứ tự byte cuối lớn, do đó '@\2C'mang lại địa chỉ bộ nhớ của chuỗi mong muốn.

Cuối cùng, putsin sting (kết thúc null) tại vị trí bộ nhớ đó và một dòng mới, tạo ra 17 byte đầu ra.


Đây là thuật sĩ ... điều này có giả định thứ tự byte của tập hợp đã biên dịch hay không?
Patrick Roberts

Đầu ra trên hệ thống của tôi (Linux với GCC 6.3.1): Ukhi biên dịch với -Df=main. Ukhi biên dịch với main(){f();}.
MD XF

@PatrickRoberts Tại thời điểm này, tôi không thực sự chắc chắn các giả định là gì. Vì nó chọc xung quanh trong tệp ELF đã lắp ráp, nên nó phụ thuộc khá nhiều vào mọi thứ mà trình biên dịch ghi trước mã thực tế.
Dennis

@MDXF Tìm thấy một cách ngắn hơn để có được một địa chỉ bộ nhớ phù hợp. Nó hoạt động trên VPS Ubuntu 14.04 của tôi bây giờ, nhưng ymmv.
Dennis

@Dennis Hoạt động tốt bây giờ (dang nó). Tiền thưởng là của bạn nếu đến cuối tuần không ai tìm được giải pháp ngắn hơn.
MD XF

13

Brainfuck tự sửa đổi , 5 byte

<[.<]

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

Đầu ra:

]<.[<

Giải trình:

Thực sự đơn giản, in nguồn ngược lại. Trong SMBF, nội dung của chương trình được lưu trên băng, ở bên trái vị trí ban đầu của con trỏ. Lướt sang trái và in sẽ xuất mã nguồn ngược.

Vì nguồn đọc được cho phép trong thử thách này, điều này chắc chắn phải nằm trong quy tắc.


13

Máy tính số học cơ bản , 2 byte

1=

in 1., hoặc:

    |
    |
    |  .

trên những màn hình bảy đoạn ngớ ngẩn đó.

Để sao chép, chọn bất kỳ máy tính ngẫu nhiên; tất cả đều có ngôn ngữ lập trình này được cài đặt bằng cách nào đó.


1
Điều này có đúng với tất cả các máy tính không? Tôi chắc chắn rằng họ liên tục hiển thị dấu thập phân
Phân rã Beta

Không phải nó 1.thay vì 1x? Ngoài ra đây là một quine, không được phép bởi các quy tắc.
Erik the Outgolfer

Không, đó là 1=, tôi đã làm rối tung lên. Tôi có nghĩa là 1xhơn bằng ngầm, nhưng tôi quên rằng đó =là một nút.
OldBunny2800

Nó chỉ xuất ra 1trên cả TI-36 và TI-84 CE của tôi. Những cái này không được tính là máy tính "cơ bản"?
Benjamin Urquhart

Không, TI 84 không phải là máy tính số học, nó là máy tính vẽ đồ thị. Tôi không biết về 36, nhưng tôi khá chắc chắn đó là một máy tính khoa học. Câu trả lời này là dành cho máy tính bốn chức năng.
OldBunny2800

13

Fourier, 26 22 20 byte

5^(`na`&i)` Batman!`

Hãy thử nó trên FourIDE!

Đầu ra:

nananananana Batman!

Để viết hoa đúng, đó là 4 byte thêm:

`N`7^(`an`i^~i)`a Batman!`

Hãy thử nó trên FourIDE!

Nanananananananana Batman!

RIP Adam West


1
Bạn không cần phải bao gồm NC (chỉ khi bạn thực hiện in chuỗi cho thử thách này (và điều đó thật ngớ ngẩn)
Christopher

@Christopher Huh, tôi không biết điều đó
Beta Decay

12

Brachylog , 1 byte

w

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

Giải trình

wlà "ghi" tích hợp. Ở đây, nó sẽ viết Input. Vì Đầu vào là một biến miễn phí, wsẽ gắn nhãn đó là số nguyên trước khi in. Số nguyên đầu tiên nó thử là 0.


Here, it will write the Input.Có phải 'Đầu vào' là chính chương trình? Điều này không được tính là đọc nguồn, mà theo mặc định là gian lận trong một quine?
MD XF

4
@MDXF "Quy tắc sử dụng thông thường không áp dụng"
Rob Watts

3
@MDXF Đầu vào là biến Brachylog đặc biệt mà bạn có thể đặt khi gọi chương trình Brachylog. Nó đi vào phần Đầu vào của TryItOnline. Ở đây chúng ta không đặt bất cứ thứ gì vào Đầu vào, vì vậy nó thực sự là một biến. Nó không phải là chương trình.
Gây tử vong vào

10

Java (OpenJDK 8) , 11 byte

o->1e8-1+""

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

Đầu ra:

9.9999999E7

Chỉ là một chút công phu hơn câu trả lời rõ ràng ()->"".format("%23s",0),.

Tiết kiệm

  • 18 -> 16 byte: Sự kết hợp thuận lợi hơn giữa làm tròn và sức mạnh của 10, nhờ vào PunPun1000
  • 16 -> 13 byte: công thức tốt hơn, nhờ JollyJoker
  • 13 -> 11 byte: công thức được cải thiện, nhờ Kevin Cruijssen

2
()->1E10-1+"", "9.999999999E9" (13)lưu thêm ba byte
JollyJoker

1
Bạn có thể lưu 1 byte bằng cách thay đổi 1e10thành 1e9hoặc 2 byte bằng cách sử dụng đầu vào trống thay vì() như thế này: o->1e8-1+""(đầu ra 9.9999999E7; chiều dài & đếm byte 11 ).
Kevin Cruijssen

9

05AB1E , 1 byte

õ

Xuất ra một dòng mới. õđẩy một chuỗi rỗng và nó được xuất ra hoàn toàn với một dòng mới.

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

Một số giải pháp 2 byte khác, cho niềm vui xem của bạn (đầu ra nằm trong ngoặc và tất cả đầu ra có một dòng mới):

X, (1)
Y, (2)
¾, (0)
¼, (1)
¶, (newline)
ð, (space)
Î, (0)

Có nhiều cách hơn 2 giải pháp mặc dù.


"Đó là một phương thức đầu ra được chấp nhận" chỉ dành cho các giải pháp chức năng, không dành cho các chương trình đầy đủ.
Martin Ender

@MartinEnder Những giải pháp đó có được tính là hàm không? Không thực sự chắc chắn, vì tôi không thường sử dụng các chức năng ở đây.
Okx

Tôi không biết đủ về 05AB1E nhưng chúng chỉ được coi là các hàm nếu chúng thực sự là các biểu thức đánh giá đối tượng hàm (điều mà tôi nghi ngờ chúng làm vì sử dụng chúng ngay lập tức khiến lệnh được thực thi).
Martin Ender

9

V / vim, 1 byte

o

Điều này in một dòng mới.

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

Có một loạt các biến thể về điều này cũng sẽ làm việc. Ví dụ,

O

trong vim, và

Ä
ä
ï
Ï

trong V.

Ngoài ra còn có rất nhiều nhiều giải pháp ba byte. Ví dụ:

3ii
i³i
¬ac

Đây là tất cả cụ thể cho V.


3ii không mở rộng cho đến khi bạn nhấn thoát, vậy nên là ba hoặc bốn byte (hay thay vào đó là tổ hợp phím)?
algmyr

@ achmyr Trong vim, bạn đúng. Nó sẽ phải là 4ii<ESC>Tuy nhiên V hoàn toàn lấp đầy trong lối thoát vào cuối chương trình.
DJMcMayhem

8

Mẻ, 12 byte

@echo %OS%

Số lượng byte bao gồm dòng mới theo dõi cho cả tập lệnh và đầu ra, đó là

Windows_NT

Có vẻ như đó là 11 byte chứ không phải 12.
Erik the Outgolfer

@EriktheOutgolfer cmd.exetất nhiên sẽ lặp lại CRLF sau Windows_NT12 byte.
Neil

Vậy thì bạn nên làm rõ?
Erik the Outgolfer




7

MATL , 2 byte

H

Có một dòng mới.

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

Giải trình

Clipboard H chứa số 2theo mặc định. Hđẩy nội dung đó lên ngăn xếp, được hiển thị ngầm với một dòng mới.



7

Thạch , 1 byte

V

Khá nhiều biến đổi Jelly one - đây là một - nó đánh giá đối số bên trái, khi không có gì được cung cấp làm đầu vào, mặc định là 0, từ đó ước tính thành 0 và kết quả được in ngầm, a 0.

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

Trong thực tế, trong số 256 byte trong trang mã, chỉ có 95 byte hiện không tạo ra một đầu ra một byte khác trong phạm vi được chỉ định khi chạy dưới dạng một chương trình đầy đủ; đây là (dưới dạng các ký tự trang mã theo thứ tự byte):

¡¢£¦©½¿€ÇÑÞßçıȷñ÷þ"#&',-./0123456789:;?@IMRTVZ\`dmpstxyz{}~°³⁴⁵⁹ƓƈɠḶỌṬḊĖİĿṄȮṖṘẆẊṃọṣṭḃḟḣŀṁṗṡẋż’“

Ghi chú:

  • Hầu hết các chương trình 1 byte đều in một 0(không có op / mang lại một danh sách có một số 0 duy nhất, in ra một 0), hầu hết các chương trình khác in một 1( 0=0và tương tự)

  • là một chương trình mà không mang lại một byte khác nhau, nhưng một trong đó là ra khỏi phạm vi theo đặc điểm kỹ thuật - nó tạo ra null byte (phôi các 0nhân vật)

  • tạo ra một không gian (một nghĩa đen)

  • tạo ra một nguồn cấp dữ liệu (một nghĩa đen)

  • Một số byte hoạt động ngay bây giờ có thể không làm như vậy trong tương lai - có một vài byte được bảo lưu (tôi tin) cho các giá trị niladic, khi được gán, gần như chắc chắn sẽ không tạo ra đầu ra một byte.


1
Liên kết chết chobyte
Weedoze

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.