In số bị mất


15

Là một fan hâm mộ lớn của loạt phim truyền hình Lost , tôi luôn bị thu hút bởi chuỗi các con số xuất hiện lặp đi lặp lại trên các tập phim. Những con số này là:

4,8,15,16,23,42 ( A104101 )

Sử dụng bất kỳ ngôn ngữ lập trình, viết mã xuất ra những con số này.

Ghi điểm:

  • Câu trả lời ngắn nhất sẽ thắng

  • Đầu ra không được chứa bất kỳ số hoặc chữ cái nào khác. Bạn có thể sử dụng bất kỳ ký tự nào khác làm dấu phân cách hoặc thậm chí không có dấu phân cách nào cả.

  • Bạn không thể tách các chữ số của cùng một số. là một câu trả lời hợp lệ, nhưng thì không.48_15162342481_5162342

  • Bạn phải tôn trọng trật tự.

  • Nếu mã của bạn không chứa bất kỳ số nào trong chuỗi, hãy giảm 30% số điểm của bạn. Quy tắc này không cho phép bạn nhập các chữ số riêng biệt. Ví dụ:

    abcde1fg5h
    

    Là một ứng cử viên hợp lệ vì câu trả lời không chứa số , chỉ có các chữ số của nó. Tuy nhiên, bất kỳ hoặc sẽ làm mất hiệu lực tiền thưởng.1548

  • Nếu mã hoàn toàn không chứa bất kỳ chữ số nào, hãy giảm 50% số điểm của bạn. Các nhân vật khác như , hoặc vẫn còn hiệu lực cho tiền thưởng này.¹²³


2
Liên quan, câu hỏi đóng: codegolf.stackexchange.com/q/23808/67312
Giuseppe

2
Mơ hồ liên quan: Bạn đã mất chưa?
Dennis

1
Chúng ta có phải in chúng theo thứ tự đó không?
Tít

6
Để tham khảo trong tương lai, chúng tôi có một restricted-sourcethẻ có thể đã được sử dụng ở đây: mặc dù hầu hết các câu trả lời đều tránh các giải pháp rõ ràng, tôi nghĩ rằng thách thức sẽ thú vị hơn một chút nếu sử dụng các chữ số bị cấm hoàn toàn.
Arnauld

Câu trả lời:


31

Mất , 29 27/2 = 13,5 byte

%?\>>>>>>>>>>
>>\"*"@"

Hãy thử trực tuyến! hoặc xác minh rằng nó mang tính quyết định

Có vẻ như đúng ngôn ngữ để sử dụng.

Giải trình:

Mất là một ngôn ngữ 2D trong đó con trỏ bắt đầu ở bất cứ đâu , đi theo bất kỳ hướng nào . Điều này thường dẫn đến nhiều kiểm tra kép rằng con trỏ chưa vào phần sớm.

...>>>>>>>>>>  These arrows filter all pointers that appear on the top line
.............  Or going vertically


%............  This flips the flag so that the program can end
.............  This stops premature termination

.?\..........  Clear the stack by skipping if a value popped from the stack is positive
.............  When the stack is empty, the \ directs the pointer down

.............  The \ directs the pointer right
..\"*"..  The string literal pushes all the Lost values to the stack

..\..........  The @ terminates the program if the % flag is switched
>>\........@.  Otherwise it clears the stack and repeats

.............  The quote here is to prevent the pointer getting stuck
............"  This happens when the pointer starts between the other quotes

11

Thạch , 7/2 = 3,5 byte

“ƲÞIȥ’Ḥ

In các số không có dấu phân cách, tức là số nguyên 4815162342 .

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

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

“ƲÞIȥ’là cơ sở bijective-250 số nguyên.
Ʋ, Þ, I, Và ȥcó (1-based) chỉ số 154 , 21 , 74 , và 171 trong trang mã Jelly, vì vậy họ mã hóa các số nguyên 2503154+250221+25074+171=2407581171 .

Cuối cùng, (unhalve) tăng gấp đôi số nguyên, năng suất 22407581171=4815162342 .

Nhân đôi là cần thiết, bởi vì mã hóa đầu ra trực tiếp dẫn đến “¡9)Ƙ[’, trong đó có chứa một chữ số.


9

Neim , 6 5 byte, 3 2,5 điểm

Jσς§A

Giải trình:

J     Push 48
 σ    Push 15
  ς   Push 16
   §  Push 23
    A Push 42
      Implicitly join the contents 
      of the stack together and print

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


6

05AB1E , điểm: 10 9 7 byte / 2 = 3,5

•‘o]Ê•·

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

Hoặc 7 byte thay thế :

•’µ[%•R

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

Cả hai xuất ra số nguyên 4815162342.

Giải trình:

•‘o]Ê•     # Compressed integer 2407581171
      ·    # Doubled

•’µ[%•     # Compressed integer 2432615184
      R    # Reversed

Xem 05AB1E mẹo này của tôi (phần Làm thế nào để nén các số nguyên lớn? ) Để hiểu tại sao •‘o]Ê•2407581171•’µ[%•2432615184.


Câu trả lời cũ 9 byte xuất ra danh sách [4,8,15,16,23,42]:

•ΓƒÇ²•т;в

-1 byte (và do đó -0,5 điểm) nhờ @Emigna .

Dài hơn câu trả lời 05AB1E khác , nhưng điều này xuất ra danh sách [4,8,15,16,23,42]thay vì số nguyên 4815162342.

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

Giải trình:

•ΓƒÇ²•       # Compressed integer 1301916192
      т;     # Integer 50 (100 halved)
        в    # Convert the first integer to Base-50 (arbitrary): [4,8,15,16,23,42]

Xem 05AB1E mẹo này của tôi (phần Làm thế nào để nén các số nguyên lớn?Làm thế nào để nén nguyên-danh sách? ) Để hiểu tại sao •ΓƒÇ²•1301916192, và •ΓƒÇ²•50в[4,8,15,16,23,42].


1
Bạn có thể có •ΓƒÇ²•т;вcho 4.5 như số hậu kịch bản là okay cho tiền thưởng.
Emigna

@Emigna À, đẹp quá! Cảm ơn.
Kevin Cruijssen

6

JavaScript (ES7), 34/2 = 17 byte

_=>eval(atob`NjUwNTgxMDErNDEqKjY`)

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

Điều này giải mã và đánh giá biểu thức "65058101+41**6", không chứa bất kỳ chữ số nào một khi được mã hóa trong cơ sở-64.

65058101+416= =65058101+4750104241= =4815162342


JavaScript (ES6), 13 byte

Chán giải pháp rõ ràng.

_=>4815162342

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


6

Python 3 , 25 byte, 12,5 điểm

print(*map(ord,'ዏٗ*'))

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

𩦦 (, ⿰ 馬 葬, 𧨦 (謚, ⿰ 言 ⿱⿵ 八一 皿 có giá 4 byte, nhưng U + 0657 chỉ tốn 2 byte ...


Python 3 , 29 byte, 14,5 điểm

print(ord('𩦦')*ord('湡'))

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

𩦦 (là ký tự biến thể của 髒 có nghĩa là "bẩn". Là tên của một dòng sông. Và họ không có gì liên quan đến câu hỏi này như tôi đã biết.


Tôi đã hỏi về các quy tắc phân tách và chúng ta có thể sử dụng bất kỳ phân tách riêng lẻ nào 4815 162342hợp lệ. Do đó print(*map(ord,'ዏ𧨦'))tiết kiệm 1,5 điểm :) ( print(*map(ord,'밗'))sẽ lưu 2 điểm nhưng đã được chỉ định là không hợp lệ).
Jonathan Allan


4

Java 8, điểm: 12 11,9 (70% của 17 byte)

v->767*6277917L+3

-0,1 điểm nhờ @RickHitchcock .

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

Giải trình:

v->               // Method with empty unused parameter and long return-type
  767             //  767
     *6277917L    //  multiplied by 6277917 (as long)
              +3  //  And then 3 is added

Câu trả lời cũ với số điểm là: 12 (50% của 24 byte):

v->(long)''*'Ⓥ'*'䧶'

Chứa một ký tự không thể in 0x1B .

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

Giải trình:

v->                   // Method with empty unused parameter and long return-type
  (long)              //  Cast the character (and therefore the result) to a long
        ''            //  27
           *'Ⓥ'       //  Multiplied by 9419
                *'䧶'  //  Multiplied by 18934

Trong Java, các ký tự có thể được tự động chuyển sang các số nguyên giữ giá trị unicode của chúng. Thật không may, unicode được hỗ trợ tối đa cho các ký tự là 65,535, vì vậy tôi không thể chỉ sử dụng hai ký tự để nhân (vì hai số lớn nhất chia cho số dự kiến 4,815,162,34256,80284,771, trong đó 84,771không may vượt quá mức tối đa 65,535.
Ngoài ra, vì kích thước tối đa của một intlà 32 2 -1 ( 2,147,483,647) và kết quả 4,815,162,342lớn hơn thế, cần phải có một diễn viên rõ ràng long, có thể chứa tới 64 2 -1 ( 9,223,372,036,854,775,807).


Câu trả lời nhàm chán sẽ là 14 byte mà không có bất kỳ phần thưởng nào:

v->4815162341L

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


1
Tôi thích cái này. Khá ngắn để trở thành Java :)
Emigna

@Emigna Cảm ơn. Thật tệ khi nó yêu cầu dàn diễn viên longvà không hỗ trợ các ký tự unicode rất lớn. Nếu không có hai hạn chế được đề cập, chỉ cần v->'𩦦'*'湡'(15 byte, điểm 7.5) là đủ. Nhưng nó vẫn rất ngắn. :) Mặc dù Java hầu hết có nhiều, nhưng nhiều điểm yếu về cách mã hóa (duhh ..), tính toán với các ký tự vì chúng tôi không được phép sử dụng các chữ số là một trong số ít điểm mạnh của nó. Cũng khá hữu ích trong câu trả lời khá giống này của tôi .
Kevin Cruijssen

1
11,9 byte: v->767*6277917L+3
Rick Hitchcock

3
@RickHitchcock Không phải ngày nào chúng ta cũng thấy tiết kiệm 0,1 byte. ;)
Arnauld

@RickHitchcock Cảm ơn! Và tôi đồng ý với nhận xét của Arnauld ở trên. : D
Kevin Cruijssen

4

R, 18x0,7 = 12,6 điểm

cat(9*2*267509019)

Khá tự giải thích, chỉ cần một số số học tránh các con số trong câu hỏi.


4

7 , 10 byte, 27 ký tự

115160723426754314105574033

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

Đại diện đóng gói của chương trình này trên đĩa là ( xxdđịnh dạng):

00000000: 269c 3a71 6f63 308b 7c0d                 &.:qoc0.|.

Giải trình

Chúng ta đã thấy dãy số này trước đây, trong Tự động cứu thế giới , đó là về việc in các số theo định kỳ, làm cho nó thú vị thông qua việc yêu cầu sử dụng một ngôn ngữ rất cũ. Mặc dù vậy, nhiều ngôn ngữ mới hơn có thể có các vòng xoắn riêng khiến thử thách này trở nên thú vị.(Vâng, đoạn này, và trên thực tế lý do tôi bắt đầu viết câu trả lời này, thực sự chỉ là một cách để có được tất cả các thử thách liên quan để hiển thị cùng nhau trong thanh bên; thông thường mọi người sử dụng nhận xét nhưng tôi không có đủ đại diện .)

Điều đầu tiên cần lưu ý là 7 được tạo hoàn toàn bằng các chữ số, do đó, phần thưởng ở đây khó có thể hoạt động (mặc dù nếu bạn xem chương trình như một chuỗi các octet, thì không có phần nào tương ứng với các đại diện ASCII của bất kỳ số nào trong số ban đầu , vì vậy bạn có thể yêu cầu tiền thưởng theo nghĩa đó). Điều tiếp theo cần lưu ý là 7 có các lệnh để tạo lại chuỗi lệnh có khả năng đã tạo ra một phần dữ liệu cụ thể; vì vậy chúng ta có thể giải thích các số bị mất4815162342 là một phần của chính chương trình 7 không?

Câu trả lời là "không hoàn toàn". Phần có vấn đề nhất là số thứ hai,8 . 7 chương trình được viết bằng bát phân; không có số nào là 8. Vì vậy, phần đầu của chuỗi sẽ phải được in khác nhau.

Do đó, cơ sở của chương trình dựa trên chương trình 7 "Hello world":

5431410557403
543141055          string literal
         7         separate data from code
          4        rearrange stack: {program's source}, empty element, {literal}
           0       escape {the literal}, appending it to {the empty element}
            3      output {the escaped literal}, pop {the program's source}

với nghĩa đen đã thoát trong một ngôn ngữ dành riêng cho tên miền được diễn giải như sau:

5                  output format: US-TTY using pairs of digits in the string
 43                select character set: digits and common symbols
   14              "4"
     10            "8"
       55          forget the set output format

Sau này xuất hiện thêm 3, xuất ra phần tử ngăn xếp còn lại (và thoát do không đủ ngăn xếp còn lại). Phần tử đó được chỉ định khi bắt đầu chương trình và để tránh trường hợp không khớp 6(hoạt động hơi giống với khung đóng), chúng tôi tạo nó bằng mã, thay vì viết trực tiếp dưới dạng dữ liệu. (Lưu ý rằng có hai 7ký tự ngụ ý khi bắt đầu chương trình, có liên quan ở đây):

{77}115160723426
 7                 empty stack element
  7 11516          append "1151"
         0         append "6"
          723246   append "2324"

Điều đó tạo ra nghĩa đen sau đây:

115162324
1                  set output format: literally as octal
 15162324          "15162324"

được in ra.


Cảm thấy kỳ lạ là bạn không có tiếng tăm, mặc dù đã đăng một số câu trả lời khá hay. Tôi đã đọc lý do của bạn đằng sau chỉ đăng câu trả lời của cộng đồng và tôi hoàn toàn ủng hộ bạn về điều đó, nhưng đôi khi nó phải gây khó chịu khi không thể nhận xét:(
Jo King

@JoKing: Vâng, nó đã truyền cảm hứng cho tôi để thực sự đăng một câu trả lời cho câu hỏi này, và hóa ra nó thú vị hơn nhiều so với tôi mong đợi. Vì vậy, tôi đoán đây là bằng chứng cho giả thuyết của tôi rằng nếu bạn không tìm kiếm danh tiếng, những đóng góp của bạn sẽ mang lại nhiều lợi ích cho trang web hơn là khác. (Trên thực tế, sự thất vọng lớn tôi có với bị mắc kẹt vĩnh viễn tại 11 danh tiếng là tôi không thể đề xuất chỉnh sửa trên Meta, có nghĩa là nếu tôi thấy thông tin sai lệch đó, tôi không có cách nào để sửa chữa nó.)
ais523


3

Nguồn hội MASM 8088, (93 byte - 50%) = 46,5 byte

Không sử dụng số hoặc chuỗi trong nguồn:

MOV AH,'P'-'G'
LEA DX,L
INT '!'
RET
T EQU '-'-'+'
L DW 'ph'/T,'jb'/T,'lb'/T,'fd'/T,'dh'/T,'$'

Đầu ra:

A>LOST.COM
4815162342

2

Than , 13 byte / 2 = 6,5

IETPIHA.⁻⁸⁸℅ι

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Hoạt động bằng cách trừ các mã ASCII của chuỗi TPIHA.từ 88 và truyền sang chuỗi.


2

Aheui (esotope) , 45 byte (15 ký tự) * 0,5 = 22,5 điểm

반밤밪박밭빠따받발따밣뱣히망어

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


Giải trình:

Cũng thấy điều này; Tài liệu tham khảo Aheui ( tiếng Anh )

Aheui program starts with default stack '아'(or none)

반: push 2, move cursor right by 1(→).
밤: push 4, →
밪: push 3, →
박: push 2, →
밭: push 4, →
빠: dup, →
따: pop 2, push mul result(16).
받: push 3, →
발: push 5, →
따: pop 2, push mul result(15).
밣: push 8, →
뱣: push 4, move cursor right by 2(→→).
히: end.
망: pop 1, print, → (if stack is empty, move cursor left by 1.)
어: move cursor left by 1(←).

Lưu ý rằng (lệnh in) di chuyển con trỏ theo hướng ngược lại nếu ngăn xếp (hoặc hàng đợi) trống.




1

JavaScript, 143 byte (không chắc cách ghi điểm)

(g=`${2*2}`)=>g.repeat(6).replace(/(.)/g,(m,p,i,k='')=>
  (k=m*[g-3,g-2,g,g,+g+2,g*3-1][i]
  ,RegExp(`${g-2}|${g}`).test(i)?k-1:i==+g+1?k-(g/2):k))

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

Bắt đầu với sáu 4, nhân, cộng, trừ, từ, 4đến để lấy đầu ra.


2
Ok, bạn đã cố gắng để nhận được tiền thưởng, nhưng với một mã kích thước này, nó đã không bù lại. Tại sao không chỉ đơn giản là '4815162342'?
Eduardo Hoefel

@EduardoHoefel Không thu thập hệ thống "điểm số" hoặc "tiền thưởng", đã không cố gắng để nhận được tiền thưởng, chỉ cố gắng không sử dụng bất kỳ số nào được yêu cầu ở đầu ra. Mã này xuất ra các số mà không mã hóa bất kỳ số nào. Số 4, với phép cộng, phép trừ, phép nhân và chỉ số của số 4trong một chuỗi (hoặc mảng) có thể được sử dụng để lấy các số cần thiết.
khách271314

Điểm của bạn là 143*0.7=100.1
Jo King

1

PHP, 35/2 = 17,5

<?=zzzzzzzzzzzzzzz^NVBVKOVKLVHIVNH;

một cách tiếp cận kỹ thuật số: 40 * .7 = 28

<?=2+2,_,5+3,_,17-2,_,17-1,_,17+6,_,7*6;

không có chữ số, không có chuỗi: 68/2 = 34

<?=$p++,!$p++,$p+=$p,_,$p+=$p,_,~-$q=$p+$p,_,$q,_,--$p+$q,_,$p*~-$p;

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


1
Hoặc chỉ 14 byte cho<?=4815162342;
Jo King

1
OP hasntet đã trả lời cho thời tiết chúng ta có thể bỏ qua các dấu phân cách hay không; nhưng vâng. Tại sao không chỉ 10 byte : 4815162342. Hoặc <?=~+ 10 không thể in -> 15/2 = 7.5
Tít

1

JavaScript (SpiderMonkey), 67 byte / 2 = 33,5 60 byte / 2 = 30 58 byte / 2 = 29 48 byte / 2 = 24

-7 byte / 3.5 , -2 byte / 1 phép lịch sự của @JoKing, -10 byte / 5 phép lịch sự của @tsh

print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)

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


1
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
tsh

2
Hoặc chỉ print(4815162342)cho 17 byte
Jo King



1

Khoảng trắng , điểm: 49 41 byte / 2 = 20,5

[S S S T    S S S T T   T   T   T   S S S S S S S T T   S S S T S T T   T   T   T   S S T   T   S N
_Push_4815162342][T N
S T _Print_number]

Chữ cái S(dấu cách), T(tab) và N(dòng mới) được thêm vào dưới dạng chỉ tô sáng.
[..._some_action]chỉ thêm vào giải thích.

Hãy thử trực tuyến (chỉ với không gian thô, tab và dòng mới).

Mã giả:

Integer i = 4815162342
Print i as number to STDOUT

Giải trình:

Trong khoảng trắng, một số được đẩy như sau:

  • S: Kích hoạt thao tác ngăn xếp
  • S: Đẩy số
  • S/ T: Tích cực / tiêu cực tương ứng
  • Một số T/ Stheo sau là một Nsố thập phân: nhị phân là nhị phân, trong đó Tlà 1 và Slà 0

Sau đó, nó được in đơn giản với TNST:

  • TN: Kích hoạt I / O
  • S: Xuất đỉnh của ngăn xếp
  • T: Như số

Là chỉ đẩy số lượng bản thân lâu hơn so với việc có thêm số nhân và đẩy số nguyên?
Jo King

@JoKing Tôi thường sử dụng trình biên dịch Whitespace trực tuyến vii5ard , vì nó có tô sáng và hiển thị các lệnh ở bên trái. Nhưng rõ ràng nó hoạt động tương tự như các số nguyên Java ở chỗ tối đa là 32 bit và nó bao bọc xung quanh âm ở trên .. Vì vậy, con số quá lớn để được đẩy trong một lần. Khi tôi đẩy số trong TIO, nó vẫn hoạt động tốt, bây giờ tôi nhận ra.
Kevin Cruijssen

1

F #, 45 byte = 22,5 điểm

Chỉ là một forvòng lặp chạy mà in các chữ số:

for c in"DHOPWj"do printf"%d"(int c-int '@')

Trên đây là một chương trình hoàn chỉnh có thể được biên dịch thành một tệp thực thi.

Trong REPL (vòng lặp đọc-in), ví dụ: FSI (F # Interactive), phiên bản ngắn hơn sau sẽ hoạt động, vì REPL sẽ xuất ra một biểu diễn của biểu thức được ước tính; nó có 35 byte = 17,5 điểm:

[for c in"DHOPWj"->int c-int '@'];;

1

Pyke , 3 điểm

77 91 f8 86 98 06

Hãy thử nó ở đây!

Các tín hiệu byte đầu tiên để đọc trong cơ sở 128 cho đến khi một byte không có bit cao được đặt.

Cuối cùng, 32 được trừ vào kết quả (vì lý do lịch sử).

Điều này cho phép tạo ra số lượng lớn trong không gian rất nhỏ


1

MathGolf , 7 byte * 0,5 = 3,5

ÿ≤┼ÇÅ$∞

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

Giải trình

Lưu ý rằng mã này chưa hoạt động trên TIO. Tôi đã thực hiện một số thay đổi để MathGolf thời gian gần đây, bao gồm thêm các $nhà điều hành. Khi nó được kéo vào TIO, bạn có thể chạy nó ở đó, sau đó tôi sẽ cập nhật câu trả lời này. Nó chạy hoàn hảo trong thiết bị đầu cuối

ÿ≤┼ÇÅ     Push "≤┼ÇÅ"
     $    pop(a), push ord(a) (pushes 2407581171)
      ∞   pop a, push 2*a

Tôi sử dụng thực tế là MathGolf có các ký tự 1 byte để tạo các chuỗi có độ dài lên đến 4. Nếu tôi muốn chuyển đổi toàn bộ số từ chuỗi cơ sở 256, tôi cần phải sử dụng hai "chuỗi và chuỗi sẽ là 5 nhân vật. Bằng cách này, tôi tiết kiệm được 2 byte, nhưng cuối cùng tôi mất một byte bằng cách có toán tử nhân đôi.





1

Befunge-98 (FBBI) , 15 byte / 2 = 7,5 điểm

"*H/!k-"*.*+..@

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

Giải trình:

Đầu tiên, đẩy các giá trị ASCII của các ký tự '* + H /! K- (42, 72, 47, 33, 107, 45) theo thứ tự này vào ngăn xếp. Sau đó tính toán4815= =451071623= =3347+72và đầu ra.


1

Bùa mê , 15/2 = 7.5

\>`*`
Rn$!;

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

Đơn giản chỉ cần mã hóa các giá trị trong càng ít byte càng tốt. 42, 16, 15, 8, Và 4, cưỡng ép họ giá trị số, và in chúng theo thứ tự ngược lại. 4 8 15 16 42không có bất kỳ khoảng trắng nào, như 48151642là một định dạng đầu ra chấp nhận được.

48không thể được kết hợp ( 48) vì đó là một số 0và không được phép sử dụng. Có thể kết hợp 15, 16 và 42 thành 2 ký tự (thay vì 3) ʂvới chi phí là 1 byte, không đáng.

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.