MATL , 30  28 27 octets
t:P"@:s:@/Xk&+@+8MPt&(]30+c
Essayez-le en ligne!
Bonus caractéristiques:
- Pour 26 octets , la version modifiée suivante génère une sortie graphique : - t:P"@:s:@/Xk&+@+8MPt&(]1YG
 - Essayez-le sur MATL Online! 
- L'image demande de la couleur et ne coûte que 7 octets: - t:P"@:s:@/Xk&+@+8MPt&(]1YG59Y02ZG
 - Essayez-le sur MATL Online! 
- Ou utilisez une version plus longue (37 octets) pour voir comment la matrice de caractères est  construite progressivement : - t:P"@:s:@/Xk&+@+8MPt&(t30+cD9&Xx]30+c
 - Essayez-le sur MATL Online! 
Exemple de sorties
Pour l'entrée is 8, voici la version de base, la sortie graphique et la sortie graphique couleur.



Explication
Procédure générale
Une matrice numérique est construite par Nétapes des couches externe vers interne .N se les entrées. Chaque étape remplace une partie interne (en haut à gauche) de la matrice précédente. A la fin, les nombres dans la matrice obtenue sont changés en caractères.
Exemple
Pour entrer 4la première matrice est
10 10  9  9  9  9  8  8  8  8
10 10  9  9  9  9  8  8  8  8
 9  9  8  8  8  8  7  7  7  7
 9  9  8  8  8  8  7  7  7  7
 9  9  8  8  8  8  7  7  7  7
 9  9  8  8  8  8  7  7  7  7
 8  8  7  7  7  7  6  6  6  6
 8  8  7  7  7  7  6  6  6  6
 8  8  7  7  7  7  6  6  6  6
 8  8  7  7  7  7  6  6  6  6
Dans un deuxième temps, la matrice
7 7 7 6 6 6
7 7 7 6 6 6
7 7 7 6 6 6
6 6 6 5 5 5
6 6 6 5 5 5
6 6 6 5 5 5
est écrasé dans la moitié supérieure de ce dernier. Puis on fait la même chose avec
6 5 5
5 4 4
5 4 4
et enfin avec
3
La matrice résultante est
3 5 5 6 6 6 8 8 8 8
5 4 4 6 6 6 8 8 8 8
5 4 4 6 6 6 7 7 7 7
6 6 6 5 5 5 7 7 7 7
6 6 6 5 5 5 7 7 7 7
6 6 6 5 5 5 7 7 7 7
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
8 8 7 7 7 7 6 6 6 6
Enfin, 30est ajouté à chaque entrée et les nombres résultants sont interprétés comme des points de code et convertis en caractères (commençant ainsi à 33, correspondant à !).
Construction des matrices intermédiaires
Pour la saisie N, considérez les valeurs décroissantes de kde Nà 1. Pour chacune d'elles k, un vecteur d'entiers allant de 1à k*(k+1)est généré, puis chaque entrée est divisée par ket arrondie. Par exemple, pour k=4cela donne (tous les blocs ont une taille ksauf le dernier):
1 1 1 1 2 2 2 2 3 3
alors que pour k=3le résultat serait (tous les blocs ont une taille k):
1 1 1 2 2 2
Ce vecteur est ajouté élément par émission avec une copie transposée de lui-même; et kest ensuite ajouté à chaque entrée. Pour k=4cela donne
6  6  6  6  7  7  7  7  8  8
6  6  6  6  7  7  7  7  8  8
6  6  6  6  7  7  7  7  8  8
6  6  6  6  7  7  7  7  8  8
7  7  7  7  8  8  8  8  9  9
7  7  7  7  8  8  8  8  9  9
7  7  7  7  8  8  8  8  9  9
7  7  7  7  8  8  8  8  9  9
8  8  8  8  9  9  9  9 10 10
8  8  8  8  9  9  9  9 10 10
C'est l'une des matrices intermédiaires montrées ci-dessus, sauf qu'elle est retournée horizontalement et verticalement. Il ne reste donc qu’à retourner cette matrice et à l’écrire dans le coin supérieur gauche de la matrice "accumulée" jusqu’à présent, initialisée en une matrice vide pour la première k=Nétape ( ).
Code
t       % Implicitly input N. Duplicate. The first copy of N serves as the
        % initial state of the "accumulated" matrix (size 1×1). This will be 
        % extended to size N*(N+1)/2 × N*(N+1)/2 in the first iteration
 :P     % Range and flip: generates vector [N, N-1, ..., 1]
"       % For each k in that vector
  @:    %   Push vector [1, 2, ..., k]
  s     %   Sum of this vector. This gives 1+2+···+k = k*(k+1)/2
  :     %   Range: gives vector [1, 2, ..., k*(k+1)/2]
  @/    %   Divide each entry by k
  Xk    %   Round up
  &+    %   Add vector to itself transposed, element-wise with broadcast. Gives
        %   a square matrix of size k*(k+1)/2 × k*(k+1)/2
  @+    %   Add k to each entry of the this matrix. This is the flipped
        %   intermediate matrix
  8M    %   Push vector [1, 2, ..., k*(k+1)/2] again
  Pt    %   Flip and duplicate. The two resulting, equal vectors are the row and
        %   column indices where the generated matrix will be written. Note that
        %   flipping the indices has the same effect as flipping the matrix
        %   horizontally and vertically (but it's shorter)
  &(    %   Write the (flipped) intermediate matrix into the upper-left
        %   corner of the accumulated matrix, as given by the two (flipped)
        %   index vectors 
]       % End
30+     % Add 30 to each entry of the final accumulated matrix
c       % Convert to char. Implicitly display