me preguntaron en una entrevista: cómo convertir 0 a 1 y 1 a 0. respondí:Convertir 0 a 1 y viceversa
- simple
if
yswitch
- Bit mover de un tirón.
¿Hay algún otro enfoque?
me preguntaron en una entrevista: cómo convertir 0 a 1 y 1 a 0. respondí:Convertir 0 a 1 y viceversa
if
y switch
¿Hay algún otro enfoque?
algunas posibilidades obvias:
!n
1-n
n^1
n==0
n!=1
n<1
'! N' no es fiable 1 => 0, 0 => 1 en una forma independiente del idioma (en algunos idiomas,! 0 = -1) ; en Java, ni siquiera funciona ("operator! no se puede aplicar a int"). –
@GregS: buen punto ... lo eliminé y agregué un par más. –
n^1, ¿quisiste decir 0^n? –
aritmética simple:
x = 1 - x;
En realidad, hay un número infinito de polinomios que asignar 1 a 0 y viceversa. Por ejemplo:
x = x * x * x * x * x - x * x * x * x + x * x - 2 * x + 1;
Simplifica a 'x^5 - x^4 + x^2 - 2x + 1'. Pero 'x^n = x' para' x = 0 o 1', por lo que se simplifica aún más a 'x - x + x -2x + 1' que es simplemente' 1 - x'. (En caso de que alguien no esté seguro de si podrían usar el segundo polinomio) – pkr298
Creo que se puede hacer ABS (VAR - 1), pero creo que sus enfoques son más elegantes
que probablemente se espera que uso bit a bit NO
Esto debería funcionar para cualquier par de números ...
(EDIT: buscando en las otras respuestas que pude haber leído mal la pregunta ... pero todavía me gusta mi respuesta :-)
mesapublic class X
{
public static void main(final String[] argv)
{
int x = Integer.parseInt(argv[0]);
int y = Integer.parseInt(argv[1]);
x += y;
y = x - y;
x = x - y;
System.out.println(x);
System.out.println(y);
}
}
de búsqueda:
int[] swap = { 1, 0 };
Y más adelante:
x = swap[x];
¿Qué pasa con esto? El OP pidió métodos alternativos. – Ponkadoodle
Sí, en serio. – Sean
Esta es una respuesta totalmente increíble. Me gusta porque es el menos matemático. También a diferencia de las otras respuestas, esto fallará si el dominio y el rango están fuera de 0-1 ala fallan rápido aunque no con gracia. +1 –
Este uno no es el mejor, pero funciona:
pow(0, n);
pow (0, 0) matemáticamente no está definido, ver http://mathworld.wolfram.com/Power.html –
¿Stephen Wolfram es una especie de autoridad en matemáticas? Eche un vistazo a este artículo para ver algunas opiniones diferentes: http://en.wikipedia.org/wiki/Exponentiation#Zero_to_the_zero_power – Adam
@ Adam Doyle: Sí, cuente con Wikipedia para presentar todos los puntos de vista simultáneamente. Es el equivalente en Internet del [Total Perspective Vortex] (http://en.wikipedia.org/wiki/Total_Perspective_Vortex#Total_Perspective_Vortex). –
S ome Trig: COS (PI * N)^2
en Python
import math
math.cos(math.pi * n) ** 2
No puedo creer que la gente se olvidó de módulo:
(3 + n) % 2
Además, 'cos (n * pi/2)' –
+1: ¡Me encanta! – Dinah
Tome un clip de papel. Enderezarlo Es un 1. Doble hacia los extremos. Es un 0. Para que sea un 1, alíselo.
genio! Necesito más de esto. – fastcodejava
No creo que Java sea lo suficientemente potente como para hacer eso. –
@ Adam: Probablemente necesites encontrar un robot ceceo integrado para realmente hacer bien el trabajo. Solo Embedded Robot Lisps tiene el poder de transformar verdaderamente los 0 en 1 y viceversa. –
He usado -~-n
en JavaScript. Convierte 1 a -1 que se representa como 11111111
, luego voltea los bits a 00000000
que es 0. El segundo signo negativo no afecta a 0. Por otro lado, si n
es 0, el primer signo negativo no tiene efecto , la tilde voltea los bits, y el segundo signo negativo convierte -1 a 1.
dudoso, pero genio ಠ_ಠ – Jehan
¿Qué quiere decir con "bit flipping", específicamente? –
No sabía que Java es independiente del idioma. Guay. – BalusC
@Balus: natural-language-agnostic maybe ;-) – Joey