Mã hóa một chương trình với ít ký tự riêng biệt nhất có thể,


12

Mục tiêu là viết một chương trình mã hóa một chương trình khác (đầu vào) với ít ký tự nhất có thể.

Chấm điểm

  • Điểm số bằng với số lượng ký tự khác nhau cần thiết cho đầu ra.
  • Điểm thấp hơn là tốt hơn.

Quy tắc

  • Không có ngôn ngữ đích với một bộ lệnh giới hạn. (Không BrainF ** k, Khoảng trắng vv)
    Chỉnh sửa : Tôi có nghĩa là ít nhất 26 ký tự có ý nghĩa, Akhông thay đổi cách BrainF ** chương trình k hoạt động, vì vậy bạn không thể đếm nhân vật này. Áp dụng tương tự cho khoảng trắng.
  • Ngôn ngữ đích phải tồn tại tại thời điểm câu hỏi này được viết.
  • Bạn phải bao gồm một lời giải thích nhỏ về cách bạn lưu trữ điểm số của bạn.
  • Chương trình đầu vào là hợp lệ.
  • Chương trình được mã hóa phải là một chương trình hợp lệ trong cùng ngôn ngữ với đầu vào.
  • Chương trình được mã hóa phải thực hiện công việc giống như chương trình gốc.
  • Bộ mã hóa của bạn phải hoạt động cho mọi chương trình hợp lệ bằng ngôn ngữ đó.
  • Bao gồm một số mẫu đầu vào và đầu ra.

Ghi chú

  • Bộ mã hóa có thể được viết bằng bất kỳ ngôn ngữ nào, không chỉ bằng ngôn ngữ mà nó nhắm tới.
  • Đây không phải là , các chương trình dễ đọc được khuyến khích.
  • Mục tiêu lớn là để xem có bao nhiêu nhân vật khác nhau cần thiết để viết bất cứ điều gì bằng ngôn ngữ đó. Tôi không cho phép BF, vì sẽ không có thách thức.
  • Điều này được lấy cảm hứng từ In một chuỗi trong càng ít ký tự riêng biệt càng tốt , bạn có thể lấy nó làm cho câu hỏi đó.

Thí dụ

Trong Java, bạn có thể sử dụng \uXXXXthay vì các ký tự khác. Một mục hợp lệ mã hóa mọi ký tự từ đầu vào theo cách này. Điều này sẽ có điểm 18. ( \ 0-9a-f)

Mã trong Tcl, mã hóa chương trình Java:

set res {}
foreach char [split [read stdin] {}] {
    append res [format \\u%04x [scan $char %c]]
}
puts $res

xin lỗi vì đã bỏ phiếu để đóng ... nghĩ rằng đây là bản sao của codegolf.stackexchange.com/questions/6974 nhưng đó là một con trăn cụ thể.
gian hàng

2
Với điểm số Java và bộ mã hóa của bạn: Tôi không nói nhiều Tcl, nhưng không getsđọc một dòng đầu vào duy nhất? Và bạn đã bỏ lỡ ubộ mã hóa của mình (nhưng mặt khác, bạn không cần dung lượng và do đó điểm số vẫn giữ nguyên).
Howard

7
Không phải tất cả các ngôn ngữ lập trình đều có một "bộ lệnh giới hạn"? Bạn ve con đương nay ở đâu vậy?
jpjacobs

4
Tôi đang bỏ phiếu để đóng cái này vì nó có một điều kiện chiến thắng bị phá vỡ được vá bởi một lệnh cấm rất không rõ ràng đối với các ngôn ngữ. Nếu Unary không bị cấm, nó sẽ bị điểm 1. Nếu brainfuck không bị cấm, nó sẽ bị điểm 7 (lưu ý rằng ngôn ngữ tự nhiên có 8 lệnh + 248 ký tự nhận xét). Vì vậy, ranh giới giữa tự nhiên có quá ít lệnh và có đủ hợp pháp.

1
Ngay cả các ngôn ngữ như Python cũng có một bộ lệnh giới hạn. Bạn không thể "tạo một cái mới", bạn chỉ cần tạo một chức năng mới hoặc một cái gì đó, nhưng các từ dành riêng vẫn giữ nguyên. Định nghĩa của "lệnh" không rõ ràng. Câu hỏi có thể có thể được sửa bằng cách không giới hạn các ngôn ngữ (chỉ không đưa ra các câu trả lời tầm thường) và yêu cầu bộ ký tự được sử dụng phải là tập hợp con của các ngôn ngữ.
mbomb007

Câu trả lời:


10

GolfScript / GolfScript, điểm 4

"'',,"\{"'"\","*"',+"}%"''+~"

Bản thân bộ mã hóa là một chương trình GolfScript lấy mã gốc trên STDIN và biến nó thành một chuỗi các ký tự ',+~. Bản thân đầu ra này là mã GolfScript hợp lệ, thực hiện các hoạt động tương tự như phiên bản gốc.

Phương thức cơ bản bao gồm mã hóa mã dưới dạng chuỗi (sử dụng ký tự ',+, xem bên dưới) và sau đó đánh giá chuỗi này bằng lệnh eval~ .

Nếu một chuỗi nối bất kỳ chuỗi nào cùng với một mảng số trong GolfScript, các số đó được chuyển đổi thành các điểm mã và kết quả là chính chuỗi đó. Do đó, mã hóa chuỗi chỉ đơn giản là xây dựng một danh sách các số (từ các điểm mã của mã đầu vào) và sau đó nối tất cả các số có một chuỗi rỗng.

Thí dụ:

Mã đầu vào

"hi"
p

được dịch thành (lưu ý: ngắt dòng và thêm ý kiến ​​để dễ đọc)

# initialize an empty array []
'',,

# append number 34 (length of string ',,, ... ,,,')
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+

# ... other numbers
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+
',,,,,,,,,,',+
',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',+

# result is array [34 104 105 34 10 112]

# append empt string, i.e. convert array to string (results in "\"hi\"\np")
''+

# evaluate
~

11

Python -> Python, 8 ký tự riêng biệt

def minimal_python(input_code):
    """Convert Python code to minimal Python code."""

    # Create a list of the ordinal numbers of <input_code>'s characters.
    # '%' signs have to be treated specially and are represented with -1.
    ords = []
    num_escaped_chars = 0
    for char in input_code:
        if char == '%':
            ords.append(-1)
        else:
            ords.append(ord(char))
            num_escaped_chars += 1

    modulo_sign_escape = '%' * 2**num_escaped_chars
    def formatters():
        num_escaped_chars_so_far = 0
        for o in ords:
            if o == -1:
                yield modulo_sign_escape
            else:
                yield '%' * 2**num_escaped_chars_so_far + 'c'
                num_escaped_chars_so_far += 1
    format_str = "'" + ''.join(formatters()) + "'"

    values_str = ''.join('%' + '-~'*o + '0' for o in ords if o != -1)

    return 'exec' + format_str + values_str

Điều này sử dụng định dạng modulo để xây dựng lại chuỗi đầu vào. Ví dụ: print 1kết quả trong chương trình này:

exec'%c%%c%%%%c%%%%%%%%c%%%%%%%%%%%%%%%%c%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c'%-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0%-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~0

Về lý thuyết, bạn có thể mã hóa bất kỳ chương trình nào như thế này, nhưng chương trình kết quả sẽ luôn có nhiều hơn 2 n ký tự, trong đó n là số ký tự trong đầu vào, không bao gồm %các ký hiệu.


Giới hạn dưới của chương trình kết quả là các 2**n+3*n-1 + 6ký tự, bao gồm tất cả các ký tự đầu vào (nếu bạn giả sử mỗi ký tự là một byte NUL). Điều này được lấy từ OEIS A132074 , cộng với 6 cho exec''. Nếu bạn giả sử các ký tự phải có thể in ASCII, thì giới hạn dưới cao hơn. repl.it/EHEN
mbomb007

6

CJam -> CJam, điểm: 3

CJam mới hơn câu hỏi nên không đủ điều kiện để giành chiến thắng.

q{[{_'(>{'(-')*''\+}{is'c+T}?}%{"+"T}*'~]}:T~

Nó sử dụng ')~. ')là nhân vật ), và mỗi lần )tăng thêm nó thêm một. ~có thể đánh giá một ký tự hoặc một chuỗi. Chương trình hoàn chỉnh được đánh giá sau khi ghép tất cả các ký tự bằng cách đánh giá +. Và một số nguyên của giá trị ký tự và thao tác số-ký tự được ước tính cho mỗi ký tự nhỏ hơn) .

Ví dụ

XX{_2$+}I*]N*

được dịch thành:

'))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))')))~')))))))))))'))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))')))~'))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))))))))))))))))))))))))))))))')))~'))')))~~

q{[{_'(>{'(-')*''\+}{is'c+T}?}%{"+"T}*'~]}:T~

được dịch thành:

')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))'))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))'))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')')))~'))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))')))~'))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))')))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))'))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~')))')))~')))))))))))'))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))')))~')))))))))))')))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~')))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))')))~')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))))))))))')))~'))))))))))))))))))))))))))))))))))))))))))))')))~'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))~~

4

APL (điểm: 10)

'⍎⎕AV[',(⊃,/{'(⍴',(⍵/'⍬'),')'}¨⎕AV⍳⍞),']'

Các ký tự được sử dụng trong mã hóa: ⍎⎕AV[(⍴⍬)]

Chương trình APL để mã hóa phải tự giới hạn bộ ký tự APL và không sử dụng bất kỳ Unicode bổ sung nào.

Mã hóa cho chương trình 42(đưa ra câu trả lời cho Cuộc sống, Vũ trụ và Mọi thứ):

⍎⎕AV[(⍴⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬)(⍴⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬⍬)]

Cách thức hoạt động: là danh sách trống, ⍬⍬⍬⍬do đó là danh sách bốn danh sách trống, ⍴⍬⍬⍬⍬là độ dài của danh sách bốn danh sách trống, là bốn danh sách. Dyadic được định hình lại, do đó, các hướng dẫn về độ dài của danh sách phải được gói trong ngoặc đơn, đưa ra mã hóa cuối cùng của ký tự số bốn như (⍴⍬⍬⍬⍬).

Các số này sau đó được tra cứu trong ⎕AVđó là bộ ký tự và thực hiện chuỗi kết quả.

(Thoạt nhìn, có vẻ như điểm số có thể được đưa lên 9 bằng cách sử dụng ⎕UCSthay vì ⎕AVvà lưu [], nhưng điều đó không hiệu quả, bởi vì đó (⍴⍬)(⍴⍬) là danh sách các danh sách vô hướng, tức là [[1], [1]]thay vì [1, 1]yêu cầu, và làm việc xung quanh đó sẽ yêu cầu xen kẽ các giá trị được mã hóa bằng dấu phẩy, đưa điểm số trở lại lên 10.)


2

RProgN , 7 ký tự riêng biệt, không biên dịch

RProgN mới hơn câu hỏi này.

' do.Lc

Chuyển đổi chương trình sang 'oooo...' L c 'ooooo...' L c 'oo...' L c . . . do , trong đó mỗi 'oo ...' đại diện cho mã ký tự trong o, được bao quanh bởi các dấu nháy đơn để tạo ra một chuỗi từ chúng. L c sau đó biến chúng thành một số không đổi. Sau khi tất cả các chuỗi được đặt trên ngăn xếp, một chuỗi. Bằng với số lượng ký tự trong chuỗi được mã hóa trừ đi một chuỗi xây dựng lại chuỗi được mã hóa và thực hiện chuỗi đó.

Bộ mã hóa, cũng được viết bằng RProgN.

'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' L c 'ooooooooooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooo' L c 'oooooooooooooooooooooooooooooooooooooooooooooo' L c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . do

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


1

Ruby -> Ruby, 8

#Convert a number from 0 to 255 to the form "111+11+11+1+1+1"
def byte_to_ones(byte)
  output = []
  ones = [111,11,1]
  ones.each do |one|
    while byte>=one
      byte-=one
      output<<one
    end
  end
  output.join('+')
end

bytes = $<.each_byte.map { |byte| byte_to_ones(byte) }

puts "eval''<<#{bytes.join('<<')}"

Mẫu vật:

puts "Hello, world!" => eval''<<111+1<<111+1+1+1+1+1+1<<111+1+1+1+1+1<<111+1+1+1+1<<11+11+1+1+1+1+1+1+1+1+1+1<<11+11+11+1<<11+11+11+11+11+11+1+1+1+1+1+1<<11+11+11+11+11+11+11+11+11+1+1<<11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1<<11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1<<111<<11+11+11+11<<11+11+1+1+1+1+1+1+1+1+1+1<<111+1+1+1+1+1+1+1+1<<111<<111+1+1+1<<11+11+11+11+11+11+11+11+11+1+1+1+1+1+1+1+1+1<<11+11+11+11+11+11+11+11+11+1<<11+11+11<<11+11+11+1<<1+1+1+1+1+1+1+1+1+1

Triển khai giải pháp Ruby được đưa ra trong vấn đề được liên kết và thay thế I / O bằng eval.


Nó đã được liên kết trong cơ thể câu hỏi; Tôi đã không sử dụng bình luận của bạn. Nó không tầm thường đối với các câu trả lời từ đó vì bạn cần phải thiết kế ngược lại.
lịch sử

1
Tôi đã bỏ lỡ tài liệu tham khảo cho câu hỏi đó trong cơ thể câu hỏi. Tôi vẫn không nghĩ sẽ rất thú vị khi chỉ chuyển đổi câu trả lời từ nó, nhưng tôi rút lại nhận xét trước đó bằng lời xin lỗi.
Peter Taylor
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.