-2
votes

Pour déterminer si une ligne donnée (équation) est capable de séparer les deux listes de points de manière successive dans Python

On me pose un problème qui me demande explicitement de ne pas utiliser les numéros ou les pandas

Problème: p>

donné deux séries de points de données sous la forme de utilles comme p> xxx pré>

et ensemble d'équations de ligne (dans le format de la chaîne, c'est-à-dire la liste des chaînes) p> xxx pré>

Remarque: vous devez faire une analyse de chaîne Ici et obtenez les coefficients de x, y et intercept. p>

Votre tâche ici est d'imprimer "oui" / "non" pour chaque ligne donnée. Vous devez imprimer oui, si tous les points rouges sont un côté de la ligne et les points bleus sont de l'autre côté de la ligne, sinon vous devez imprimer non. P>

Suppose S(x)(y) = 1x+1y+0

Now take points (1,1) and (-6,-1)

S(1)(1) = 1(1)+ 1(1) = 2 >0

S(-6)(-1) = 1(-6)+(1)(-1) = -7 <0


1 commentaires

Vous demandez-vous comment indexer les listes de points pour délimiter les valeurs X et Y dans ces tuples?


5 Réponses :


1
votes

En supposant que vos chaînes sont toujours de la forme xxx

(dans cet ordre), vous pouvez écrire xxx


1 commentaires

Pouvez-vous s'il vous plaît élaborer comment fonctionne la ligne de code ci-dessus ?? J'ai essayé de le tester avec le code suivant: Importer re x = "1x + 2y + 2" l = (re.split ("x | y ', x)) Imprimer (L) J'ai reçu la sortie [" 1', " +2 ',' + 2 '] Je ne comprends pas, si la ré-remplit les caractères avant X et Y ou après. Aussi comment fonctionne Coef.Strip () fonctionne?



0
votes

Programme Python3 Pour vérifier si deux points se trouvent sur le même côté
a, b, c = 1, 1, 1
x1, y1 = 1, 1
x2, y2 = 2, 1
if (pointsAreOnSameSideOfLine(a, b, c, x1, y1, x2, y2)): 
    print("Yes") 
else: 
    print("No") 


1 commentaires

S'il vous plaît faites attention au formatage. Dans son état actuel, votre réponse est très difficile à lire. Il a des espaces inutiles entre les lignes, les phrases dupliquées au début, les lignes audacieuses inutiles et les blocs de code incohérents.



1
votes

Utilisez votre fonction_string.replace () et Eval (), Remplacez les caractères X et Y avec ses valeurs, eval () pour exécuter la chaîne comme équation xxx


0 commentaires

0
votes

@HEMANTH RAVAVAVARAPU, REHSPLIT (X | Y) verra une équation de ligne basée sur x ou y. I.E Si vous donnez de l'espace, il sera divisé en fonction de l'espace identique ici aussi sévir où il a été trouvé x ou y.


0 commentaires

0
votes
e1 = []
e2 = []
def points():
    for k in Lines:
        a=k[0];b=k[2]+k[3];c=k[5]+k[6]
        n = [];m=[]
        for i in Red:
            x1=i[0];y1=i[1]
            eq1 = int(a) * int(x1) + int(b) * int(y1)-int(c)
            n.append(eq1)
        e1.append(n)
        for j in Blue:
            x2=j[0];y2=j[1]
            eq2 = int(a) * int(x2) + int(b) * int(y2)-int(c)
            m.append(eq2)
        e2.append(m)
    print(e1)
    print('----------------------------------------------------------------------')
    print(e2)
    print('----------------------------------------------------------------------')
    p=[]
    for i,j in zip(e1,e2):
        q = []
        for k,l in zip(i,j):
            x=k*l
            if x<0:
                q.append(x)
        p.append(q)
    print(p)
    for i in p:
        if len(i)==5:
            print('yes')
        else:
            print('No')

Red= [(1,1),(2,1),(4,2),(2,4),(-1,4)]
Blue= [(-2,-1),(-1,-2),(-3,-2),(-3,-1),(1,-3)]
Lines=["1x+1y+0","1x-1y+0","1x+0y-3","0x+1y-0.5"]
points()

1 commentaires

Bien que ce code puisse résoudre la question, y compris une explication de la manière et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre poster et aboutit probablement à plus de votes ultérieurs. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement la personne qui demande maintenant. S'il vous plaît Modifier Votre réponse Pour ajouter des explications et donner une indication de quelles limitations et hypothèses s'appliquent.