q / k4 (3 & le; 5 & le; 8 & le;)
Wenn es ausreicht, den Code und die Eingabe direkt in die REPL einzugeben, ist es nur asc:
q)asc"Johnny walked the dog to the park."
`s#" .Jaaddeeeghhhkklnnoooprtttwy"
Das `s#is-Bit der q-Notation gibt an, dass die Zeichenfolge in sortierter Reihenfolge vorliegt (kann binär durchsucht werden usw.). Wenn es gehen muss, kostet das zwei Zeichen und macht fünf:
q)`#asc"Johnny walked the dog to the park."
" .Jaaddeeeghhhkklnnoooprtttwy"
Wenn Sie möchten, dass es auf stdin bereitgestellt wird, ist es Zeit, auf k4 umzusteigen (und wir werden das `s#kostenlos los ), und es ist eine Lösung mit acht Zeichen:
x@<x:0:0
Johnny walked the dog to the park.
" .Jaaddeeeghhhkklnnoooprtttwy"
Diese wird übrigens genauso wie sie ist als Codedatei funktionieren (immer noch acht Zeichen, da q in Ordnung ist, wenn die letzte Zeile in einer Codedatei nicht vorhanden ist). Normalerweise gibt es Probleme mit einem Begrüßungsbanner und der REPL, die offen bleiben, aber wenn Sie die Eingabe als Herestring übergeben, geht alles verloren:
$ cat asc.k
x@<x:0:0
$ q asc.k<<<'Johnny walked the dog to the park.'
"\n .Jaaddeeeghhhkklnnoooprtttwy"
$
Ich bin mir nicht sicher, woher diese zusätzliche Zeile in der Ausgabe kommt.