En utilisant uniquement ASCII imprimable (codes hexadécimaux 20 à 7E), écrivez un programme de base carré N × N sans commentaires qui est entouré de 4 couches supplémentaires , créant un programme carré (N + 8) × (N + 8) (N> 0) . Pour N = 3, la présentation (à remplacer par le code réel) ressemble à ceci:
44444444444
43333333334
43222222234
43211111234
4321CCC1234
4321CCC1234
4321CCC1234
43211111234
43222222234
43333333334
44444444444
- Les C représentent le programme de base 3 × 3.
- Les 1 représentent la première couche, les 2 représentent la deuxième couche, etc.
Le programme prend toujours une chaîne d'entiers séparés par des espaces tels que 0 -1 31 -1 2 2 2
via stdin ou similaire (il ne doit s'agir que de chiffres simples, sans guillemets ou crochets ou quoi que ce soit). La sortie dépend des parties de la mise en page qui ont été exécutées.
Il existe cinq façons d'exécuter le programme (les sauts de ligne sont inclus dans l'analyse). Chacun fait quelque chose de différent de la liste:
Exécutez juste le noyau:
CCC CCC CCC
Cela calcule le maximum des valeurs absolues des éléments de la liste d'entrée et imprime
CORE
sur une nouvelle ligne autant de fois. Si le max est 0, rien n'est sorti (une nouvelle ligne est très bien).La sortie pour
0 -1 31 -1 2 2 2
seraitCORE CORE ...
31 fois.
Exécutez le noyau avec la couche 1:
11111 1CCC1 1CCC1 1CCC1 11111
Cela génère la moyenne (moyenne arithmétique ) des valeurs de liste avec une précision standard en virgule flottante.
- La sortie pour
0 -1 31 -1 2 2 2
serait 35/7 =5
(5.0
c'est bien).
- La sortie pour
Exécutez le noyau avec les couches 1 et 2:
2222222 2111112 21CCC12 21CCC12 21CCC12 2111112 2222222
Cela génère une liste séparée par des espaces de la liste d'entrée inversée.
- La sortie pour
0 -1 31 -1 2 2 2
serait2 2 2 -1 31 -1 0
.
- La sortie pour
Exécutez le noyau avec les couches 1, 2 et 3 (le motif doit être évident).
Cela génère une liste séparée par des espaces de la liste d'entrée triée.- La sortie pour
0 -1 31 -1 2 2 2
serait-1 -1 0 2 2 2 31
.
- La sortie pour
Exécutez le noyau avec les couches 1, 2, 3 et 4.
Cela génère une liste séparée par des espaces de la liste d'entrée avec les doublons supprimés, l'ordre n'a pas d'importance.- La sortie pour
0 -1 31 -1 2 2 2
pourrait être-1 0 2 31
.
- La sortie pour
Toutes les sorties sont vers stdout ou une alternative similaire.
Seules ces 5 combinaisons de disposition ont un comportement spécifié.
Remarques
- Les commentaires ne sont pas autorisés dans le noyau ou les couches ou leurs combinaisons. Un code qui est un no-op ou qui ne fait rien de constructif ne compte pas comme un commentaire.
- N'oubliez pas que le noyau peut avoir n'importe quelle dimension (positive) N × N, mais les couches n'ont qu'un caractère.
- Vous pouvez supposer que l'entrée n'a pas d'espaces de début ou de fin et exactement un espace entre les nombres. Il contiendra toujours au moins un chiffre. (Les listes de sortie doivent également être formatées comme ceci.)
- Vous pouvez supposer que la liste et les calculs nécessaires pour la sortie n'auront pas de valeurs qui débordent (ou dépassent) vos entiers (tant que leur max est quelque chose de raisonnable comme 2 16 ).
Notation
Écrire ce programme serait normalement facile. L'écrire avec un petit noyau est difficile.
Le programme avec la plus petite taille de noyau (le plus petit N) gagne. En cas d'égalité, le gagnant est le programme complet (le carré (N + 8) × (N + 8)) avec le moins de caractères distincts (sans compter les nouvelles lignes).
Veuillez indiquer votre valeur N en haut de votre réponse.