Por lo tanto, todos estamos familiarizados con la notación de celda de hoja de cálculo 'A1'.
Es simplemente una representación alfanumérica del posicionamiento de dicha celda dentro de una cuadrícula. Las letras representan la posición de la columna de la celda y el número representa la fila.
La parte 'letra' puede constar de 1 o más letras del alfabeto inglés de 26 letras, todas las cuales deben ser letras mayúsculas. Estos se asignan a números mediante el uso de la numeración biyectiva de 26 adic. La parte 'número' puede consistir en cualquier número entero positivo que no sea cero.
El desafío, escribir un programa que, dada la notación A1 de cualquier celda como una sola cadena, pueda generar una cadena que contenga la posición de la columna representada como un número, seguido de un espacio y luego el número de la fila.
Muestra de entradas / salidas a continuación:
A1
>>1 1
B10
>>2 10
AC4
>>29 4
AAC753
>>705 753
F123
>>6 123
GL93
>>194 93
Este es mi primer desafío, de ahí la relativa simplicidad y potencial debilidad de los criterios.
EDITAR : la cadena debe ser letras seguidas de números y el criterio ganador es la longitud de código más corta (si eso puede ser algo)
EDITAR : relacionado con esto, pero realiza el proceso inverso con un índice de inicio diferente. Algunos pueden argumentar que este hecho hace que el rompecabezas vinculado sea más interesante.
["A", "1"]
Respuestas:
05AB1E ,
1211 bytesUtiliza la codificación 05AB1E . Pruébalo en línea!
fuente
Microsoft Excel, 43 Bytes.
No pude evitarlo, solo tuve que usar la herramienta adecuada para el trabajo. Toma entrada en A1.
Casos de prueba
fuente
Microsoft Excel, 40 bytes
Versión en portugués brasileño.
Versión traducida (y por lo tanto golfizada) de la solución de ATaco .
fuente
Python 2 ,
949173 bytes-3 bytes gracias a Jonathan Allan
-18 bytes gracias a tsh
Pruébalo en línea!
Este abusos la forma en que
.strip
funciona, la eliminación de todos los dígitos Wtiha=s(`3**39`)
donde`3**39`
es sólo un camino más corto para generar los dígitos de0
a9
, esto va a almacenar sólo los caracteres ena
que se utilizarán para despojar a los caracteres de los números ens(a)
fuente
strip
la entrada sea caracteres únicos, por lo que3**39
debería hacer el mismo trabajo.Hojas de cálculo de Google, 43 bytes
Pruébalo en línea!
A1
es la celda de entrada. Espero que el enlace anterior funcione, nunca antes había probado el golf de código con Google Sheets.fuente
=COLUMN(INDIRECT(A1))&" "&ROW(INDIRECT(A1
por 41 bytes. las hojas llenan los parentes derechos que faltan.JavaScript, 72 bytes
fuente
Protón , 113 bytes
Pruébalo en línea!
-19 bytes tomando prestado el algoritmo de Rod ( nota para sí mismo: agregar listcomps )
fuente
Dyalog APL, 44 bytes
Pruébalo en línea!
fuente
(a~⎕D)
. Buscar en⎕A
lugar de⎕AV
. Haz tácito. Intercambio de argumento de,
. Se reduce a solo 16 bytes:~∘⎕A,⍨26⊥⎕A⍳~∘⎕D
Pyth - 31 bytes
Primer intento, muy ingenuo.
Pruébelo en línea aquí .
fuente
Perl 5 , 35 + 1 (-p) = 36 bytes
Pruébalo en línea!
La
map
declaración trata la columna como un número base26 y la convierte a decimal. La sustitución reemplaza las letras con los números. La entrada y la salida están implícitas en la-p
bandera.fuente
Mathematica, 108 bytes
La forma del operador
StringReplace
toma la parte alfabéticac
de la cadena, la convierte en una lista de códigos de caracteres, resta64
de cada punto de código, interpreta el resultado como un26
entero base , convierte ese entero en aString
, luego enStringJoin
un espacio seguido de la parte numéricar
.Usando una expresión regular (también
108
bytes):fuente
ToCharacterCode@c-64
a veces se puede reducir aLetterNumber@c
.LetterNumber
Sin embargo, no ajusta la salidaList
cuando la entrada es un solo carácter.Jalea ,
1615 bytesUn programa completo que acepta la cadena como argumento e imprime el resultado.
Pruébalo en línea!
¿Cómo?
Nota: la conversión de una lista de números usando el átomo de conversión base
ḅ
permite que los lugares estén fuera del rango esperado, por lo que la conversión de, digamos,[2,26,1]
("BZA"
) usandoḅ26
se calcula como 2 × 26 2 + 26 × 26 1 + 1 × 26 0 = 2029 a pesar de que la representación "esperada" hubiera sido[3,0,1]
.fuente
Mathematica,
77726968 bytesToma una lista de personajes.
Pruébalo en Wolfram Sandbox
Uso
o
Explicación
En la entrada reemplazar ...
Una lista que contiene dos secuencias
a
yb
(con 1 o más elementos), dondeb
consta solo de caracteres de dígitos ... (Mathematica utiliza la coincidencia de patrones diferidos, por lo que no se requiere verificacióna
)dentro...
Establecer
f
en la función de conversión de dígito a entero.Convierte
a
a números de letras (a -> 1, b -> 2, etc.).Convierta lo anterior de base-26 a decimal, y convierta
b
a decimal.fuente
Haskell, 67 bytes
Pruébalo en línea.
fuente
Retina , 85 bytes
Pruébalo en línea! Explicación:
Separe las letras entre sí y el número final.
Convierte las letras a decimal.
Convierte todo a unario.
Si bien hay al menos tres números, multiplique el primero por 26 y agréguelo al segundo.
Convierte todo a decimal.
fuente
Rubí ,
5048 + 1 =5149 bytesUsa la
-p
bandera. -2 bytes dem-chrzan
.Pruébalo en línea!
fuente
i=i*26+b-64
ahorra 2 bytes.> <>, 42 bytes
Pruébalo en línea
Explicación:
El bucle anterior se leerá en el primer número de la parte de números (por ejemplo, '3' en "AB34") antes de romperse, y ya habrá restado 64 de él, por lo que el siguiente fragmento de código tiene que lidiar con eso
Este ciclo comienza generando un carácter que será el primer carácter leído por el primer ciclo o el carácter leído por la iteración anterior de este ciclo.
fuente
Ruby,
646159 bytesAhorró 2 bytes gracias a Value Ink.
fuente
$&
es la última coincidencia de expresiones regulares, así que úsela en lugar dem
guardar 2 bytes.Ventana de Excel-VBA Inmediato,
4445 Bytes (3635)1 byte agregado para suprimir la nueva línea final
O para 35 con espacios en blanco líderes
¡1 byte guardado gracias a @TaylorScott!
Ambos toman la entrada de la celda A1, salida a la ventana VBE Inmediato
fuente
Trim()
casi todas las respuestas numéricas, y sobre eso no iría conSet v=Range([A1]):?v.Column""&v.Row
su solución actual;
cuando el siguiente carácterColumn
no puede ser parte del nombre de la rutina. Me pregunto si hay un solo personaje que podría hacer lo mismo, probablemente no. Sí, habría adivinado que el espacio inicial sería aceptable para la mayoría de los qus, pero para este creo que es más un "Imprimir esta cadena exacta ". Hice la pregunta (último comentario sobre la pregunta) y me dijeron que no había espacios iniciales ni líneas nuevas.Lua, 127 bytes
Algunas buenas manipulaciones de cuerdas van allí, estoy usando alguna función que generalmente nunca se usa mientras se juega al golf en lua: D. La mejor manera de jugar al golf sería encontrar otra forma de iterar sobre la parte de la columna de la entrada mientras se puede retener la posición de cada letra. Yo no ^^ '.
Pruébalo en línea!
Explicación
fuente