Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
C# ¿Invertir los primeros 2 dígitos de un número de dígito desconocido?

Así que estoy haciendo un juego, donde tienes que calcular el siguiente número en la secuencia de fibonnaci. en un temporizador

 Ex. 0, 1 => next number = 1 1, 2 => next number = 3 2, 3 => next number = 5

Y así...

La cosa es... una vez que llegas a números más grandes, que son más difíciles de calcular, querrás hacer sumas básicas, de derecha a izquierda. Así que tienes 2 opciones, o lo haces en tu mente, o lo escribes e inviertes el número después, que es exactamente para lo que lo he codificado.

Está invirtiendo el número, usando el algoritmo normal para ello, pero hay un problema.

Normalmente, vas de derecha a izquierda con las matemáticas y escribes cada dígito hacia abajo, y una vez que llegas a sumar los últimos dígitos de los 2 números, si la suma de estos 2 supera 10, simplemente escribes el número antes del otro. dígitos

 Ex:

567 + 723

 1. 7 + 3 => 0 Number = 0 2. 6 + 2 = 8 + the carried 1 = 9 Number = 90 3. 5 + 7 = 12 Number = 1290

En la barra de entrada, lo escribiría como 0912 , pero eso no funcionaría ya que el 12 también debe invertirse en 21 . Como no quiero que esto sea una molestia para el jugador, la pregunta es

¿Cómo invierto los primeros dígitos 2 dígitos de un número?

Mi suposición sería agregar 1 variable que almacene la suma inversa de los números, y luego otras 2 variables que almacenen el número después de los primeros 2 dígitos en una, y la otra que almacene los primeros 2 dígitos y los invierta, luego agregue los primeros 2 dígitos invertidos a la otra parte multiplicada por 100

Aun así, no creo que sea mi mejor opción, ya que no sé si los números son de 3 dígitos con suma >999 o normales de 4 dígitos con suma <9999

Si tienes alguna idea mejor, por favor dímelo. Si tiene alguna pregunta sobre mi código, con gusto lo publicaré Mis disculpas si esto es difícil de entender, la mente humana es difícil de explicar.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Una forma relativamente simple es esta (véalo en vivo aquí ):

 public static long SwapFirstTwoDigits(long val) { if(val < 10) return val; long mask; for(mask = 1; mask < val; mask *= 10) {} mask /= 100; // two back var firstTwoDigits = val / mask; return val % mask + (firstTwoDigits % 10) * mask * 10 + firstTwoDigits / 10 * mask; }

Básicamente, construye la máscara de base 10 de todos los dígitos que desea dejar solos (por lo tanto, dos detrás de los dos primeros dígitos de la derecha) y simplemente intercambia el resto con aritmética de módulo.

Salida del violín vinculado:

 Input: 1530, Output: 5130 Input: 16789, Output: 61789 Input: 34, Output: 43 Input: 3, Output: 3 Input: 0, Output: 0
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda