Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

224
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!