Rebmμ (10 caracteres)
e? AtsAuqA
O truque de "mushing" de Rebmu é que não diferencia maiúsculas de minúsculas, então os personagens são executados juntos. Sempre que uma transição de caso é atingida, ela se divide no próximo token. Ao usar transições em vez de um tipo de coisa do CamelCase, a escolha exclusiva para começar com uma corrida de capital significa que é feita uma "palavra-chave". (Embora as palavras-chave possam ser usadas para outros fins na programação simbólica, elas são avaliadas como atribuições por padrão).
Portanto, isso "remove" para:
e? a: ts a uq a
O espaço é necessário porque, uma vez iniciada uma série de execuções de casos alternativos, você não pode usar esse truque para obter uma palavra-chave após a primeira, a menos que comece uma nova execução. Então e?AtsAuqA
, você teria conseguido e? a ts a uq a
... nenhuma tarefa.
(Observação: pelo que pode não ser um motivo particularmente bom, eu tendem a preferir repensar as soluções para que não haja espaços, se a contagem de caracteres for igual. Como colchetes, parênteses e cadeias terminam implicitamente um símbolo ... geralmente há um justo número de oportunidades para isso.)
De qualquer forma, quando mapeado para o Rebol, abrevia:
equal? a: to-string a unique a
Entre alguns parênteses para ajudar a entender a essência da ordem de avaliação:
equal? (a: (to-string a)) (unique a)
Portanto, o operador de igualdade de prefixo é aplicado a dois argumentos - o primeiro o resultado da atribuição a
da versão da string em si e o segundo o resultado de unique
ser executado nessa string. Acontece que exclusivo retornará os elementos na mesma ordem em que você os passou ... o único "31214" é "3124", por exemplo.
Execute-o com:
>> rebmu/args "e? AtsAuqA" 17308459
== true
Há também algumas estatísticas e informações de depuração:
>> 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
Se o requisito é que é necessário definir uma função nomeada / reutilizável, você pode criar uma "função A" que implícitamente aceita um parâmetro nomeado com a|
. (Uma função B seria criada com b|
um parâmetro chamado A e, em seguida, um chamado B). Então isso adicionaria mais cinco caracteres ... digamos que você chame a função "f"
Fa|[e? AtsAugA]
"Você ri! Eles riram de Einstein! Ou espere ... riram? Eu ... não sei."