Codieren Sie ein Programm mit möglichst wenigen unterschiedlichen Zeichen.


12

Ziel ist es, ein Programm zu schreiben, das ein anderes Programm (Eingabe) mit möglichst wenig Zeichen codiert.

Wertung

  • Die Punktzahl entspricht der unterschiedlichen Anzahl von Zeichen, die für die Ausgabe benötigt werden.
  • Niedrigere Punktzahl ist besser.

Regeln

  • Keine Zielsprachen mit einer begrenzten Anzahl von Befehlen. (Kein Brainf ** k, Whitespace usw.)
    Bearbeiten : Ich meine mindestens 26 signifikante Zeichen, Aändert nichts an der Funktionsweise eines Brainf ** k-Programms, daher können Sie dieses Zeichen nicht zählen. Gleiches gilt für Whitespace.
  • Die Zielsprache muss zu dem Zeitpunkt existieren, an dem diese Frage geschrieben wird.
  • Sie müssen eine kleine Erklärung hinzufügen, wie Sie Ihre Partitur archivieren.
  • Das Eingabeprogramm ist gültig.
  • Das codierte Programm muss ein gültiges Programm in derselben Sprache wie die Eingabe sein.
  • Das codierte Programm muss den gleichen Job wie das ursprüngliche Programm ausführen.
  • Ihr Encoder muss für jedes gültige Programm in dieser Sprache funktionieren.
  • Fügen Sie einige Beispieleingaben und -ausgaben hinzu.

Anmerkungen

  • Der Encoder kann in einer beliebigen Sprache geschrieben sein, nicht nur in der Sprache, auf die er abzielt.
  • Dies ist kein , lesbare Programme werden empfohlen.
  • Das große Ziel ist zu sehen, wie viele verschiedene Zeichen benötigt werden, um etwas in dieser Sprache zu schreiben. Ich habe BF usw. abgelehnt, weil es keine Herausforderung geben würde.
  • Dies wurde inspiriert durch Drucken einer Zeichenfolge mit möglichst wenigen unterschiedlichen Zeichen . Sie können diese als für diese Frage verwenden.

Beispiel

In Java können Sie \uXXXXstattdessen andere Zeichen verwenden. Ein gültiger Eintrag codiert jedes Zeichen aus der Eingabe auf diese Weise. Dies hätte eine Punktzahl von 18. ( \ 0-9a-f)

Code in Tcl, codiert ein Java-Programm:

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

Es tut mir leid, dass die Abstimmung geschlossen wurde. Ich dachte, dies sei ein Duplikat von codegolf.stackexchange.com/questions/6974, aber das ist pythonspezifisch .
Stand

2
Mit Ihrem Java-Score und Ihrem Encoder: Ich spreche nicht viel Tcl, getslese aber nicht nur eine einzige Eingabezeile? Und du hast den uin deinem Encoder verpasst (aber andererseits brauchst du keinen Platz und somit bleibt die Punktzahl gleich).
Howard

7
Haben nicht alle Programmiersprachen einen "begrenzten Befehlssatz"? Wo ziehst du die Linie?
Jpjacobs

4
Ich stimme dafür, dies zu schließen, weil es einen gebrochenen Siegeszustand gibt, der durch ein sehr unklares Sprachverbot behoben wurde. Wenn Unary nicht gebannt wäre, würde es 1 Punkte bringen. Wenn Brainfuck nicht gebannt wäre, würde es 7 Punkte bringen (beachte, dass die Sprache selbst natürlich 8 Befehle + 248 Kommentarzeichen hat). Wo liegt die Grenze zwischen natürlich zu wenigen Befehlen und genug, um legitim zu sein?

1
Sogar Sprachen wie Python haben einen begrenzten Befehlssatz. Sie können kein "neues erstellen", Sie erstellen einfach eine neue Funktion oder etwas anderes, aber die reservierten Wörter bleiben gleich. Die Definition von "Befehl" ist unklar. Die Frage könnte möglicherweise dadurch gelöst werden, dass die Sprachen nicht eingeschränkt werden (nur keine trivialen Antworten hochgestuft werden), und dass der verwendete Zeichensatz eine angemessene Teilmenge derjenigen in der Sprache sein muss.
mbomb007

Antworten:


10

GolfScript / GolfScript, Note 4

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

Der Encoder selbst ist ein GolfScript-Programm, das den Originalcode von STDIN in eine Folge von Zeichen umwandelt ',+~. Diese Ausgabe selbst ist ein gültiger GolfScript-Code, der dieselben Vorgänge ausführt wie die ursprüngliche Version.

Die grundlegende Methode besteht darin, den Code als Zeichenfolge zu codieren (Zeichen ',+, siehe unten) und diese Zeichenfolge dann mit dem Befehl eval auszuwerten ~.

Wenn man in GolfScript eine beliebige Zeichenfolge mit einem Array von Zahlen verknüpft, werden die Zahlen in Codepunkte konvertiert und das Ergebnis ist eine Zeichenfolge. Daher erstellt die Zeichenfolgencodierung einfach eine Liste von Zahlen (aus den Codepunkten des Eingabecodes) und verkettet dann alle diese mit einer leeren Zeichenfolge.

Beispiel:

Der eingegebene Code

"hi"
p

wird übersetzt in (Hinweis: Zeilenumbrüche und Kommentare zur besseren Lesbarkeit hinzugefügt)

# 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 verschiedene Zeichen

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

Dies verwendet Modulo-Formatierung, um die Eingabezeichenfolge neu zu erstellen. Beispielsweise print 1ergibt sich in diesem Programm:

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

Theoretisch können Sie jedes Programm wie dieses codieren, aber das resultierende Programm hat immer mehr als 2 n Zeichen, wobei n die Anzahl der Zeichen in der Eingabe ohne %Symbole ist.


Die untere Grenze des resultierenden Programms sind 2**n+3*n-1 + 6Zeichen, einschließlich aller eingegebenen Zeichen (wenn Sie annehmen, dass jedes Zeichen ein NUL-Byte ist). Dies stammt aus OEIS A132074 , plus 6 für exec''. Wenn Sie davon ausgehen, dass Zeichen in ASCII gedruckt werden müssen, ist die untere Grenze höher. repl.it/EHEN
mbomb007

6

CJam -> CJam, Ergebnis: 3

CJam ist neuer als die Frage und kann daher nicht gewinnen.

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

Es nutzt ')~. ')ist das Zeichen ), und jedes zusätzliche )erhöht es um eins. ~kann ein Zeichen oder eine Zeichenkette auswerten. Das komplette Programm wird nach Verkettung aller Zeichen durch Auswertung ausgewertet +. Für jedes Zeichen, das kleiner als ist, wird eine Ganzzahl aus dem Zeichenwert und einer Zahl-zu-Zeichen-Operation ausgewertet ).

Beispiele

XX{_2$+}I*]N*

wird übersetzt in:

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

und

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

wird übersetzt in:

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

4

APL (Punktzahl: 10)

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

Zeichen, die bei der Kodierung verwendet werden: ⍎⎕AV[(⍴⍬)]

Das zu codierende APL-Programm muss sich auf den APL-Zeichensatz beschränken und darf keinen zusätzlichen Unicode verwenden.

Kodierung für das Programm 42(das die Antwort auf das Leben, das Universum und alles ausgibt):

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

Wie es funktioniert: Ist die leere Liste, ⍬⍬⍬⍬ist also eine Liste von vier leeren Listen, ⍴⍬⍬⍬⍬ist die Länge der Liste von vier leeren Listen, also vier. Dyadic ist eine Umformung, daher müssen die Anweisungen für die Länge der Liste der Listen in Klammern gesetzt werden (⍴⍬⍬⍬⍬).

Diese Zahlen werden dann nach ⎕AVdem Zeichensatz durchsucht und führen die resultierende Zeichenfolge aus.

(Auf den ersten Blick sieht es so aus, als könnte die Punktzahl mit auf 9 gebracht werden ⎕UCS anstelle von ⎕AVund Speichern[] , aber das funktioniert nicht, da (⍴⍬)(⍴⍬) es sich um eine Liste von Skalarlisten handelt, dh [[1], [1]]anstelle der Liste [1, 1], die erforderlich wäre, und dies umgeht würde erfordern, die codierten Werte mit Kommas zu vertauschen, um die Punktzahl wieder auf 10 zu bringen.)


2

RProgN , 7 verschiedene Zeichen, nicht konkurrierend

RProgN ist neuer als diese Frage.

' do.Lc

Konvertieren Sie das Programm in 'oooo...' L c 'ooooo...' L c 'oo...' L c . . . do, wobei jedes 'oo ...' den Zeichencode in o darstellt, der von Apostrifikaten umgeben ist, um daraus einen String zu machen. L c wandelt sie dann in eine Zahlenkonstante um. Nachdem alle Zeichenfolgen auf dem Stapel abgelegt wurden, entspricht eine Kette von. Der Anzahl der Zeichen in der codierten Zeichenfolge abzüglich einer Neuerstellung der codierten Zeichenfolge und führt sie aus.

Encoder, auch in RProgN geschrieben.

'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

Probieren Sie es online!


1

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

Stichprobe:

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

Implementiert die im verknüpften Problem angegebene Ruby-Lösung und ersetzt I / O durch eval.


Es war bereits im Fragenkörper verlinkt; Ich habe Ihren Kommentar nicht verwendet. Es ist nicht trivial, Antworten von dort zu portieren, da Sie sie rückentwickeln müssen.
Histokrat

1
Ich habe den Verweis auf diese Frage im Fragenkörper verpasst. Ich halte es immer noch nicht für sehr interessant, nur Antworten daraus zu transformieren, aber ich ziehe meinen vorherigen Kommentar mit Entschuldigung zurück.
Peter Taylor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.