Rebmμ (10 Zeichen)
e? AtsAuqA
Rebmus "Mushing" -Trick ist, dass die Groß- und Kleinschreibung nicht beachtet wird, sodass die Zeichen zusammenlaufen. Immer wenn ein Fallübergang getroffen wird, wird dieser zum nächsten Token aufgeteilt. Durch die Verwendung von Übergängen anstelle von CamelCase-Übergängen wird durch die einmalige Entscheidung, mit einem Großbuchstaben zu beginnen, ein "Set-Word" erstellt. (Während gesetzte Wörter in der symbolischen Programmierung für andere Zwecke verwendet werden können, werden sie standardmäßig als Zuweisungen ausgewertet.)
Das "entmuscht" also:
e? a: ts a uq a
Der Platz wird benötigt, da Sie mit diesem Trick nach einer Reihe von Läufen abwechselnder Fälle nur dann ein festes Wort nach dem ersten erhalten können, wenn Sie einen neuen Lauf beginnen. Also e?AtsAuqA
hättest du bekommen e? a ts a uq a
... keine Zuordnung.
(Anmerkung: Aus irgendeinem Grund bevorzuge ich es, Lösungen so zu überdenken, dass keine Leerzeichen entstehen, wenn die Anzahl der Zeichen gleich ist. Da Klammern, Klammern und Zeichenfolgen implizit ein Symbol beenden ... gibt es oft ein Fair Anzahl der Möglichkeiten dafür.)
Auf jeden Fall, wenn dem Rebol zugeordnet, dass es abkürzt:
equal? a: to-string a unique a
Wirf ein paar Klammern ein, um den Kern der Bewertungsreihenfolge zu ermitteln:
equal? (a: (to-string a)) (unique a)
Der Präfix-Gleichheitsoperator wird also auf zwei Argumente angewendet: Das erste ist das Ergebnis der Zuweisung a
der String-Version von sich selbst und das zweite das Ergebnis der unique
Ausführung für diesen String. Es kommt also vor, dass unique die Elemente in der Reihenfolge zurückgibt, in der Sie sie übergeben haben. So ist zum Beispiel "3124" für "31214" eindeutig.
Führen Sie es mit:
>> rebmu/args "e? AtsAuqA" 17308459
== true
Es gibt auch einige Statistiken und Debug-Informationen:
>> rebmu/args/stats/debug "e? AtsAuqA" 48778584
Original Rebmu string was: 10 characters.
Rebmu as mushed Rebol block molds to: 10 characters.
Unmushed Rebmu molds to: 15 characters.
Executing: [e? a: ts a uq a]
== false
Wenn die Anforderung besteht, dass eine benannte / wiederverwendbare Funktion definiert werden muss, können Sie eine "A-Funktion" erstellen, die implizit einen Parameter mit dem Namen a mitnimmt a|
. (Eine B-Funktion würde mit b|
einem Parameter mit dem Namen A und einem mit dem Namen B erstellt werden.) Das würde also fünf weitere Zeichen hinzufügen ... Angenommen, Sie rufen die Funktion "f" auf.
Fa|[e? AtsAugA]
"Du lachst! Sie haben über Einstein gelacht! Oder warten Sie ... oder? Ich ... weiß nicht."