Menyandikan sebuah program dengan karakter berbeda sesedikit mungkin,


12

Tujuannya adalah untuk menulis program yang mengkodekan program lain (input) dengan karakter sesedikit mungkin.

Mencetak gol

  • Skor sama dengan jumlah karakter yang dibutuhkan untuk output.
  • Skor yang lebih rendah lebih baik.

Aturan

  • Tidak ada bahasa target dengan serangkaian perintah terbatas. (Tanpa Brainf ** k, Spasi dll.)
    Edit : Maksud saya setidaknya 26 karakter signifikan, Atidak mengubah cara program Brainf ** k beroperasi, jadi Anda tidak dapat menghitung karakter ini. Hal yang sama berlaku untuk spasi putih.
  • Bahasa target harus ada pada saat pertanyaan ini ditulis.
  • Anda harus memasukkan sedikit penjelasan bagaimana Anda mengarsip skor Anda.
  • Program input valid.
  • Program yang disandikan harus merupakan program yang valid dalam bahasa yang sama dengan input.
  • Program yang disandikan harus melakukan pekerjaan yang sama dengan program aslinya.
  • Encoder Anda harus bekerja untuk setiap program yang valid dalam bahasa itu.
  • Sertakan beberapa sampel input dan output.

Catatan

  • Encoder dapat ditulis dalam bahasa apa pun, tidak hanya dalam bahasa yang ditargetkan.
  • Ini bukan , program yang mudah dibaca dianjurkan.
  • Tujuan besarnya adalah untuk melihat berapa banyak karakter berbeda yang diperlukan untuk menulis apa pun dalam bahasa itu. Saya melarang BF dll karena tidak akan ada tantangan.
  • Ini terinspirasi oleh Mencetak string dalam karakter yang sesedikit mungkin , Anda bisa menganggapnya sebagai untuk pertanyaan itu.

Contoh

Di Jawa, Anda bisa menggunakan \uXXXXkarakter lain sebagai gantinya. Entri yang valid mengkodekan setiap karakter dari input dengan cara ini. Ini akan memiliki skor 18. ( \ 0-9a-f)

Kode dalam Tcl, mengkodekan program Java:

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

maaf untuk pemungutan suara untuk menutup ... mengira ini adalah duplikat dari codegolf.stackexchange.com/questions/6974 tapi itu python-spesifik.
stan

2
Dengan skor Java dan pembuat enkode Anda: Saya tidak banyak berbicara Tcl, tetapi tidak hanya getsmembaca satu baris input saja? Dan Anda melewatkan uencoder Anda (tetapi di sisi lain Anda tidak membutuhkan ruang dan skornya tetap sama).
Howard

7
Bukankah semua bahasa pemrograman memiliki "seperangkat perintah terbatas"? Di mana Anda menggambar garis?
jpjacobs

4
Saya memilih untuk menutup ini karena kondisi kemenangannya rusak ditambal oleh larangan bahasa yang sangat tidak jelas. Jika Unary tidak di-banned, maka akan mendapat skor 1. Jika brainfuck tidak di-banned, itu akan menghasilkan skor 7 (perhatikan bahwa bahasa itu sendiri secara alami memiliki 8 perintah + 248 karakter komentar). Jadi di mana garis antara secara alami memiliki terlalu sedikit perintah, dan memiliki cukup untuk menjadi sah.

1
Bahkan bahasa seperti Python memiliki seperangkat perintah terbatas. Anda tidak dapat "membuat yang baru", Anda cukup membuat fungsi baru atau sesuatu, tetapi kata-kata yang disimpan tetap sama. Definisi "perintah" tidak jelas. Pertanyaannya mungkin bisa diperbaiki dengan tidak membatasi bahasa (hanya saja jangan mengunggulkan jawaban sepele), dan mengharuskan set karakter yang digunakan harus merupakan himpunan bagian yang tepat dari mereka yang ada dalam bahasa.
mbomb007

Jawaban:


10

GolfScript / GolfScript, skor 4

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

Encoder itu sendiri adalah program GolfScript yang mengambil kode asli pada STDIN dan mengubahnya menjadi urutan karakter ',+~. Output ini sendiri adalah kode GolfScript yang valid yang melakukan operasi yang sama dengan versi aslinya.

Metode dasar terdiri dari pengkodean kode sebagai string (menggunakan karakter ',+, lihat di bawah) dan kemudian mengevaluasi string ini menggunakan perintah eval ~.

Jika seseorang menggabungkan string apa pun bersama-sama dengan array angka dalam GolfScript angka-angka tersebut dikonversi ke titik kode dan hasilnya adalah string itu sendiri. Dengan demikian pengkodean string hanya membangun daftar angka (dari titik kode dari kode input) dan kemudian menyatukan semua itu dengan string kosong.

Contoh:

Kode input

"hi"
p

diterjemahkan ke dalam (catatan: jeda baris dan komentar ditambahkan untuk dibaca)

# 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 karakter berbeda

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

Ini menggunakan pemformatan modulo untuk membangun kembali string input. Misalnya, print 1hasil dalam program ini:

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

Secara teori Anda dapat menyandikan program apa pun seperti ini, tetapi program yang dihasilkan akan selalu memiliki lebih dari 2 n karakter, di mana n adalah jumlah karakter dalam input, tidak termasuk %simbol.


Batas bawah dari program yang dihasilkan adalah 2**n+3*n-1 + 6karakter, termasuk semua karakter input (jika Anda menganggap setiap karakter adalah byte NUL). Ini diambil dari OEIS A132074 , ditambah 6 untuk exec''. Jika Anda menganggap karakter harus dapat dicetak ASCII, maka batas bawah lebih tinggi. repl.it/EHEN
mbomb007

6

CJam -> CJam, skor: 3

CJam lebih baru dari pertanyaan sehingga tidak memenuhi syarat untuk menang.

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

Itu menggunakan ')~. ')adalah karakter ), dan masing-masing )menambahnya satu per satu. ~dapat mengevaluasi karakter atau string. Program lengkap dievaluasi setelah menggabungkan semua karakter dengan mengevaluasi +. Dan integer dari nilai karakter dan operasi angka-ke-karakter dievaluasi untuk setiap karakter kurang dari ).

Contohnya

XX{_2$+}I*]N*

diterjemahkan ke dalam:

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

dan

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

diterjemahkan ke dalam:

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

4

APL (skor: 10)

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

Karakter yang digunakan dalam penyandian: ⍎⎕AV[(⍴⍬)]

Program APL untuk menyandikan harus membatasi dirinya sendiri ke rangkaian aplikasi APL dan tidak menggunakan Unicode tambahan.

Pengkodean untuk program 42(yang menghasilkan jawaban untuk Life, the Universe, and Everything):

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

Cara kerjanya: adalah daftar kosong, ⍬⍬⍬⍬oleh karena itu daftar empat daftar kosong, ⍴⍬⍬⍬⍬adalah panjang daftar empat daftar kosong, yaitu empat. Dyadic adalah membentuk kembali, sehingga instruksi panjang daftar harus dibungkus dalam tanda kurung, memberikan pengkodean akhir karakter nomor empat sebagai (⍴⍬⍬⍬⍬).

Angka-angka ini kemudian dicari di ⎕AVmana set karakter, dan mengeksekusi string yang dihasilkan.

(Pada pandangan pertama sepertinya skor bisa dibawa ke 9 dengan menggunakan ⎕UCSalih-alih ⎕AVdan menabung [], tetapi itu tidak berhasil, karena (⍴⍬)(⍴⍬) merupakan daftar daftar skalar, yaitu [[1], [1]]alih-alih [1, 1]yang akan diperlukan, dan mengatasinya akan membutuhkan interspersing nilai-nilai yang dikodekan dengan koma, membawa skor kembali ke 10.)


2

RProgN , 7 Karakter Berbeda, Tidak Bersaing

RProgN lebih baru dari pertanyaan ini.

' do.Lc

Konversikan program ke 'oooo...' L c 'ooooo...' L c 'oo...' L c . . . do, di mana masing-masing 'oo ...' mewakili kode karakter di dalam, dikelilingi oleh kemurtadan untuk membuat string dari mereka. Lc kemudian mengubahnya menjadi konstanta angka. Setelah semua string ditempatkan pada stack, rantai .'s sama dengan jumlah karakter dalam string yang dikodekan dikurangi satu membangun kembali string yang dikodekan, dan lakukan mengeksekusinya.

Encoder, juga ditulis dalam 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

Cobalah online!


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('<<')}"

Sampel:

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

Menerapkan solusi Ruby yang diberikan dalam masalah yang ditautkan dan menggantikan I / O dengan eval.


Itu sudah ditautkan di badan pertanyaan; Saya tidak menggunakan komentar Anda. Bukan hal yang sepele untuk mengirim jawaban dari sana karena Anda perlu merekayasa baliknya.
histokrat

1
Saya melewatkan referensi untuk pertanyaan itu di badan pertanyaan. Saya masih merasa tidak menarik untuk mengubah jawaban darinya, tetapi saya menarik komentar saya sebelumnya dengan permintaan maaf.
Peter Taylor
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.