q / k4 (3? 5? 8?)
якщо достатньо ввести код і введення безпосередньо в REPL, це просто asc:
q)asc"Johnny walked the dog to the park."
`s#" .Jaaddeeeghhhkklnnoooprtttwy"
`s#є трохи д позначень , що вказує на те, що рядок знаходиться в відсортованому порядку (може бути двійковим пошук, і т.д.). якщо це потрібно, це коштує двох символів, роблячи п'ять:
q)`#asc"Johnny walked the dog to the park."
" .Jaaddeeeghhhkklnnoooprtttwy"
якщо ви хочете, щоб це було передбачено на stdin, саме час перейти на k4 (і ми позбудемося `s#безкоштовно), і це рішення у вісім символів:
x@<x:0:0
Johnny walked the dog to the park.
" .Jaaddeeeghhhkklnnoooprtttwy"
той, btw, буде працювати як файл коду так само, як є (ще вісім символів, оскільки q добре, якщо у файлі коду немає остаточного нового рядка). як правило, виникають проблеми з банером з привітальним словом і з REPL, який залишається відкритим, але якщо ви передасте введення як герестир, все, що минає:
$ cat asc.k
x@<x:0:0
$ q asc.k<<<'Johnny walked the dog to the park.'
"\n .Jaaddeeeghhhkklnnoooprtttwy"
$
насправді не впевнений, звідки надходить новий додатковий рядок на виході.