เข้ารหัสโปรแกรมที่มีตัวอักขระต่างกันน้อยที่สุดเท่าที่จะเป็นไปได้


12

เป้าหมายคือการเขียนโปรแกรมที่เข้ารหัสโปรแกรมอื่น (อินพุต) ด้วยอักขระที่น้อยที่สุดเท่าที่จะเป็นไปได้

เกณฑ์การให้คะแนน

  • คะแนนเท่ากับจำนวนอักขระที่ต้องการสำหรับเอาต์พุต
  • คะแนนต่ำกว่าดีกว่า

กฎระเบียบ

  • ไม่มีภาษาเป้าหมายที่มีชุดคำสั่งที่ จำกัด (ไม่มี Brainf ** k, Whitespace และอื่น ๆ )
    แก้ไข : ฉันหมายถึงอักขระที่สำคัญอย่างน้อย 26 ตัวAไม่เปลี่ยนวิธีการทำงานของโปรแกรม brainf ** k ดังนั้นคุณจึงไม่สามารถนับตัวละครนี้ได้ เช่นเดียวกับช่องว่าง
  • ต้องมีภาษาเป้าหมายในเวลาที่เขียนคำถามนี้
  • คุณต้องรวมคำอธิบายเล็ก ๆ น้อย ๆ ว่าคุณเก็บคะแนนของคุณอย่างไร
  • โปรแกรมอินพุตถูกต้อง
  • โปรแกรมที่เข้ารหัสต้องเป็นโปรแกรมที่ถูกต้องในภาษาเดียวกันกับอินพุต
  • โปรแกรมที่เข้ารหัสต้องทำงานเช่นเดียวกับโปรแกรมต้นฉบับ
  • โปรแกรมเปลี่ยนไฟล์ของคุณต้องใช้งานได้กับทุกโปรแกรมที่ใช้งานได้ในภาษานั้น ๆ
  • รวมตัวอย่างอินพุตและเอาต์พุตตัวอย่าง

หมายเหตุ

  • โปรแกรมเปลี่ยนไฟล์อาจเขียนเป็นภาษาใดก็ได้ไม่เพียง แต่เป็นภาษาเป้าหมายเท่านั้น
  • นี่ไม่ใช่โปรแกรมอ่านได้รับการสนับสนุน
  • เป้าหมายที่ยิ่งใหญ่คือการดูว่าจำเป็นต้องใช้อักขระจำนวนเท่าใดในการเขียนสิ่งใด ๆ ในภาษานั้น ฉันไม่อนุญาตให้ BF ฯลฯ เพราะจะไม่มีการท้าทาย
  • สิ่งนี้ได้รับแรงบันดาลใจจากการพิมพ์สตริงในตัวละครที่แตกต่างกันน้อยที่สุดเท่าที่จะเป็นไปได้คุณสามารถใช้มันเป็นสำหรับคำถามนั้น

ตัวอย่าง

ใน Java คุณสามารถใช้\uXXXXอักขระอื่นแทน รายการที่ถูกต้องเข้ารหัสอักขระทุกตัวจากอินพุตด้วยวิธีนี้ สิ่งนี้จะมีคะแนน 18 ( \ 0-9a-f)

รหัสใน Tcl เข้ารหัสโปรแกรม Java:

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

ขออภัยที่ปิดการลงคะแนน ... คิดว่านี่เป็นสิ่งที่ซ้ำกันของcodegolf.stackexchange.com/questions/6974แต่เฉพาะงูเหลือมเท่านั้น
บูธ

2
ด้วยคะแนน Java และเอนโค้ดเดอร์ของคุณ: ฉันไม่พูด Tcl มากนัก แต่ไม่ได้getsอ่านอินพุตเพียงบรรทัดเดียว และคุณพลาดการuเข้ารหัสของคุณ (แต่ในอีกทางหนึ่งคุณไม่ต้องการช่องว่างและคะแนนก็ยังคงเท่าเดิม)
Howard

7
ภาษาการเขียนโปรแกรมทั้งหมดไม่มี "ชุดคำสั่งที่ จำกัด " ใช่หรือไม่ คุณวาดเส้นที่ไหน
jpjacobs

4
ฉันลงคะแนนให้ปิดสิ่งนี้เพราะมันมีเงื่อนไขแห่งชัยชนะที่ขาดหายไปโดยการห้ามใช้ภาษาที่ไม่ชัดเจน ถ้า Unary ไม่ได้ถูกแบนมันจะให้คะแนน 1 ถ้า brainfuck ไม่ถูกห้ามมันจะให้คะแนน 7 (โปรดทราบว่าภาษานั้นมี 8 คำสั่ง + 248 ตัวอักษรแสดงความคิดเห็น) ดังนั้นเส้นแบ่งระหว่างการมีคำสั่งน้อยเกินไปและมีเพียงพอที่จะถูกต้องตามกฎหมาย

1
แม้แต่ภาษาอย่าง Python ก็มีชุดคำสั่งที่ จำกัด คุณไม่สามารถ "สร้างใหม่" คุณเพียงแค่สร้างฟังก์ชั่นใหม่หรืออะไรบางอย่าง แต่คำที่สงวนไว้ยังคงเหมือนเดิม คำจำกัดความของ "คำสั่ง" ไม่ชัดเจน คำถามอาจสามารถแก้ไขได้โดยไม่ จำกัด ภาษา (เพียงไม่ตอบคำถามเล็กน้อย) และกำหนดให้ชุดอักขระที่ใช้ต้องเป็นเซตย่อยที่เหมาะสมของภาษาเหล่านั้น
mbomb007

คำตอบ:


10

GolfScript / GolfScript คะแนน 4

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

การเข้ารหัสตัวเองเป็นโปรแกรม GolfScript ซึ่งใช้รหัสเดิมบน STDIN ',+~และแปลงมันเป็นลำดับของตัวอักษร ผลลัพธ์นี้เองเป็นรหัส GolfScript ที่ถูกต้องซึ่งดำเนินการเช่นเดียวกับรุ่นเดิม

วิธีการขั้นพื้นฐานประกอบด้วยการเข้ารหัสของรหัสเป็นสตริง (โดยใช้ตัวอักษร',+ดูด้านล่าง) ~แล้วประเมินสายนี้โดยใช้คำสั่ง

หากมีการเชื่อมสตริงเข้าด้วยกันกับอาเรย์ของตัวเลขใน GolfScript ตัวเลขจะถูกแปลงเป็นจุดโค้ดและผลลัพธ์จะเป็นสตริงเอง ดังนั้นการเข้ารหัสสตริงจะสร้างรายการของตัวเลข (จากจุดรหัสของรหัสอินพุต) จากนั้นเชื่อมต่อทั้งหมดที่มีสตริงว่าง

ตัวอย่าง:

รหัสอินพุต

"hi"
p

ถูกแปลเป็น (หมายเหตุ: ตัวแบ่งบรรทัดและเพิ่มความคิดเห็นเพื่อให้สามารถอ่านได้)

# 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 อักขระที่แตกต่าง

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

สิ่งนี้ใช้การจัดรูปแบบโมดูโลเพื่อสร้างสตริงอินพุตใหม่ ตัวอย่างเช่นprint 1ผลลัพธ์ในโปรแกรมนี้:

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

ในทางทฤษฎีคุณสามารถเข้ารหัสโปรแกรมใด ๆ เช่นนี้ แต่โปรแกรมที่เกิดขึ้นมักจะมีมากกว่า 2 nตัวอักษรที่ n คือจำนวนของตัวละครในการป้อนข้อมูลไม่รวมถึง%สัญลักษณ์


ขอบเขตล่างของโปรแกรมผลลัพธ์คือ2**n+3*n-1 + 6ตัวอักษรรวมถึงอักขระอินพุตทั้งหมด (ถ้าคุณสมมติว่าอักขระทุกตัวเป็นไบต์ NUL) นี้นำมาจากOEIS A132074บวก 6 exec''สำหรับ หากคุณสมมติว่าอักขระต้องสามารถพิมพ์ได้ ASCII ขอบล่างจะสูงกว่า repl.it/EHEN
mbomb007

6

CJam -> CJam คะแนน: 3

CJam ใหม่กว่าคำถามดังนั้นจึงไม่มีสิทธิ์ชนะ

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

')~มันใช้ ')คือตัวละคร)และแต่ละอันจะเพิ่ม)ทีละหนึ่ง ~สามารถประเมินตัวละครหรือสตริง +โปรแกรมที่สมบูรณ์ได้รับการประเมินหลังจากที่เชื่อมโยงตัวละครทุกตัวโดยการประเมิน )และจำนวนเต็มของค่าของตัวอักษรและการดำเนินการจำนวนการตัวละครได้รับการประเมินสำหรับตัวละครแต่ละตัวน้อยกว่า

ตัวอย่าง

XX{_2$+}I*]N*

แปลเป็น:

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

และ

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

แปลเป็น:

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

4

APL (คะแนน: 10)

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

อักขระที่ใช้ในการเข้ารหัส: ⍎⎕AV[(⍴⍬)]

โปรแกรม APL ที่จะเข้ารหัสต้อง จำกัด ตัวเองเป็นชุดอักขระ APL และไม่ใช้ Unicode พิเศษใด ๆ

การเข้ารหัสสำหรับโปรแกรม42(ซึ่งแสดงคำตอบของชีวิตจักรวาลและทุกสิ่ง):

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

มันทำงานอย่างไร: เป็นรายการที่ว่างเปล่า⍬⍬⍬⍬ดังนั้นจึงเป็นรายการของสี่รายการที่ว่างเปล่า⍴⍬⍬⍬⍬คือความยาวของรายการของสี่รายการที่ว่างเปล่าซึ่งเป็นสี่ dyadic คือ Reshape (⍴⍬⍬⍬⍬)เพื่อให้คำแนะนำความยาวของรายการของรายการต้องถูกห่อในวงเล็บให้การเข้ารหัสสุดท้ายของจำนวนตัวอักษรที่สี่เป็น

ตัวเลขเหล่านี้จะถูกค้นหา⎕AVซึ่งเป็นชุดอักขระและดำเนินการกับสตริงผลลัพธ์

(ตั้งแต่แรกเห็นมันดูเหมือนว่าคะแนนสามารถนำมาถึง 9 โดยใช้⎕UCSแทน⎕AVและประหยัด[]แต่ที่ไม่ทำงานเพราะ(⍴⍬)(⍴⍬) เป็นรายการของรายการ scalars คือ[[1], [1]]แทนการ[1, 1]ที่จะต้องและการแก้ไข จะต้องสลับค่าที่เข้ารหัสด้วยเครื่องหมายจุลภาคเพื่อนำคะแนนกลับไปที่ 10)


2

RProgN , 7 ตัวอักษรที่แตกต่าง, Noncompeting

RProgN ใหม่กว่าคำถามนี้

' do.Lc

แปลงโปรแกรมเป็น'oooo...' L c 'ooooo...' L c 'oo...' L c . . . doโดยที่ 'oo ... ' แต่ละตัวแทนรหัสอักขระใน o ของล้อมรอบด้วย apostrifies เพื่อให้สตริงออกจากพวกเขา L c จากนั้นเปลี่ยนเป็นค่าคงที่จำนวน หลังจากสตริงทั้งหมดถูกวางบนสแต็กโซ่ของเท่ากับเท่ากับจำนวนอักขระในสตริงที่เข้ารหัสลบหนึ่งสตริงจะสร้างสตริงที่เข้ารหัสใหม่และดำเนินการมัน

ตัวเข้ารหัสที่เขียนด้วย 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

ลองออนไลน์!


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

ตัวอย่าง:

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

ใช้โซลูชัน Ruby ที่กำหนดในปัญหาที่เชื่อมโยงและแทนที่ I / O ด้วย eval


มันถูกเชื่อมโยงแล้วในเนื้อหาของคำถาม ฉันไม่ได้ใช้ความคิดเห็นของคุณ ไม่ใช่เรื่องง่ายเลยที่จะตอบคำถามจากที่นั่นเพราะคุณจำเป็นต้องทำวิศวกรรมย้อนกลับ
ฮิสโทแกต

1
ฉันพลาดการอ้างอิงไปยังคำถามนั้นในเนื้อหาของคำถาม ฉันยังไม่คิดว่ามันน่าสนใจมากที่จะเปลี่ยนคำตอบจากมัน แต่ฉันถอนความคิดเห็นก่อนหน้านี้ด้วยคำขอโทษ
ปีเตอร์เทย์เลอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.