Trouver le plus grand nombre de chiffres N dans une grille de chiffres W par H

25

Écrivez un programme ou une fonction qui accepte un entier positif N et une grille de chiffres décimaux (0 à 9) de largeur W et de hauteur H (qui sont également des entiers positifs). Vous pouvez supposer que N sera inférieur ou égal au plus grand de W et H.

Imprimez ou renvoyez le plus grand nombre de N contigus qui apparaît horizontalement ou verticalement dans la grille, écrit dans l'ordre de lecture normal ou inversé.

  • Les lignes diagonales de chiffres ne sont pas prises en compte.
  • La grille ne s'enroule pas, c'est-à-dire qu'elle n'a pas de conditions aux limites périodiques.

Par exemple, la grille 3 × 3

928
313
049

aurait 9comme sortie pour N = 1, 94comme sortie pour N = 2, et940 comme sortie pour N = 3.

La grille 4 × 3

7423
1531
6810

aurait 8comme sortie pour N = 1, 86pour N = 2, 854pour N = 3, et7423 pour N = 4.

La grille 3 × 3

000
010
000

aurait une sortie 1pour N = 1, et 10pour N = 2 et N = 3 (010 est également valable pour N = 3).

La grille 1 × 1

0

aurait une sortie 0pour N = 1.

Vous pouvez prendre l'entrée dans n'importe quel format raisonnable et pratique. Par exemple, la grille peut être une chaîne de chiffres séparée par des sauts de ligne, ou un tableau multidimensionnel, ou une liste de listes de chiffres, etc. Les zéros de tête sont autorisés dans la sortie s'ils faisaient partie de la grille.

Il s'agit de , donc le code le plus court en octets gagne, mais j'attribuerai également des points brownie (c'est-à-dire des votes plus probables) pour les réponses qui peuvent montrer que leur algorithme est efficace sur le plan des calculs.

Loisirs de Calvin
la source
1
Sommes-nous autorisés à imprimer des zéros non significatifs?
PurkkaKoodari
@ Pietu1998 "Les zéros non significatifs sont autorisés dans la sortie s'ils faisaient partie de la grille."
Calvin's Hobbies

Réponses:

0

Pyth, 22 19 octets

3 octets grâce à Jakube.

seSs.:RQ.n,L_MdCB.z

Essayez-le en ligne.

Si nous sommes autorisés à imprimer des zéros non significatifs, le code est de 18 octets:

eSs.:RQ.n,L_MdCB.z
PurkkaKoodari
la source
La conversion d'une chaîne avec des zéros non significatifs en un entier peut être accomplie avec s.
Jakube
9

CJam, 39 36 35 34 octets

qN/)i\[{zW%_}4*]ff{_,@e<ew:i}e_:e>

Juste rapidement, avant que @Dennis ne se réveille: P

Essayez-le en ligne .

Explication

L'algorithme de base consiste à prendre les quatre rotations de la grille et à diviser chaque ligne en morceaux de longueur N(ou la longueur de ligne, la plus petite des deux). Convertissez ensuite les morceaux en pouces et prenez le plus gros.

qN/             Split input by newlines, giving an array of lines
)i\             Drop N from the array and put at bottom
[        ]      Wrap in array...
 {    }4*         Perform 4 times...
  zW%_              Rotate grid anticlockwise and push a copy
                Note that this gives an array of 5 grids [CCW1 CCW2 CCW3 CCW4 CCW4]
ff{         }   For each grid row, mapping with N as an extra parameter...
   _,             Push length of row
     @e<          Take min with N
        ew        Split into chunks
          :i      Convert to ints
e_              Flatten that array
:e>             Take cumulative max
Sp3000
la source
Par curiosité, fait few-il quelque chose de spécial ou s'agit-il de trois commandes distinctes?
ETHproductions
3
@ETHproductions C'est en fait l'opérateur ewappliqué en utilisant f, ou "mapper avec un paramètre supplémentaire". Par exemple, ["abcd" "efgh"] 2 fewrésulte en [["ab" "bc" "cd"] ["ef" "fg" "gh"]].
Sp3000
Gotcha :) C'est une coïncidence intéressante, cependant.
ETHproductions
Le seul problème est que, lorsque @Dennis se réveille, tout le monde perd quand même. ;)
kirbyfan64sos
-2

Burlesque

Pas encore une réponse finale mais cela fonctionnera probablement comme ceci:

blsq ) "7423\n1531\n6810"ln)XXJ)\[jtp)\[_+J)<-_+{3.+ti}m[>]
854
blsq ) "7423\n1531\n6810"ln)XXJ)\[jtp)\[_+J)<-_+{4.+ti}m[>]
7423

Comment N et la grille sont-ils donnés exactement?

mroman
la source
Il faut généralement attendre de poster une réponse jusqu'à ce que cela fonctionne. Toutes les questions pour le PO doivent être données sous forme de commentaires sur le message.
Alex A.
Le code fonctionne réellement.
mroman