Si je comprends bien votre question (ce qui n'est pas garanti : je l'ai lue plusieurs fois, et je ne suis toujours pas sûr à 100 % de l'avoir saisie, mais peut-être que c'est ce que font les siestes d'après-midi les jours de neige...), alors la fonction de solution est presque la même que la réponse d'Ilmari dans le post lié. La seule différence est ce qu'il faut faire en cas d'égalité. (Rien de spécial!)
function: A:s vs B:s {
result: (A > 1@B) - (B > 1@A)
}
Rappelez-vous qu'un groupe de dés stocké sous forme de séquence (A:s
) se trie automatiquement de haut en bas et les éléments sont accédés via @, donc 1@A
renvoie le premier (c'est-à-dire le plus haut) lancer du groupe A. L'opérateur de comparaison agissant sur une séquence par rapport à un nombre générera un décompte de vérité en tant que résultat, donc A>1@B
produit "le nombre de lancers dans A supérieurs au plus élevé de B". Et en cas d'égalité, nous savons (par construction) que A>1@B
et B>1@A
seront tous deux nuls, donc nous obtenons le résultat que vous souhaitez =)
Fonction définie, si vous voulez la voir en action, un simple appel comme
output [6d6 vs 4d6] named "6 vs 4"
ou
loop X over {3..6} {
output [Xd6 vs 4d6] named "[X]d6 vs 4d6"
}
fera l'affaire. C'est assez gourmand en temps, cependant, vous pourriez finir par exécuter de nombreux "combats" individuellement.
Je vais faire don de tout le rep de cette réponse à un post choisi par Ilmari ou, en l'absence d'un tel choix, à un post d'Ilmari que je choisis (via une prime). Parce que ce code est essentiellement le leur, avec une modification pour correspondre à votre condition d'égalité.