Существует ли идиома APL для получения вектора всех буквенных символов?

Я знаю, что вы можете получить вектор символов всех чисел с ∊⍕¨⍳10, но есть ли независимая от платформы идиома для получения вектора всех алфавитных символов, кроме ввода вручную 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'? Я знаю, что я могу сделать ⎕AV[(⍳26)+(⎕AV⍳'a')-1] чтобы получить все строчные буквы (и заглавные, изменив 'a' в 'A') в Dyalog APL, но я полагаю, системная переменная ⎕AV недоступно в других средах.

3 ответа

Решение

На самом деле, нет.

В Dyalog APL я обычно использую ⎕A для заглавных букв и ⎕UCS 96+⍳26 для строчных букв. (А также ⎕A,⎕UCS 96+⍳26 для всего алфавита.)

⎕AV обычно присутствует, но его содержимое не является стандартным. (Например, NARS2000 ⎕AV отличается от Dyalog.) Кстати, в Dyalog ⎕AV считается устаревшим в пользу ⎕UCS, Любой APL, который реализует ⎕UCS будет делать то же самое, потому что Unicode является установленным стандартом.

Если вам нужен гарантированный, независимый от реализации, читаемый способ определения алфавита, я бы порекомендовал просто хранить abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ в вашем рабочем пространстве.

Однако я бы не советовал пытаться писать независимый от реализации код APL для начала. Диалекты APL довольно расходятся, так что это определенно нетривиально (если вообще возможно для сложного кода), и его будет трудно поддерживать.

Хотя Quad имена (⎕xxx) обычно нечувствительны к регистру, MicroAPL различает ⎕A а также ⎕a, так ⎕a,⎕A дает 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',

Да, в последних версиях * пишите ⎕A,819⌶⎕A, за ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,

Попробуйте онлайн!

Документация.


* Последние сборки 14.1 и все версии 15.0 и выше.

Другие вопросы по тегам