Un défi avec des règles simples mais des algorithmes non triviaux. :-)
Tâche
Prendre une entrée sous forme d’entiers séparés par des espaces:
N A B S
Où N est la longueur de côté d'une matrice carrée 2D remplie de nombres uniques (entiers) compris entre A et B inclus. Pour chaque ligne et colonne de cette matrice, la somme est toujours la même: S. (En d'autres termes, la matrice est un carré semi-magique).
Remarque:
Tous les chiffres sont positifs. L'exception est A, qui peut être 0.
Exemples
Pour
3 1 10000 2015
une solution valable serait
Pour
8 1 300 500
une solution valable serait
Sortie
Votre sortie devrait être une table ASCII. Exemple pour le premier exemple ci-dessus:
384 159 1472
1174 499 342
457 1357 201
Entiers alignés à droite remplis d'espaces. La largeur de chaque colonne est la largeur du plus grand entier de cette colonne.
Notation
C'est du code-golf , donc le code le plus court en octets gagne. Les failles standard s’appliquent (en particulier sur les solutions intégrées pour résoudre ce problème). Vous n'avez pas à vous soucier d'entrées fausses ou autrement impossibles (y compris des nombres négatifs). Veuillez fournir un exemple de sortie dans votre réponse (obligatoire) pour le deuxième exemple ci-dessus.
A
, B
et N
peut être négatif?