Alphabet Position Finder

10

Inspirado pelo Codewars Kata .

Seu objetivo é usar uma string de entrada como esta:

"'Twas a dark and stormy night..."

e retorne uma string contendo a posição de cada caractere no alfabeto, separada por espaços e ignorando caracteres não alfabéticos, como este:

"20 23 1 19 1 4 1 18 11 1 14 4 19 20 15 18 13 25 14 9 7 8 20"

Para um desafio adicional, você pode substituir qualquer caractere numérico na sequência original por eles mesmos + 27. Por exemplo, "25"se tornaria "29, 32". Isto é completamente opcional.

Você deve usar 1-indexação ( 'a'==1, 'b'==2, etc)

Regras adicionais:

  • Você deve retornar uma sequência, não uma matriz.

  • O espaço em branco à direita está OK.

O vencedor tem a menor contagem de bytes.

Boa sorte!

Theo C
fonte
5
@TheoC Por quê? O consenso geral é que as respostas devem ser capazes de produzir em qualquer formato razoável, pois podem adicionar muito inchaço e torná-lo injusto para idiomas que podem se unir por espaços de maneira mais curta.
Okx
11
@TheoC Por que você não permite apenas os dois?
Okx
3
Bem-vindo ao PPCG! Em geral, esse é um desafio decente, mas para a próxima vez que você postar um desafio, aqui estão algumas coisas a serem lembradas. 1) Esse desafio é bem simples. Eu acho que seria mais interessante se a parte opcional fosse obrigatória (observe, não mude essa parte agora, é tarde demais). 2) Você é bastante restritivo sobre algumas partes arbitrárias. Por que não permitir uma matriz? É nossos padrões que uma matriz de caracteres é uma string . Eu recomendaria a leitura deste tópico para obter idéias.
James
2
Notas futuras: a indexação 1 e 0 geralmente é a mesma e ambas são geralmente permitidas. Além disso, restringir os formatos de saída é desaprovado. Se for uma lista de valores, deixe o idioma decidir o formato. O desafio não é sobre a formatação da saída nem sobre a mudança de índices. Portanto, não deve ser uma restrição quando você pode permitir que os idiomas façam o que eles fariam naturalmente e se concentrem na intenção do desafio.
Magic Octopus Urn

Respostas:

5

05AB1E , (5?) 7 bytes

Dois bytes à direita são formatação de saída

áÇ32%ðý

Uma porta da minha resposta Jelly , mas o O5AB1E é mais conciso para a filtragem do alfabeto.

Experimente online!

Como?

áÇ32%ðý - take input implicitly
á       - filter keep alphabetical characters
 Ç      - to ordinals
  32    - thirty-two
    %   - modulo (vectorises)
     ð  - push a space character
      ý - join
Jonathan Allan
fonte
Como o OP deseja que ele seja impresso dividido por espaços, é ðýpossível adicionar um final . Mas desde a metade das listas de respostas, acho que é só deixar por enquanto.
Kevin Cruijssen
Ah Eu perdi isso nas minhas respostas ...
Jonathan Allan
5

Java 8, 82 78 72 69 62 bytes

s->{for(int c:s)System.out.print(c>64&~-c%32<26?c%32+" ":"");}

-13 bytes graças a @ OlivierGrégoire .

Experimente online.

Explicação:

s->                    // Method with character-array parameter and no return-type
  for(int c:s)         //  Loop over its characters as integers
    System.out.print(  //   Print:
     c>64&~-c%32<26?   //    If the current character is a letter:
      c%32+" "         //     Print the position in the alphabet with a trailing space
     :                 //    Else:
      "");}            //     Print nothing
Kevin Cruijssen
fonte
11
s->s.chars().forEach(c->{if(c>64&~-c%32<26)System.out.print(c%32+" ");})(72 bytes).
Olivier Grégoire
11
@ OlivierGrégoire Obrigado! E mais -3 bytes alterando-o para um ternário if. :)
Kevin Cruijssen
s->{for(int c:s)System.out.print(c>64&~-c%32<26?c%32+" ":"");}(62 bytes) usando a char[]como entrada em vez de a String.
Olivier Grégoire
4

R , 55 50 bytes

cat(utf8ToInt(gsub("[^A-Za-z]","",scan(,"")))%%32)

Experimente online!

Lê a entrada do stdin, converte para maiúsculas, remove letras alfabéticas não maiúsculas , converte para pontos de código, subtrai para 64 mods por 32 e imprime para stdout, separados por espaços.

Obrigado a Kevin Cruijssen pelo golfe!

Giuseppe
fonte
50 bytes
Kevin Cruijssen
@KevinCruijssen * facepalm * duh
Giuseppe
Eu adicionei dois comentários (perguntas) à pergunta - dependendo da resposta, há uma oportunidade de jogar isso para 46 ou até 39 caracteres.
31418 JayCe
11
Você pode fazer 47 usando #[^A-z]
MickyT
4

APL (Dyalog Unicode) , 24, 20, 14 13 bytes

-4 bytes graças ao Zacharý (e ao Sr. Xcoder)!

-6 bytes graças a Adám!

-1 byte graças a ngn!

A⍳⎕A∩⍨≡819⌶⊢

Experimente online!

Explicação:

        819⌶⊢  - to uppercase
   A∩⍨         - intersect with the letters A-Z (args swapped to preserve the order)
                 - index in
A               - the A-Z letters list

Minha solução inicial:

APL (Dyalog Unicode) , 24 20 bytes

{⍵/⍨27>⍵}⎕A1(819⌶)⊢

Experimente online!

Explicação:

                        indices of     
              1(819⌶)⊢  the right argument (⊢) changed to uppercase
          A            in the list of uppercase letters
{⍵/⍨     }              copy (filter) those items from the list of indeces
     27>⍵               which are smaller than 27 (all non A-Z chars will have index 27)

Não ria de mim, eu sou novo no APL :)

Galen Ivanov
fonte
11
Isso é realmente extraordinariamente bom para alguém novo na APL! Você não precisa dos parênteses, eles são assumidos. Além disso, {1(819⌶)⍵}pode ser 1(819⌶)⊢. Caso contrário, trabalho incrível! Espero que você goste da APL no futuro!
Zacharý
@ Zacharý Obrigado! Espero que sim (eu tenho algum conhecimento em J, eu não sou totalmente novo para as línguas de matriz)
Galen Ivanov
11
Como Zachary observou, os parênteses são assumidos , portanto você não precisa incluí-los na contagem de bytes, resultando em 20 bytes.
Sr. Xcoder
11
@ Jonah eu adicionei uma explicação. Você está certo, capitalização e o alfabeto em si custa muito mais em J.
Galen Ivanov
11
Bom trabalho! Você pode salvar um byte, compondo o 1ao 819⌶e salvar cinco removendo 27s diretamente: 27~⍨⎕A⍳819⌶⍨∘1; ou pegue a interseção com o alfabeto:⎕A⍳⎕A∩⍨819⌶⍨∘1
Adám
3

Python 2 , (45?) 55 bytes

11 bytes adicionados para formatar a saída, o que também torna isso incompatível com o Python 3)

lambda s:' '.join(`ord(c)%32`for c in s if c.isalpha())

Outra porta da minha resposta Jelly.

Experimente online!


Versão não formatada (retornando uma lista de números inteiros):

lambda s:[ord(c)%32for c in s if c.isalpha()]
Jonathan Allan
fonte
11
Parece que OP está insistindo em uma string separada por espaços, infelizmente
Sok
11
Sim - eu perdi isso em todas as minhas respostas - alguém se acostuma às normas do site!
Jonathan Allan
3

JavaScript (Node.js) , 69 55 54 bytes

t=>t.match(/[a-z]/gi).map(i=>parseInt(i,36)-9).join` `

Experimente online!

Explicação:

t =>                       // lambda function accepting a string as input
    t.match(/a-z/gi).      // returns all parts of string that match as an array 
        map(i=>            // map over that array with argument i 
            parseInt(i,36) // convert to base 36 
                - 9        // and subtract 9 from it
        ).                 // end map
        join` `            // convert to space separated string

11 bytes salvos graças a @Kevin

Mais 1 bytes graças a @Neil


Você pode adicionar suporte para números para alguns bytes adicionais (graças a @neil)

JavaScript (Node.js) , 62 bytes

t=>t.match(/[^_\W]/g).map(i=>(parseInt(i,36)+26)%36+1).join` `

Experimente online!

Muhammad Salman
fonte
-11 bytes alterando a-zpara A-Za-ze i.toLowerCase().charCodeAt()-96parai.charCodeAt()%32
Kevin Cruijssen
11
parseInt(i,36)-9salva outro byte.
315 Neil
.match(/[^_\W]/g).map(i=>(parseInt(i,36)+26)%36+1)permite que você suporte números, embora não tenha certeza se essa é a melhor maneira.
315 Neil
2

Gelatina , (7?) 8 bytes

Byte mais à direita é a formatação de saída

fØẠO%32K

Um programa completo que aceita uma string no formato Python que imprime o resultado em STDOUT

Experimente online!

Como?

fØẠO%32K - Main Link: list of characters (created from the string input)
 ØẠ      - yield the alphabet = ['A','B',...,'Z','a','b',...,'z']
f        - filter keep (discard non alphabet characters)
   O     - ordinals          ('A':65, 'Z':90, 'a':97, 'z':122, etc.)
     32  - literal thirty-two
    %    - modulo            (65:1,   90':26,  97:1,  122:26,  etc.)
       K - join with spaces (makes a list of characters and integers)
         - implicit print
Jonathan Allan
fonte
2

Japt v2.0a0 -S, 12 10 bytes

r\L ¨c uH

Tente


Explicação

r              :Remove
 \L            :  Non-letter characters
    ¬          :Split to array
     ®         :Map
      c        :  Character code
        u      :  Modulo
         H     :  32
               :Implicitly join with spaces and output
Shaggy
fonte
2

x86 opcode, 35 bytes

0080h: AC 3C 24 75 04 88 45 FF C3 0C 20 2C 60 76 F1 D4
0090h: 0A 0D 30 30 86 E0 3C 30 74 01 AA 86 E0 AA B0 20
00a0h: AA EB DD                                       

f:  lodsb
    cmp al, '$'
    jnz @f
        mov [di-1], al
        ret
    @@:
    or al, 32
    sub al, 96
    jbe f
    aam
    or ax, 3030H
    xchg ah, al
    cmp al, 48
    jz @f
        stosb
    @@:
    xchg ah, al
    stosb
    mov al, 32
    stosb
    jmp f

Supondo que o resultado contenha pelo menos uma letra e não {|}~

40 bytes, permitindo todos os caracteres ASCII

0080h: AC 3C 24 75 04 88 45 FF C3 0C 20 2C 60 76 F1 3C
0090h: 1A 77 ED D4 0A 0D 30 30 86 E0 3C 30 74 01 AA 86
00a0h: E0 AA B0 20 AA EB D9                           
l4m2
fonte
O que é "x86 opcode"? É apenas um envio de código de máquina x86?
Jakob
@Jakob true. Eu aqui não digo ".com" cuz é uma função e não dependem de ".com" formato
l4m2
Hmm. Sim, acho que é suposto que as soluções de código de máquina não precisam ser executáveis ​​completos. Na verdade, pode ser melhor apenas rotulá-lo como "código de máquina x86"
Jakob
2

Stax , 9 10 9 bytes

üpÉÿ%}},√

Execute e depure

-1 byte graças a @recursive

Explicação:

v{VaIvm0-J Full program, unpacked, implicit input
v          Lowercase
 {    m    Map:
  VaI        Index in lowercase alphabet (0-based, -1 for not found)
     ^       Increment
       0-  Remove zeroes
         J Join by space
           Implicit output

Stax , 7 bytes

É▌Xl»↔"

Execute e depure

Este gera uma nova linha separada. Descompactada: vmVaI^|c. Semelhante, mas com o mapa, que gera implicitamente com a nova linha à direita.

wastl
fonte
Hum. Parece haver um problema de embalagem programas que final no espaço
recursiva
@ Oh recursivo, não percebi isso (geralmente eu tento os links, mas aparentemente eu esqueci aqui). Eu adicionei uma solução alternativa.
wastl
Também nunca notei esse bug. Vou consertar no próximo lançamento do Stax. Os programas compactados existentes permanecerão inalterados.
recursivo
Aqui está um 9 de volta para o seu problema.
recursivo
2

Espaço em branco , 152 117 bytes

-35 bytes graças a @Lynn .

[N
S S N
_Create_Label_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve][S N
S _Duplicate_input][S S S T S S S S S N
_Push_32][T S T T   _Modulo][S N
T   _Swap_top_two][S S S T  T   T   T   T   T   N
_Push_63][T S T S _Integer_divide][T    S S N
_Multiply][S N
S _Duplicate][S S S T   T   S T T   N
_Push_27][S T   S S T   N
_Copy_1st][S S S T  N
_Push_1][T  S S S _Add][T   S T S _Integer_divide][T    S S N
_Mulitply][N
T   S N
_If_0_Jump_to_Label_LOOP][T N
S T _Print_as_number][S S S T   S S S S S N
_Push_32_space][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

Letras S(espaço), T(tabulação) e N(nova linha) adicionadas apenas como destaque.
[..._some_action]adicionado apenas como explicação.

Experimente online (apenas com espaços brutos, guias e novas linhas).

Explicação em pseudo-código:

Start LOOP:
  Character c = STDIN as character
  Integer n = (c modulo-32) * (c integer-divided by 63)
  Integer m = 27 integer-divided by (n + 1) * n;
  If(m == 0):
    Go to next iteration of LOOP
  Else:
    Print n as integer to STDOUT
    Print a space to STDOUT
    Go to next iteration of LOOP
Kevin Cruijssen
fonte
11
Eu não tenho o tempo para escrevê-lo em espaços em branco, mas talvez você poderia escrever algo como este
Lynn
11
Parece que são 117 bytes ! (* Eu mudei 64-63 no código, como é equivalente, mas mais curto para representar em Whitespace) :)
Lynn
@ Lynn Não é ruim, -35 bytes ali. Obrigado. :)
Kevin Cruijssen
1

05AB1E , 14 bytes

Lida com números também

žKÃlvžKlÙyk>ðJ

Experimente online!

Emigna
fonte
1

Carvão , 21 bytes

≔⁺β⭆χιβF↧S¿№βι«I⊕⌕βι→

Experimente online! Link é a versão detalhada do código. Explicação:

≔⁺β⭆χιβ

Anexe os dígitos à variável de letras minúsculas predefinidas.

F↧S

Faça um loop sobre a entrada em minúsculas.

¿№βι«

Se o caractere atual for uma letra ou dígito,

I⊕⌕βι

imprima seu índice indexado em 1,

e deixe um espaço para o próximo valor.

Neil
fonte
1

Vermelho , 93 bytes

func[s][a: charset[#"a"-#"z"]parse lowercase s[any[copy c a(prin[-96 + to-char c""])| skip]]]

Experimente online!

Galen Ivanov
fonte
Não sei o suficiente sobre vermelho, mas pode #"a"-#"z"ser alterado para letras maiúsculas e minúsculas; e então o lowercasepode ser removido; e -96 + to-char cpode ser modulo-32? Mas não tenho certeza se isso salva os bytes em vermelho.
Kevin Cruijssen
@ Kevin Cruijssen Obrigado, vou tentar mais tarde
Galen Ivanov
A parsefunção @KevinCruijssen coleta seqüências de caracteres mesmo quando a correspondência é um único caractere, é por isso que eu sempre preciso do to-char. Para as letras maiúsculas, eu precisaria adicionar ao conjunto de caracteres # "A" - # "Z", que estraga o ganho (se houver) da eliminação lowercase.
Galen Ivanov
Sim, eu estava com medo de #"A"-#"Z"não ganhar muito em comparação lowercase, já que é apenas 1 byte menor. E eu sabia que você precisaria to-char, mas não tinha certeza se o -96 + módulo 32 seria semelhante em tamanho.
Kevin Cruijssen
1

Perl 5 , 47 bytes

Com o desafio adicional de analisar dígitos:

print map{(ord(uc)-64)%43," "}<>=~/([A-Z\d])/gi

Experimente online!

Reduzido para 38 bytes ignorando dígitos

print map{ord()%32," "}<>=~/([A-Z])/gi
fockjef
fonte
1

PHP , 70 bytes

for(;$c=$argv[1][$i++];)if(($c=ord($c))>64&($c%=32)>0&$c<27)echo"$c ";

Experimente online!

-5 bytes graças a Kevin

user2803033
fonte
Snippets não são permitidos como envios aqui, mas você pode torná-lo uma função ou um programa completo.
Nissa
Desculpe, agora ele usa o primeiro argumento como entrada
user2803033
Olá, seja bem-vindo ao PPCG! Se você ainda não o fez, dicas para jogar golfe em PHP e dicas para jogar em <todos os idiomas> podem ser interessantes para ler. Quanto às peças, você pode jogar golfe: &&pode ser &e ord(strtolower($c))-96pode ser ord($c)%32. Além disso, acho que você pode remover o ~antes $c, mas não tenho certeza. Ainda não programamos muito em PHP e, de qualquer forma, não sabemos o que ~é usado aqui.
Kevin Cruijssen
Obrigado pela sua contribuição. O Mod 32 é uma boa ideia. Ele salva alguns bytes, mas requer uma verificação adicional para garantir que ord ($ c) seja maior que 64. #
user2803033
1

Perl 5 -p , 35 bytes

$_="@{[map{(-64+ord uc)%43}/\w/g]}"

Experimente online!

Inclui a parte extra sobre os dígitos.

Xcali
fonte
11
/\w/inclui_
Brad Gilbert b2gills
Muito menor do que eu estava brincando! Você pode salvar um byte e corrigir o bug @ BradGilbertb2gills mencionado, usando -F/[^0-9\pL]|/: Experimente online!
Dom Hastings
1

Japt 2.0 -S, 9 bytes

f\l ®c %H

Execute on-line

Explicação:

f\l ®c %H                                    Input: "Hello..."
f            Match:
 \l             [A-Za-z]                     ["H","e","l","l","o"]
    ®        Map Z over the results:
     c         char-code of Z                [72,101,108,108,111]
       %H      mod 32                        [8,5,12,12,15]
-S           Join the chars with a space     8 5 12 12 15
Oliver
fonte
1

Perl 6 , 32 bytes (alfa), 41 bytes (alfa + dígito)

{~(.uc.comb(/<:L>/)».ord X-64)}

Experimente (alfa de 32 bytes)

{~((.uc.comb(/<:L+:N>/)».ord X-64)X%43)}

Experimente (41 bytes alfa + dígito)

Expandido:

Alfa de 32 bytes

{  # bare block lambda with implicit parameter $_

  ~( # coerce to string (space separated)

      .uc                      # uppercase
      .comb( / <:L > / )\      # get letters as a sequence
      ».ord                    # get the ordinal of each
      X- 64                    # subtract 64 from each
  )
}

41 bytes alfa + dígito

{  # bare block lambda with implicit parameter $_

  ~( # coerce to string (space separated)
    (
      .uc                      # uppercase
      .comb( / <:L + :N > / )\ # get letters and numbers as a sequence
      ».ord                    # get the ordinal of each
      X- 64                    # subtract 64 from each
    ) X% 43                    # modulus 43 for each
  )
}
Brad Gilbert b2gills
fonte
Isso também corresponde a caracteres não ASCII como Э, mas solicitei esclarecimentos ao OP sobre se a entrada é apenas ASCII ou não.
Jo rei
1

Tcl , 93 bytes

puts [lmap c [split $argv ""] {if [string is alp $c] {expr ([scan $c %c]-64)%32} {continue}}]

Experimente online!

sergiol
fonte
1

PHP 108 105 Bytes

Experimente online (108 bytes)

Tri-lo online (105 bytes)

-3 bytes, graças a @manassehkatz (altere o nível do strtolower e remova o AZ do regex)

Código, tentou evitar qualquer loop

<?=strtr(implode(" ",str_split(preg_replace(
"/[^a-z]/",'',strtolower($argv)))),array_flip(range("`",z)));

Explicação

$string = preg_replace("/[^a-z]/",'',strtolower($argv))  
//the string only contains letters

$string = implode(" ",str_split($string)); 
//the string has a space after every letter

$string = strtr($string, array_flip(range("`",z)));  
//replace every letter   acording to the array

$replacementArray = array_flip(range("`",z));
//this array contains the ansi characters from "`" to the "z"
//array_flip to change the keys with the values
//final array ["`"=>0,"a"=>1, "b"=>2...."z"=>26]
Francisco Hahn
fonte
Para que isso funcione sem avisos, eu tive que (a) alterar $ argv para $ argv [1] e (b) adicionar "ao redor do último z. Mas com ou sem essas alterações (que podem ser dependentes da versão - I estou usando 5.6), você pode salvar 3 bytes movendo o strtolower () em um nível strtolower($argv)de capital e remoção A-Zdo regex.
manassehkatz-movendo 2 Codidact
No php 7, ele lança um aviso, vou modificar a resposta agora. Lamento apenas não wi teve tempo para verificar :-D
Francisco Hahn
11
@manassehkatz Aceitou a sua sugestão e economizou 3 bytes, muito obrigado.
Francisco Hahn
Isso não deveria ser $argv[1]ou em $argnvez de $argv? joiné 3 bytes menor que implode.
Titus
0

Python 2, 110 bytes 104 bytes , com entrada do usuário

a="abcdefghijklmnopqrstuvwxyz";print" ".join(str(a.index(l)+1)for l in list(input().lower())if l in a)

Experimente Online!


Python 2, 105 bytes 104 bytes 96 bytes , ondeté predefinido:

a="abcdefghijklmnopqrstuvwxyz";print" ".join(str(a.index(l)+1)for l in list(t.lower())if l in a)

Experimente Online!

Vamos dividir com uma versão mais legível:

alphabet = "abcdefghijklmnopqrstuvwxyz"
foo = [str(alphabet.index(letter) + 1) for letter in list(t.lower()) if letter in alphabet]
print " ".join(foo)

Primeiro, definimos alphabet como sendo, bem, o alfabeto.

Em seguida, usamos a compreensão da lista para:

  1. Faça uma lista em que cada item é um caractere minúsculo t
  2. Para cada letra, se não estiver no alfabeto, descarte-a.
  3. Se for, encontre seu índice no alfabeto,
  4. adicione um (porque começamos a contar com 1)
  5. e faça disso uma string.

Finalmente, juntamos tudo e imprimimos.


Editar: alterado paraprint (e perdeu a portabilidade) para salvar bytes e fazê-lo funcionar fora de uma função

Editar 2: adicionada uma versão cominput() variáveis ​​predefinidas em vez de

Edit 3: Removidos 8 bytes nas Soluções 1 e 2 graças a Jo King

Theo C
fonte
Você tem 6 espaços estranhos em seu código
Jo rei
@JoKing Encontrei três (depois de ponto e vírgula, ao redor +), onde estão os outros?
Theo C
Antes if, fore" "
Jo King
Você também pode remover o []nojoin
Rei Jo
Mais uma vez, bem-vindo ao PPCG! Para sua informação padrão, por exemplo (se não for explicitamente substituído na pergunta), os envios de respostas podem ser funções ou programas completos (como a versão de 104 bytes), mas não snippets (como a versão de 96 bytes). Aqui você pode enviar uma versão que cria uma função que retorna a seqüência de 100 bytes :)
Jonathan Allan
0

PowerShell , 63 bytes

"$(([char[]]"$args".ToUpper()|%{$_-($_,64)[$_-in65..90]})-ne0)"

Experimente online!

(Parece longo ...)

Pega entrada $args, converte .ToUppermaiúsculas e minúsculas, lança como uma charmatriz, alimenta isso em um for eachloop. Dentro do loop, subtraímos por si própria ou 64 a partir do valor (ASCII int), com base em se ou não o valor atual é -ina gama 65de 90(ou seja, é uma letra maiúscula ASCII). Esses valores são deixados no pipeline e usamos -not ot epara eliminar os valores que não são letras (porque todos são zero). Esses números são encapsulados em uma cadeia de caracteres, pois a string padrão de uma matriz é separá-la com espaço, de modo que obtemos isso muito mais barato. Essa cadeia é deixada no pipeline e a saída é implícita.

AdmBorkBork
fonte
0

MS-SQL, 133 bytes

SELECT STRING_AGG(ASCII(substring(upper(s),number+1,1))-64,' ')FROM
spt_values,t WHERE type='P'AND substring(s,number+1,1)LIKE'[a-z]'

De acordo com nossas regras de IO , a entrada é obtida por meio de uma tabela preexistente t com campos varchar s .

É necessário o SQL 2017 ou posterior. Também deve ser executado no masterbanco de dados, porque estou aproveitando uma tabela do sistema chamada spt_values, que (quando filtrada por type='P') contém números contados de 0 a 2047.

Basicamente, estou ingressando em uma tabela numérica com a string de entrada using SUBSTRING(), que retorna uma linha separada para cada caractere individual. Isso é filtrado apenas para letras usando LIKE'[a-z]', então obtemos seu valor ASCII e subtraímos 64. Esses números são reunidos novamente em uma string usando a função (new to SQL 2017) STRING_AGG.

BradC
fonte
0

Pitão , 10 bytes

jdfTmhxGr0

Tenho certeza de que isso pode ser jogado um pouco ... -2 bytes, se eu puder exibir como uma lista, algumas respostas parecem, mas não estão na especificação

Experimente online!

Dave
fonte
Você pode remover o último d( jdfTmhGr0, 10 bytes).
Sr. Xcoder
0

C (gcc) , 67 bytes

c;f(char*s){for(;*s;)(c=tolower(*s++)-96)>0&c<27&&printf("%d ",c);}

Experimente online!

Converte cada caractere em minúscula, compensa o código em -96 e, se estiver no intervalo do alfabeto indexado em 1, imprime o código de deslocamento

vazt
fonte
0

jq , 45 bytes

[gsub("\\W";"")|explode[]%32|@text]|join(" ")

 gsub("\\W";"")                                # remove non-alpha characters
               |explode[]                      # get decimal values of characters
                         %32                   # get positions in alphabet
                            |@text             # convert back to string
[                                 ]|join(" ")  # join with a space

Experimente online

Naïm Favier
fonte