Maison >développement back-end >Tutoriel Python >Ma solution en langage Python pour créer un bel arrangement du défi hebdomadaire
Le Weekly Challenge, organisé par Mohammad S. Anwar, est une compétition amicale dans laquelle les développeurs s'affrontent en résolvant une paire de tâches. Il encourage la participation des développeurs de toutes langues et de tous niveaux à travers l'apprentissage, le partage et le plaisir.
Tâche 1 : Bel arrangement du Défi hebdomadaire invite les développeurs à trouver le nombre de permutations magnifiquement arrangées parmi toutes les permutations générées à partir d'un entier positif.
Dans cet article, je discute et présente ma solution à la tâche 1 : Bel arrangement, et je termine par une brève conclusion.
La date limite du Weekly Challenge 300 est le dimanche 23 décembre 2024 à 23h59 (heure du Royaume-Uni). Pour éviter les préjugés, pensez à lire cet article après la compétition.
Vous recevez un entier positif, $int.
Écrivez un script pour renvoyer le nombre de beaux arrangements que vous pouvez construire à partir de $int.
Une permutation de n entiers, indexés 1, est considérée comme un bel arrangement si pour chaque i (1 <= i <= n) l'une des conditions suivantes est vraie :
- la permutation[i] est divisible par i
- je est divisible par permutation[i]
Le Défi Hebdomadaire 300, Tâche 1 : Bel Arrangement
Les exemples 1 et 2 présentent les résultats attendus à partir d'entrées données.
Input: $n = 2 Output: 2
Pour n = 2 et avec i entiers tels que (1 <= i <= n) il y a deux permutations (1, 2) et (2, 1). Sortie : 2 car les deux répondent aux exigences du bel arrangement.
La permutation (1, 2) est un bel arrangement car tous ses éléments correspondent à la première condition :
La permutation(2, 1) est également un bel arrangement car tous ses éléments correspondent soit à la première soit à la deuxième condition :
Input: $n = 1 Output: 1
Input: $n = 10 Output: 700
from itertools import permutations def generate_permutations(n) iterable = list(range(1, n + 1)) return permutations(iterable) def count_beautiful_arrangements(perms): num_beautiful_arr = 0 for perm in perms: is_beautiful_arr = True for value_index, value in enumerate(perm): if value % (value_index + 1) == 0: continue elif (value_index + 1) % value == 0: continue else: is_beautiful_arr = False break if is_beautiful_arr == True: num_beautiful_arr += 1 return num_beautiful_arr
Ma solution inélégante et peu sophistiquée utilise deux fonctions generate_permutations et count_beautiful_arrangements.
generate_permutations renvoie, pour le paramètre n, toutes les permutations de l'ensemble où 1 <= i <= n.
count_beautiful_permutations renvoie, pour le paramètre permutations itérables perms, le nombre total de permutations en perms qui correspondent aux belles conditions d'arrangement.
Dans cet article, j'ai discuté de la tâche 1 : Bel arrangement et j'ai présenté ma solution. Ma solution « inélégante et peu sophistiquée » fonctionne, mais elle peut être grandement améliorée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!