Introducción
XOR es una puerta lógica digital que implementa un exclusivo o. La mayoría de las veces, esto se muestra como ^
. Los cuatro resultados posibles en binario:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
Esto también puede verse como módulo de adición 2 en binario. En decimal, necesitamos convertir el decimal a binario, 35 = 100011
y 25 = 11001
. Para calcular el valor XOR, los colocamos uno encima del otro:
100011
11001 ^
--------
111010 = 58 in decimal
La tarea : cuando se le da un valor entero N mayor que 1, genera una tabla XOR con el tamaño N + 1. Por ejemplo, N = 5:
0 1 2 3 4 5
1 0 3 2 5 4
2 3 0 1 6 7
3 2 1 0 7 6
4 5 6 7 0 1
5 4 7 6 1 0
Puede ver que hay un espacio delante de cada número, porque la cantidad más alta en la tabla tiene longitud 1. Sin embargo, si tomamos N = 9, obtenemos la siguiente cuadrícula:
0 1 2 3 4 5 6 7 8 9
1 0 3 2 5 4 7 6 9 8
2 3 0 1 6 7 4 5 10 11
3 2 1 0 7 6 5 4 11 10
4 5 6 7 0 1 2 3 12 13
5 4 7 6 1 0 3 2 13 12
6 7 4 5 2 3 0 1 14 15
7 6 5 4 3 2 1 0 15 14
8 9 10 11 12 13 14 15 0 1
9 8 11 10 13 12 15 14 1 0
El valor más alto tiene longitud 2, por lo que el valor está alineado a la derecha con la longitud 3 (longitud más alta + 1).
Reglas:
- Los espacios en blanco iniciales no son obligatorios, solo si se usan (o no) de manera consistente
- Debe generar una tabla en la forma que se muestra arriba.
- El relleno entre columnas debe ser lo más pequeño posible
- Este es el código de golf , por lo que gana el envío con la menor cantidad de bytes.
output an XOR table with the size N+1
Respuestas:
MATL , 10 bytes
El compilador (y en particular este programa) ahora parece funcionar en Octave, aunque todavía necesita un poco de refinamiento. Puede usar provisionalmente esta confirmación de GitHub .
Editar (Mar 30 '16) : ¡ Pruébelo en línea!
Ejemplo
Explicación
fuente
Bash + BSD utils, 45
He estado esperando mucho tiempo para encontrar un uso
rs
. Esto parece ser bueno.rs
Es posible que deba instalarse en sistemas Linux. Pero se ejecuta de inmediato en OS X.$1
se expande a N y, por lo tanto, seecho \$[{0..$1}^{0..$1}]
expande aecho $[{0..N}^{0..N}]
eval
ed:$[0^0] $[0^1] $[0^2] ... $[0^N] ... $[N^N]
rs
(remodelar) reforma esta línea a N + 1 filas.-j
la derecha justifica y-g1
proporciona un ancho de canal de 1. Esto asegura que la tabla de salida final tenga un ancho mínimo entre columnas.He probado hasta N = 1000, lo que tomó 3.8 segundos. Teóricamente, N grande es posible, aunque bash se quedará sin memoria en algún momento con el uso de memoria (N + 1) ² de la expansión de llaves.
fuente
C, 114
128 152Editar Conteo espacial simplificado, inspirado en el trabajo de Khaled A Khunaifer
Función de CA que sigue las especificaciones.
Intentalo inserte n como entrada, por defecto 9
Menos golf
fuente
JavaScript (ES6) 120
122Editar 2 bytes guardados gracias a ETHproductions
Una función anónima. Nota: el número en la tabla está limitado a 7 dígitos, eso es más que razonable dado el tamaño general de una tabla que permite números más grandes
Ahora debería encontrar una forma más corta de obtener el tamaño máximo de las columnas, evitando logaritmos
Prueba
fuente
~m
para capturar un espacio extra. El uso de una cadena de plantilla puede ahorrar dos bytes:(z,j)=>`(7 spaces)${i^j}`.slice(~m)
(ignore this padding) ``abc`def`` (ignore this too)
aparece así:abc`def
C, 149 bytes
Detallado
fuente
11..1
al significativo en el valor de entradan
, se puede hacer primero encontrando la potencia más cercana de 2, luego xor con el número anterior,0001 xor 1110 = 1111
for(k=1;k<=n;)k*=2;k--;
. Ahora veo que es mucho más corto que mi intento de C de lo mismo (el mío es mejor para el rendimiento, pero el rendimiento no importa en este desafío)2^k xor 2^k -1
paramax{2^k<=n}
o2^k -1
paramin{2^k>=n}
. conseguir todo11..1
allíC, 103 bytes
fuente
Gelatina, no competidora
7 bytes Esta respuesta no es competitiva, ya que utiliza características que son posteriores al desafío.
Pruébalo en línea!
Cómo funciona
fuente
R, 38 bytes
Por lo general, R requiere muchos bytes solo para formatear la salida. En este caso es todo lo contrario.
outer
que generalmente se refiere al producto externo de dos matrices, puede cuando se le proporciona una función realizar esto a través de los márgenes de los vectores. En este caso, aplicamos la función XOR bit a bitbitwXor
.fuente
CJam,
2927 bytesPruébalo aquí.
Explicación
fuente
MathCAD, 187 bytes
MathCAD maneja tablas integradas fácilmente, pero no tiene absolutamente ningún Xor bit a bit, ni convertidores decimal a binario o binario a decimal. Las funciones for iteran a través de los valores posibles. El lugar i, a2, Xa y Xb se mantienen. El ciclo while se convierte activamente en binario, y mientras se convierte en binario también realiza la función xor (la pequeña cruz con el círculo a su alrededor). Almacena el número binario en un número de base 10 que consiste en 0 y 1. Esto se convierte antes de almacenarse en la matriz M mediante la función de suma.
Esto se puede reducir fácilmente (aunque solo sea cambiando los marcadores de posición por otros más cortos), pero pensé que lo publicaría y vería si alguien puede reducir el convertidor binario a decimal más que cualquier otra cosa.
fuente
k4, 50 bytes
P.ej:
fuente
Python 3,
133131 bytesfuente
Mathematica, 108 bytes
Haga caso omiso del error, simplemente
Thread
no sabe lo que está haciendo.fuente
Emacs Lisp, 193 bytes
Sin golf:
La salida se envía al
*Message*
búfer, que seríastdout
six
se usara dentro de un script.fuente
Python 2, 114 bytes
Tomó un poco de tiempo encontrar una manera de hacer relleno de ancho variable
.format()
(algunos, no mucho) y ajustarlo correctamente, pero creo que ahora tengo todo para especificar. Sin embargo, podría usar más golf en ese cálculo de ancho.fuente
Caché ObjectScript , 127 bytes
Detallado:
fuente
Pyke, 8 bytes (no competitivos)
Explicación:
Pruébalo aquí
fuente
Python 2, 77 bytes
fuente
J , 10 bytes
Pruébalo en línea!
fuente
Excel VBA, 95 bytes
Función de ventana inmediata anónima VBE que toma la entrada del rango
[A1]
y las salidas a la consola.fuente
Pequeño Básico , 499 bytes
Un script que toma la entrada del
TextWindow
objeto y las salidas al mismoPruébelo en SmallBasic.com Utiliza Silverlight y, por lo tanto, debe ejecutarse en IE o Edge
Seleccione la consola negra, luego escriba entero de entrada y presione Enter.
fuente
Perl 5
-n
, 62 bytesPruébalo en línea!
fuente