Maison >interface Web >js tutoriel >Galets plutoniens

Galets plutoniens

Linda Hamilton
Linda Hamiltonoriginal
2025-01-18 04:28:08600parcourir

Plutonian Pebbles

Avènement du Code 2024, Jour 11 : Prolifération des galets

Partie 1 : Cartographie des cycles de galets

Ce problème consiste à suivre l'évolution des galets à travers une série de transformations. L'approche initiale, simulant 25 itérations, s'est avérée réalisable pour la première partie. Cependant, la croissance exponentielle des cailloux suggère qu'une stratégie différente sera nécessaire pour la partie 2, où beaucoup plus d'itérations sont nécessaires. La clé est de comprendre les règles de transformation des cailloux et comment elles affectent le nombre global de cailloux.

Règles de transformation des galets :

Règle 1 : Un caillou de valeur 0 se transforme en caillou de valeur 1.

Règle 2 : Les cailloux numérotés de longueur paire sont divisés en deux nouveaux cailloux, chacun ayant la moitié de la longueur du numéro d'origine.

Règle 3 : Les cailloux numérotés de longueur impaire multiplient leur valeur par 2024.

Mise en œuvre et tests :

La fonction blink() implémente les règles de transformation :

<code class="language-javascript">function blink(num) {
    let str = String(num);
    if (num === 0) {
        return 1;
    } else if (str.length % 2 === 0) {
        return [+(str.slice(0, str.length / 2)), +(str.slice(str.length / 2))];
    } else {
        return num * 2024;
    }
}</code>

Notez l'utilisation de pour reconvertir les tranches de chaîne en nombres. Les premiers tests avec des exemples d'entrées ont confirmé l'exactitude de la fonction. Le traitement itératif utilisant flatMap gère efficacement le fractionnement des cailloux. La solution a traité avec succès 25 itérations pour la saisie du puzzle, donnant la bonne réponse.

Partie 2 : Conquérir la croissance exponentielle

La partie 2 présente un défi informatique important en raison de l'augmentation rapide du nombre de cailloux. Mon approche initiale de simulation directe s’est avérée irréalisable sur le plan informatique. Le nombre de cailloux explose au-delà des limites gérables après seulement quelques dizaines d'itérations.

Explorer les stratégies d'optimisation :

Pour résoudre ce problème, j'ai étudié plusieurs stratégies :

  1. Détection de cycle : J'ai exploré la possibilité de détecter des motifs répétitifs dans les valeurs de galets pour éviter les calculs redondants. Même si certains nombres présentaient des ensembles limités et finis de valeurs générées, ce modèle n'était pas universellement applicable, ce qui rendait cette approche insuffisante.

  2. Catalogue de galets : J'ai tenté de créer un catalogue de valeurs de galets et de leurs transformations ultérieures. L’objectif était de réutiliser les résultats précalculés pour accélérer le processus. Bien que le catalogue ait réduit les calculs pour certains cailloux, l'amélioration globale n'était pas suffisamment significative pour gérer l'échelle de la partie 2.

Obstacles routiers et réflexion :

Malgré l'exploration de ces techniques d'optimisation, je n'ai pas pu trouver de solution permettant de gérer efficacement la croissance exponentielle des cailloux dans la partie 2. La complexité informatique du problème, combinée au manque de modèles facilement identifiables, s'est avérée insurmontable dans les contraintes de mon approche actuelle. Le défi a mis en évidence l’importance de prendre en compte la complexité informatique lors de la conception d’algorithmes pour des problèmes à croissance potentiellement explosive. Bien que j'ai résolu avec succès la partie 1, la partie 2 reste non résolue.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn