Le défi
Étant donné une grille de nombres (10 <= N <= 99) Numéro de retour avec la somme la plus élevée des quatre nombres adjacents; ce sont les nombres au-dessus, en dessous, à droite et à gauche du nombre, mais pas lui-même.
- Le nombre lui-même ne compte pas, seulement ses quatre voisins.
- Un nombre sur le bord doit être traité comme si le nombre manquant était un 0.
- Je vais concevoir le test pour éviter les liens.
- Les chiffres ne se répéteront pas.
- C'est du code-golf .
Exemple
Donné
56 98 32 96
12 64 45 31
94 18 83 71
Revenir
18
Un vrai test
Donné
98 95 67 66 57 16 40 94 84 37
87 14 19 34 83 99 97 78 50 36
18 44 29 47 21 86 24 15 91 61
60 41 51 26 10 58 11 62 55 71
42 85 56 12 46 81 93 65 49 77
89 13 74 39 54 76 92 33 82 90
96 88 70 79 80 28 25 20 75 68
38 63 17 72 53 48 73 30 45 69
64 35 32 31 23 43 22 52 27 59
Revenir
13
Donné
82 43 79 81 94 36 17 64 58
24 52 13 87 70 18 28 61 69
16 99 75 21 50 44 89 90 51
49 80 63 31 54 65 41 55 38
67 91 76 78 23 86 83 14 73
46 68 62 77 34 48 20 74 10
33 35 26 97 59 66 25 37 32
12 92 84 27 85 56 22 40 45
96 15 98 53 39 30 88 71 29
60 42 11 57 95 19 93 72 47
Revenir
15
Réponses:
MATL ,
20151312 octetsEnregistré 5 octets grâce à Emigna, 2 grâce à Giuseppe et un autre grâce à Luis Mendo.
Essayez-le en ligne!
Explication
la source
APL (Dyalog Unicode) ,
3127262423 octets SBCS-2 grâce au charlatan des vaches. -1 grâce à ngn.
Fonction de préfixe tacite anonyme. Prend une matrice comme argument. Suppose que
⎕IO
( I ndex O rigin) est0
, ce qui est par défaut sur de nombreux systèmes.Essayez-le en ligne!
,
défoncer (aplatir) l'entrée{
…}⊃
Choisissez un élément de celui-ci en fonction du résultat de la fonction suivante:⊢⍵
donner l'argument (séparé3 3
de⍵
)…
⌺3 3
Appliquer la fonction suivante à chaque quartier 3 par 3:⊢∘,
ignorer les informations de bord en faveur du quartier défait (aplati)(
…)
Appliquer la fonction tacite suivante à ceux-/
la somme alternée (lit. droite moins associative réduction)+/-
soustrayez cela de la somme (cela donne la somme de tous les autres éléments),
défiler (aplatir) que (le quartier résume)⍒
produire les indices qui trieraient cette⊃
choisir le premier (c'est-à-dire l'indice de la somme la plus élevée)la source
{⊃⍒,{+/1↓⍉4 2⍴⍵}⌺3 3⊢⍵}⊃,
? Edit: ou même{⊃⍒,{⊢/+⌿4 2⍴⍵}⌺3 3⊢⍵}⊃,
{⊃⍒,(+/--/)⊢∘,⌺3 3⊢⍵}⊃,
Gelée , 22 octets
Essayez-le en ligne!
Ne pas avoir de fonctions intégrées de convolution comme MATL et DyalogOublier votre langue a des fonctions intégrées de convolution (merci @dylnan) ça fait mal, mais nous pouvons faire quelque chose de bien sans elles, en partie grâce àŒM
etœị
. Tout d'abord, une fonction d'aide pour calculer les voisins dans une seule direction, qui transpose accessoirement l'entrée:Visuellement, le calcul est:
Interprétation: la cellule (x, y) de ce résultat est la somme des voisins horizontaux de la cellule (y, x). (Par exemple, nous voyons ici que f (A) [2,3] = 16 = 7 + 9 = A [3,1] + A [3,3] .)
Ensuite, la fonction principale:
la source
æc
?Gelée , 18 octets
Essayez-le en ligne!
La fonction d'assistance recherche les voisins de chaque élément dans chaque ligne. La fonction principale le fait pour les lignes et les colonnes trouvent ensuite l'élément qui a la somme de voisinage maximale.
la source
Wolfram Language (Mathematica) , 58 octets
Essayez-le en ligne!
la source
Python 2 , 127 octets
Essayez-le en ligne!
la source
Pochoir , 1 + 10 = 11 octets (non concurrent)
Option de ligne de commande:
1
calculer 1 générationEssayez-le en ligne!
y
à partir de l'entrée d'origine aplatie,⊃⍨
sélectionnez⊃
la première⍒
dans l'ordre décroissant,
de l'aplatissement+/
sommes desN
quartiers von neumanN sans moila source
y
à la langue quand j'ai vu qu'elle avait besoin d'un accès plus facile à l'entrée d'origine. Avant cela, vous deviez écrire(,⍎'input')
au lieu dey
.JavaScript (ES6), 94 octets
Essayez-le en ligne!
Comment?
Au lieu de chercher le maximum de la somme des 4 voisins, nous recherchons le minimum m de la somme s de leurs compléments. Cela nous permet de traiter des valeurs non définies comme des zéros, car:
La carte intérieure () est écrite de telle manière qu'elle ne modifie pas le contenu de la ligne r . Par conséquent, nous pouvons enregistrer son résultat dans p afin de tester les principaux voisins lors de la prochaine itération.
Nous utilisons:
~r[x-1]
pour la cellule gauche~r[x+1]
pour la bonne cellule~p[x]
pour la cellule supérieure~(a[y+1]||0)[x]
pour la cellule du basla source
K (ngn / k) ,
4340 octetsEssayez-le en ligne!
la source
Java 8, 187 octets
Essayez-le en ligne.
Explication:
la source
Javascript ES6, 170 octets
la source