Puede que se de el caso de que encuentres algún error en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
R (24 caracteres)
length(sequence(scan()))
Qué hace esto:
scan
lee la entrada de STDIN (o un archivo)sequence
genera secuencias enteras a partir de 1 y concatena las secuencias. Por ejemplo,sequence(c(2, 3))
da como resultado el vector1 2 1 2 3
length
calcula el número de elementos en el vector concatenado
Ejemplo 1:
> length(sequence(scan()))
1: 123
2: 468
3:
Read 2 items
[1] 591
Ejemplo 2:
> length(sequence(scan()))
1: 702
2: 720
3:
Read 2 items
[1] 1422
Perl (sin +/-, sin desempates, 29 caracteres)
s!!xx!;s!x!$"x<>!eg;say y!!!c
Como beneficio adicional, puede hacer que el código sume más de dos números agregando más x
s a la s!!xx!
.
Alternativamente, aquí hay dos soluciones de 21 caracteres con 1 y 3 desempates respectivamente
say length$"x<>.$"x<>
say log exp(<>)*exp<>
Nota: Estas soluciones utilizan el say
función, disponible desde Perl 5.10.0 con la -E
interruptor de línea de comando o con use 5.010
. Consulte el historial de edición de esta respuesta para conocer las versiones que funcionan en perls anteriores.
¿Cómo funciona la solución sin desempates?
-
s!!xx!
es un operador de reemplazo de expresiones regulares, que opera de forma predeterminada en el$_
variable, que reemplaza el vacío string con el stringxx
. (Usualmente/
se usa como delimitador de expresión regular en Perl, pero en realidad se puede usar casi cualquier carácter. elegí!
ya que no es un desempate). Esta es solo una forma elegante de anteponer"xx"
para$_
— o, desde$_
comienza vacío (indefinido, en realidad), es realmente una forma de escribir$_ = "xx"
sin usar el signo igual (y con un carácter menos, además). -
s!x!$"x<>!eg
es otro reemplazo de expresiones regulares, esta vez reemplazando cadax
en$_
con el valor de la expresión$" x <>
. (Élg
el interruptor especifica el reemplazo global,e
especifica que el reemplazo debe evaluarse como código Perl en lugar de usarse como un literal string.)$"
es una variable especial cuyo valor predeterminado pasa a ser un solo espacio; usarlo en lugar de" "
guarda un carácter. (Cualquier otra variable conocida por tener un valor de un carácter, como$&
o$/
funcionaría igual de bien aquí, excepto que usando$/
me costaría un desempate.)Él
<>
El operador de entrada de línea, en contexto escalar, lee una línea de la entrada estándar y la devuelve. Élx
antes de que sea el Perl string operador de repetición, y es realmente el núcleo de esta solución: devuelve su operando izquierdo (un carácter de espacio único) repetido el número de veces dado por su operando derecho (la línea que acabamos de leer como entrada). -
y!!!c
es solo una forma oscura de (ab) usar el operador de transliteración para contar los caracteres en un string ($_
por defecto, de nuevo). Podría haber escritosay length
, pero la versión ofuscada es un carácter más corta. 🙂
D
main()
int a,b;
readf("%d %d",&a,&b);
while(b)a^=b;b=((a^b)&b)<<1;
write(a);
un poco jugando por la victoria
como beneficio adicional, el código compilado no contiene una operación de agregar (aunque no puedo hablar por la llamada readf)
Calificaciones y reseñas
Tienes la opción de ayudar nuestra publicación fijando un comentario y puntuándolo te lo agradecemos.