Saltar al contenido

Calcular dígito de control ISBN-13

Ya no necesitas indagar más en otras páginas ya que estás al lugar perfecto, poseemos la solución que deseas y sin problema.

Solución:

Golfscript – 25 caracteres

...+(;2%++*3-~10%`+:f

La versión completa del programa tiene solo 19 caracteres.

...+(;2%++*3-~10%

Vuelve aquí para un análisis más tarde. Mientras tanto, echa un vistazo a mi antigua respuesta sin inspiración

Golfscript – 32 caracteres

Similar al cálculo del número de Luhn

.2+%.(;2%.+%++*~)10%`+:f

Análisis para 978030640615

...:f this is how you define the function in golfscript
.       store an extra copy of the input string
        '978030640615' '978030640615'
2+%   add 2 to each ascii digit, so '0'=>50, I can get away with this instead
        of 15&% because we are doing mod 10 math on it later
        '978030640615' [59 57 58 50 53 50 56 54 50 56 51 55]
.       duplicate that list
        '978030640615' [59 57 58 50 53 50 56 54 50 56 51 55] [59 57 58 50 53 50 56 54 50 56 51 55]
(;      trim the first element off
        '978030640615' [59 57 58 50 53 50 56 54 50 56 51 55] [57 58 50 53 50 56 54 50 56 51 55]
2%      select every second element
        '978030640615' [59 57 58 50 53 50 56 54 50 56 51 55] [57 50 50 54 56 55]
.+%   double each element by adding to itself
        '978030640615' [59 57 58 50 53 50 56 54 50 56 51 55] [114 100 100 108 112 110]
+       join the two lists together
        '978030640615' [59 57 58 50 53 50 56 54 50 56 51 55 114 100 100 108 112 110]
+*    add up the items in the list
        '978030640615' 1293
~       bitwise not
        '978030640615' -1294
)       add one
        '978030640615' -1293            
10%     mod 10
        '978030640615' 7
`       convert to str
        '978030640615' '7'
+       join the strings
        '9780306406157'

Python – 44 caracteres

f=lambda s:s+`-sum(map(int,s+s[1::2]*2))%10`

Python – 53 caracteres

def f(s):d=map(int,s);return s+`-sum(d+d[1::2]*2)%10`

Haskell – 54 caracteres

i s=s++show(sum[-read[c]*m|c<-s|m<-cycle[1,3]]`mod`10)

Esto requiere soporte para comprensiones de listas paralelas, que es compatible con GHC (con el -XParallelListComp bandera) y Abrazos (con la -98 bandera).

Reseñas y valoraciones del artículo

Tienes la posibilidad recomendar esta reseña si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *