Mathematics & c#
chmaykil
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je cherche à faire quelque chose du genre j’ai une liste comme (123, 321,132)
Et je cherche une formule qui me permettra d’avoir une valeur distincte pour chaque élément. Genre faire 1+2+3 ou 3+2+1 ou 1+3+2 dans cette situation sa donnera toujours 6 (ce n'est pas bon)
Moi je cherche une combinaison qui me permettra d’avoir une valeur distincte pour chaque combinaison.
exemple (qui dans certaines situation fonctionne pas) : la somme de chiffre * index
123 --> 1*0 + 2*1 + 3*2
code:
Merci
Je cherche à faire quelque chose du genre j’ai une liste comme (123, 321,132)
Et je cherche une formule qui me permettra d’avoir une valeur distincte pour chaque élément. Genre faire 1+2+3 ou 3+2+1 ou 1+3+2 dans cette situation sa donnera toujours 6 (ce n'est pas bon)
Moi je cherche une combinaison qui me permettra d’avoir une valeur distincte pour chaque combinaison.
exemple (qui dans certaines situation fonctionne pas) : la somme de chiffre * index
123 --> 1*0 + 2*1 + 3*2
code:
var sumstick = new List<string>(); for (var i = 0; i <= 1000; i++) { var tick = DateTime.UtcNow.Ticks.ToString(); var ticks = tick.Select(x => int.Parse(x.ToString())); var ticksSum = 0; var index = 1; foreach (var item in ticks) { ticksSum = ticksSum + (item * index); index++; } // sums.Add(new Tuple<string, string>(tick, ticksSum.ToString())); sumstick.Add(ticksSum.ToString()); } var isduplicate = sumstick.Count != sumstick.Distinct().Count();
Merci
A voir également:
- Mathematics & c#
- Microsoft mathematics - Télécharger - Sciences & Techniques
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, as-tu une question?
Bonjour à tous les deux.
Non seulement, il n'y a pas de question, mais en plus
Par définition les "ticks" sont tous différents.
D'ailleurs, même ton explication part de valeurs différentes
PS1:
se servir de var à tout bout de champ est contre productif. C# est un langage fortement typé, var a été introduit à la framework 3 (ou 3.5), avec l'apparition de Linq pour pouvoir stocker des résultats temporaire de requêtes quand ce résultat ne constitue pas un type existant.
Son utilisation oblige le système à faire l'analyse de la variable pour en découvrir les propriétés, les méthodes et le type sous jacent quand ils existe, bref plein de temps perdu.
En mettant directement le bon type, tu vas gagner en temps d'exécution.
PS2:
En plus du var ceci
Convertit un long en string, puis chaque caractère de la chaine en int. C'est pareil les conversion prennent du temps, au départ tu as un nombre, qu'il suffit de diviser par 10 et conserver le reste.
J'ai ajouté des traces dans la console pour te montrer le résultat

Non seulement, il n'y a pas de question, mais en plus
Et je cherche une formule qui me permettra d’avoir une valeur distincte pour chaque élément.or, tu as des "ticks" en entrée.
Par définition les "ticks" sont tous différents.
D'ailleurs, même ton explication part de valeurs différentes
(123, 321,132)
PS1:
se servir de var à tout bout de champ est contre productif. C# est un langage fortement typé, var a été introduit à la framework 3 (ou 3.5), avec l'apparition de Linq pour pouvoir stocker des résultats temporaire de requêtes quand ce résultat ne constitue pas un type existant.
Son utilisation oblige le système à faire l'analyse de la variable pour en découvrir les propriétés, les méthodes et le type sous jacent quand ils existe, bref plein de temps perdu.
var tick = DateTime.UtcNow.Ticks.ToString();//c'est une string var ticks = tick.Select(x => int.Parse(x.ToString()));// c'est un IEnumerable<int> //..... var isduplicate = sumstick.Count != sumstick.Distinct().Count();//c'est un bool
En mettant directement le bon type, tu vas gagner en temps d'exécution.
PS2:
En plus du var ceci
var tick = DateTime.UtcNow.Ticks.ToString();//c'est un long var ticks = tick.Select(x => int.Parse(x.ToString()));// c'est un IEnumerable<int>
Convertit un long en string, puis chaque caractère de la chaine en int. C'est pareil les conversion prennent du temps, au départ tu as un nombre, qu'il suffit de diviser par 10 et conserver le reste.
long tick = DateTime.UtcNow.Ticks; Console.WriteLine("Tick: {0}",tick); List<int> ticks = new List<int>(); while(tick > 0) { int reste = (int)(tick % 10); ticks.Insert(0,reste); tick /= 10; Console.WriteLine("Reste: {0}", reste); Console.WriteLine("Tick: {0}", tick); }
J'ai ajouté des traces dans la console pour te montrer le résultat

