Tiré de Google Code Jam 2013 Qualification Round Problem B :
Alice et Bob ont une pelouse devant leur maison, en forme de rectangle de N mètre par M mètre. Chaque année, ils essaient de couper la pelouse selon un schéma intéressant. Ils coupaient avec des cisailles, ce qui prenait beaucoup de temps; mais maintenant, ils ont une nouvelle tondeuse à gazon automatique avec plusieurs réglages, et ils veulent l'essayer.
La nouvelle tondeuse à gazon a un réglage de hauteur - vous pouvez le régler à n'importe quelle hauteur h entre 1 et 100 millimètres, et il coupera toute l'herbe plus haut que h qu'il rencontre à la hauteur h. Vous l'exécutez en entrant dans la pelouse à n'importe quelle partie du bord de la pelouse; puis la tondeuse à gazon va en ligne droite, perpendiculaire au bord de la pelouse où elle est entrée, coupant l'herbe dans un andain de 1 m de large, jusqu'à ce qu'elle sorte de la pelouse de l'autre côté. La hauteur de la tondeuse à gazon ne peut être réglée que lorsqu'elle n'est pas sur la pelouse.
Alice et Bob ont un certain nombre de motifs d'herbe différents qu'ils pourraient avoir sur leur pelouse. Pour chacun d'eux, ils veulent savoir s'il est possible de couper l'herbe dans ce modèle avec leur nouvelle tondeuse à gazon. Chaque motif est décrit en spécifiant la hauteur de l'herbe sur chaque carré de 1 mx 1 m de la pelouse.
L'herbe mesure initialement 100 mm de hauteur sur toute la pelouse.
Écrivez une fonction qui prend un tableau 2D de hauteurs entières et détermine si la pelouse peut être coupée en conséquence.
Voici 100 cas de test de Google Code Jam. Les 35 premiers cas devraient passer, les autres non.
Le code le plus court gagne.
Réponses:
J, 15 caractères
Je ne m'attendais pas à cette solution courte.
Brève explication:
Si votre fonction est 4 autre fonction comme dans la solution:
(f1 f2 f3 f4)
et une entrée J la calcule commef1(input,f3(f2(input),f4(input)))
ieinput f1 ((f2 input) f3 (f4 input))
.la source
APL, 15 caractères
Explication:
⌈⌿⍵
calcule le maximum des colonnes de rhs⌈/⍵
fait de même avec les lignes∘.⌊
le produit extérieur des deux précédents par rapport à la fonction minimale⍵≡
compare le résultat aux rhsExemples:
la source
Python,
112104la source
map(min,z(*r))
au lieu de[min(a)for a in z(*r)]
pour enregistrer 8 caractèresJ'ai un code python un peu plus long mais il a réussi tous les cas de test donnés lors de Google Code Jam 2013.
la source