42 votes

Retour de l'autre argument 2 argument possible sans l'aide de conditions

Par exemple, si j'ai une fonction qui est la garantie de recevoir 5 ou 7 comme argument, je veux que la fonction de retour 5 si reçu le 7 et 7 si reçu 5 sans l'aide de toutes les conditions.

On m'a demandé dans une interview et a été assez perplexe, merci.

94voto

Simon André Forsberg Points 7172

Arithmétique Simple:

return 7 - input + 5;

(ce qui peut être simplifié comme return 12 - input;)

Disons-le d'entrée est de 7:

de retour 7 - 7 + 5 --> retour 5

Ou si l'entrée est de 5:

de retour 7 - 5 + 5 --> retour 7

71voto

aditsu Points 1776

Vous pouvez utiliser n'importe quel simple commutative de calcul qui peut être renversée:

  • plus: f(x)=7+5-x
  • xor: f(x)=7^5^x
  • multiplication: f(x)=7*5/x

33voto

Skip Head Points 4062
public int f(int x) {
    return x ^ 2;
}

En binaire:

7 = 111
5 = 101
2 = 010

XOR (^ en java) retourne les 2 bits sur si c'est off et off si c'est sur.

14voto

キキジキ Points 758

Comment à ce sujet:

public int q(int in)
{
    static final int[] ret = {0, 0, 0, 0, 0, 7, 0, 5};
    return ret[in];
}

10voto

Ryan Stewart Points 46960

Si j'avais été l'une entrevue et vous l'avez résolu uniquement pour les entrées numériques, ma prochaine question aurait été: "Comment voulez-vous résoudre ce problème de non-entrée numérique?" parce que je ne voudrais pas être à la recherche de mathématiques de l'intelligence. Au lieu de cela, comment à ce sujet?

List<String> options = new ArrayList<>(Arrays.asList("bob", "fred"));
options.remove("bob");
System.out.println(options.get(0));

Que peut bien évidemment être facilement adapté à tout type, y compris Object, tant que l'égalité entre les objets fonctionne correctement, et, comme un bonus, il peut être exprimé beaucoup plus concise dans d'autres langues, comme Groovy:

println((["bob", "fred"] - "bob").first())

La sortie, dans les deux cas, c'est évidemment "fred". Si j'étais une entrevue, c'est la réponse que je serais à la recherche pour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X