Chuỗi thời gian viên nang 2016: Leo lên thang số nguyên


28

Sử dụng 74 ký tự từ chuỗi viên nang thời gian 2016

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

viết đoạn mã N tất cả trong cùng một ngôn ngữ trong đó:

  • Đoạn đầu ra đầu ra 1.
  • Đoạn đầu ra thứ 2 2.
  • Đoạn đầu ra thứ 3 3.
  • ... vv ...
  • Đoạn mã đầu ra Nth N(số, không phải chữ bằng chữ).

Một "đoạn mã" được định nghĩa là bất kỳ trong số này:

  • Một chương trình đầy đủ không có đầu vào cần thiết mà đầu ra số bình thường .
  • Một hàm không có đối số bắt buộc xuất / trả về số bình thường .
  • Một biểu thức REPL ước lượng cho số.

(Bạn có thể trộn và kết hợp ba biến thể này trong đoạn N của mình.)

Các ký tự bạn được phép sử dụng trong bộ N đoạn kết hợp chính xác là 74 ký tự của viên nang thời gian, cộng với floor(N/2) các byte "ký tự đại diện" bổ sung mà bạn có thể sử dụng ở bất cứ đâu.

Ví dụ: viên nang thời gian chứa ba phần @trong toàn bộ đoạn mã N của bạn, chỉ có thể có tối đa ba @món quà trừ khi bạn quyết định sử dụng một số floor(N/2)byte ký tự đại diện của mình để thêm @.

Do đó, không tính các ký tự đại diện, tập hợp các ký tự trong đoạn mã N của bạn phải là một tập hợp con của 74 ký tự dấu thời gian. Độ dài kết hợp của chúng không thể vượt quá 74. Bạn không được sử dụng lại các ký tự dấu thời gian hoặc byte ký tự đại diện giữa các đoạn.

Ghi chú

  • Không có giới hạn nào khác về độ dài đoạn trích hoặc số lượng ký tự đại diện có thể được sử dụng cho mỗi đoạn mã.

  • Bạn phải viết tất cả các đoạn từ 1 đến N. Không phải là 0 đến N-1, không phải k đến N + k-1.

  • Đoạn mã phải là riêng lẻ, không phải là một đoạn xuất ra danh sách 1, 2, 3, ..., N.

  • Các đầu ra có thể nổi như 3.0ở vị trí 3và bạn có thể sử dụng một cơ sở khác với số thập phân nếu đó là cơ sở tự nhiên của ngôn ngữ của bạn . Bạn phải sử dụng cùng một cơ sở cho tất cả các đoạn.

  • Các ký tự đại diện được tính là byte trong mã hóa ngôn ngữ của bạn . Đây có thể sẽ là ASCII nhưng ví dụ: nếu được tính là một byte trong mã hóa của bạn thì bạn có thể sử dụng nó như một byte ký tự đại diện duy nhất.

  • Bạn có thể sử dụng byte ký tự đại diện cho các ký tự đa bào. ví dụ: thông thường là ba byte để bạn có thể sử dụng nó trong một đoạn nhưng nó sẽ tốn ba byte ký tự đại diện của bạn .floor(N/2)

  • Các dòng mới như \r\ncó thể được coi là một byte.

Thí dụ

Trong Python, N = 4 có thể chỉ bằng cách sử dụng REPL. Có floor(4/2) = 2ký tự đại diện.

  1. 1từ viên nang thời gian là một biểu hiện mà evals đến 1.

  2. 2bao gồm một ký tự đại diện duy nhất, cụ thể là 2. Evals để 2.

  3. 3cũng bao gồm một ký tự đại diện duy nhất. Evals để 3. Không còn ký tự đại diện.

  4. 4là may mắn trong viên nang thời gian và nó tránh xa 4.

Những đoạn này ngắn và tầm thường. Một câu trả lời thực sự có thể sẽ phức tạp hơn nhiều.

(Năm và hơn thế nữa trong Python chắc chắn là có thể nhưng tôi sẽ để lại cho các chuyên gia.)

Chấm điểm

Câu trả lời có N thắng cao nhất; tức là cái leo lên thang số nguyên cao nhất.

Trong trường hợp hòa, câu trả lời sử dụng ít byte ký tự đại diện nhất sẽ thắng.
Trong trường hợp vẫn còn một ràng buộc, câu trả lời sử dụng ít nhân vật tích lũy nhất sẽ thắng.
Nếu vẫn còn hòa, câu trả lời trước đó sẽ thắng.


1
Nếu ngôn ngữ lập trình không có REPL, chúng ta vẫn có thể gửi biểu thức bằng ngôn ngữ đó nếu nó đánh giá giá trị phù hợp? (Ví dụ: 4một đoạn mã hợp lệ trả về 4, trong các phiên bản cũ hơn của Perl không có REPL?)

1
Ồ, và một câu hỏi khác: trong một ngôn ngữ có mã hóa không tương thích ASCII, chúng ta có coi các ký tự của viên nang thời gian là các ký tự (dịch chúng sang mã hóa của ngôn ngữ) hay dưới dạng byte (viết chương trình xem chương trình là ASCII sẽ xuất hiện để được chứa hoàn toàn các ký tự viên nang thời gian)? Trong một số ngôn ngữ có bộ ký tự kỳ lạ, hầu hết các ký tự viên nang thời gian thậm chí không có trong bộ ký tự, điều này khiến chúng khó sử dụng như hiện trạng.

1
Còn số 0 hàng đầu thì sao? Có 07 giống như 7?
Emigna

1
Nó thực sự làm tôi khó chịu khi chuỗi không chứa -cũng không n...
devR Rich

1
"Đoạn trích" trong các ngôn ngữ dựa trên ngăn xếp có thể để lại giá trị của chúng trên ngăn xếp không?
FlipTack

Câu trả lời:


10

CJam , 25 đoạn, 12 ký tự đại diện, 64 byte

1
Q!)
Z
4
5
6
L``(*$)#
8
9
T!T
B
C
D
E
F
G
H
I
J
K
O`e`~~!!
B`:)
Q``$e`~~@~@=~+
Q!)4
Amf

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

Ký tự đại diện:

568BBCDEFGJK

Tôi cảm thấy rằng tôi phải đăng bài nhanh chóng, trước khi Dennis vượt qua tôi.


Những ký tự đại diện nào bạn đã sử dụng?
Rɪᴋᴇʀ

@EasterlyIrk Chỉnh sửa. Bạn cũng có thể sử dụng bộ đếm ký tự đại diện trong câu trả lời của Dennis .
jimmy23013

Công việc đang tiến hành: tio.run/nexus/jelly#FczNCoJAFIbh/ Lời
jimmy23013


5

JavaScript, 10 số, 5 ký tự đại diện

Các nhân vật còn lại: !!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~

5/5 nhân vật tiền thưởng được sử dụng: 37680

Chương trình:

  1. 1
  2. ! `` +! ``
  3. 3
  4. 4
  5. 4|!``
  6. 6
  7. 7
  8. 8
  9. 9
  10. 0xA

Tôi đã hy vọng một trong những chuỗi tôi có thể thực hiện bằng cách sử dụng \xAB sẽ là một số, nhưng thật không may, không có kết hợp nào tôi thử sẽ mang lại bất kỳ kết hợp nào. Nhân vật ^(XOR) cũng sẽ rất thú vị khi sử dụng, nhưng hiện tại tôi không thấy bất kỳ cơ hội nào mà nó có thể được sử dụng để tạo ra một con số đủ lớn.

Nếu bạn thấy một sự kết hợp khả thi khác, hãy cho tôi biết trong phần bình luận.

Chỉnh sửa: Đã thêm # 10 nhờ Arnauld


1
Tôi nghĩ bạn có thể thêm 10. 0xA(với 0việc là một ký tự đại diện mới được cấp khi đạt 10)
Arnauld

Bạn có thể làm (Q=!``)|Qcho 1 để có thêm 1một nơi nào đó. Không chắc chắn nếu điều đó sẽ giúp mặc dù
ETHproductions

4

Pyth, 12 đoạn, 20 byte (6 ký tự đại diện)

f@

Tìm số đầu tiên trong đó root (n, n) là trung thực, bắt đầu từ 1. Kết quả: 1

y!H

Nhân đôi không {}. Đầu ra: 2

3

Ký tự đại diện số 1. Đầu ra: 3

4

Đầu ra: 4.

5

Ký tự đại diện số 2. Đầu ra: 5

6

Ký tự đại diện số 3. Đầu ra: 6

7

Ký tự đại diện số 4. Đầu ra: 7

8

Ký tự đại diện số 5. Đầu ra: 8

9

Đầu ra: 9

T

Biến tiền xử lý. Đầu ra: 10

+T!Z

Mười cộng không bằng không. Đầu ra: 11

12

Ký tự đại diện số 6 ( 2). Đầu ra: 12


4

Octave, 6 số, 3 ký tự đại diện

1: ~~I          % not(not(sqrt(-1))) evaluates to true (or 1)
2: 2            % Wildcard
3: 3            % Wildcard
4: 4
5: (T=4)+~~T    % Create a variable T=4, then add not(not(T)) which evaluates to 1.
6: 6            % Wildcard

Tôi vẫn còn 1, 9*rời đi, nhưng tôi không biết liệu nó có giúp tôi nhiều không. Tôi sẽ xem những gì tôi có thể làm với những người đó :)

Không dễ dàng để có được nhiều số khi không sử dụng Esolang. Tôi hy vọng tôi sẽ có thể có thêm một hoặc hai, nhưng tôi nghĩ nó sẽ khó.


2

Tự đề cao , 10 số (4 ký tự đại diện)

Tất cả đều là đoạn trích để lại kết quả trên ngăn xếp. Bạn có thể kiểm tra điều này trong trình thông dịch trực tuyến bằng cách thêm #vào từng đoạn (để in số)

A(      \ 1:  Get alphabet and check that 'Z' >= 'Y'. Results in 1 (True)
x&+     \ 2:  Check stack equality (True - both are empty) then duplicate and sum.
3       \ 3:  Push 3 (1 wildcard)
4       \ 4:  Push 4
1 4+    \ 5:  1 + 4 in postfix, leaves 5 on the stack (1 wildcard)
`L`T%   \ 6:  Get character code of 'L' and modulo by T (ten) - leaves 6 on the stack
7       \ 7:  Push 7 (1 wildcard)
8       \ 8:  Push 8 (1 wildcard)
9       \ 9:  Push 9
T       \ 10: Push 10

Câu trả lời này vẫn chưa hoàn thành - mặc dù có vẻ như tôi sẽ không thể tiến xa hơn.


1

05AB1E, 12 số, 6 ký tự đại diện

 1:    1                                   -> 1
 2:    )O!x                                -> sum([])!*2
 3:    4L`\                                -> 2nd_last(range(1...4))
 4:    4                                   -> 4
 5:    5        # wildcard 1 = 5           -> 5
 6:    6        # wildcard 2 = 6           -> 6
 7:    Tf`~                                -> or(last2(prime_factors(10)))
 8:    8        # wildcard 3 = 8           -> 8
 9:    9                                   -> 9
10:    T                                   -> 10
11:    A`Q!T+   # wildcard 4 = T           -> (y==z)!+10
12:    TÌ       # wildcard 5,6 = T,Ì       -> 10+2

1

Lục giác , 6 số, 3 ký tự đại diện, 23 byte

1!@
))!@
)|\@$!
4!%
4)!:
6!@

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

Toàn bộ chương trình thứ sáu được làm từ ký tự đại diện.

Điều duy nhất thực sự thú vị là 3. Mặc dù tôi có thể làm điều đó như vậy 4(!@, nhưng điều đó sẽ khiến tôi không có một cách dễ dàng 4để tạo ra 5, vì vậy tôi đã đi với điều này thay vào đó:

 ) |
\ @ $
 ! .

Do |, )trên dòng đầu tiên được chạy hai lần, trước khi IP kết thúc ở góc bên phải. $bỏ qua @, và sau đó \chuyển hướng IP qua )lần thứ ba. IP kết thúc ở góc dưới bên trái, !in 3@ kết thúc chương trình.

Tôi không nghĩ có nhiều hơn 6 đoạn mã, bởi vì chỉ có 5 lệnh in ( !!!!!) và 5 lệnh có thể được sử dụng để chấm dứt chương trình ( @@@%:). Vì vậy, sau đoạn mã thứ năm, chúng ta cần ít nhất hai ký tự đại diện cho mỗi đoạn mã. Do đó, ngay cả khi tôi quản lý để có được 6mà không sử dụng ký tự đại diện cho nó, sẽ không còn đủ các ký tự đại diện để đi đến đoạn bảy.


1

JavaScript, 8 số, 4 ký tự đại diện

 1: 1
 2: -~!``
 3: 4+~!$
 4: ~!``*~!``
 5: 4|!$
 6: 0xf^9
 7: 7
 8: 8

Tôi có thể thử lại sau - Tôi loại lãng phí nhân vật vào ngày 2 và 6, khi bạn bắt đầu.


0

Befunge-98, 4 đoạn mã, 18 byte, 2 ký tự đại diện

!.@
!:+.@
41-.@    wildcard 1 = -
4.#A9H   wildcard 2 = .

Ký tự còn lại: !!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~

Tôi nghi ngờ nhiều hơn là có thể, vì mỗi chương trình bổ sung sẽ yêu cầu một hình thức đầu ra, và tất cả .,đã được sử dụng hết. Nếu tôi có thể tìm ra cách tạo 3 và 5 mà không cần ký tự đại diện, thì có thể.

Chương trình cuối cùng cuối cùng sẽ chấm dứt do ngăn xếp đầy lên. AHkhông có dấu vân tay được tải sẽ phản ánh, và chương trình sẽ tiếp tục đẩy 9.


Tôi không nghĩ rằng cái cuối cùng là hợp lệ. Trừ khi thách thức nói khác, các chương trình cần phải chấm dứt.
Martin Ender

Bạn chỉ có thể chấm dứt với %mặc dù.
Martin Ender

@MartinEnder 00%có giá trị trong Befunge-98 và kết quả là 0 (hoặc hỏi người dùng về kết quả trong Befunge-93.
PurkkaKoodari

@MartinEnder Ngoài ra, chương trình cuối cùng sẽ chấm dứt giả định bộ nhớ hữu hạn. Thông số kỹ thuật Funge-98 {có thể đảo ngược nếu hết bộ nhớ; không có gì được nói về việc đẩy bình thường và tất cả các thông dịch viên dường như thất bại trên OOM, nhưng rõ ràng giới hạn bộ nhớ được nghĩ đến trong thông số ngôn ngữ.
PurkkaKoodari

Tôi nghĩ rằng điều này có khả năng có thể được cải thiện dựa trên (có thể ???) do sự hiện diện của pnhân vật, nhưng nó sẽ mất một số công việc. Bạn có thể làm e%9để có được 5, nhưng bạn sẽ cần một cách để in và kết thúc chương trình, vì vậy tôi nghi ngờ điều đó
MildlyMilquetoast

0

SmileBASIC, 12 đoạn mã, 5 ký tự đại diện, 31 byte

!.     '. is parsed as the number 0.0; taking the logical not gives 1
!.+!.  'Previous value added to itself
@Q||Q  '@Q is a label string and Q is a variable. For some reason, certain comparison/logical operations between strings and numbers return 3 rather than 1 or 0. 
4      '4
#TLIme 'Constant for the text color lime green, value is 5.
6      '6 (wildcard)
7      '7 (wildcard)
8      '8 (wildcard)
9      '9
&HA    'Hexadecimal A
11     '11 (one of them is a wildcard)
4*3    '4 multiplied by 3 (3 is wildcard)

Tôi cũng có thể sử dụng một biến thay vì .(biến bắt đầu từ 0) và biến chuỗi (như Q$) thay vì@Q

Ký tự được sử dụng: !!!#&*+...1449@AHILQQTem||

Ký tự đại diện được sử dụng: 67813

ký tự không sử dụng: !!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~

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.