besoin d'aide Shell/bash svp - Shell/Batch - Programmation
Marsh Posté le 27-02-2019 à 19:32:03
Bonjour,
Je n'y pas connais grand chose en Shell mais vu qu'il n'y a pas de code, le problème ne doit pas venir d'ici mais plus du côté algorithmique ?
Tu "parse" chaque ligne pour récupérer les 4 nombres et tu testes les 4 possibilités :
1 + 2 + 3 = 4 ?
1 + 2 + 4 = 3 ?
1 + 3 + 4 = 2 ?
2 + 3 + 4 = 1 ?
Marsh Posté le 27-02-2019 à 20:32:13
On pourrait aussi trier les nombres par ordre croissant et tester seulement 1+2+3=4 non?
Marsh Posté le 27-02-2019 à 21:16:46
Oui et non.
Sans faire un vrai tri, trouver le max suffirait puis comparer la somme des 3 autres.
Mais pour trouver le max, il faut déjà faire 3 comparaisons. Puis pour le comparer aux autres il faut l'extraire puis faire une nouvelle comparaison. Donc on fera l'étape d'extraction en plus par rapport au test "manuel" de toutes les combinaisons.
Un tri serait serait encore plus gourmand.
Mais mis de côté le nombre d'opération à réaliser, oui c'est une bonne idée.
Marsh Posté le 27-02-2019 à 21:29:10
C'est vrai que c'est plus d'opérations, mais (du moins en Perl) aussi moins de code.
@tems93
Un truc en Perl te conviendrait?
Marsh Posté le 28-02-2019 à 17:47:49
Bonjour a tous, merci infiniment pour toute vos reponses, désoler du retard, bon en fait le truc est beaucoup plus simple que prévu, il fallai seulement comparer si la somme des trois premiers nombres valais le quatrième
Merci encore pour votre aide !
Marsh Posté le 27-02-2019 à 19:16:51
Bonsoir a tous, je suis débutant et je m'arrache les cheveux depuis tout a l'heure a essayer un script en shell je m'explique vant de devenir chauve :
Donc j'ai un fichier.csv qui contient sur chaque ligne des nombres separer avec des separateur aleatoire (,.;?...)
j'aimerai compter le nombre de ligne dont la somme de 3 nombre donne le nombre restant de la ligne peut importe l'ordre exemple :
22:11.46,79 ici les 3 premier donne le 4eme
11?79/22:46 ici les 2 dernier + le premier donne le 2eme
si quelqu'un peut m'aider serai genial