Esperamos que todos estejam familiarizados com a notação de célula da planilha 'A1'.
É simplesmente uma representação alfanumérica do posicionamento da referida célula dentro de uma grade. As letras representam o posicionamento da coluna da célula e o número representa a linha.
A parte 'letra' pode consistir em 1 ou mais letras do alfabeto inglês de 26 letras, todas as quais devem ser maiúsculas. Eles são mapeados para números através do uso de numeração bijetiva 26-adic. A parte 'number' pode consistir em qualquer número inteiro positivo diferente de zero.
O desafio, escreva um programa que, com a notação A1 de qualquer célula como uma única sequência, possa gerar uma sequência contendo a posição da coluna representada como um número, seguida por um espaço e depois pelo número da linha.
Exemplos de entradas / saídas abaixo:
A1
>>1 1
B10
>>2 10
AC4
>>29 4
AAC753
>>705 753
F123
>>6 123
GL93
>>194 93
Este é o meu primeiro desafio, daí a relativa simplicidade e potencial falta de critério dos critérios.
EDIT : String deve ser letras seguidas de números e o critério vencedor é o menor tamanho de código (se isso pode ser uma coisa)
EDIT : relacionado a isso, mas faz o processo inverso com um índice inicial diferente. Alguns podem argumentar que esse fato torna o quebra-cabeça vinculado mais interessante.
["A", "1"]
Respostas:
05AB1E ,
1211 bytesUsa a codificação 05AB1E . Experimente online!
fonte
Microsoft Excel, 43 bytes.
Não pude evitar, apenas tive que usar a ferramenta certa para o trabalho. Recebe entrada em A1.
Casos de teste
fonte
Microsoft Excel, 40 bytes
Versão em português do Brasil.
Versão traduzida (e, portanto, golfada) da solução da ATaco .
fonte
Python 2 ,
949173 bytes-3 bytes graças a Jonathan Allan
-18 bytes graças a tsh
Experimente online!
Isso abusa da maneira como
.strip
funciona, removendo todos os dígitosa=s(`3**39`)
onde`3**39`
há apenas uma maneira mais curta de gerar os dígitos de0
para9
, isso armazenará apenas os caracteresa
que serão usados para separar os caracteres dos números ems(a)
fonte
strip
os dados sejam os caracteres únicos, portanto,3**39
devemos fazer o mesmo trabalho.Planilhas Google, 43 bytes
Experimente online!
A1
é a célula de entrada. Espero que o link acima funcione, nunca tentei código de golfe com o Planilhas Google antes.fonte
=COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A1
por 41 bytes. folhas preenche a falta de parênteses à direita.JavaScript, 72 bytes
fonte
Próton , 113 bytes
Experimente online!
-19 bytes emprestando o algoritmo de Rod ( note a self: add listcomps )
fonte
Dyalog APL, 44 bytes
Experimente online!
fonte
(a~⎕D)
. Procure em⎕A
vez de⎕AV
. Tornar tácito. Troque argumento de,
. Obtém apenas 16 bytes:~∘⎕A,⍨26⊥⎕A⍳~∘⎕D
Pitão - 31 bytes
Primeira tentativa, muito ingênua.
Experimente online aqui .
fonte
Perl 5 , 35 + 1 (-p) = 36 bytes
Experimente online!
A
map
instrução trata a coluna como um número base26 e a converte em decimal. A substituição substitui as letras pelos números. A entrada e a saída estão implícitas no-p
sinalizador.fonte
Mathematica, 108 bytes
A forma de operador
StringReplace
que pega a parte alfabéticac
da string, a converte em uma lista de códigos de caracteres, subtrai64
de cada ponto de código, interpreta o resultado como um26
número inteiro base , converte esse número inteiro em um espaçoString
e, em seguida, emStringJoin
um espaço seguido pela parte numéricar
.Usando uma regex (também
108
bytes):fonte
ToCharacterCode@c-64
às vezes pode ser reduzido aLetterNumber@c
.LetterNumber
não envolve a saídaList
quando a entrada é um único caractere.Geléia ,
1615 bytesUm programa completo que aceita a string como argumento e imprime o resultado
Experimente online!
Quão?
Nota: a conversão de uma lista de números usando o átomo de conversão base
ḅ
permite que os lugares fiquem fora do intervalo esperado, portanto, a conversão de, digamos,[2,26,1]
("BZA"
) usandoḅ26
é calculada como 2 × 26 2 + 26 × 26 1 + 1 × 26 0 = 2029, mesmo que a representação "esperada" tivesse sido[3,0,1]
.fonte
Mathematica,
77726968 bytesLeva uma lista de caracteres.
Experimente na Wolfram Sandbox
Uso
ou
Explicação
Na entrada, substitua ...
Uma lista contendo duas seqüências
a
eb
(com 1 ou mais elementos), ondeb
consiste apenas em caracteres de dígito ... (o Mathematica usa correspondência lenta de padrões, portanto, nenhuma verificação é necessáriaa
)para dentro...
Conjunto
f
a função de conversão de dígito para inteiro.Converter
a
em números de letras (a -> 1, b -> 2, etc).Converta o acima de base-26 em decimal e converta
b
em decimal.fonte
Haskell, 67 bytes
Experimente online.
fonte
Retina , 85 bytes
Experimente online! Explicação:
Separe as letras uma da outra e o número final.
Converta as letras em decimal.
Converta tudo em unário.
Embora haja pelo menos três números, multiplique o primeiro por 26 e adicione-o ao segundo.
Converta tudo em decimal.
fonte
Ruby ,
5048 + 1 =5149 bytesUsa a
-p
bandeira. -2 bytes dem-chrzan
.Experimente online!
fonte
i=i*26+b-64
economiza 2 bytes.> <>, 42 bytes
Experimente Online
Explicação:
O loop acima lerá o primeiro número da parte dos números (por exemplo, '3' em "AB34") antes de quebrar e já terá subtraído 64 dele, portanto o próximo bit de código deve lidar com isso.
Esse loop inicia com a saída de um caractere que será o 1º caractere lido pelo primeiro loop ou o caractere lido pela iteração anterior desse loop.
fonte
Ruby,
646159 bytesEconomizou 2 bytes graças ao Value Ink.
fonte
$&
é a última correspondência de regex, portanto, use-a em vez dem
salvar 2 bytes.Janela imediata do Excel-VBA,
4445 bytes (3635)1 byte adicionado para suprimir a nova linha à direita
Ou para 35 com espaço em branco à esquerda
1 byte salvo graças a @TaylorScott!
Ambos recebem entrada da célula A1, saída para a janela Imediata do VBE
fonte
Trim()
quase todas as respostas numéricas - e, nesse caso, eu não usariaSet v=Range([A1]):?v.Column""&v.Row
sua solução atual;
quando o caractere a seguirColumn
não pode fazer parte do nome da rotina. Gostaria de saber se há um único personagem que poderia fazer a mesma coisa, provavelmente não. Sim, eu teria imaginado que o espaço inicial seria aceitável para a maioria dos qus, mas para este acho que é mais um "Imprima esta string exata ". Eu perguntei (último comentário sobre a pergunta) e não me disseram nenhum espaço à esquerda ou nova linha.Lua, 127 bytes
Algumas boas manipulações de strings indo para lá, eu estou usando alguma função que geralmente nunca é usada durante o golfe na lua: D. A melhor maneira de jogar golfe seria encontrar uma outra maneira de iterar sobre a parte da coluna da entrada, mantendo a posição de cada letra. Eu não ^^ '.
Experimente online!
Explicação
fonte