847 Stimmen

Bestimmung der Funktion f(f(n)) == -n

Eine Frage, die mir bei meinem letzten Vorstellungsgespräch gestellt wurde:

Eine Funktion entwerfen f , so dass:

f(f(n)) == -n

Wo n ist ein 32-Bit vorzeichenbehaftete Ganzzahl Sie können nicht mit komplexen Zahlen arithmetisch rechnen.

Wenn Sie eine solche Funktion nicht für den gesamten Zahlenbereich entwickeln können, entwickeln Sie sie für den größtmöglichen Bereich.

Irgendwelche Ideen?

6 Stimmen

Um welche Stelle ging es bei diesem Vorstellungsgespräch?

1voto

Peter Punkte 45640
f(n) { return IsWholeNumber(n)? 1/n : -1/n }

0 Stimmen

Ist 1/1 eine ganze Zahl? -1? Gibt -1 von mir. :)

1voto

Scott Langham Punkte 55597

C++

struct Value
{
  int value;
  Value(int v) : value(v) {}
  operator int () { return -value; }
};

Value f(Value input)
{
  return input;
}

1voto

Markus Punkte 1

Ähnlich wie die Lösung für die Überladung von Funktionen in Python:

def f(number):
 if type(number) != type([]):
  return [].append(number)
 else:
  return -1*number[0]

Alternativ: static datamembers

1voto

recursive Punkte 80517

Python 2.6:

f = lambda n: (n % 2 * n or -n) + (n > 0) - (n < 0)

Ich weiß, dass dies nichts zur Diskussion beiträgt, aber ich kann nicht widerstehen.

1voto

phkahler Punkte 5602
int f(int n)
{
   static int x = 0;
   result = -x;
   x = n;
   return result;
}

Dies ist ein FIFO mit einem Eintrag und Negation. Natürlich funktioniert es nicht für die maximale negative Zahl.

0 Stimmen

Und es funktioniert nicht mit Threads, aber hey, wer braucht schon Threads? :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X