introduction
XOR est une porte logique numérique qui implémente un ou exclusif. La plupart du temps, cela apparaît comme ^
. Les quatre résultats possibles en binaire:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
Cela peut également être considéré comme l'addition modulo 2 en binaire. En décimal, nous devons convertir la décimale en binaire, 35 = 100011
et pour 25 = 11001
calculer la valeur XOR, nous les plaçons les uns sur les autres:
100011
11001 ^
--------
111010 = 58 in decimal
La tâche : Lorsque la valeur entière N est supérieure à 1, affichez une table XOR de taille N + 1. Par exemple, 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
Vous pouvez voir qu'il y a un espace devant chaque nombre, car le montant le plus élevé du tableau a une longueur 1. Cependant, si nous prenons N = 9, nous obtenons la grille suivante:
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
La valeur la plus élevée a une longueur 2, donc la valeur est alignée à droite sur la longueur 3 (longueur la plus élevée + 1).
Règles:
- Le premier espace n'est pas obligatoire, uniquement s'il est utilisé (ou non) de manière cohérente
- Vous devez générer un tableau sous la forme indiquée ci-dessus.
- Le remplissage entre les colonnes doit être aussi petit que possible
- C'est du code-golf , donc la soumission avec le moins d'octets gagne!
output an XOR table with the size N+1
Réponses:
MATL , 10 octets
Le compilateur (et en particulier ce programme) semble maintenant fonctionner dans Octave, bien qu'il ait encore besoin d'être amélioré. Vous pouvez utiliser provisoirement ce commit GitHub .
Edit (30 mars 16) : Essayez-le en ligne!
Exemple
Explication
la source
Utilitaires Bash + BSD, 45
J'attends depuis longtemps pour trouver une utilisation
rs
. Cela semble être une bonne chose.rs
peut devoir être installé sur des systèmes Linux. Mais il fonctionne immédiatement sur OS X.$1
se développe en N, et seecho \$[{0..$1}^{0..$1}]
développe ainsi enecho $[{0..N}^{0..N}]
eval
éd:$[0^0] $[0^1] $[0^2] ... $[0^N] ... $[N^N]
rs
(remodeler) remodèle cette ligne en N + 1 lignes.-j
justifie à droite et-g1
donne une largeur de gouttière de 1. Cela garantit que la table de sortie finale a une largeur minimale entre les colonnes.J'ai testé jusqu'à N = 1000, ce qui a pris 3,8 secondes. Un grand N est théoriquement possible, bien que bash manquera de mémoire à un moment donné avec l'utilisation de la mémoire (N + 1) ² de l'extension d'accolade.
la source
C, 114
128 152Edit Comptage d'espace simplifié, inspiré par le travail de Khaled A Khunaifer
Fonction AC conforme aux spécifications.
Essayez-le insérer n comme entrée, par défaut 9
Moins golfé
la source
JavaScript (ES6) 120
122Modifier 2 octets de thx ETHproductions enregistrés
Une fonction anonyme. Remarque: le nombre dans le tableau est limité à 7 chiffres, ce qui est plus que raisonnable compte tenu de la taille globale d'un tableau permettant de plus grands nombres
Maintenant, je devrais trouver un moyen plus court d'obtenir la taille maximale des colonnes, en évitant les logarithmes
Tester
la source
~m
pour capturer un espace supplémentaire. L'utilisation d'une chaîne de modèle peut économiser deux octets:(z,j)=>`(7 spaces)${i^j}`.slice(~m)
(ignore this padding) ``abc`def`` (ignore this too)
apparaît comme ceci:abc`def
C, 149 octets
Détaillé
la source
11..1
à la valeur significative dans la valeur d'entréen
, peut être effectuée en trouvant d'abord la puissance la plus proche de 2, puis en la xor avec le nombre précédent,0001 xor 1110 = 1111
for(k=1;k<=n;)k*=2;k--;
. Maintenant, je vois que c'est beaucoup plus court que ma tentative C pour le même (le mien est meilleur pour la performance, mais la performance n'a pas d'importance dans ce défi)2^k xor 2^k -1
pourmax{2^k<=n}
ou2^k -1
pourmin{2^k>=n}
. pour tout mettre11..1
làC, 103 octets
la source
Gelée, non compétitive
7 octets Cette réponse n'est pas concurrente, car elle utilise des fonctionnalités postérieures au défi.
Essayez-le en ligne!
Comment ça fonctionne
la source
R, 38 octets
Habituellement, R nécessite beaucoup d'octets juste pour formater la sortie. Dans ce cas, c'est tout le contraire.
outer
qui se réfère généralement au produit extérieur de deux tableaux, peut, lorsqu'il est fourni, une fonction effectuer cela à travers les marges des vecteurs. Dans ce cas, nous appliquons la fonction XOR au niveau du bitbitwXor
.la source
CJam,
2927 octetsTestez-le ici.
Explication
la source
MathCAD, 187 octets
MathCAD gère facilement les tableaux intégrés - mais n'a absolument aucun Xor au niveau du bit, ni décimal en convertisseurs binaire ou binaire en décimal. Les fonctions for parcourent les valeurs possibles. Les positions i, a2, Xa et Xb tiennent. La boucle while se convertit activement en binaire, et lors de la conversion en binaire effectue également la fonction xor (la petite croix avec le cercle qui l'entoure). Il stocke le nombre binaire dans un nombre de base 10 composé de 0 et de 1. Celui-ci est ensuite converti avant d'être stocké dans la matrice M via la fonction de sommation.
Cela peut facilement être joué au golf (ne serait-ce qu'en changeant les espaces réservés pour les plus courts), mais j'ai pensé que je le publierais et voir si quelqu'un pouvait jouer au golf sur le convertisseur binaire en décimal plus que toute autre chose.
la source
k4, 50 octets
Par exemple:
la source
Python 3,
133131 octetsla source
Mathematica, 108 octets
Ignorez l'erreur, c'est simplement
Thread
ne pas savoir ce qu'elle fait.la source
Emacs Lisp, 193 octets
Non golfé:
La sortie est envoyée au
*Message*
tampon, ce qui serait lestdout
cas si ellex
devait être utilisée dans un script.la source
Python 2, 114 octets
Il a fallu un peu de recherche pour trouver un moyen de faire du rembourrage à largeur variable
.format()
(certains, pas beaucoup) et de le régler correctement, mais je pense que j'ai tout pour le moment. Pourrait utiliser plus de golf dans ce calcul de largeur.la source
Caché ObjectScript , 127 octets
Détaillé:
la source
Pyke, 8 octets (non concurrent)
Explication:
Essayez-le ici
la source
Python 2, 77 octets
la source
J , 10 octets
Essayez-le en ligne!
la source
Excel VBA, 95 octets
Fonction de fenêtre immédiate VBE anonyme qui prend les entrées de la plage
[A1]
et les sorties vers la console.la source
Petit de base , 499 octets
Un script qui prend l'entrée de l'
TextWindow
objet et la renvoie au mêmeEssayez-le sur SmallBasic.com Utilise Silverlight et doit donc être exécuté dans IE ou Edge
Sélectionnez la console noire, puis saisissez un entier et appuyez sur Enter.
la source
Perl 5
-n
, 62 octetsEssayez-le en ligne!
la source