D'accord, ma deuxième tentative de golf de code, voyons comment cela se passe.
Imaginez que vous avez un tableau de 9 valeurs. Imaginez maintenant ce tableau dans une grille 3x3.
Vous devez renvoyer les voisins que ce nombre a comme index du tableau.
0 | 1 | 2
3 | 4 | 5
6 | 7 | 8
Règles:
- C'est le golf de code, donc la réponse la plus courte l'emporte.
- L'index du tableau de simulation peut commencer à 0 ou 1. (tous les exemples utilisent cependant 0)
- Le simple retour de valeurs est mal vu (comme
if 3: return 046
) - La soumission peut être juste une procédure / fonction / méthode, mais un exemple serait bien
- La valeur retournée peut être dans n'importe quel ordre (comme si l'entrée est 0, elle peut être 13 ou 31)
- si vous le souhaitez, la sortie peut être une liste de nombres, par exemple
[0,4,6]
au lieu de046
- les diagonales ne comptent pas, comme le montrent les exemples.
Exemples:
contribution:
0
production:
13
contribution:
3
production:
046
contribution:
4
production:
1357
[0,4,6]
au lieu de046
?Réponses:
Gelée ,
1613 octetsEssayez-le en ligne!
Comment ça fonctionne
la source
MATL ,
1716 octetsLe tableau est basé sur 1, c'est-à-dire qu'il contient les nombres de
1
à9
.Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Considérez la saisie
2
comme exemple.la source
Mathematica, 32 octets
Utilise un graphique au lieu d'un tableau.
GridGraph@{3,3}
construit un graphique en forme de grille 3x3, illustré ci-dessous, que Mathematica étiquette utilement avec les nombres 1–9 pour les sommets par défaut.~AdjacencyList~#&
Vous indique ensuite les voisins d'un sommet.la source
Mathematica, 40 octets
1 indexé. Cherche juste la réponse. Quelqu'un peut-il faire mieux dans Mathematica?
la source
31[420,51,...,75][[#]]&
.GridGraph@{3,3}~AdjacencyList~#&
pour 32 octets, avec 1 indexation.Octave,
424039 octetsIndex basé sur 1.
Vérifiez tous les cas de test.
Explication:
Exemple:
n = 2
(Dans Octave, les données sont stockées en colonnes.)
indice logique où la distance est 1:
la source
Python 2, 71 octets
1 indexé
Essayez-le en ligne!
L'obtention du résultat à partir d'une liste de résultats prédéfinie est plus courte (46 octets):
0 indexé
Essayez-le en ligne!
la source
Haskell ,
74 7168 octetsEssayez-le en ligne! Utilise une grille à 1 index. Exemple d'utilisation:
f 3
retourne[2,6]
.Edit: sauvé
36 octets grâce à Ørjan Johansen!Pour
7775 octets, la fonction suivante fonctionne#
pour une taille de grille arbitrairem
:Essayez-le en ligne! Pour chacun,
n
la liste[n-m,n-1,n+1,n+m]
contient les quatre voisins. Pour chaque entréex
de cette liste, nous vérifions-1<x
etx<m*m
pour nous assurer qu'ilx
n'est pas au-dessus ou en dessous de la grille,mod n 3>0||n-1/=x
pour appliquer la bordure de grille gauche etmod(n+1)m>0||n+1/=x
pour la bordure gauche.la source
[n-3,n-1..n+3]
etgcd 3n>1
.gcd
partie. Cela aurait dû être le cas<3
, puis s'arrêten==0
. Vous pourrez peut- être utiliser cette astuce si vous changez tout en1
-indexé.n/=2&&n/=5
peut être remplacé parmod x 3>0
. (Ou lagcd
version avec réindexation, qui pourrait maintenant être utilisée deux fois.)Rubis ,
51 4845 octetsEssayez-le en ligne!
Créez 2 tableaux, avec des voisins verticaux et horizontaux, puis sélectionnez-en un ou plusieurs.
Ruby codé en dur, 44 octets
... Ça n'en vaut pas la peine.
la source
C,
1009291837874 octets1 indexé. Merci à @Neil d'avoir économisé 4 octets.
Essayez-le en ligne!
Version codée en dur, 56 octets
0 indexé
la source
n>3&&p(n-3)
etc. pour économiser 4 octets? Dans la deuxième version, ne pouvez-vous pas écrirel[]=
pour enregistrer un octet?Python 2, 51 octets
Basé sur une version précédente de mon réponse Ruby , je l'ai trouvée intéressante car il s'agissait principalement du même code, utilisant une astuce différente, et produisant le même résultat. Obtenir celui-ci m'a aidé à jouer un peu plus la réponse de rubis.
Fondamentalement, ruby l'a plus court car l'index de tranche de tableau est inclusif, python a besoin d'un
+1
pour compenser.Explication
Obtenez les 2 tableaux (voisins verticaux et horizontaux), puis sélectionnez l'un ou les deux en fonction de certains calculs.
la source
Java 7, 63 octets (codé en dur)
0 indexé
(sortie d'ordre inversé car
024
et046
ne sont pas des entiers valides.)Toujours en train de travailler sur une version non codée en dur, maisje peux vous assurer que ce ne sera pas plus court ..Essayez-le ici.
82 octets
1 indexé
basé sur la réponse @Steadybox 'C
Essayez-le ici.
la source
JavaScript + lodash, 71 octets
la source
Lot, 116 octets
0 indexé.
la source