Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda