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)