Étant donné 3 éléments d'entrée, une liste de paires de coordonnées, une chaîne 2D et une chaîne à un seul caractère, affichez si le caractère à chaque coordonnée de la chaîne 2D est égal au caractère unique. Vous pouvez prendre l'entrée dans n'importe quel ordre et les coordonnées peuvent être indexées à 1.
Vous pouvez prendre la chaîne 2D comme une liste 2D, une liste de lignes ou une chaîne 2D.
Exemple: (0,0), "#_\n__", "#" -> True
La chaîne est
#_
__
Le caractère aux coordonnées (0,0)
(en haut à gauche) est #
. Ceci est égal au troisième élément d'entrée #
, donc vous True
sortez (ou toute valeur vraie)
Exemple: [(0,0), (1,1)], "#_\n_#", "#" -> True
La chaîne est
#_
_#
Les caractères aux coordonnées de (0,0)
et (1,1)
sont les deux #
, donc la sortie est vraie.
La sortie n'est vraie que si chaque coordonnée correspond à un hachage. Cependant, chaque hachage ne doit pas nécessairement avoir une coordonnée correspondante. S'il n'y a pas d'occurrences du caractère unique ( #
dans certains des cas de test) dans la chaîne 2D, la sortie est toujours juste fausse.
Vous pouvez supposer que les coordonnées seront toujours dans les limites de la chaîne 2D.
Plus de cas de test: (je mets le caractère unique en second pour plus de lisibilité)
[(0,0), (2,1), (3,0)], #
#_##
#_##
True
[(0,0), (1,1), (3,0)], #
#_##
#_##
False (1,1 is not a hash)
[(1,1)], a
#a##
#a##
True
[(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)], ' '
####
#
#
True
Notez que le dernier scénario de test utilise des espaces comme chaîne de caractères unique et hache les espaces.
En relation. (inverse de ce défi)
(row, column)
mais dans le dernier exemple, les coordonnées sont au format(column, row)
.Réponses:
Dyalog APL , 8 octets
Demande la liste des paires de coordonnées (ligne, colonne), puis le tableau 2D, puis le caractère.
[⎕]
demander des coordonnées et les utiliser pour disperser le choix⎕
entrée avec invite (tableau 2D)=
comparer les éléments sélectionnés à⎕
entrée (le caractère)∧/
vérifier si tout est vrai (réduction ET)Cas de test (
⎕IO←0
pour correspondre à des exemples, mais ce n'est pas nécessaire):Premier exemple
Deuxième exemple
Troisième exemple
Quatrième exemple
Cinquième exemple
la source
Python, 39 octets
Prend les entrées:
a
liste des(x, y)
coordonnées entièresb
liste de chaînesc
chaîne de caractères uniquela source
f=
. Bienvenue chez PPCG!JavaScript (ES6), 37 octets
Prend les entrées:
a
tableau de[x, y]
coordonnées entièress
tableau de chaînesc
chaîne de caractères uniquela source
Octave,
453829 octetsUne fonction qui prend un tableau 2D de caractères comme
A
et les coordonnées (basé sur 0)B
comme une matrice à deux colonnes de[col row]
et le caractère correspondant commeC
. Les deux coordonnées des éléments (en utilisant la multiplication matricielle) converties en index linéaire.Remarque: La réponse précédente qui utilisait une matrice clairsemée était incorrecte.
Autres contributeurs:
Stewie Griffin pour avoir économisé 5 octets en notant que [0 1 0] peut être considéré comme une fausse valeur !!
Luis Mendo pour avoir sauvé 2 octets
~0 == true
et une notification sur la matrice clairsemée.Essayez-le en ligne
la source
all
et enregistrer trois octets.1 1 1
est vrai et1 0 1
faux dans Octave, donc ça devrait être OK. :)true
par~0
pour économiser 2 octetsMathematica, 28 octets
1 indexé. En raison de la structure des tableaux dans Mathematica, les coordonnées d'entrée doivent être inversées (c.-à-d.
(row, column)
)Usage
la source
Haskell, 27 octets
Exemple d'utilisation:
( ["#_##","#_##"] ! '#' ) [(0,0), (2,1), (3,0)]
->True
.la source
Gelée , 10 octets
Cela ne fonctionne que comme un programme complet. L'ordre d'entrée est les indices, le tableau de chaînes et la chaîne singleton.
Essayez-le en ligne!
Comment ça fonctionne
la source
Perl 6 ,
4140 octetsAttend la chaîne 2D comme une liste 2D.
Merci à b2gills pour -1 octet.
la source
$_
au lieu de\c
vous pouvez utiliser l'.map:{…}
enregistrement d'un octet.map: {…}
. C'est utile de savoir. De plus, c'est dommage que le préfixe||
ne soit pas encore implémenté, cela pourrait rendre la lambda intérieure simplementn eq h[||$_]
...C #,
8077 octetsEnregistré 3 octets, grâce à pinkfloydx33
a est les paires de coordonnées, b est la liste des lignes et c est la chaîne à un seul caractère.
la source
false
par1<0
ettrue
avec1>0
et enregistrer 3 octets.Haskell,
7263 octetsEntrée de
c [(0,0), (1,0), (3,0)] "#_##\n#_##" '#'
sortiesFalse
Contribution
c [(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)] " \n ####\n # \n # " ' '
Production
True
UnGolfed
la source
c[]_ _=1<2;c((f,s):t)m n|n/=lines m!!s!!f=1>2|1>0=c t m n
if n/=lines m!!s!!f then False else c t m n
peut être remplacé parn/=lines m!!s!!f&&c t m n
.You may take the 2D string as a 2D list, a list of lines, or a 2D string.
vous pouvez supprimer lelines
et prendre directement une liste de lignes en entrée.Scala, 68 octets
la source
Clojure, 39 octets
Exemple (la chaîne entrée est une vec de vec de caractères):
la source